From fb2cf0c32a7ca4ae73b2097221e8efc1641d37e4 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 4 Aug 2022 14:05:18 -0600 Subject: [PATCH 001/300] Prototyping new nstencil/npair classes --- src/{npair_full_bin.cpp => npair_bin.cpp} | 76 +++++- src/{npair_full_bin.h => npair_bin.h} | 25 +- src/npair_bin_atomonly.cpp | 148 +++++++++++ ...ll_bin_atomonly.h => npair_bin_atomonly.h} | 15 +- src/npair_copy.cpp | 38 --- src/npair_copy.h | 42 ---- src/npair_full_bin_atomonly.cpp | 94 ------- src/npair_full_bin_ghost.cpp | 156 ------------ src/npair_full_bin_ghost.h | 47 ---- src/npair_full_multi.cpp | 143 ----------- src/npair_full_multi.h | 46 ---- src/npair_full_multi_old.cpp | 133 ---------- src/npair_full_multi_old.h | 46 ---- src/npair_full_nsq.cpp | 125 ---------- src/npair_full_nsq.h | 46 ---- src/npair_full_nsq_ghost.cpp | 138 ----------- src/npair_full_nsq_ghost.h | 47 ---- src/npair_half_bin_atomonly_newton.cpp | 116 --------- src/npair_half_bin_atomonly_newton.h | 46 ---- src/npair_half_bin_newtoff.cpp | 129 ---------- src/npair_half_bin_newtoff.h | 46 ---- src/npair_half_bin_newtoff_ghost.cpp | 162 ------------ src/npair_half_bin_newtoff_ghost.h | 46 ---- src/npair_half_bin_newton.cpp | 161 ------------ src/npair_half_bin_newton.h | 46 ---- src/npair_half_bin_newton_tri.cpp | 134 ---------- src/npair_half_bin_newton_tri.h | 46 ---- src/npair_half_multi_newtoff.cpp | 146 ----------- src/npair_half_multi_newtoff.h | 46 ---- src/npair_half_multi_newton.cpp | 194 --------------- src/npair_half_multi_newton.h | 42 ---- src/npair_half_multi_newton_tri.cpp | 159 ------------ src/npair_half_multi_newton_tri.h | 42 ---- src/npair_half_multi_old_newtoff.cpp | 136 ---------- src/npair_half_multi_old_newtoff.h | 46 ---- src/npair_half_multi_old_newton.cpp | 169 ------------- src/npair_half_multi_old_newton.h | 46 ---- src/npair_half_multi_old_newton_tri.cpp | 144 ----------- src/npair_half_multi_old_newton_tri.h | 46 ---- src/npair_half_nsq_newtoff.cpp | 125 ---------- src/npair_half_nsq_newtoff.h | 46 ---- src/npair_half_nsq_newtoff_ghost.cpp | 150 ----------- src/npair_half_nsq_newtoff_ghost.h | 46 ---- src/npair_half_nsq_newton.cpp | 142 ----------- src/npair_half_nsq_newton.h | 46 ---- src/npair_half_respa_bin_newtoff.cpp | 187 -------------- src/npair_half_respa_bin_newtoff.h | 46 ---- src/npair_half_respa_bin_newton.cpp | 233 ------------------ src/npair_half_respa_bin_newton.h | 46 ---- src/npair_half_respa_bin_newton_tri.cpp | 195 --------------- src/npair_half_respa_bin_newton_tri.h | 46 ---- src/npair_half_respa_nsq_newtoff.cpp | 182 -------------- src/npair_half_respa_nsq_newtoff.h | 46 ---- src/npair_half_respa_nsq_newton.cpp | 202 --------------- src/npair_half_respa_nsq_newton.h | 46 ---- src/npair_half_size_bin_newtoff.cpp | 138 ----------- src/npair_half_size_bin_newtoff.h | 46 ---- src/npair_half_size_bin_newton.cpp | 176 ------------- src/npair_half_size_bin_newton.h | 46 ---- src/npair_half_size_bin_newton_tri.cpp | 147 ----------- src/npair_half_size_bin_newton_tri.h | 46 ---- src/npair_half_size_multi_newtoff.cpp | 160 ------------ src/npair_half_size_multi_newtoff.h | 46 ---- src/npair_half_size_multi_newton.cpp | 213 ---------------- src/npair_half_size_multi_newton.h | 46 ---- src/npair_half_size_multi_newton_tri.cpp | 172 ------------- src/npair_half_size_multi_newton_tri.h | 46 ---- src/npair_half_size_multi_old_newtoff.cpp | 149 ----------- src/npair_half_size_multi_old_newtoff.h | 45 ---- src/npair_half_size_multi_old_newton.cpp | 187 -------------- src/npair_half_size_multi_old_newton.h | 45 ---- src/npair_half_size_multi_old_newton_tri.cpp | 156 ------------ src/npair_half_size_multi_old_newton_tri.h | 45 ---- src/npair_half_size_nsq_newtoff.cpp | 136 ---------- src/npair_half_size_nsq_newtoff.h | 46 ---- src/npair_half_size_nsq_newton.cpp | 154 ------------ src/npair_half_size_nsq_newton.h | 46 ---- src/npair_halffull_newtoff.cpp | 83 ------- src/npair_halffull_newtoff.h | 62 ----- src/npair_halffull_newton.cpp | 97 -------- src/npair_halffull_newton.h | 52 ---- src/npair_skip.cpp | 102 -------- src/npair_skip.h | 54 ---- src/npair_skip_respa.cpp | 163 ------------ src/npair_skip_respa.h | 48 ---- src/npair_skip_size.cpp | 88 ------- src/npair_skip_size.h | 47 ---- src/npair_skip_size_off2on.cpp | 100 -------- src/npair_skip_size_off2on.h | 48 ---- src/npair_skip_size_off2on_oneside.cpp | 163 ------------ src/npair_skip_size_off2on_oneside.h | 48 ---- ...l_half_bin_3d_tri.cpp => nstencil_bin.cpp} | 41 ++- src/nstencil_bin.h | 69 ++++++ src/nstencil_full_bin_2d.cpp | 37 --- src/nstencil_full_bin_2d.h | 42 ---- src/nstencil_full_bin_3d.cpp | 38 --- src/nstencil_full_bin_3d.h | 42 ---- src/nstencil_full_ghost_bin_2d.cpp | 44 ---- src/nstencil_full_ghost_bin_2d.h | 42 ---- src/nstencil_full_ghost_bin_3d.cpp | 45 ---- src/nstencil_full_ghost_bin_3d.h | 42 ---- src/nstencil_full_multi_2d.cpp | 81 ------ src/nstencil_full_multi_2d.h | 44 ---- src/nstencil_full_multi_3d.cpp | 86 ------- src/nstencil_full_multi_3d.h | 44 ---- src/nstencil_full_multi_old_2d.cpp | 51 ---- src/nstencil_full_multi_old_2d.h | 42 ---- src/nstencil_full_multi_old_3d.cpp | 52 ---- src/nstencil_full_multi_old_3d.h | 42 ---- src/nstencil_half_bin_2d.cpp | 38 --- src/nstencil_half_bin_2d.h | 42 ---- src/nstencil_half_bin_2d_tri.cpp | 38 --- src/nstencil_half_bin_2d_tri.h | 42 ---- src/nstencil_half_bin_3d.cpp | 39 --- src/nstencil_half_bin_3d.h | 42 ---- src/nstencil_half_bin_3d_tri.h | 42 ---- src/nstencil_half_multi_2d.cpp | 103 -------- src/nstencil_half_multi_2d.h | 44 ---- src/nstencil_half_multi_2d_tri.cpp | 100 -------- src/nstencil_half_multi_2d_tri.h | 44 ---- src/nstencil_half_multi_3d.cpp | 109 -------- src/nstencil_half_multi_3d.h | 44 ---- src/nstencil_half_multi_3d_tri.cpp | 106 -------- src/nstencil_half_multi_3d_tri.h | 44 ---- src/nstencil_half_multi_old_2d.cpp | 53 ---- src/nstencil_half_multi_old_2d.h | 41 --- src/nstencil_half_multi_old_2d_tri.cpp | 52 ---- src/nstencil_half_multi_old_2d_tri.h | 41 --- src/nstencil_half_multi_old_3d.cpp | 54 ---- src/nstencil_half_multi_old_3d.h | 41 --- src/nstencil_half_multi_old_3d_tri.cpp | 53 ---- src/nstencil_half_multi_old_3d_tri.h | 41 --- 132 files changed, 349 insertions(+), 10531 deletions(-) rename src/{npair_full_bin.cpp => npair_bin.cpp} (58%) rename src/{npair_full_bin.h => npair_bin.h} (60%) create mode 100644 src/npair_bin_atomonly.cpp rename src/{npair_full_bin_atomonly.h => npair_bin_atomonly.h} (71%) delete mode 100644 src/npair_copy.cpp delete mode 100644 src/npair_copy.h delete mode 100644 src/npair_full_bin_atomonly.cpp delete mode 100644 src/npair_full_bin_ghost.cpp delete mode 100644 src/npair_full_bin_ghost.h delete mode 100644 src/npair_full_multi.cpp delete mode 100644 src/npair_full_multi.h delete mode 100644 src/npair_full_multi_old.cpp delete mode 100644 src/npair_full_multi_old.h delete mode 100644 src/npair_full_nsq.cpp delete mode 100644 src/npair_full_nsq.h delete mode 100644 src/npair_full_nsq_ghost.cpp delete mode 100644 src/npair_full_nsq_ghost.h delete mode 100644 src/npair_half_bin_atomonly_newton.cpp delete mode 100644 src/npair_half_bin_atomonly_newton.h delete mode 100644 src/npair_half_bin_newtoff.cpp delete mode 100644 src/npair_half_bin_newtoff.h delete mode 100644 src/npair_half_bin_newtoff_ghost.cpp delete mode 100644 src/npair_half_bin_newtoff_ghost.h delete mode 100644 src/npair_half_bin_newton.cpp delete mode 100644 src/npair_half_bin_newton.h delete mode 100644 src/npair_half_bin_newton_tri.cpp delete mode 100644 src/npair_half_bin_newton_tri.h delete mode 100644 src/npair_half_multi_newtoff.cpp delete mode 100644 src/npair_half_multi_newtoff.h delete mode 100644 src/npair_half_multi_newton.cpp delete mode 100644 src/npair_half_multi_newton.h delete mode 100644 src/npair_half_multi_newton_tri.cpp delete mode 100644 src/npair_half_multi_newton_tri.h delete mode 100644 src/npair_half_multi_old_newtoff.cpp delete mode 100644 src/npair_half_multi_old_newtoff.h delete mode 100644 src/npair_half_multi_old_newton.cpp delete mode 100644 src/npair_half_multi_old_newton.h delete mode 100644 src/npair_half_multi_old_newton_tri.cpp delete mode 100644 src/npair_half_multi_old_newton_tri.h delete mode 100644 src/npair_half_nsq_newtoff.cpp delete mode 100644 src/npair_half_nsq_newtoff.h delete mode 100644 src/npair_half_nsq_newtoff_ghost.cpp delete mode 100644 src/npair_half_nsq_newtoff_ghost.h delete mode 100644 src/npair_half_nsq_newton.cpp delete mode 100644 src/npair_half_nsq_newton.h delete mode 100644 src/npair_half_respa_bin_newtoff.cpp delete mode 100644 src/npair_half_respa_bin_newtoff.h delete mode 100644 src/npair_half_respa_bin_newton.cpp delete mode 100644 src/npair_half_respa_bin_newton.h delete mode 100644 src/npair_half_respa_bin_newton_tri.cpp delete mode 100644 src/npair_half_respa_bin_newton_tri.h delete mode 100644 src/npair_half_respa_nsq_newtoff.cpp delete mode 100644 src/npair_half_respa_nsq_newtoff.h delete mode 100644 src/npair_half_respa_nsq_newton.cpp delete mode 100644 src/npair_half_respa_nsq_newton.h delete mode 100644 src/npair_half_size_bin_newtoff.cpp delete mode 100644 src/npair_half_size_bin_newtoff.h delete mode 100644 src/npair_half_size_bin_newton.cpp delete mode 100644 src/npair_half_size_bin_newton.h delete mode 100644 src/npair_half_size_bin_newton_tri.cpp delete mode 100644 src/npair_half_size_bin_newton_tri.h delete mode 100644 src/npair_half_size_multi_newtoff.cpp delete mode 100644 src/npair_half_size_multi_newtoff.h delete mode 100644 src/npair_half_size_multi_newton.cpp delete mode 100644 src/npair_half_size_multi_newton.h delete mode 100644 src/npair_half_size_multi_newton_tri.cpp delete mode 100644 src/npair_half_size_multi_newton_tri.h delete mode 100644 src/npair_half_size_multi_old_newtoff.cpp delete mode 100644 src/npair_half_size_multi_old_newtoff.h delete mode 100644 src/npair_half_size_multi_old_newton.cpp delete mode 100644 src/npair_half_size_multi_old_newton.h delete mode 100644 src/npair_half_size_multi_old_newton_tri.cpp delete mode 100644 src/npair_half_size_multi_old_newton_tri.h delete mode 100644 src/npair_half_size_nsq_newtoff.cpp delete mode 100644 src/npair_half_size_nsq_newtoff.h delete mode 100644 src/npair_half_size_nsq_newton.cpp delete mode 100644 src/npair_half_size_nsq_newton.h delete mode 100644 src/npair_halffull_newtoff.cpp delete mode 100644 src/npair_halffull_newtoff.h delete mode 100644 src/npair_halffull_newton.cpp delete mode 100644 src/npair_halffull_newton.h delete mode 100644 src/npair_skip.cpp delete mode 100644 src/npair_skip.h delete mode 100644 src/npair_skip_respa.cpp delete mode 100644 src/npair_skip_respa.h delete mode 100644 src/npair_skip_size.cpp delete mode 100644 src/npair_skip_size.h delete mode 100644 src/npair_skip_size_off2on.cpp delete mode 100644 src/npair_skip_size_off2on.h delete mode 100644 src/npair_skip_size_off2on_oneside.cpp delete mode 100644 src/npair_skip_size_off2on_oneside.h rename src/{nstencil_half_bin_3d_tri.cpp => nstencil_bin.cpp} (51%) create mode 100644 src/nstencil_bin.h delete mode 100644 src/nstencil_full_bin_2d.cpp delete mode 100644 src/nstencil_full_bin_2d.h delete mode 100644 src/nstencil_full_bin_3d.cpp delete mode 100644 src/nstencil_full_bin_3d.h delete mode 100644 src/nstencil_full_ghost_bin_2d.cpp delete mode 100644 src/nstencil_full_ghost_bin_2d.h delete mode 100644 src/nstencil_full_ghost_bin_3d.cpp delete mode 100644 src/nstencil_full_ghost_bin_3d.h delete mode 100644 src/nstencil_full_multi_2d.cpp delete mode 100644 src/nstencil_full_multi_2d.h delete mode 100644 src/nstencil_full_multi_3d.cpp delete mode 100644 src/nstencil_full_multi_3d.h delete mode 100644 src/nstencil_full_multi_old_2d.cpp delete mode 100644 src/nstencil_full_multi_old_2d.h delete mode 100644 src/nstencil_full_multi_old_3d.cpp delete mode 100644 src/nstencil_full_multi_old_3d.h delete mode 100644 src/nstencil_half_bin_2d.cpp delete mode 100644 src/nstencil_half_bin_2d.h delete mode 100644 src/nstencil_half_bin_2d_tri.cpp delete mode 100644 src/nstencil_half_bin_2d_tri.h delete mode 100644 src/nstencil_half_bin_3d.cpp delete mode 100644 src/nstencil_half_bin_3d.h delete mode 100644 src/nstencil_half_bin_3d_tri.h delete mode 100644 src/nstencil_half_multi_2d.cpp delete mode 100644 src/nstencil_half_multi_2d.h delete mode 100644 src/nstencil_half_multi_2d_tri.cpp delete mode 100644 src/nstencil_half_multi_2d_tri.h delete mode 100644 src/nstencil_half_multi_3d.cpp delete mode 100644 src/nstencil_half_multi_3d.h delete mode 100644 src/nstencil_half_multi_3d_tri.cpp delete mode 100644 src/nstencil_half_multi_3d_tri.h delete mode 100644 src/nstencil_half_multi_old_2d.cpp delete mode 100644 src/nstencil_half_multi_old_2d.h delete mode 100644 src/nstencil_half_multi_old_2d_tri.cpp delete mode 100644 src/nstencil_half_multi_old_2d_tri.h delete mode 100644 src/nstencil_half_multi_old_3d.cpp delete mode 100644 src/nstencil_half_multi_old_3d.h delete mode 100644 src/nstencil_half_multi_old_3d_tri.cpp delete mode 100644 src/nstencil_half_multi_old_3d_tri.h diff --git a/src/npair_full_bin.cpp b/src/npair_bin.cpp similarity index 58% rename from src/npair_full_bin.cpp rename to src/npair_bin.cpp index 64404ccf8da..294336a03a6 100644 --- a/src/npair_full_bin.cpp +++ b/src/npair_bin.cpp @@ -12,29 +12,33 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_full_bin.h" +#include "npair_bin.h" #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" #include "molecule.h" +#include "neighbor.h" #include "domain.h" #include "my_page.h" #include "error.h" using namespace LAMMPS_NS; +using namespace NeighConst; /* ---------------------------------------------------------------------- */ -NPairFullBin::NPairFullBin(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- binned neighbor list construction for all neighbors every neighbor pair appears in list of both atoms i and j ------------------------------------------------------------------------- */ -void NPairFullBin::build(NeighList *list) +template +void NPairBin::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -77,14 +81,59 @@ void NPairFullBin::build(NeighList *list) tagprev = tag[i] - iatom - 1; } - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -121,5 +170,12 @@ void NPairFullBin::build(NeighList *list) } list->inum = inum; - list->gnum = 0; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBin<0,1,0>; +template class NPairBin<1,0,0>; +template class NPairBin<1,1,0>; +template class NPairBin<1,1,1>; } diff --git a/src/npair_full_bin.h b/src/npair_bin.h similarity index 60% rename from src/npair_full_bin.h rename to src/npair_bin.h index 4d407632715..af23880db78 100644 --- a/src/npair_full_bin.h +++ b/src/npair_bin.h @@ -13,23 +13,40 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBin<0, 1, 0> NPairFullBin; NPairStyle(full/bin, NPairFullBin, NP_FULL | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 0, 0> NPairHalfBinNewtoff; +NPairStyle(half/bin/newtoff, + NPairHalfBinNewtoff, + NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0> NPairHalfBinNewton; +NPairStyle(half/bin/newton, + NPairHalfBinNewton, + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1> NPairHalfBinNewtonTri; +NPairStyle(half/bin/newton/tri, + NPairHalfBinNewtonTri, + NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_H -#define LMP_NPAIR_FULL_BIN_H +#ifndef LMP_NPAIR_BIN_H +#define LMP_NPAIR_BIN_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBin : public NPair { +template +class NPairBin : public NPair { public: - NPairFullBin(class LAMMPS *); + NPairBin(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp new file mode 100644 index 00000000000..aa66089fc5d --- /dev/null +++ b/src/npair_bin_atomonly.cpp @@ -0,0 +1,148 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_bin_atomonly.h" + +#include "atom.h" +#include "error.h" +#include "neighbor.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j +------------------------------------------------------------------------- */ + +template +void NPairBinAtomonly::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *molecule = atom->molecule; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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]) neighptr[n++] = j; + } + } + + 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"); + } + + list->inum = inum; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinAtomonly<0,1,0>; +template class NPairBinAtomonly<1,1,0>; +} diff --git a/src/npair_full_bin_atomonly.h b/src/npair_bin_atomonly.h similarity index 71% rename from src/npair_full_bin_atomonly.h rename to src/npair_bin_atomonly.h index 8e3f96e59b9..ae648631380 100644 --- a/src/npair_full_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -13,23 +13,30 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBinAtomonly<0, 1, 0> NPairFullBinAtomonly; NPairStyle(full/bin/atomonly, NPairFullBinAtomonly, NP_FULL | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0> NPairHalfBinAtomonlyNewton; +NPairStyle(half/bin/atomonly/newton, + NPairHalfBinAtomonlyNewton, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_ATOMONLY_H -#define LMP_NPAIR_FULL_BIN_ATOMONLY_H +#ifndef LMP_NPAIR_BIN_ATOMONLY_H +#define LMP_NPAIR_BIN_ATOMONLY_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBinAtomonly : public NPair { +template +class NPairBinAtomonly : public NPair { public: - NPairFullBinAtomonly(class LAMMPS *); + NPairBinAtomonly(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_copy.cpp b/src/npair_copy.cpp deleted file mode 100644 index b3cab53e0a4..00000000000 --- a/src/npair_copy.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_copy.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairCopy::NPairCopy(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - create list which is simply a copy of parent list -------------------------------------------------------------------------- */ - -void NPairCopy::build(NeighList *list) -{ - NeighList *listcopy = list->listcopy; - - list->inum = listcopy->inum; - list->gnum = listcopy->gnum; - list->ilist = listcopy->ilist; - list->numneigh = listcopy->numneigh; - list->firstneigh = listcopy->firstneigh; - list->ipage = listcopy->ipage; -} diff --git a/src/npair_copy.h b/src/npair_copy.h deleted file mode 100644 index 36b80f83d95..00000000000 --- a/src/npair_copy.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(copy, - NPairCopy, - NP_COPY); -// clang-format on -#else - -#ifndef LMP_NPAIR_COPY_H -#define LMP_NPAIR_COPY_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairCopy : public NPair { - public: - NPairCopy(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_full_bin_atomonly.cpp b/src/npair_full_bin_atomonly.cpp deleted file mode 100644 index b8c4378280b..00000000000 --- a/src/npair_full_bin_atomonly.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_bin_atomonly.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinAtomonly::NPairFullBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinAtomonly::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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]) neighptr[n++] = j; - } - } - - 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"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_bin_ghost.cpp b/src/npair_full_bin_ghost.cpp deleted file mode 100644 index e051a1d75a1..00000000000 --- a/src/npair_full_bin_ghost.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_bin_ghost.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; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinGhost::NPairFullBinGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinGhost::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; 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 all atoms in surrounding bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // skip i = j - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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 <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - 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"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_full_bin_ghost.h b/src/npair_full_bin_ghost.h deleted file mode 100644 index 4b7e08a0e13..00000000000 --- a/src/npair_full_bin_ghost.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(full/bin/ghost, - NPairFullBinGhost, - NP_FULL | NP_BIN | NP_GHOST | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_GHOST_H -#define LMP_NPAIR_FULL_BIN_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinGhost : public NPair { - public: - NPairFullBinGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_multi.cpp b/src/npair_full_multi.cpp deleted file mode 100644 index 34b7a7bfa8f..00000000000 --- a/src/npair_full_multi.cpp +++ /dev/null @@ -1,143 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_multi.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMulti::NPairFullMulti(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi stencil is icollection-jcollection dependent - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMulti::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - 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"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_multi.h b/src/npair_full_multi.h deleted file mode 100644 index dcd1b5d8a98..00000000000 --- a/src/npair_full_multi.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(full/multi, - NPairFullMulti, - NP_FULL | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_H -#define LMP_NPAIR_FULL_MULTI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMulti : public NPair { - public: - NPairFullMulti(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_multi_old.cpp b/src/npair_full_multi_old.cpp deleted file mode 100644 index 7b89f35268e..00000000000 --- a/src/npair_full_multi_old.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_multi_old.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOld::NPairFullMultiOld(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi-type stencil is itype dependent and is distance checked - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOld::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms in other bins in stencil, including self - // skip if i,j neighbor cutoff is less than bin distance - // skip i = j - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_multi_old.h b/src/npair_full_multi_old.h deleted file mode 100644 index 0dd825fccee..00000000000 --- a/src/npair_full_multi_old.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(full/multi/old, - NPairFullMultiOld, - NP_FULL | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OLD_H -#define LMP_NPAIR_FULL_MULTI_OLD_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOld : public NPair { - public: - NPairFullMultiOld(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_nsq.cpp b/src/npair_full_nsq.cpp deleted file mode 100644 index c6427366f47..00000000000 --- a/src/npair_full_nsq.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_nsq.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsq::NPairFullNsq(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsq::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms, owned and ghost - // skip i = j - - for (j = 0; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (i == j) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - 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"); - } - - list->inum = inum; - list->gnum = 0; -} diff --git a/src/npair_full_nsq.h b/src/npair_full_nsq.h deleted file mode 100644 index 0e65fcd027a..00000000000 --- a/src/npair_full_nsq.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(full/nsq, - NPairFullNsq, - NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_H -#define LMP_NPAIR_FULL_NSQ_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsq : public NPair { - public: - NPairFullNsq(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_full_nsq_ghost.cpp b/src/npair_full_nsq_ghost.cpp deleted file mode 100644 index 9550ae54f3e..00000000000 --- a/src/npair_full_nsq_ghost.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_full_nsq_ghost.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; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsqGhost::NPairFullNsqGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsqGhost::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; 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 all atoms, owned and ghost - // skip i = j - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = 0; j < nall; j++) { - if (i == j) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - } else { - for (j = 0; j < nall; j++) { - if (i == j) continue; - 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 <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - - 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"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_full_nsq_ghost.h b/src/npair_full_nsq_ghost.h deleted file mode 100644 index 6ae517ccf71..00000000000 --- a/src/npair_full_nsq_ghost.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(full/nsq/ghost, - NPairFullNsqGhost, - NP_FULL | NP_NSQ | NP_GHOST | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_GHOST_H -#define LMP_NPAIR_FULL_NSQ_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqGhost : public NPair { - public: - NPairFullNsqGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_atomonly_newton.cpp b/src/npair_half_bin_atomonly_newton.cpp deleted file mode 100644 index db84d38f6ef..00000000000 --- a/src/npair_half_bin_atomonly_newton.cpp +++ /dev/null @@ -1,116 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_bin_atomonly_newton.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinAtomonlyNewton::NPairHalfBinAtomonlyNewton(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinAtomonlyNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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]) neighptr[n++] = j; - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; 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]) neighptr[n++] = j; - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_atomonly_newton.h b/src/npair_half_bin_atomonly_newton.h deleted file mode 100644 index 7a3eaf34bc6..00000000000 --- a/src/npair_half_bin_atomonly_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/bin/atomonly/newton, - NPairHalfBinAtomonlyNewton, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_H -#define LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinAtomonlyNewton : public NPair { - public: - NPairHalfBinAtomonlyNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newtoff.cpp b/src/npair_half_bin_newtoff.cpp deleted file mode 100644 index 00318b2aa7b..00000000000 --- a/src/npair_half_bin_newtoff.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_bin_newtoff.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoff::NPairHalfBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newtoff.h b/src/npair_half_bin_newtoff.h deleted file mode 100644 index db240f8bd92..00000000000 --- a/src/npair_half_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/bin/newtoff, - NPairHalfBinNewtoff, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoff : public NPair { - public: - NPairHalfBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newtoff_ghost.cpp b/src/npair_half_bin_newtoff_ghost.cpp deleted file mode 100644 index b85e3328e1b..00000000000 --- a/src/npair_half_bin_newtoff_ghost.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_bin_newtoff_ghost.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffGhost::NPairHalfBinNewtoffGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - owned and ghost atoms check own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffGhost::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nall; 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 all atoms in other bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - 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"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_half_bin_newtoff_ghost.h b/src/npair_half_bin_newtoff_ghost.h deleted file mode 100644 index b11e0f48023..00000000000 --- a/src/npair_half_bin_newtoff_ghost.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/bin/newtoff/ghost, - NPairHalfBinNewtoffGhost, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffGhost : public NPair { - public: - NPairHalfBinNewtoffGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newton.cpp b/src/npair_half_bin_newton.cpp deleted file mode 100644 index d07ebf01f9e..00000000000 --- a/src/npair_half_bin_newton.cpp +++ /dev/null @@ -1,161 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_bin_newton.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewton::NPairHalfBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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 != Atom::ATOMIC) { - 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); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; 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 != Atom::ATOMIC) { - 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); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newton.h b/src/npair_half_bin_newton.h deleted file mode 100644 index 19f7b93ae44..00000000000 --- a/src/npair_half_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/bin/newton, - NPairHalfBinNewton, - NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_H -#define LMP_NPAIR_HALF_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewton : public NPair { - public: - NPairHalfBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_bin_newton_tri.cpp b/src/npair_half_bin_newton_tri.cpp deleted file mode 100644 index ef2e48a4173..00000000000 --- a/src/npair_half_bin_newton_tri.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_bin_newton_tri.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTri::NPairHalfBinNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_bin_newton_tri.h b/src/npair_half_bin_newton_tri.h deleted file mode 100644 index ad270ae173c..00000000000 --- a/src/npair_half_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/bin/newton/tri, - NPairHalfBinNewtonTri, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonTri : public NPair { - public: - NPairHalfBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_newtoff.cpp b/src/npair_half_multi_newtoff.cpp deleted file mode 100644 index cef28f4cb42..00000000000 --- a/src/npair_half_multi_newtoff.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtoff::NPairHalfMultiNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newtoff.h b/src/npair_half_multi_newtoff.h deleted file mode 100644 index 3142587da6d..00000000000 --- a/src/npair_half_multi_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/newtoff, - NPairHalfMultiNewtoff, - NP_HALF | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTOFF_H -#define LMP_NPAIR_HALF_MULTI_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtoff : public NPair { - public: - NPairHalfMultiNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_newton.cpp b/src/npair_half_multi_newton.cpp deleted file mode 100644 index 3ee4ce5fdeb..00000000000 --- a/src/npair_half_multi_newton.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewton::NPairHalfMultiNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == 2) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newton.h b/src/npair_half_multi_newton.h deleted file mode 100644 index 55439eaccac..00000000000 --- a/src/npair_half_multi_newton.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/newton, - NPairHalfMultiNewton, - NP_HALF | NP_MULTI | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewton : public NPair { - public: - NPairHalfMultiNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_half_multi_newton_tri.cpp b/src/npair_half_multi_newton_tri.cpp deleted file mode 100644 index 4a8bb8e19f0..00000000000 --- a/src/npair_half_multi_newton_tri.cpp +++ /dev/null @@ -1,159 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonTri::NPairHalfMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == 2) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_newton_tri.h b/src/npair_half_multi_newton_tri.h deleted file mode 100644 index 2b6d69f3326..00000000000 --- a/src/npair_half_multi_newton_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/newton/tri, - NPairHalfMultiNewtonTri, - NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_TRI_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonTri : public NPair { - public: - NPairHalfMultiNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/npair_half_multi_old_newtoff.cpp b/src/npair_half_multi_old_newtoff.cpp deleted file mode 100644 index eb6c7d9069b..00000000000 --- a/src/npair_half_multi_old_newtoff.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_old_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtoff::NPairHalfMultiOldNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newtoff.h b/src/npair_half_multi_old_newtoff.h deleted file mode 100644 index 9418cf5a4cb..00000000000 --- a/src/npair_half_multi_old_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/old/newtoff, - NPairHalfMultiOldNewtoff, - NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtoff : public NPair { - public: - NPairHalfMultiOldNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_old_newton.cpp b/src/npair_half_multi_old_newton.cpp deleted file mode 100644 index 9708b3e8797..00000000000 --- a/src/npair_half_multi_old_newton.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_old_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewton::NPairHalfMultiOldNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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 != Atom::ATOMIC) { - 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 atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newton.h b/src/npair_half_multi_old_newton.h deleted file mode 100644 index 5c84b8ef98f..00000000000 --- a/src/npair_half_multi_old_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/old/newton, - NPairHalfMultiOldNewton, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewton : public NPair { - public: - NPairHalfMultiOldNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_multi_old_newton_tri.cpp b/src/npair_half_multi_old_newton_tri.cpp deleted file mode 100644 index 683cc5f53c2..00000000000 --- a/src/npair_half_multi_old_newton_tri.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_multi_old_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonTri::NPairHalfMultiOldNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_multi_old_newton_tri.h b/src/npair_half_multi_old_newton_tri.h deleted file mode 100644 index 016746cf123..00000000000 --- a/src/npair_half_multi_old_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/multi/old/newton/tri, - NPairHalfMultiOldNewtonTri, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonTri : public NPair { - public: - NPairHalfMultiOldNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newtoff.cpp b/src/npair_half_nsq_newtoff.cpp deleted file mode 100644 index affcdcf39f4..00000000000 --- a/src/npair_half_nsq_newtoff.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_nsq_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoff::NPairHalfNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoff::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; 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 remaining atoms, owned and ghost - // only store pair if i < j - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_nsq_newtoff.h b/src/npair_half_nsq_newtoff.h deleted file mode 100644 index 45bef5b0b05..00000000000 --- a/src/npair_half_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/nsq/newtoff, - NPairHalfNsqNewtoff, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoff : public NPair { - public: - NPairHalfNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newtoff_ghost.cpp b/src/npair_half_nsq_newtoff_ghost.cpp deleted file mode 100644 index eebee1208bd..00000000000 --- a/src/npair_half_nsq_newtoff_ghost.cpp +++ /dev/null @@ -1,150 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_nsq_newtoff_ghost.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffGhost::NPairHalfNsqNewtoffGhost(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffGhost::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = 0; i < nall; 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 remaining atoms, owned and ghost - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - } else { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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]) neighptr[n++] = j; - } - } - - 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"); - } - - list->inum = atom->nlocal; - list->gnum = inum - atom->nlocal; -} diff --git a/src/npair_half_nsq_newtoff_ghost.h b/src/npair_half_nsq_newtoff_ghost.h deleted file mode 100644 index 5d6cb69450c..00000000000 --- a/src/npair_half_nsq_newtoff_ghost.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/nsq/newtoff/ghost, - NPairHalfNsqNewtoffGhost, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoffGhost : public NPair { - public: - NPairHalfNsqNewtoffGhost(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_nsq_newton.cpp b/src/npair_half_nsq_newton.cpp deleted file mode 100644 index 52639036578..00000000000 --- a/src/npair_half_nsq_newton.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_nsq_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewton::NPairHalfNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - every pair stored exactly once by some processor - decision on ghost atoms based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewton::build(NeighList *list) -{ - int i,j,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; - tagint itag,jtag,tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itag = tag[i]; - 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 remaining atoms, owned and ghost - // itag = jtag is possible for long cutoffs that include images of self - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_nsq_newton.h b/src/npair_half_nsq_newton.h deleted file mode 100644 index 6b7ec89b824..00000000000 --- a/src/npair_half_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/nsq/newton, - NPairHalfNsqNewton, - NP_HALF | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewton : public NPair { - public: - NPairHalfNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newtoff.cpp b/src/npair_half_respa_bin_newtoff.cpp deleted file mode 100644 index b0fb7cb0977..00000000000 --- a/src/npair_half_respa_bin_newtoff.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_respa_bin_newtoff.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtoff::NPairHalfRespaBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtoff::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newtoff.h b/src/npair_half_respa_bin_newtoff.h deleted file mode 100644 index 2782ae239ea..00000000000 --- a/src/npair_half_respa_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/respa/bin/newtoff, - NPairHalfRespaBinNewtoff, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtoff : public NPair { - public: - NPairHalfRespaBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newton.cpp b/src/npair_half_respa_bin_newton.cpp deleted file mode 100644 index 0bb6756497b..00000000000 --- a/src/npair_half_respa_bin_newton.cpp +++ /dev/null @@ -1,233 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_respa_bin_newton.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewton::NPairHalfRespaBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewton::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->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 atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newton.h b/src/npair_half_respa_bin_newton.h deleted file mode 100644 index c83ca898911..00000000000 --- a/src/npair_half_respa_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/respa/bin/newton, - NPairHalfRespaBinNewton, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewton : public NPair { - public: - NPairHalfRespaBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_bin_newton_tri.cpp b/src/npair_half_respa_bin_newton_tri.cpp deleted file mode 100644 index c6c569d794f..00000000000 --- a/src/npair_half_respa_bin_newton_tri.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_respa_bin_newton_tri.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtonTri::NPairHalfRespaBinNewtonTri(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtonTri::build(NeighList *list) -{ - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->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 all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_bin_newton_tri.h b/src/npair_half_respa_bin_newton_tri.h deleted file mode 100644 index a5b573103ce..00000000000 --- a/src/npair_half_respa_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/respa/bin/newton/tri, - NPairHalfRespaBinNewtonTri, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtonTri : public NPair { - public: - NPairHalfRespaBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_nsq_newtoff.cpp b/src/npair_half_respa_nsq_newtoff.cpp deleted file mode 100644 index ff512be7d9c..00000000000 --- a/src/npair_half_respa_nsq_newtoff.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_respa_nsq_newtoff.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewtoff::NPairHalfRespaNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewtoff::build(NeighList *list) -{ - int i,j,n,itype,jtype,n_inner,n_middle,bitmask,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->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 remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_nsq_newtoff.h b/src/npair_half_respa_nsq_newtoff.h deleted file mode 100644 index d13fb810daa..00000000000 --- a/src/npair_half_respa_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/respa/nsq/newtoff, - NPairHalfRespaNsqNewtoff, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewtoff : public NPair { - public: - NPairHalfRespaNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_respa_nsq_newton.cpp b/src/npair_half_respa_nsq_newton.cpp deleted file mode 100644 index 941ce411592..00000000000 --- a/src/npair_half_respa_nsq_newton.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_respa_nsq_newton.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewton::NPairHalfRespaNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewton::build(NeighList *list) -{ - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,bitmask; - int imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - } - - int inum = 0; - int which = 0; - int minchange = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - for (i = 0; i < nlocal; i++) { - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itag = tag[i]; - 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 remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n_inner); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_half_respa_nsq_newton.h b/src/npair_half_respa_nsq_newton.h deleted file mode 100644 index 9050ca0fde3..00000000000 --- a/src/npair_half_respa_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/respa/nsq/newton, - NPairHalfRespaNsqNewton, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewton : public NPair { - public: - NPairHalfRespaNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newtoff.cpp b/src/npair_half_size_bin_newtoff.cpp deleted file mode 100644 index de063c1eb9a..00000000000 --- a/src/npair_half_size_bin_newtoff.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_bin_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtoff::NPairHalfSizeBinNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newtoff.h b/src/npair_half_size_bin_newtoff.h deleted file mode 100644 index f1f9b2a34b8..00000000000 --- a/src/npair_half_size_bin_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/bin/newtoff, - NPairHalfSizeBinNewtoff, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtoff : public NPair { - public: - NPairHalfSizeBinNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newton.cpp b/src/npair_half_size_bin_newton.cpp deleted file mode 100644 index fbf5ce14d47..00000000000 --- a/src/npair_half_size_bin_newton.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_bin_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewton::NPairHalfSizeBinNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewton::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newton.h b/src/npair_half_size_bin_newton.h deleted file mode 100644 index a592969c463..00000000000 --- a/src/npair_half_size_bin_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/bin/newton, - NPairHalfSizeBinNewton, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewton : public NPair { - public: - NPairHalfSizeBinNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_bin_newton_tri.cpp b/src/npair_half_size_bin_newton_tri.cpp deleted file mode 100644 index 15728a596a6..00000000000 --- a/src/npair_half_size_bin_newton_tri.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_bin_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonTri::NPairHalfSizeBinNewtonTri(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,ibin,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_bin_newton_tri.h b/src/npair_half_size_bin_newton_tri.h deleted file mode 100644 index 50861d560e7..00000000000 --- a/src/npair_half_size_bin_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/bin/newton/tri, - NPairHalfSizeBinNewtonTri, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonTri : public NPair { - public: - NPairHalfSizeBinNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newtoff.cpp b/src/npair_half_size_multi_newtoff.cpp deleted file mode 100644 index ecb70cd6c4a..00000000000 --- a/src/npair_half_size_multi_newtoff.cpp +++ /dev/null @@ -1,160 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -es 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 "npair_half_size_multi_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtoff::NPairHalfSizeMultiNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newtoff.h b/src/npair_half_size_multi_newtoff.h deleted file mode 100644 index b33634e5be7..00000000000 --- a/src/npair_half_size_multi_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/newtoff, - NPairHalfSizeMultiNewtoff, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtoff : public NPair { - public: - NPairHalfSizeMultiNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newton.cpp b/src/npair_half_size_multi_newton.cpp deleted file mode 100644 index ee100596bc5..00000000000 --- a/src/npair_half_size_multi_newton.cpp +++ /dev/null @@ -1,213 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_multi_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewton::NPairHalfSizeMultiNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewton::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if ((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newton.h b/src/npair_half_size_multi_newton.h deleted file mode 100644 index 32139136e68..00000000000 --- a/src/npair_half_size_multi_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/newton, - NPairHalfSizeMultiNewton, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewton : public NPair { - public: - NPairHalfSizeMultiNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp deleted file mode 100644 index 9a170948b90..00000000000 --- a/src/npair_half_size_multi_newton_tri.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_multi_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonTri::NPairHalfSizeMultiNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns,js; - int which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_newton_tri.h b/src/npair_half_size_multi_newton_tri.h deleted file mode 100644 index 10e7a90d169..00000000000 --- a/src/npair_half_size_multi_newton_tri.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/newton/tri, - NPairHalfSizeMultiNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonTri : public NPair { - public: - NPairHalfSizeMultiNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_multi_old_newtoff.cpp b/src/npair_half_size_multi_old_newtoff.cpp deleted file mode 100644 index 4f8e4a80789..00000000000 --- a/src/npair_half_size_multi_old_newtoff.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_multi_old_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtoff::NPairHalfSizeMultiOldNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtoff::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newtoff.h b/src/npair_half_size_multi_old_newtoff.h deleted file mode 100644 index c2ca8141293..00000000000 --- a/src/npair_half_size_multi_old_newtoff.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/old/newtoff, - NPairHalfSizeMultiOldNewtoff, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtoff : public NPair { - public: - NPairHalfSizeMultiOldNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_multi_old_newton.cpp b/src/npair_half_size_multi_old_newton.cpp deleted file mode 100644 index 753c8c7d443..00000000000 --- a/src/npair_half_size_multi_old_newton.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_multi_old_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewton::NPairHalfSizeMultiOldNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewton::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - if (history && rsq < radsum*radsum) - j = j ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newton.h b/src/npair_half_size_multi_old_newton.h deleted file mode 100644 index 2322b5bc425..00000000000 --- a/src/npair_half_size_multi_old_newton.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/old/newton, - NPairHalfSizeMultiOldNewton, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewton : public NPair { - public: - NPairHalfSizeMultiOldNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_multi_old_newton_tri.cpp b/src/npair_half_size_multi_old_newton_tri.cpp deleted file mode 100644 index ee7a11a36e2..00000000000 --- a/src/npair_half_size_multi_old_newton_tri.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_multi_old_newton_tri.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtonTri::NPairHalfSizeMultiOldNewtonTri(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtonTri::build(NeighList *list) -{ - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_multi_old_newton_tri.h b/src/npair_half_size_multi_old_newton_tri.h deleted file mode 100644 index 1658abc7173..00000000000 --- a/src/npair_half_size_multi_old_newton_tri.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/multi/old/newton/tri, - NPairHalfSizeMultiOldNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonTri : public NPair { - public: - NPairHalfSizeMultiOldNewtonTri(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED -*/ diff --git a/src/npair_half_size_nsq_newtoff.cpp b/src/npair_half_size_nsq_newtoff.cpp deleted file mode 100644 index 9ace3479016..00000000000 --- a/src/npair_half_size_nsq_newtoff.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_nsq_newtoff.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtoff::NPairHalfSizeNsqNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtoff::build(NeighList *list) -{ - int i,j,jh,n,bitmask,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_nsq_newtoff.h b/src/npair_half_size_nsq_newtoff.h deleted file mode 100644 index b263a907ed9..00000000000 --- a/src/npair_half_size_nsq_newtoff.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/nsq/newtoff, - NPairHalfSizeNsqNewtoff, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtoff : public NPair { - public: - NPairHalfSizeNsqNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_half_size_nsq_newton.cpp b/src/npair_half_size_nsq_newton.cpp deleted file mode 100644 index 05409a0babf..00000000000 --- a/src/npair_half_size_nsq_newton.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_half_size_nsq_newton.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewton::NPairHalfSizeNsqNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewton::build(NeighList *list) -{ - int i,j,jh,n,itag,jtag,bitmask,which,imol,iatom,moltemplate; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - tagint *tag = atom->tag; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - if (includegroup) { - nlocal = atom->nfirst; - bitmask = group->bitmask[includegroup]; - } - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) moltemplate = 1; - else moltemplate = 0; - - int history = list->history; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int mask_history = 1 << HISTBITS; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itag = tag[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_half_size_nsq_newton.h b/src/npair_half_size_nsq_newton.h deleted file mode 100644 index 17735ccc454..00000000000 --- a/src/npair_half_size_nsq_newton.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(half/size/nsq/newton, - NPairHalfSizeNsqNewton, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewton : public NPair { - public: - NPairHalfSizeNsqNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_halffull_newtoff.cpp b/src/npair_halffull_newtoff.cpp deleted file mode 100644 index 475325c2f00..00000000000 --- a/src/npair_halffull_newtoff.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_halffull_newtoff.h" - -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtoff::NPairHalffullNewtoff(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - works if full list is a skip list - works for owned (non-ghost) list, also for ghost list - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -void NPairHalffullNewtoff::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - 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; - if (list->ghost) inum_full += list->listfull->gnum; - - int inum = 0; - ipage->reset(); - - // loop over atoms in full list - - for (ii = 0; ii < inum_full; ii++) { - n = 0; - neighptr = ipage->vget(); - - // loop over parent full list - - i = ilist_full[ii]; - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j > i) 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"); - } - - list->inum = inum; - if (list->ghost) list->gnum = list->listfull->gnum; -} diff --git a/src/npair_halffull_newtoff.h b/src/npair_halffull_newtoff.h deleted file mode 100644 index 0a00267449e..00000000000 --- a/src/npair_halffull_newtoff.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(halffull/newtoff, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI); - -NPairStyle(halffull/newtoff/skip, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP); - -NPairStyle(halffull/newtoff/ghost, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST); - -NPairStyle(halffull/newtoff/skip/ghost, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoff : public NPair { - public: - NPairHalffullNewtoff(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp deleted file mode 100644 index d9ba02d5b00..00000000000 --- a/src/npair_halffull_newton.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_halffull_newton.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewton::NPairHalffullNewton(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - 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 NPairHalffullNewton::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - - double **x = atom->x; - int nlocal = atom->nlocal; - - 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; - ipage->reset(); - - // loop over parent full list - - for (ii = 0; ii < inum_full; ii++) { - n = 0; - neighptr = ipage->vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // 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; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_halffull_newton.h b/src/npair_halffull_newton.h deleted file mode 100644 index 95cc09ec0bb..00000000000 --- a/src/npair_halffull_newton.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(halffull/newton, - NPairHalffullNewton, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI); - -NPairStyle(halffull/newton/skip, - NPairHalffullNewton, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_H -#define LMP_NPAIR_HALFFULL_NEWTON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewton : public NPair { - public: - NPairHalffullNewton(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp deleted file mode 100644 index 4ef0573dbb8..00000000000 --- a/src/npair_skip.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_skip.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - works for half and full lists - works for owned (non-ghost) list, also for ghost list - iskip and ijskip flag which atom types and type pairs to skip - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -void NPairSkip::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - int *neighptr,*jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int num_skip = list->listskip->inum; - if (list->ghost) num_skip += list->listskip->gnum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < num_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - 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"); - } - - list->inum = inum; - if (list->ghost) { - int num = 0; - for (i = 0; i < inum; i++) - if (ilist[i] < nlocal) num++; - else break; - list->inum = num; - list->gnum = inum - num; - } -} diff --git a/src/npair_skip.h b/src/npair_skip.h deleted file mode 100644 index aa2b14e12af..00000000000 --- a/src/npair_skip.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(skip, - NPairSkip, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -NPairStyle(skip/ghost, - NPairSkip, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_H -#define LMP_NPAIR_SKIP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkip : public NPair { - public: - NPairSkip(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp deleted file mode 100644 index 373fe3f8db7..00000000000 --- a/src/npair_skip_respa.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_skip_respa.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - this is for respa lists, copy the inner/middle values from parent -------------------------------------------------------------------------- */ - -void NPairSkipRespa::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal,n_inner,n_middle; - int *neighptr,*jlist,*neighptr_inner,*neighptr_middle; - - int *type = atom->type; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - int *numneigh_inner_skip = list->listskip->numneigh_inner; - int **firstneigh_inner_skip = list->listskip->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int *numneigh_middle_skip,**firstneigh_middle_skip; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - numneigh_middle_skip = list->listskip->numneigh_middle; - firstneigh_middle_skip = list->listskip->firstneigh_middle; - } - - int inum = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - // loop over parent outer rRESPA list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr[n++] = joriginal; - } - - // loop over parent inner rRESPA list - - jlist = firstneigh_inner_skip[i]; - jnum = numneigh_inner_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr_inner[n_inner++] = joriginal; - } - - // loop over parent middle rRESPA list - - if (respamiddle) { - jlist = firstneigh_middle_skip[i]; - jnum = numneigh_middle_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - neighptr_middle[n_middle++] = 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h deleted file mode 100644 index b0938287b5f..00000000000 --- a/src/npair_skip_respa.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(skip/half/respa, - NPairSkipRespa, - NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_RESPA_H -#define LMP_NPAIR_SKIP_RESPA_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipRespa : public NPair { - public: - NPairSkipRespa(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size.cpp b/src/npair_skip_size.cpp deleted file mode 100644 index f4fe760e081..00000000000 --- a/src/npair_skip_size.cpp +++ /dev/null @@ -1,88 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_skip_size.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSize::NPairSkipSize(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip -------------------------------------------------------------------------- */ - -void NPairSkipSize::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - int *neighptr,*jlist; - - int *type = atom->type; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_size.h b/src/npair_skip_size.h deleted file mode 100644 index df8d4791859..00000000000 --- a/src/npair_skip_size.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(skip/half/size, - NPairSkipSize, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_H -#define LMP_NPAIR_SKIP_SIZE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSize : public NPair { - public: - NPairSkipSize(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp deleted file mode 100644 index e48ca345ff1..00000000000 --- a/src/npair_skip_size_off2on.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_skip_size_off2on.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off, this skip list is newton on -------------------------------------------------------------------------- */ - -void NPairSkipSizeOff2on::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal; - tagint itag,jtag; - int *neighptr,*jlist; - - tagint *tag = atom->tag; - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - itag = tag[i]; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // only keep I,J when J = ghost if Itag < Jtag - - jtag = tag[j]; - if (j >= nlocal && jtag < itag) continue; - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h deleted file mode 100644 index 39aee76b095..00000000000 --- a/src/npair_skip_size_off2on.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(skip/size/off2on, - NPairSkipSizeOff2on, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_H -#define LMP_NPAIR_SKIP_SIZE_OFF2ON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSizeOff2on : public NPair { - public: - NPairSkipSizeOff2on(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp deleted file mode 100644 index 1e4b4ac78df..00000000000 --- a/src/npair_skip_size_off2on_oneside.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "npair_skip_size_off2on_oneside.h" - -#include "atom.h" -#include "domain.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off and was not onesided, - this skip list is newton on and onesided -------------------------------------------------------------------------- */ - -void NPairSkipSizeOff2onOneside::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal,flip,tmp; - int *surf,*jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - if (domain->dimension == 2) surf = atom->line; - else surf = atom->tri; - - int inum = 0; - ipage->reset(); - - // two loops over parent list required, one to count, one to store - // because onesided constraint means pair I,J may be stored with I or J - // so don't know in advance how much space to alloc for each atom's neighs - - // first loop over atoms in other list to count neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - numneigh[i]++; - if (flip) i = j; - } - } - - // allocate all per-atom neigh list chunks - - for (i = 0; i < nlocal; i++) { - if (numneigh[i] == 0) continue; - n = numneigh[i]; - firstneigh[i] = ipage->get(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - // second loop over atoms in other list to store neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - // store j in neigh list, not joriginal, like other neigh methods - // OK, b/c there is no special list flagging for surfs - - firstneigh[i][numneigh[i]] = j; - numneigh[i]++; - if (flip) i = j; - } - - // only add atom I to ilist if it has neighbors - - if (numneigh[i]) ilist[inum++] = i; - } - - list->inum = inum; -} diff --git a/src/npair_skip_size_off2on_oneside.h b/src/npair_skip_size_off2on_oneside.h deleted file mode 100644 index 3f1cd6ef340..00000000000 --- a/src/npair_skip_size_off2on_oneside.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 -// clang-format off -NPairStyle(skip/size/off2on/oneside, - NPairSkipSizeOff2onOneside, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H -#define LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSizeOff2onOneside : public NPair { - public: - NPairSkipSizeOff2onOneside(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_bin.cpp similarity index 51% rename from src/nstencil_half_bin_3d_tri.cpp rename to src/nstencil_bin.cpp index 8d1920ae8cd..c5026cb3383 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_bin.cpp @@ -12,28 +12,55 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "nstencil_half_bin_3d_tri.h" +#include "nstencil_bin.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfBin3dTri::NStencilHalfBin3dTri(LAMMPS *lmp) : - NStencil(lmp) {} +template +NStencilBin::NStencilBin(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff ------------------------------------------------------------------------- */ -void NStencilHalfBin3dTri::create() +template +void NStencilBin::create() { int i,j,k; + bool bin_include; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; nstencil = 0; - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Half and ortho stencils only include own and "upper right" bins + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i >= 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i >= 0))) continue; + if (bin_distance(i,j,k) < cutneighmaxsq) stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilBin<0,0,0>; +template class NStencilBin<0,1,0>; +template class NStencilBin<1,0,0>; +template class NStencilBin<1,0,1>; +template class NStencilBin<1,1,0>; +template class NStencilBin<1,1,1>; } diff --git a/src/nstencil_bin.h b/src/nstencil_bin.h new file mode 100644 index 00000000000..a10150fcda2 --- /dev/null +++ b/src/nstencil_bin.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 NSTENCIL_CLASS +// clang-format off +typedef NStencilBin<0, 0, 0> NStencilFullBin2d; +NStencilStyle(full/bin/2d, + NStencilFullBin2d, + NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilBin<0, 1, 0> NStencilFullBin3d; +NStencilStyle(full/bin/3d, + NStencilFullBin3d, + NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilBin<1, 0, 0> NStencilHalfBin2d; +NStencilStyle(half/bin/2d, + NStencilHalfBin2d, + NS_HALF | NS_BIN | NS_2D | NS_ORTHO); + +typedef NStencilBin<1, 0, 1> NStencilHalfBin2dTri; +NStencilStyle(half/bin/2d/tri, + NStencilHalfBin2dTri, + NS_HALF | NS_BIN | NS_2D | NS_TRI); + +typedef NStencilBin<1, 1, 0> NStencilHalfBin3d; +NStencilStyle(half/bin/3d, + NStencilHalfBin3d, + NS_HALF | NS_BIN | NS_3D | NS_ORTHO); + +typedef NStencilBin<1, 1, 1> NStencilHalfBin3dTri; +NStencilStyle(half/bin/3d/tri, + NStencilHalfBin3dTri, + NS_HALF | NS_BIN | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_BIN_H +#define LMP_NSTENCIL_BIN_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilBin : public NStencil { + public: + NStencilBin(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_full_bin_2d.cpp b/src/nstencil_full_bin_2d.cpp deleted file mode 100644 index ba4ca97ed62..00000000000 --- a/src/nstencil_full_bin_2d.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullBin2d::NStencilFullBin2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullBin2d::create() -{ - int i,j; - - nstencil = 0; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_full_bin_2d.h b/src/nstencil_full_bin_2d.h deleted file mode 100644 index f4c630d3c22..00000000000 --- a/src/nstencil_full_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/bin/2d, - NStencilFullBin2d, - NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_BIN_2D_H -#define LMP_NSTENCIL_FULL_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullBin2d : public NStencil { - public: - NStencilFullBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_bin_3d.cpp b/src/nstencil_full_bin_3d.cpp deleted file mode 100644 index 8aa593eb0be..00000000000 --- a/src/nstencil_full_bin_3d.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullBin3d::NStencilFullBin3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; -} diff --git a/src/nstencil_full_bin_3d.h b/src/nstencil_full_bin_3d.h deleted file mode 100644 index 463dda1f62e..00000000000 --- a/src/nstencil_full_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/bin/3d, - NStencilFullBin3d, - NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_BIN_3D_H -#define LMP_NSTENCIL_FULL_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullBin3d : public NStencil { - public: - NStencilFullBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_ghost_bin_2d.cpp b/src/nstencil_full_ghost_bin_2d.cpp deleted file mode 100644 index b5a6bac56cf..00000000000 --- a/src/nstencil_full_ghost_bin_2d.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_ghost_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullGhostBin2d::NStencilFullGhostBin2d(LAMMPS *lmp) : NStencil(lmp) -{ - xyzflag = 1; -} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullGhostBin2d::create() -{ - int i,j; - - nstencil = 0; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) { - stencilxyz[nstencil][0] = i; - stencilxyz[nstencil][1] = j; - stencilxyz[nstencil][2] = 0; - stencil[nstencil++] = j*mbinx + i; - } -} diff --git a/src/nstencil_full_ghost_bin_2d.h b/src/nstencil_full_ghost_bin_2d.h deleted file mode 100644 index 6326aae5eae..00000000000 --- a/src/nstencil_full_ghost_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/ghost/bin/2d, - NStencilFullGhostBin2d, - NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_GHOST_BIN_2D_H -#define LMP_NSTENCIL_FULL_GHOST_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullGhostBin2d : public NStencil { - public: - NStencilFullGhostBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_ghost_bin_3d.cpp b/src/nstencil_full_ghost_bin_3d.cpp deleted file mode 100644 index 2023495c344..00000000000 --- a/src/nstencil_full_ghost_bin_3d.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_ghost_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullGhostBin3d::NStencilFullGhostBin3d(LAMMPS *lmp) : NStencil(lmp) -{ - xyzflag = 1; -} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullGhostBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) { - stencilxyz[nstencil][0] = i; - stencilxyz[nstencil][1] = j; - stencilxyz[nstencil][2] = k; - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; - } -} diff --git a/src/nstencil_full_ghost_bin_3d.h b/src/nstencil_full_ghost_bin_3d.h deleted file mode 100644 index eed98279aa3..00000000000 --- a/src/nstencil_full_ghost_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/ghost/bin/3d, - NStencilFullGhostBin3d, - NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_GHOST_BIN_3D_H -#define LMP_NSTENCIL_FULL_GHOST_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullGhostBin3d : public NStencil { - public: - NStencilFullGhostBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_2d.cpp b/src/nstencil_full_multi_2d.cpp deleted file mode 100644 index 52ae88d09ea..00000000000 --- a/src/nstencil_full_multi_2d.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_multi_2d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMulti2d::NStencilFullMulti2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilFullMulti2d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Always look up neighbor using full stencil and neighbor's bin - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - flag_half_multi[i][j] = false; - flag_skip_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMulti2d::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_full_multi_2d.h b/src/nstencil_full_multi_2d.h deleted file mode 100644 index 2ef43f1999b..00000000000 --- a/src/nstencil_full_multi_2d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/2d, - NStencilFullMulti2d, NS_FULL | NS_MULTI | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_2D_H -#define LMP_NSTENCIL_FULL_MULTI_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMulti2d : public NStencil { - public: - NStencilFullMulti2d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_3d.cpp b/src/nstencil_full_multi_3d.cpp deleted file mode 100644 index d48cf0c8d75..00000000000 --- a/src/nstencil_full_multi_3d.cpp +++ /dev/null @@ -1,86 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_multi_3d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMulti3d::NStencilFullMulti3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilFullMulti3d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Always look up neighbor using full stencil and neighbor's bin - // Stencil cutoff set by i-j cutoff - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - flag_half_multi[i][j] = true; - flag_skip_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMulti3d::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_full_multi_3d.h b/src/nstencil_full_multi_3d.h deleted file mode 100644 index 894c688a9fd..00000000000 --- a/src/nstencil_full_multi_3d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/3d, - NStencilFullMulti3d, NS_FULL | NS_MULTI | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_3D_H -#define LMP_NSTENCIL_FULL_MULTI_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMulti3d : public NStencil { - public: - NStencilFullMulti3d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_old_2d.cpp b/src/nstencil_full_multi_old_2d.cpp deleted file mode 100644 index d653e1080ec..00000000000 --- a/src/nstencil_full_multi_old_2d.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_multi_old_2d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMultiOld2d::NStencilFullMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMultiOld2d::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_full_multi_old_2d.h b/src/nstencil_full_multi_old_2d.h deleted file mode 100644 index 9b56be0793d..00000000000 --- a/src/nstencil_full_multi_old_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/old/2d, - NStencilFullMultiOld2d, - NS_FULL | NS_MULTI_OLD | NS_2D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_OLD_2D_H -#define LMP_NSTENCIL_FULL_MULTI_OLD_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMultiOld2d : public NStencil { - public: - NStencilFullMultiOld2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_full_multi_old_3d.cpp b/src/nstencil_full_multi_old_3d.cpp deleted file mode 100644 index 849ee5a9f9a..00000000000 --- a/src/nstencil_full_multi_old_3d.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_full_multi_old_3d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilFullMultiOld3d::NStencilFullMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilFullMultiOld3d::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_full_multi_old_3d.h b/src/nstencil_full_multi_old_3d.h deleted file mode 100644 index d19da9c95f3..00000000000 --- a/src/nstencil_full_multi_old_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(full/multi/old/3d, - NStencilFullMultiOld3d, - NS_FULL | NS_MULTI_OLD | NS_3D | NS_ORTHO | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_FULL_MULTI_OLD_3D_H -#define LMP_NSTENCIL_FULL_MULTI_OLD_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilFullMultiOld3d : public NStencil { - public: - NStencilFullMultiOld3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_2d.cpp b/src/nstencil_half_bin_2d.cpp deleted file mode 100644 index 004d6a80168..00000000000 --- a/src/nstencil_half_bin_2d.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_bin_2d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin2d::NStencilHalfBin2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin2d::create() -{ - int i,j; - - nstencil = 0; - - 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) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_half_bin_2d.h b/src/nstencil_half_bin_2d.h deleted file mode 100644 index f11138dd546..00000000000 --- a/src/nstencil_half_bin_2d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/2d, - NStencilHalfBin2d, - NS_HALF | NS_BIN | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_2D_H -#define LMP_NSTENCIL_HALF_BIN_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin2d : public NStencil { - public: - NStencilHalfBin2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_2d_tri.cpp b/src/nstencil_half_bin_2d_tri.cpp deleted file mode 100644 index 9f5ace1ed11..00000000000 --- a/src/nstencil_half_bin_2d_tri.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_bin_2d_tri.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin2dTri::NStencilHalfBin2dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin2dTri::create() -{ - int i,j; - - nstencil = 0; - - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; -} diff --git a/src/nstencil_half_bin_2d_tri.h b/src/nstencil_half_bin_2d_tri.h deleted file mode 100644 index 5088bc2edc3..00000000000 --- a/src/nstencil_half_bin_2d_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/2d/tri, - NStencilHalfBin2dTri, - NS_HALF | NS_BIN | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_2D_TRI_H -#define LMP_NSTENCIL_HALF_BIN_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin2dTri : public NStencil { - public: - NStencilHalfBin2dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_3d.cpp b/src/nstencil_half_bin_3d.cpp deleted file mode 100644 index a8cacdb6013..00000000000 --- a/src/nstencil_half_bin_3d.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_bin_3d.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfBin3d::NStencilHalfBin3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfBin3d::create() -{ - int i,j,k; - - nstencil = 0; - - 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)) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; -} diff --git a/src/nstencil_half_bin_3d.h b/src/nstencil_half_bin_3d.h deleted file mode 100644 index f235d6688bf..00000000000 --- a/src/nstencil_half_bin_3d.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/3d, - NStencilHalfBin3d, - NS_HALF | NS_BIN | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_3D_H -#define LMP_NSTENCIL_HALF_BIN_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin3d : public NStencil { - public: - NStencilHalfBin3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_bin_3d_tri.h b/src/nstencil_half_bin_3d_tri.h deleted file mode 100644 index fa2975ef0a0..00000000000 --- a/src/nstencil_half_bin_3d_tri.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/bin/3d/tri, - NStencilHalfBin3dTri, - NS_HALF | NS_BIN | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_BIN_3D_TRI_H -#define LMP_NSTENCIL_HALF_BIN_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfBin3dTri : public NStencil { - public: - NStencilHalfBin3dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_2d.cpp b/src/nstencil_half_multi_2d.cpp deleted file mode 100644 index 81713e183d2..00000000000 --- a/src/nstencil_half_multi_2d.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_2d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti2d::NStencilHalfMulti2d(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti2d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti2d::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) { - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - } else { - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} - diff --git a/src/nstencil_half_multi_2d.h b/src/nstencil_half_multi_2d.h deleted file mode 100644 index 043d160b9eb..00000000000 --- a/src/nstencil_half_multi_2d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/2d, - NStencilHalfMulti2d, NS_HALF | NS_MULTI | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_2D_H -#define LMP_NSTENCIL_HALF_MULTI_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti2d : public NStencil { - public: - NStencilHalfMulti2d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_2d_tri.cpp b/src/nstencil_half_multi_2d_tri.cpp deleted file mode 100644 index d53c503fade..00000000000 --- a/src/nstencil_half_multi_2d_tri.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_2d_tri.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti2dTri::NStencilHalfMulti2dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti2dTri::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti2dTri::create() -{ - int icollection, jcollection, bin_collection, i, j, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } else { - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_half_multi_2d_tri.h b/src/nstencil_half_multi_2d_tri.h deleted file mode 100644 index 1d1a469e727..00000000000 --- a/src/nstencil_half_multi_2d_tri.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/2d/tri, - NStencilHalfMulti2dTri, NS_HALF | NS_MULTI | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_2D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti2dTri : public NStencil { - public: - NStencilHalfMulti2dTri(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_3d.cpp b/src/nstencil_half_multi_3d.cpp deleted file mode 100644 index ca4b4c41114..00000000000 --- a/src/nstencil_half_multi_3d.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_3d.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti3d::NStencilHalfMulti3d(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti3d::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti3d::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - 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)) { - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - } else { - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} - diff --git a/src/nstencil_half_multi_3d.h b/src/nstencil_half_multi_3d.h deleted file mode 100644 index 246d71f3e48..00000000000 --- a/src/nstencil_half_multi_3d.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/3d, - NStencilHalfMulti3d, NS_HALF | NS_MULTI | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_3D_H -#define LMP_NSTENCIL_HALF_MULTI_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti3d : public NStencil { - public: - NStencilHalfMulti3d(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_3d_tri.cpp b/src/nstencil_half_multi_3d_tri.cpp deleted file mode 100644 index 60df9199a26..00000000000 --- a/src/nstencil_half_multi_3d_tri.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_3d_tri.h" - -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMulti3dTri::NStencilHalfMulti3dTri(LAMMPS *lmp) : - NStencil(lmp) {} - -/* ---------------------------------------------------------------------- */ - -void NStencilHalfMulti3dTri::set_stencil_properties() -{ - int n = ncollections; - int i, j; - - // Cross collections: use full stencil, looking one way through hierarchy - // smaller -> larger => use full stencil in larger bin - // larger -> smaller => no nstencil required - // If cut offs are same, use half stencil - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - if(cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; - - flag_skip_multi[i][j] = false; - - if(cutcollectionsq[i][i] == cutcollectionsq[j][j]){ - flag_half_multi[i][j] = true; - bin_collection_multi[i][j] = i; - } else { - flag_half_multi[i][j] = false; - bin_collection_multi[i][j] = j; - } - } - } -} - -/* ---------------------------------------------------------------------- - create stencils based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMulti3dTri::create() -{ - int icollection, jcollection, bin_collection, i, j, k, ns; - int n = ncollections; - double cutsq; - - - for (icollection = 0; icollection < n; icollection++) { - for (jcollection = 0; jcollection < n; jcollection++) { - if (flag_skip_multi[icollection][jcollection]) { - nstencil_multi[icollection][jcollection] = 0; - continue; - } - - ns = 0; - - sx = stencil_sx_multi[icollection][jcollection]; - sy = stencil_sy_multi[icollection][jcollection]; - sz = stencil_sz_multi[icollection][jcollection]; - - mbinx = stencil_mbinx_multi[icollection][jcollection]; - mbiny = stencil_mbiny_multi[icollection][jcollection]; - mbinz = stencil_mbinz_multi[icollection][jcollection]; - - bin_collection = bin_collection_multi[icollection][jcollection]; - - cutsq = cutcollectionsq[icollection][jcollection]; - - if (flag_half_multi[icollection][jcollection]) { - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } else { - for (k = -sz; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = - k*mbiny*mbinx + j*mbinx + i; - } - - nstencil_multi[icollection][jcollection] = ns; - } - } -} diff --git a/src/nstencil_half_multi_3d_tri.h b/src/nstencil_half_multi_3d_tri.h deleted file mode 100644 index 2ced4b0c208..00000000000 --- a/src/nstencil_half_multi_3d_tri.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/3d/tri, - NStencilHalfMulti3dTri, NS_HALF | NS_MULTI | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_3D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMulti3dTri : public NStencil { - public: - NStencilHalfMulti3dTri(class LAMMPS *); - void create() override; - - protected: - void set_stencil_properties() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_2d.cpp b/src/nstencil_half_multi_old_2d.cpp deleted file mode 100644 index 7a2f5a25e22..00000000000 --- a/src/nstencil_half_multi_old_2d.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_old_2d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld2d:: -NStencilHalfMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld2d::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_2d.h b/src/nstencil_half_multi_old_2d.h deleted file mode 100644 index 387429d160c..00000000000 --- a/src/nstencil_half_multi_old_2d.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/2d, - NStencilHalfMultiOld2d, NS_HALF | NS_MULTI_OLD | NS_2D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_2D_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_2D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld2d : public NStencil { - public: - NStencilHalfMultiOld2d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_2d_tri.cpp b/src/nstencil_half_multi_old_2d_tri.cpp deleted file mode 100644 index 7e5158cc31d..00000000000 --- a/src/nstencil_half_multi_old_2d_tri.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_old_2d_tri.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld2dTri:: -NStencilHalfMultiOld2dTri(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld2dTri::create() -{ - int i,j,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_2d_tri.h b/src/nstencil_half_multi_old_2d_tri.h deleted file mode 100644 index a81d37062c3..00000000000 --- a/src/nstencil_half_multi_old_2d_tri.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/2d/tri, - NStencilHalfMultiOld2dTri, NS_HALF | NS_MULTI_OLD | NS_2D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_2D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_2D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld2dTri : public NStencil { - public: - NStencilHalfMultiOld2dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_3d.cpp b/src/nstencil_half_multi_old_3d.cpp deleted file mode 100644 index cdb22c2d13e..00000000000 --- a/src/nstencil_half_multi_old_3d.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_old_3d.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld3d:: -NStencilHalfMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld3d::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - 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)) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_3d.h b/src/nstencil_half_multi_old_3d.h deleted file mode 100644 index d7d8157afa6..00000000000 --- a/src/nstencil_half_multi_old_3d.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi_old/3d, - NStencilHalfMultiOld3d, NS_HALF | NS_MULTI_OLD | NS_3D | NS_ORTHO); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_3D_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_3D_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld3d : public NStencil { - public: - NStencilHalfMultiOld3d(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/nstencil_half_multi_old_3d_tri.cpp b/src/nstencil_half_multi_old_3d_tri.cpp deleted file mode 100644 index 6fb9b6d3d1a..00000000000 --- a/src/nstencil_half_multi_old_3d_tri.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 "nstencil_half_multi_old_3d_tri.h" -#include "atom.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NStencilHalfMultiOld3dTri:: -NStencilHalfMultiOld3dTri(LAMMPS *lmp) : NStencil(lmp) {} - -/* ---------------------------------------------------------------------- - create stencil based on bin geometry and cutoff -------------------------------------------------------------------------- */ - -void NStencilHalfMultiOld3dTri::create() -{ - int i,j,k,n; - double rsq,typesq; - int *s; - double *distsq; - - int ntypes = atom->ntypes; - for (int itype = 1; itype <= ntypes; itype++) { - typesq = cuttypesq[itype]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - n = 0; - for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); - if (rsq < typesq) { - distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; - } - } - nstencil_multi_old[itype] = n; - } -} diff --git a/src/nstencil_half_multi_old_3d_tri.h b/src/nstencil_half_multi_old_3d_tri.h deleted file mode 100644 index 2a7a5a22bb5..00000000000 --- a/src/nstencil_half_multi_old_3d_tri.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, 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 NSTENCIL_CLASS -// clang-format off -NStencilStyle(half/multi/old/3d/tri, - NStencilHalfMultiOld3dTri, NS_HALF | NS_MULTI_OLD | NS_3D | NS_TRI); -// clang-format on -#else - -#ifndef LMP_NSTENCIL_HALF_MULTI_OLD_3D_TRI_H -#define LMP_NSTENCIL_HALF_MULTI_OLD_3D_TRI_H - -#include "nstencil.h" - -namespace LAMMPS_NS { - -class NStencilHalfMultiOld3dTri : public NStencil { - public: - NStencilHalfMultiOld3dTri(class LAMMPS *); - void create() override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ From 25b89473b203f4cfa80c3066a284a6a2f898f17f Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 3 Sep 2022 16:46:55 -0600 Subject: [PATCH 002/300] changing order of central bin --- src/nstencil_bin.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index c5026cb3383..45908671fd2 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -39,15 +39,20 @@ void NStencilBin::create() nstencil = 0; + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) stencil[nstencil++] = 0; + for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - // Half and ortho stencils only include own and "upper right" bins + // Now only include "upper right" bins for half and ortho stencils if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i >= 0))) continue; + if (! (j > 0 || (j == 0 && i > 0))) continue; if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i >= 0))) continue; + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; if (bin_distance(i,j,k) < cutneighmaxsq) stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; From a03a6a9692175de24bb4aec471b5383beefcf975 Mon Sep 17 00:00:00 2001 From: Goff Date: Wed, 28 Sep 2022 10:12:00 -0600 Subject: [PATCH 003/300] compute pace for ACE descriptor calculations --- src/ML-PACE/compute_pace.cpp | 496 +++++++++++++++++++++++++++++++++++ src/ML-PACE/compute_pace.h | 86 ++++++ 2 files changed, 582 insertions(+) create mode 100644 src/ML-PACE/compute_pace.cpp create mode 100644 src/ML-PACE/compute_pace.h diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp new file mode 100644 index 00000000000..8c2b0b1afaa --- /dev/null +++ b/src/ML-PACE/compute_pace.cpp @@ -0,0 +1,496 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "compute_pace.h" +#include "ace_evaluator.h" +#include "ace_c_basis.h" +#include "ace_abstract_basis.h" +#include "ace_types.h" +#include +#include + +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +enum{SCALAR,VECTOR,ARRAY}; +ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), + paceall(nullptr), pace_peratom(nullptr), + basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) +{ + + array_flag = 1; + extarray = 0; + bikflag = 0; + dgradflag = 0; + + int ntypes = atom->ntypes; + int nargmin = 4; + + if (narg < nargmin) error->all(FLERR,"Illegal compute pace command"); + + bikflag = utils::inumeric(FLERR, arg[4], false, lmp); + dgradflag = utils::inumeric(FLERR, arg[5], false, lmp); + if (dgradflag && !bikflag) + error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); + + + memory->create(map,ntypes+1,"pace:map"); + + //read in file with CG coefficients or c_tilde coefficients + basis_set = new ACECTildeBasisSet(arg[3]); + double cut = basis_set->cutoffmax; + double cutmax = basis_set->cutoffmax; + double cuti; + double radelemall = 0.5; + memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + for (int i = 1; i <= ntypes; i++) { + cuti = basis_set->radial_functions->cut(map[i], map[i]); + if (cuti > cutmax) cutmax = cuti; + cutsq[i][i] = cuti*cuti; + for (int j = i+1; j <= ntypes; j++) { + cuti = basis_set->radial_functions->cut(map[i], map[j]); + cutsq[i][j] = cutsq[j][i] = cuti*cuti; + } + } + //# of rank 1, rank > 1 functions + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + int ncoeff = n_r1 + n_rp; + int nvalues = ncoeff; + + //----------------------------------------------------------- + nperdim = ncoeff; + ndims_force = 3; + ndims_virial = 6; + bik_rows = 1; + yoffset = nperdim; + zoffset = 2*nperdim; + natoms = atom->natoms; + if (bikflag) bik_rows = natoms; + dgrad_rows = ndims_force*natoms; + size_array_rows = bik_rows+dgrad_rows + ndims_virial; + if (dgradflag) { + size_array_rows = bik_rows + 3*natoms*natoms + 1; + size_array_cols = nvalues + 3; + error->warning(FLERR,"dgradflag=1 creates a N^2 array, beware of large systems."); + } + else size_array_cols = nvalues*atom->ntypes + 1; + lastcol = size_array_cols-1; + + ndims_peratom = ndims_force; + size_peratom = ndims_peratom*nperdim*atom->ntypes; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputePACE::~ComputePACE() +{ + memory->destroy(pace); + memory->destroy(paceall); + memory->destroy(cutsq); + memory->destroy(pace_peratom); + memory->destroy(map); +} + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::init() +{ + if (force->pair == nullptr) + error->all(FLERR,"Compute pace requires a pair style be defined"); + if (cutmax > force->pair->cutforce) + error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + + // need an occasional full neighbor list + neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"pace") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute pace"); + + // allocate memory for global array + memory->create(pace,size_array_rows,size_array_cols, + "pace:pace"); + memory->create(paceall,size_array_rows,size_array_cols, + "pace:paceall"); + array = paceall; + + // find compute for reference energy + + std::string id_pe = std::string("thermo_pe"); + int ipe = modify->find_compute(id_pe); + if (ipe == -1) + error->all(FLERR,"compute thermo_pe does not exist."); + c_pe = modify->compute[ipe]; + + // add compute for reference virial tensor + + std::string id_virial = std::string("pace_press"); + std::string pcmd = id_virial + " all pressure NULL virial"; + modify->add_compute(pcmd); + + int ivirial = modify->find_compute(id_virial); + if (ivirial == -1) + error->all(FLERR,"compute pace_press does not exist."); + c_virial = modify->compute[ivirial]; + +} + + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputePACE::compute_array() +{ + int ntotal = atom->nlocal + atom->nghost; + double **f = atom->f; + invoked_array = update->ntimestep; + + // grow pace_peratom array if necessary + + if (atom->nmax > nmax) { + memory->destroy(pace_peratom); + nmax = atom->nmax; + memory->create(pace_peratom,nmax,size_peratom, + "pace:pace_peratom"); + } + + // clear global array + + for (int irow = 0; irow < size_array_rows; irow++){ + for (int icoeff = 0; icoeff < size_array_cols; icoeff++){ + pace[irow][icoeff] = 0.0; + } + } + + // clear local peratom array + + for (int i = 0; i < ntotal; i++){ + for (int icoeff = 0; icoeff < size_peratom; icoeff++) { + pace_peratom[i][icoeff] = 0.0; + } + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + SPECIES_TYPE *mus; + NS_TYPE *ns; + LS_TYPE *ls; + + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + const int inum = list->inum; + const int* const ilist = list->ilist; + const int* const numneigh = list->numneigh; + int** const firstneigh = list->firstneigh; + int * const type = atom->type; + + //determine the maximum number of neighbours + int max_jnum = -1; + int nei = 0; + int jtmp =0; + for (int iitmp = 0; iitmp < list->inum; iitmp++) { + int itmp = ilist[iitmp]; + jtmp = numneigh[itmp]; + nei = nei + jtmp; + if (jtmp > max_jnum){ + max_jnum = jtmp; + } + } + + // compute pace derivatives for each atom in group + // use full neighbor list to count atoms less than cutoff + + double** const x = atom->x; + const int* const mask = atom->mask; + const int ntypes = atom->ntypes; + + for (int ii = 0; ii < inum; ii++) { + int irow = 0; + if (bikflag) irow = atom->tag[ilist[ii] & NEIGHMASK]-1; + const int i = ilist[ii]; + if (mask[i] & groupbit) { + const int itype = type[i]; + const int* const jlist = firstneigh[i]; + const int jnum = numneigh[i]; + const int typeoffset_local = ndims_peratom*nperdim*(itype-1); + const int typeoffset_global = nperdim*(itype-1); + + ace = new ACECTildeEvaluator(*basis_set); + int n_r1, n_rp = 0; + n_r1 = basis_set->total_basis_size_rank1[0]; + n_rp = basis_set->total_basis_size[0]; + + int ncoeff = n_r1 + n_rp; + ace->element_type_mapping.init(ntypes+1); + for (int ik = 1; ik <= ntypes; ik++) { + for(int mu = 0; mu < basis_set->nelements; mu++){ + if (mu != -1) { + if (mu == ik - 1) { + map[ik] = mu; + ace->element_type_mapping(ik) = mu; + } + } + } + } + + + if (dgradflag) { + + // dBi/dRi tags + + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][2] = 0; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][2] = 1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][0] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][1] = atom->tag[i]-1; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][2] = 2; + + // dBi/dRj tags + + for (int j=0; jtag[i]-1) + 0][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 0][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 0][2] = 0; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 1][2] = 1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][0] = atom->tag[i]-1; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][1] = j; + pace[bik_rows + ((j)*3*natoms) + 3*(atom->tag[i]-1) + 2][2] = 2; + } + } + + // resize the neighbor cache after setting the basis + ace->resize_neighbours_cache(max_jnum); + ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); + Array1D Bs =ace->B_all; + + for (int jj = 0; jj < jnum; jj++) { + const int j = jlist[jj]; + //replace mapping of jj to j + if (!dgradflag) { + double *pacedi = pace_peratom[i]+typeoffset_local; + double *pacedj = pace_peratom[j]+typeoffset_local; + + Array3D fs = ace->neighbours_dB; + //force array in (func_ind,neighbour_ind,xyz_ind) format + // dimension: (n_descriptors,max_jnum,3) + //example to access entries for neighbour jj after running compute_atom for atom i: + for (int func_ind =0; func_ind < n_r1 + n_rp; func_ind++){ + DOUBLE_TYPE fx_dB = fs(func_ind,jj,0); + DOUBLE_TYPE fy_dB = fs(func_ind,jj,1); + DOUBLE_TYPE fz_dB = fs(func_ind,jj,2); + pacedi[func_ind] += fx_dB; + pacedi[func_ind+yoffset] += fy_dB; + pacedi[func_ind+zoffset] += fz_dB; + pacedj[func_ind] -= fx_dB; + pacedj[func_ind+yoffset] -= fy_dB; + pacedj[func_ind+zoffset] -= fz_dB; + } + } else { + //printf("inside dBi/dRj logical : ncoeff = %d \n", ncoeff); + Array3D fs = ace->neighbours_dB; + for (int iicoeff = 0; iicoeff < ncoeff; iicoeff++) { + + // add to pace array for this proc + //printf("inside dBi/dRj loop\n"); + // dBi/dRj + DOUBLE_TYPE fx_dB = fs(iicoeff,jj,0); + DOUBLE_TYPE fy_dB = fs(iicoeff,jj,1); + DOUBLE_TYPE fz_dB = fs(iicoeff,jj,2); + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] -= fx_dB; + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] -= fy_dB; + pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] -= fz_dB; + + // dBi/dRi + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] += fx_dB; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] += fy_dB; + pace[bik_rows + ((atom->tag[i]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] += fz_dB; + } + } + } // loop over jj inside + if (!dgradflag) { + + int k = typeoffset_global; + + for (int icoeff = 0; icoeff < ncoeff; icoeff++){ + pace[0][k++] += Bs(icoeff); + } + } else { + int k = 3; + for (int icoeff = 0; icoeff < ncoeff; icoeff++){ + pace[irow][k++] += Bs(icoeff); + } + } + delete ace; + } //group bit + } // for ii loop + delete basis_set; + // accumulate force contributions to global array + if (!dgradflag){ + for (int itype = 0; itype < atom->ntypes; itype++) { + const int typeoffset_local = ndims_peratom*nperdim*itype; + const int typeoffset_global = nperdim*itype; + for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int i = 0; i < ntotal; i++) { + double *pacedi = pace_peratom[i]+typeoffset_local; + int iglobal = atom->tag[i]; + int irow = 3*(iglobal-1)+1; + pace[irow++][icoeff+typeoffset_global] += pacedi[icoeff]; + pace[irow++][icoeff+typeoffset_global] += pacedi[icoeff+yoffset]; + pace[irow][icoeff+typeoffset_global] += pacedi[icoeff+zoffset]; + } + } + } + } + + if (!dgradflag) { + // accumulate forces to global array + for (int i = 0; i < atom->nlocal; i++) { + int iglobal = atom->tag[i]; + int irow = 3*(iglobal-1)+1; + pace[irow++][lastcol] = atom->f[i][0]; + pace[irow++][lastcol] = atom->f[i][1]; + pace[irow][lastcol] = atom->f[i][2]; + } + } else { + + // for dgradflag=1, put forces at first 3 columns of bik rows + + for (int i=0; inlocal; i++) { + int iglobal = atom->tag[i]; + pace[iglobal-1][0+0] = atom->f[i][0]; + pace[iglobal-1][0+1] = atom->f[i][1]; + pace[iglobal-1][0+2] = atom->f[i][2]; + } + } + + dbdotr_compute(); + + // sum up over all processes + MPI_Allreduce(&pace[0][0],&paceall[0][0],size_array_rows*size_array_cols,MPI_DOUBLE,MPI_SUM,world); + + // assign energy to last column + + if (!dgradflag) { + for (int i = 0; i < bik_rows; i++) paceall[i][lastcol] = 0; + int irow = 0; + double reference_energy = c_pe->compute_scalar(); + paceall[irow][lastcol] = reference_energy; + } else { + + // assign reference energy right after the dgrad rows, first column + + int irow = bik_rows + 3*natoms*natoms; + double reference_energy = c_pe->compute_scalar(); + paceall[irow][0] = reference_energy; + } + + // assign virial stress to last column + // switch to Voigt notation + + if (!dgradflag) { + c_virial->compute_vector(); + int irow = 3*natoms+bik_rows; + paceall[irow++][lastcol] = c_virial->vector[0]; + paceall[irow++][lastcol] = c_virial->vector[1]; + paceall[irow++][lastcol] = c_virial->vector[2]; + paceall[irow++][lastcol] = c_virial->vector[5]; + paceall[irow++][lastcol] = c_virial->vector[4]; + paceall[irow++][lastcol] = c_virial->vector[3]; + } +} + +/* ---------------------------------------------------------------------- + compute global virial contributions via summing r_i.dB^j/dr_i over + own & ghost atoms +------------------------------------------------------------------------- */ +void ComputePACE::dbdotr_compute() +{ + + if (dgradflag) return; + + double **x = atom->x; + int irow0 = bik_rows+ndims_force*natoms; + + // sum over ace contributions to forces + // on all particles including ghosts + + int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < nall; i++) + for (int itype = 0; itype < atom->ntypes; itype++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + double *pacedi = pace_peratom[i]+typeoffset_local; + for (int icoeff = 0; icoeff < nperdim; icoeff++) { + double dbdx = pacedi[icoeff]; + double dbdy = pacedi[icoeff+yoffset]; + double dbdz = pacedi[icoeff+zoffset]; + int irow = irow0; + pace[irow++][icoeff+typeoffset_global] += dbdx*x[i][0]; + pace[irow++][icoeff+typeoffset_global] += dbdy*x[i][1]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][2]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][1]; + pace[irow++][icoeff+typeoffset_global] += dbdz*x[i][0]; + pace[irow++][icoeff+typeoffset_global] += dbdy*x[i][0]; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage +------------------------------------------------------------------------- */ + +double ComputePACE::memory_usage() +{ + + double bytes = (double)size_array_rows*size_array_cols * + sizeof(double); // pace + bytes += (double)size_array_rows*size_array_cols * + sizeof(double); // paceall + bytes += (double)nmax*size_peratom * sizeof(double); // pace_peratom + int n = atom->ntypes+1; + bytes += (double)n*sizeof(int); // map + + return bytes; +} diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h new file mode 100644 index 00000000000..e806c65c160 --- /dev/null +++ b/src/ML-PACE/compute_pace.h @@ -0,0 +1,86 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +ComputeStyle(pace,ComputePACE); +// clang-format on +#else + +#ifndef LMP_COMPUTE_PACE_H +#define LMP_COMPUTE_PACE_H + +#include "compute.h" +#include "ace_c_basis.h" +#include "ace_evaluator.h" +#include "ace_abstract_basis.h" + +namespace LAMMPS_NS { + +class ComputePACE : public Compute { + public: + ComputePACE(class LAMMPS *, int, char **); + ~ComputePACE(); + void init(); + void init_list(int, class NeighList *); + void compute_array(); + double memory_usage(); + + private: + int natoms, nmax, size_peratom, lastcol; + int ncoeff, nvalues, nperdim, yoffset, zoffset; + int ndims_peratom, ndims_force, ndims_virial; + double **cutsq; + class NeighList *list; + double **pace, **paceall; + double **pace_peratom; + double rcutfac; + int *map; // map types to [0,nelements) + int nelements, chemflag; + int bikflag, bik_rows, dgradflag, dgrad_rows; + double *cg; + class ACECTildeEvaluator *ace; + class ACECTildeBasisSet *basis_set; + double cutmax; + Compute *c_pe; + Compute *c_virial; + + void dbdotr_compute(); +}; + +} // namespace LAMMPS_NS + +#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: Compute pace requires a pair style be defined + +Self-explanatory. + +E: Compute pace cutoff is longer than pairwise cutoff + +UNDOCUMENTED + +W: More than one compute pace/atom + +Self-explanatory. + +*/ From 43698824f122de724af3e7aa629f66d1650044b4 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 004/300] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 00000000000..58e2592d61b --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From b4eab5e9b01f5fa59d97de1bf19b96c549e9fc4e Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 005/300] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 00000000000..2953222216c --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 00000000000..b18ec13a4d9 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 00000000000..afe0a27f359 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe zE%2i7P&0|nA_&SnK6dovAUYK^)j>JJg)Ou0XYkoI49|oy6({Ltw3@f0e49BA6$@pk zTq~*pKMGNHtGDAo!WDG?Fv%>kG~+m~@|N)9wGPp=+t)%{I@{eE>oml0^=#Pu>I5XJ zZ&hx^*}%d23mUfive@IN-jpGad9hhChv1Yo9?T>%J?SyuC}O@Lulu$m1*{5-wdUj~ zu&$b$I`+FV(Y3bgDc{&Kz)q5$^mIkj^GqTioLXh4*#kEISL} zVVLdVvBW}9bu{rkcAyE|J?VGxGva7k#QNAE;rDqUwYliteu58#{$`d!Cva}iWNQ+9 znVvT2{Kuha2u-D+2$3EDszH-?-c}9Zw#-dmrQn37IOBLsUKOBnfegZ@J#J zaYjYrT@`Ohi2S5|YVZi|4F=Q7MgnqV_<>TF6BQ)`V3V@@OUZH+$nh$cs|}8Wn{#MI zNA4gu6ozz~J* zxMe&^E5K1>TK}K06NPYzXYq^t=TW3x9JSd_wgz%8g?X`?g~-&qh40PE4zl{l?{T6s z8Tu0&MrmnUA=u2aJlcTJsXA2MQ83yK3%1iU7lq1DA^EQ9>46e-?^L1w@$owJNJe1K z58FQ|_%QpUJ*t%;tc-Un5_KbA{jF+lOY>kfX+JNV)=EeAFZHfZi341C=q4ESf#ApA z&dza%Vr2N5F(%-5AJVaJ-z={$MTrLv_;Ek1g4;RMyM_eYQ2gN0E1i4$q45!8Rq3w} z;H7=%)BP{g$YznDw(;A3?4`$D-E(a0SdVc-;79o`^hy5SHFF*+%xa~*>wM}AWNGfw zqIuR0QHS+dcRs8Vb^eA5=2wQHE0CY|m}v_t%48;yl$t}GHoT*f&6CK=Vx&k}sTZ0i zOG59N)uV=dejf$qUSyb>`Snus|K@9E%rfm{UrwRD8CQ5LUu2^Hw&(xuv&VDY>$U1e zd=JwXnDXaP^zsuGYH}Kk-Zk;osdZ|+GTduqR;LU2O%|nxPuBsjx?QY_;}8@dQ~h3S z^b1uke*Tl{^A3sU54t8rG@&yTS(I$#eJGgP`0#+nANawrk8DVx68S4HoHTaah9AYg z_#`15Z~1&bS`kY{mqs@GOv}>HhOk23+7Tk}{e;C;Eph-!_~f*9kP`7TGXBW2`2xh| zlVGfKy%H7YE=8+5(_*oqNfa-Vl95fX*3S>^{X}JFf&PQ>Lbx+kVXP+@hZ4>~yvVIA zG%~t}e3DrAO7sTv-*5j7oGn(}Z%D?`=d)W?tUNQIzjZM_|Hc$7o1MKVP3R!Wn7GYZ zFl@lD<9+m1k7)%Z1b^*lSi2C6~kU!^HJO8*~J#PSP}H`V)ihS z?mM(D&OHGFa-YI&cQfMTi=$zM=i4A`W&xw0??)ILZ8_hWE)-4bnDv>B44c}uF&nXW z3W`bTizw}9&k@f{CF6%7 z&M8w!^Mps|hQd`&Pt(?Kk@^RoT~rT(d$(^mREfsSc6i7FK%9 zeL;+1AY;&zuNW5PVTkeF$*aF z#^FQzMfx1zETY70`iL?T~d_VD+^ z2-K{7>q6m)T;!a1tE*in3GH&dbl@9TF?wv<)FKzvhzcoB-EF;1;GFE5W5^2H(YH_6 zw<)Zj0DsdL?dxSDNX;OP*@&$liYQAC3+cTH&sCH1o{$B)Wa!@US}^G&_VHPn{)gV2V)HGAh8_=7A&f%^@-nL(9Ueb+@=Q%x%OGuWd26& zhs6cgRKnra>3gQEh4X~Y`Jl(S7$R?$`|wlr0w2yz(bZ~ya|zN^7NUO=d~1!>e#<5m zM131rIJi8mM&4l=chK2R^x{Q~7g_KMOxipZ)Lf&&MX#v1i@sX}I!#iAxqW%vu937y8MRigk4Lw-LXV)FAw^j`e&&OO4rD ze?7hI$cc%0q@DeAE)FPTX#^)nE0FN=hTWBT8}N>YiTU|O)bXOS(J{vvSo$wBPJJYJ zTfa?dD^zBK7~{QpyW=ASkN7}k8WRJ?aVe&MOeGWHnVb(e!+ifWKH`+adcIVB4yo59 z2C7+o1_LqYPdXcm$mh`21&`yj)#O@Bq}6lJ?OU7NIWm0y9qNfityBwwvc7 zQKPF+iv7gQX-O+2o&R5fcy>-N-{YE3QE^WRQX5fZ)*xI#xD~gfo7cK|W z6OQO?(9+0!*ec>q8!L?6)d-4T9-jPtau&|$vkC1sEQ1dV>Gt_gJkak~#i=S*eIWPr zlJMN~Y}gvA`}}ak9`!%te>@rV7Sv)*KbnyG6ZL2BP9@$*hEs*J38%1kz`X3NdP?3I zZGMmpNNzDhRBJg_T)at0NvTDHXNAyByJYg*x7h_z8+mhS&qu(%kURU+eKSC4u21Os z%0t*QreuDVsAtH50Dw<4);CGJcb_lvh)M-_7 zZr!+UnGVmoy85Zqi030PRVYPA@z zPTQ!?=aq%tIelDzLRp7SoRI7h3+P6+7iDO#lYfJW^Y@Rfl{TTt^vHveRRKWf>7x3l zs07;DPJL9o*#+zBQdx=BoS2f2e{)a)f$JQSaISm0fYi$;X%<$+FUCwFR+ zLQtNE8V^#we@EzK8mjydO)RO0PA`p1AB-1aqMT3rsu|?;ZET7X0^?EwFZ|(xu*Jp#sNED zeA#fI5#6^lSof2!LSzefyn`OjL1zVz*{*$&KoWQRlyQy+L?q-1f@_S3R%w#wzNn07?1{dDLC7~AcwFPxs+GI_yFMy{+F1sm_ zhl&4oD}F_F7oKo{s(+vOCp17OFYCLP19w_DxQ{}p7Y%;bxH^+E03MC5wT(;7$m{0y zI|=@q&{hBSs+smXq$W9s2Z@p5-wzi`PoE{l!mZAP9rdNbT&;(#?X&C9cC5>(6)YW@ z?F77Gr&@qhC-VguR#s3*3w*kKrw47g@o%wZWB?0StzIGB5L|M1HM)0z;2GWe*;*w) zi|^qLV=S1Qgwf1AlWRbaCyhwJQ{Ej=%E|QFb#NKJ>71RgVpxIS>aogaN2&4G%@u0g z84uucw41Y?LNSWXn{Id|UXJ$Uh|~sZlHdy^Q;rJ1=h2C*2IfWcCSQ3dk| zqu9b75L!C?ASr4Q`8rRErKm|`w2bsO3V2wtl0IGsv-W-1(f4oi&T;hu?o_4!nm!i! zn0{-M)D*%#9=(Q>N)zj?(8cp6)kP53olC=fhJj!*AxZp{%Zk~{Cvdli&4EKnv&?M) zS9E5oD~OlSk4QT8qQc~GJanG;kv#Wi4UyPoV=j=6lAXSUl3E-5t6g*Oh(4aD)Pr07 z`Afd9yrF=^p!n9WU;n%(Yp?c&T~JblObJ}=47QLjRnPqNjDRI_4qpC-1)2Px@iUn; zJe-wpgPoz%1Z#R2H16B*V>%x8&v@Kf>{}YtO8*&;9ON%j@6|RB_-FfH=P!b;7gS$% zzbOL6{OU@vw9D{NwA}p5BT4jEUk8@g<86Dd7eO;8xl@SOFZ5u%R=*j)isV}@zR2J6 zhO^{qZS1kez@6%;=HToJ%WTbzCPcmD+WjEWyf!^Z6?Z#k&td|)HOc}yTsG*haUxKu z)8TZb7svm(p1;n^kF2s?S(VQN^mR-*J@UH@fAxRDU(ZMOKiBgMEF9tYQ?-Zx9RK&a z#+EE-;j?rMa4R_9pb|0vXM6Onk>@omzhLhT+Hj$PNc8vq|F5>Ue7MyqIRx&~b*KB8 ze}XF2q5Pwi1;EcPXG*OX2=XPRIQ{M>kcqfGvG^5JkuCie=tr2TWf z?1i8CX3PlPz5l=cj%p8^e2-`R-|P0Ek2W}N91dTE4kl-+efsCPzwf7vI_n|p{$ON7 z@n&B;pXUGB{`Y>?G&dx{Q9rY$@=AofzjADbnNY| z!j|<0xOj}a?cNb`eEWDdFON|YI?}rKBdL=qH-hC?Q)h2xWx~ZBGM}@ymd#&2v z6^B&i@#yu~1@!!x_5Q3+-Ei2^RR2lFD3o}|UkmnI04~J?`^lZ^kc5iBPD}qF@CJL< zw0Jha;nQa{7IWBfvxxW#@Ye{L@RX z-x2wXz|^VZAkSF{$too@Y&wOIf8DW&my#M|Z+zslBh!tx?>HgdL>@T+*3 zbWRfS>7o7PQsmD9;rw@-!(q&Hn7^2c!{QpDo5#j5vfB2I(EY}EUL}m9J%T^EX>u1p zE+Y1!lP(?pL`!vM=0PqhjsEe=Y;OvP{>U|JzS0AUweDp8X-jY`v76l6rxgTQ-d_(e zh(f`}=c}133I3i7A}SjOt+3KCBz%H#;UD`CDKQ#qE31VxO3}kl2)&oT--G{GJF>Ny zXL4~6F?XnxwsMkVuSgn?O$io3xX8BEEyH&7;HKZ_T;4&%)*^GpMurY+tkKBbP4W)0 z(Wg4>sIX$3-)iqhW%i@U>thckwm7kF8*TdlRdLKP>SgY@QyQ>2ymPhCUq*A?DN^du zwAdlDZ%uzB2)tU`y$@4_Uf4t3q14^DDM~u1r(U6ximoMe4xiJHLZ)+-JM7CO*c-7- zstW{;fTHWxXgX6PTwZ+MCM3y>>9}2pJ6^ShvcrUDm_)+RP!yFli{B`6(tj5Bfj<@Y zo2x(1eNU|G$~}Hcy4J$G1J<c-Hpv0GF*K@)X_+Boj>Q_DTt*uuE@Opo`l9Em#$w(oI}+^ zjx2}vj-sLOH+3&qts?S|_dE9J6d(hR*U>KOi%5O&n|pxePoSBin(n(QgQrRkU1_eo13Ks%jX#HI&>ufI6U9c45 zj?4p39ZkUz@nKZyRBB%Fi2^qtOm=pt?n09FsZme5R#4kYyvr-2S@a0;DUPbQphZJ% zcgY08{}cQ!J*qzeN00rHi#nYIrq2Y2O3V{M!Hsn=TCfI@xgWnMG%*jWHdWZyfqu|8 z_X~^rup2k(ID!@RPC&#+%YxI$Zv3twv-%jp`a+Lia<>YR;5XcTh6m2m;9>>q*zu5F@U{;3G}2E(Br$qoWN8U#-e-_HW{4R-W>#bq zb%Wq@2s|P=5LAwMPai9Bxm6B=_Y}>=RmpI>i<`Utu=3--v&G}EbFT>=$ByDwL$QCg zYfXkmZ*7^4e26c9@3O59-|X&H_H#e^=RM(yjB)6vW`d)tPE%(|Iuv|%WMe#EDWe^h z9>XKcm;TTAC)(d1i~K|b)3=1LoD4L93`5uVZ10T!8IMn``}d?jfWyA|2+@2CJzFVFQe5cPM=yG`NQV470Oq&-rTP;9oF`v6W1g}(GwE}-du@55%3 zDX3F@mmW^hKpx$q`r|r}{<$A6vn($k(Q7dJ;D6d9py%|SOxM@$pY30RIR!(WP8nWaUiN5&2ztPJwbe@LOAH; zr3gGDQ%uHxlWtD>;@*0sCnfB0?O76{H>1|LHs=S7wL}5jkT){Cr(;zY`W%W!-&6LU z%|>0U-=}DwkD$V9ux=Jbf$3*S+DL7N61+>l;&T*eu}9p#2TVvvurN*mkNkOmR8w@6 zY;-dLy$m6ulBa_b@W=bCx7SPx1t{j&RW|uG9Rl36#_8hxIh z9D^IJ40V2`m0;dbsDky+K^D)@u*5|Y{KL-|O)H8;@McqyRGB;uDG=zSyxsN4|GvZg z9o8|>&pmoqdY};O-Uu^@Hf6!aDM}YY;TWg~zP@Dr`W+gUHTU-#&i?a$j8q>o6e1sn z*<35~{fz&+e*5qD;_rUSfujuFI^(E8sSq=$W5>cX#Gk3il%Zb&d2Cgbv=|wy?%ss; zIbitsL1Hxae`Ab*+G_EpMPw#MjH_>K6!9SGf49$_w4<=i~0697N_v zCnA$fTG4uiX?64DAEZ>|Qb}#pg^r|LVf|fN0@FDm;))y0m^$xy3rnJ|a69kjQ)iq8c3CBBu3woQc^-6#$J_BoWe@W}8X!@q4` zvwqB$i42<+4(`$EM8Pvka`)m}kb2g%c3Z?c)bYcHra=+%zmtNo&JLlr)t#wz$4NNv zb?FqdNe5)>4NMskdh`d?>aP^$ryxJhxP;$x)9C2&;9Cbr>9M+>EQOy(wh*q$H|@7) z9{pOpBA9u*6iMkaFmD@1fS-kb2xsRu%6t_5l1rZsqxF`mB+n&y7`}X6vAr{o=CiIi zTU0Kf`8#SOwBmEmPLp@cdI2gKME4Gn;wqdW5ZJCSF@XQ22s-{+urflWuPodeJPMc8aH-N(%jr+ z#%r|&G;1YA@z*T(*I%XDeeDbIwPcU5py0?qrekx}X8tUPH z$r{3ldlji3aE=thSJ{}_OpHsBY%K}D=dCu-k?g{wW&0uHx6_d+%S~`f)4VYLLkJ&g z9xn^`dI~b1_;_ow1^%)3zwP+H+az3)NwiJ|G=^VYc@TnN`r&L{oIqr3>hjv>3 zTLtbj{m!Gec7x^qGT%Y5BWT5N&)H+Svj6A1z`m`MrFel8wHfi}>)T5pi*|j7bMfN; z>~|pQQ-=@L>VL))2dU#tOiqSR{@MQ5`Q0Hu&zQCQcnC|sy=PDs%l17CNRA>%QY46ghy+nULH3xC zAQDB9BnpZNkRXaA35sAs5D-v6vg9C1q=y_N=Oj5JlB0xo>Yl5&>ip`~`TT$DK3{hA z%ydt8KYMz5y7yYEK$&hk7nGkxWY2*;%s}ZnaYI>d~EZ@iUA_ zOJL%fnam?pU^H&sTqFU1m7@w~M&9hxn!EnA|F8QZh10wCXRJ*=g3GF!%pR)_=&$r` z_^W^H75=KvTU2q;+qwclSCaPEi`Uj8fy>o8W*K6(O_MwPD> zzmh_MQBM*~E@~0)warKAk4~a`L2KTJIdbqrn(3N`@dXIao-gD1q5-`8EuT4;1!3mm z;nW*-iimGb{26#zwFpU6(5e>0-l50w3{Ny&)E{2K|#Z+DhRn zhta1NE(%Q9MbwK|Lgd*LNnE8P(BJvJ%LtySRM57quLmgy>~ z$i}r${`T5I*2_Byy2CnKMQ2ChfkU@ZlEOGty-|-) zW+dXGE^8_G4fF#}`ZUfZdK-bKv-I1UT>!5K1+_X=gfJ$aj%|+Gvyhs;+m^&&Czj?J zO(Czn3|n^e3ZupskZ(7^nXkx*<+MGdZ~MFqAD^`xwaN@vN#%ni9+(eD> zPB`N*O8szgn^~tdx{+((GD_edcc$Qb11@Ewa}}ZKRDmS;C9$0sCbtp1Ak*$M3vvDE zinHu-wU>i1;x8mdf4LhK4;ZUnyfuzIX!SzuyGilcdg|SCj|KsM?$IDh@b;VE^-4WX z)Jy8xvszQ@0Tg$QIz^Ra15~hkB>Theq1y)ig>QdWqL(kcS`?SNLCsER_HkS;eEiCG zrW#9!51W-N&+8J2IG$dzv&xN-OvPDtARk9T<7NBE%(GFPuc_UUt8(}`+Os>XD>-p0 zYr&H~`UmjWUh4-5w%B8kaMVz=|D@!$SB zTmCa3T8o%}G4RKY_r1y+%7C0T8jJyT>b~cdm4w~s@T;X?Q=iD_RG|3Dr!Q< zD4_uCX&Fp&Rf3AY7A&;m(%j`ogA0-Xwsb?VbQqykx z7h$0Os{Qg|)>%+Y@Hi&^pb{ugYnH?jd;>#i6|)k=b3QYd%Ax$J0*MIm-kjbw0`mPb zB?XLY$e@M1#J3<3(eLJ94NcyLZ2`@?oyTWb@fdt1(o_qA>LXco<4K6AwotgPmlVtN zvU(tNv=d%$|G266Z4o2{l~OXkm!Q$}AA3ojlVW-9JI$si;?aQT3CTI>WdOz1&U50; zF!Q8V`qU^TLm&)U;t+X?q)Y6B+x81TOEgS5UUywMA14&Ez_jo=!z z+x#=%cksG@^u8x!DTrOFY+1NCg&xSute+40f+oxk-B@|@6$PDaF?mxw3~A?G+d;bn zm3VSD82lUr>@3popQ=G?j4_sjHKaJ*g(hCko&nfX$jf|a*Baaze6{?hm=~*m;aKd= zy9um2>#hntWW&tEWo(+d2GE#J3e$kZ1gvGqCkp87#D>`=7i$e0kp}fn)^^H5@Up)d zA4TvHDE6h*Ev?dGj|xui%+w(Ey{_rBI1>CeAM7qE-P7+!KBh`j?K|s%O>OI$uE!4S zAKdtVr~lUj|4;TnkjwrY{Zq`=Bg^d8Hr8bGbG`LUfu97MVA zPwHzH(`e6OCQ8S`@6cN+E5>561cTk9^8+Cz$U;w!qtB}kj&MhBE4o(;wT=Waa^!Zb zqcZ+xn|V7reD8R)%N7S-_hX+Y-M$gH{n;}yKU4>47@hl-p-+bkp3hO=OeS>5+%+za z7c?SApY86sH}0S}e73%qiS_ZUB!i$?(gZYWZlC(Ge*h^?vaNP!&BN%NO!Q9S$H>$v z>u8kYI=pRMcq#pk4*SM@&f80=061zt$(;4UQC*CrOL@r>luYngh^oxM;j^KB^-JB* z)1sC0>BTmzk!j0PSMw)0QrU1AWi%tdmo+zj)n*|&#nC>cK?bZso6Ad^phFTAy}Q6! z)Pb^?yHZzqh`5@n{XfFJ%FximAA2LENHDExfxc(G^>EsdY|5RS1j||Ve@}LB7Mb)u zGHQJI9X@t(d@y5NgXB_S&z&wiv0IUjd*8loMDcdQd=YEQu)FPCz0J3`h&Oz$#k{;2 z9XO>^=vz1m;_I2F@`}xfnn&emzC{#bc+J_h(M9MDJq#vEn|%Und5-&-I5UX&%rKi~ zxhiyu$>j`#35F?MFLBUd;>W&9UFVk75W$MhmBd=stb&SPP(eM{FcjT*&!^-2vtQLa=E|nKl`Kq?O|oxG@VMiGyu=tkGy|= zWecPl8E);fO+;j53^|WqHo>DSF(=PtOoF6Dtq4x=c-u-HcRpGXmaBm2|1@H-iQ|K;$#IkJ0K3zUP`X`jx1OYTpW(BL4|tw@o&c` z;N-_cGnJaOn49#+>8}REC?+DY>-8m1m^I1&SwcOC64hh6&)jZA4~}xpd=S7X^lP;51ZV2p2rP5*r*PxHIC|OKn4pp;E<|pL2LQBH< z3x?VpFwe-S*m0~ASfbfal;0Ud`DXPlJic#HN;Q|MK+7bWQKVc?Q(S<&Y&+#|YGa7J z@h$6p-sRezpQzbskTt~V9ynbT48Fu0h2qu^cZ6c& zsO>bvkiXn8L=U>`PmJgTS@ql_4w18vDfd{=A>9idiM1&z(v3jOq_#)C$M(ai1lCxx zY#PjSYOa=^haT8S;ONd{yWM6@L7m&pG-~D!@95q)e z?51|fL|NNQUSw}IfDDt*mPT6vd<%JVuXAe&@fx1XE2`E7j{E1ooVrDVrEyj>s1;M< z-3J(k4?8v@mFHeP-pPG%xYEFZ+p7RM@hLrRs+dC`SlG)%!DQqm;+?fsiL9{H|W88`jV6qw2N2 zgzl>pwCiJ~kkJ-&qdO=Hy}|V8$5gsdvVh+fLvs}R5mK*bFZ&UCxX9X;{Nm98cx>x> zdIVxM!n;OO8c@(#k9ynhO&~?0d((%x3!UeyAfNf(i2_Kj3pA>g1E&Zc97E{M_t#KC z>7{t2*cj|qJMRkYb`-NzVuK(fvfZnqU_}*vZIY3k?>Bj9h?V$f{?Y6LciZKy3rJx+QL7K40NV0(`NglR(Z)2 zJ5H43r7A#P&lZS=l!e$W!Hw*x;M6i|EW2K+fT|6wQ?N=&CBoPvOZFVo#KDI1y67Z={k+lJ>(X(Uen7(t%MLRtF@1zu2ameD1945dB$ zwiTrIi@^INO`Dl8;B23o5_KZlkl4tP-3Ele1c`20c^A|HcVXFD;x`f;xVIVEZ04Yo z6LFEkEtyDnEtxduM>0rAp4Y7lY(r6`8@7Tn+wkAdWV2UpsMFLM66cVcJz7=pkN&-7 zpZM!1TLTg|?bLGqN{R(9lJ6~Kt_PAD)9dAO>u~oof9A}N9<;~%$K}`c%h2~u(B)ty zFPK(jEtY;+g)u+&n#_&?I5bVFVwAK5FJ6@f8Dvml#VuhE19eJaXqtmwv2zAaJ3ORe zdDITJQMS|c*FvGoX|eE>Rw7LBkuCA?Xl;H+~l3 zS`(F!MSg!#v}G2V#lMiOlN*O{6aAw+663&=U)VuL#52DpOX4pPCE|aD746hw+Td3B zlYnua9;m!@y)AgI54qCOCdM@PBic^}OF|aYKy9SiK`qLFshD+{RXVhQ=CugQl^%j; z{=ye6KkC;=K}_(g|L0X`*s|iQ&lp341q-VMMQbp``^Hd=x&T%B@+E|o&%rdYQt|l1 zJX(|iwp)tLFx>K(OuG0pq$Vs*)!;M0NI|N4&3goeC9Ns@FRYD%JOAh>^o?A3q)9}8+AbcW;mPfR z@N(|Y9gn`j&q(V>##wnN$?My*xc=4&1#%5I-PAc$^RguKTTk*jCz&*YDjmx3nAsQQs~o zHy9UFNbEh(O*`@m z(nn>_UjO;7{BLbLeA9lB))hgS>5jUnkYQM{sD9*PvK=3?&!RL|e~%7dAVClG2@&~Ao))yZa%`OdNH2Z@0RjPyzmXJgs5^v zE3BbNuU!{A943I2M5+3A+8Bc9bD{E&b5WIHwy#S#FaE%qc~PDF7ev3FxQ#1vV0V*w zO$-;C(S?=Rz=izV5H-7N!$*Y$Tb&r2yt;23&Qre%%T=pHKUWf65<`oW{<6luU zdHP^fVB5HC#YU3fu07n3X209C`9V>l&~eCYi{;xStl|M zm6;u zbVEq=0WHZ-&r}fUyD^IE?!bD(x(vn)3sK`kKZ%?&f@gkGG*>CA6coMbF2p}Bh0Ilw zOQ@$0sbG?Y>}MvCeB(2-KF$$zr{uI)ClSv&WjU}JQ8b49$&OY(6kx;_?ucf@r3hhB z&m1Rz))Bh9tKDWr9mD9F&`Up+xm-9Rm7;3-aRAkEr|0tvG{Pxy+Qn_(8-Vu+zp&SI zCH&|O;5e|JjC4G>Luw;dK?`6e5|(=SO!XO7X(W9(x`4+ZHFyy4-DW|oH= zz#%?9vg+;vP#Sr>*3Ra`cGoQ^_VVXIhoh~uc2o)M&Eq{B_c#z1^F3#eo&8DRSH&hz zKA(hVnHBCQvS;C*%sT-k0+0B$w%~ig%P|b8K1mXhrpp-1(DMA$WTKO5#0&NP=fm}i&{!b3~C---EaIG6iDan>}%Fm_7&JVuT;@9ln47Bid^#+GIdKa**O94>3KL%*30Cu=8w3v0;k{4mD?irHBLCnk zzS?dCFMd`qd6>i)>Qn1~a;tkDMfa1LDv|TyQbwyYBD}rmh0Ew(a?3KP_DrX?=A_4; z8%xp7WbooAjNY@eb^Sm#=35i%sbxTOg*7T=?=X54UM3~bMTM{X{NiOx*ozMqpB%hk z9S2_;_G!#bp8Q9@7Fm>5d~B_T7%r~+8rgUtzU`Is*F2KYzK>3)2mHP&bVXjYbLNvo zN@8U-ueJ`N9nK0qX(abxUy$llVx1-ATs%!vnl1vFUuE7%oM40?4KE8ep93fg&(hSh z3qYYC3A7_^0CL33MAUe#fmw7}KVMJ`u`wT%J!++Zn3%u4EHrV2j*Oglmqof2_B+~@ zna32MuY$kw)ZP@L(<0@m&h>}T^&pEdZR0(_c5^&JsrMu@ef4F>jfP^BU}sIn5|<2V z4{JY+SSi4F^LnYwZyqQhdHwPni!VAbc9yR2nHwUwV%c7Q2|zsUi^4)vXHjzW4)5|& zLg#gf(*HOS7i*%Dm=Jj`3>+>OwRTm=p!$GgLOb8+z|WVi!jUbEATUKQcgUX5zwNeq zF+2PUS#UJ@Ml`-fbcHjtEvdZdik?}#DVBkZM+Uwpv_3*lUyF+$5l}#{D-))SUh1Jk z+rn5+9RG;s(jb{CU|5U|h;I+giZ5%tWknCI@l z363^biXO@wgInhJhJ7?e(Utbz6YVGb(Tw!yM)~uX$l+RJ*>Yz#(y&ODrnveN*`@Q$ z9nYyoinfXF>Qmw9hzjkV9V|Ww_s7#VJwoBob!n$ajtJEFUZOZcISGRFos7$UiqO8Q z&Ufwt83>(HY`N?kfTa58DfV4|3Y9m@er4sQAxV|zt)C<%;Ikc0e~p-zf3hGUPfQI0 ziKXbL2cpz~J8r2YbB`I)Y&?4%5%}8PYyF}ZeZx_mNsN|-8zk# zK7*<`cCkC=?!^9Q>Y}GFKZ+>1a4e9L8c3t39PTpiN8+sZR*nqb=$(ohZ)tBlde_@X zGV(J8`BkT0S)2V2p6B;?{&$!5=qXTK1!~%w}Wu z@Lu>_Ln7tT_Y3wP>dK|*t3dvpwfY4biy-K}rZb{k2(^hh!-1y-uzX*2ANsZir1phk zG_92xA7u%sdapJKm6?U*L-ZlQW$qGPagQ7qxW#ezzTO;StlVCK1ASJeFNqLHo&(p_(O?iG-^$0pIl_8##ns(6!}d! zF_b$u<(7~MR~)<;1dbJ=)T4Y2W*l1(`AP7@wEifFXS=iYU+#yM`y(ZGuSl>NPOsWq z2ifrq*0akO9xbEsdGj_6-6$x_`yzHyb_@2O_oXdlYDK);+BFv`cHlB(6Ger+btv#h zV5r&5Po(-auhdO;8u7PCnXUv7<203m$0;2$TzJ9F(IAZ;*T}{=pT~`&H2qvn-@C;y z_}<%j@WaQyk*4+O4i;4@`{t@>jaW2GGxzS{I> zd~Vq(ys;$QkDMY{8)J#41fJGqrR@nJ#}ZFC*zIo^N5==WPCAIs zfSAFqJ@{4^&}?%u@fMv!=`X|YPdwm8=5o6Ty+l%+@y6>b^$$Bxl7ExTqX!E}y-IWO zSuhiByUBi(j5Hf)1{zlkyJwJpvZ`?UT@D;|9SnKM69g2ZH@8cR#eojjB4^Rkx|lV*3rNkbmxwUh5FD}$Z%1qker~xEYfEa)#C@z z8{Z<;?Z=DJq=RL6%@Vwuo1WDr^hLB&&V?>rdy0$?UfO?)Y8y_Tw|{zwi0kQ5 zcJO_~&5HkQ*!E&)Wg&{q6XsALA@*6mvY1@u9fhi;HQlyYIy`i`eE(PVGKgPvi?jMQ z1n&;5@2@zJfo957%f;O3@iNAT>^dtRFm35eYIQyl;m?c(hkq5KHT~lgGgRAgiU*h8 zG?}lUT)xzl5T^yiXC?hH^hX-72rwRJVoOAiR$rm(pGH7PU|P;ph55FLmTJP$8 z307RG`}+{>*G+V4zt5rS4H{hQ414zUjal@Z)p}ynZW@hhWHZfVG2)U#RpKssEyz9M z)&dVz1=vZ|9}6USY;7nc?=;)c;i*4EX}J=EKvqy+Oj{L)PZU4;_!Syaw1D+%xyePe zS3I)rbi#I=OvCBRW$IwqIDL65z)bRwzyIBzf2XxCI^Bx@%!!=J4ok|ZUWTa!8?p~E zPeI~fj=ec~YQc@mt#gy!n+j>|8?rC**`Zf#zS31k8y(ggxWREu6IH0iZ|ar_Ao+NA z%TFBJAU5zu;@x-qfNWv0itLChD6!X?GzhtZ%1LXvU%6Ju0Bhnkji3YOzBHL)T4CU4 zQQmrdgwSzsCrxsBQC#5asnM{zB?P#)yBMAjzLN9jc}O1;-faPKh=8N_+! z^Y)I1CP;~6aI(6|8YK*8$zUgAQTlbkLs!q4Lr@-%tA(>Zl2R8Dq7`z4M4C@>1FNpc z*=m368E+f78}%YMSTzV;y7Z)C*AqX)Z%UC)t$GlB8X=GAan%L};pNr$^?oow?$y{* zqz)&qnU|+r2}68Y89@8Q1*MOk+kPtG0>a`&`$ydlKyrm)6YJ0GpdC$xsLd@A>74qd zgeywO>(}*_$IQxbTH)2wz>o>jjXC*EUC$9caXamz^5Yov`6c0FYby%p3$k-s)EJQl z7|OnH6++Yn_%c_SKKOg6yuH5EfGl#wwXAf@{&Bp%Wu2j(OYo8hp=XMGokD`7ix47Jo5y7(L5Lg8{x^q5je6DqP+daEQ<2K&t@u06TG3O>$Ld(OB2LMAWnTvCc9 zcu!r~_Rx@0;1Wm2ZKfVF;C{WwF6*(xqEq3KDQ(-|K&?C75sEX>jw8b&Z+PrlFUx2k@F!A-eUC9N?y-0@84b$>Xk)wIh(=SQyN_(vEoa@RL7ow!?X2ZS`lG%joWkId7K1tPskwbeYHumypiwBsUqsD%5T9NyVm)(EpaRZWA@G zK*jCP%tQ+6P|UB1sp&79fBaZ^ci4d)o~x+ryrhCEWzV1EzsKpn+qaZ5{pAGj?HP&1 z(=>r>*iPQQx3(-p$fr>xiHV5>ql@CTBD=N-pEnP;FKu5z$zM{^<`ja!)om$Lx^V{m zFtoU9eVpLuH%?$9e>sekz`TFsA7=ovUrwTv4SK=-aD`)k>QOZn#Zn8 zCZhi5Mm8^<3Q-|d^pk*ITi73PjYM6t7qs28@-IdFf;_!r*U}U^P)I2cjnrfXq9q?) z)%99|w7UU6_0+gAvvDq-X|ADe!;zYYUg9YB>43<%So>Tu`o}zxJ^rI6{$prHw~Yq!lZxh z44+9`Mg%F;bfiH9e4g`6$j#!!PpC5}+9_58r^9ZoXBk|$&HbDPk!vZ0zPUDVo5K5F{Hwc@kyGVl1Ah&5EUF!TLaGNMnA_$aTrt}k-O}aizp!swnVp( zlN*Ih$Vwn}s(merGl)Y<#MHDR9<5HuGTlgOf^&}6i}i9HXw2lQ zvS~FNUNcXvDq})|yYWW|$_MSkJ??G{jU1)Ir`7t&PF>xH>p$w)vt-+ie7268xINsC z@1K$}+r=b-ugde>Ny10bGBryF3Bi|hKdJ3p#VJZ0()nfU+9mPNFKc@AyQYxx(&>X_ zhtpA2@esN5>3+CT7k1f?mlL;p|4=kbP99ev|D?KFm z+zT{Dr0!lLo0mMmT?r4B{y^{~MV@87!8KbD_e-0Ej#>)rQpiL1K05;H(|V$r7jB}w zw66y_4q2hf%ST%hla0{vd&L1O`(tSaPUI(BoK^qGJ>Z?T;Vy}LzByO28g}!hUy(gL7*}2Q;6L64t5A%Gw5Zwg%-4ZbyaT! zB37}L6Wtyd^aQl3ydiKj%wG2HcV2Eo!}hBBdxsKG?&@Mt2xB08QHhDVa4HPd$wip7 zbMFD&hAg?K??X`Bp7n@bUFXpVKF1{fN)_VbH=Y>h+y;7aa{i=_JE)^gY*vC8r>Cc# zHG-sGAupXQ+-uuQs89KLflb>66;)Hm+ln|rg#E?bqs+dDpZ&5-GpiLS#AOw1F1sK% zDE*3xYJ_s}t4pW44yg=dEw?8KYI3YvpOs)%SPM~SaEUO;q zg*tCCXN5^ULX*E9OVV)qp@Ds#eZ#RfD2j4GPwSB@0hRBz~QHNZMe8=J)7C z1}K?A_6!!Sl#l~^A1bsSJa-tl$rwfjAAbe^9Zjj;0&gL$$qh~Nq{8j-9$O1aUm%h6 z-CnBl09;EOgs+tbK}P?hmj+aKL2FX|qGMQcUBYWm0V+C)W< z{|840I<`_+qrKS)LR zenpi}j-6WMj5@G$3c}uUo%{Z<5jJu>-=0?qM$X9r6xxUCKwL~%dN8CAEGQ1{vTK@$ zmZS7$YSI4a>x~apS9hkPcfs5a*!5OO%cK}uxs_qNhvwbRDoopj`O64kl+j85KBSmXz|8o`V{n5LXlwyN&B-15Iqs9 zq2We{>uSpxF}6Q|m|YZ>Q9C9G+#2}wu+^ivm*Q2EEcM_8>$A?gJHf25cEYZ+8LswD z7o}_w|I=#XX5_XiI9b9QLDyLiN>N-lN%fbIVgDrWmCYTvlSOH99sg5wGG#g|fLI@9 zY5H6h!GI$*FS(3n@i-(=xD;{b$OL+M`u2+@hL0e2x7#_Z>@)1;B2&BA`v&n>vvtM} zw<3}s||Et>7J$QKN9>mYH57&Fc(B2m~i<&Md z=`HiDquY4tVHzF|eE$b4eu01==$xDWJ&Roh(4EtyxtD4jaR#_Hv!p}r1?|SJ}3X@EyI@hR1!Rz6g zY2n*sH zeCkrEbay+x>Z!A~)X|D=^pFn)&kUit$BlxT1V7BkEo&M5lsUx3|2BIwq#wc-MQb?% zX5gK4fJx!ONl^QF-cqk*5a<%OMaOXN##rmMRKkSXpioovVe_ReICQ_RHK?D^vtGTq zaBXrPO&~H+lUrn%52>*#d&wL0S#j&qMkk?D;!S2G-$Q}YJO;*CF=T_>KXLjK`J_2f)6_f9+KNxhv3JZ-gE7IR2Yx((H|7~J8&gw#wY=r zW<+9McXG>f13G(pZc0911=Vuy?<|}oxZ-pzt!T|Mp)-C1_fsRmKM4i9zMvq%NN$@a zml}++-|Xi>cq61UNOBf67Vw|16xxE@berA>?{=cAhXy1VkB`F)i)zBe78Q2t zi(l?2B?ZP~6m~7BXBM99iXFJFtA2r#p&lnXz)-q%g~E^!P8)uuy9?N~~Xn;LO%thG!3>YTg(VGP<7) zJ`~T=;$L>~$C~(V0o#?p+bs$NkKeK01}U!<^yI~@%MtqpF~dm)hIMQo1_$rH|NMd< ze<%O#o2r{ICVZx6B37FV|1_v|-kF$>+%}#`DKuxr0`AnsIo;lllT__E*Pzn_9y&df zWL-OO@`Hl1$uVr0PKI#Wz&;jy&iz!rX%iLJ{(&nZ^A0^W)1g){epn8tRC&WqQd|$w zWk#%}H0U4wS`mz2|J)W0H!OmK)Ca?nmIGI39lP6~d_k(Mdrma^qP70B_e4$-ykUAr z^%b_ghwi8I$&>d}|6KR`xv9RYA|ZR{BP{xcm$PW4p;vSFa#fJupX=s*^0wGd2mHId zCoo)OYvdBv^5^_t_kRPj1v&4m4U2(Tt#@j+ia<&?!rDsfUsddU@W7cLo1%Y>u)5s)0ec_?i2ejfBRX=S@nB%68lfv)(#Xo{HNcn#X0BWuT-IPl^6OvE`Ipa z4}Z)4Ct0>uz4CVL&9XVD z-zrt8l{)~Gbn0m}oHIbgTGEZ_T^Wpz3WR#ZAjmQnvovrUgfnUf4B~IsLykBpoy5vD zgmexzkB)l-tGxP)+XDaD&%RYXw@a{~58e2e#gRdj$XO$fwmuquAh;Lk`y1u@Hx(a zLuoB-5$Qd2m8*_g_+B4KJ|ykT$s!s$BhkvR&VD08Uvv6p$;dB(ViYzw znR)279aOPyBv+hRh4*invwrEcMj@XU|0)We-0% z@g>KXO!=vMn4Kw-llYoA`Lc^B3u*5szAh7;eEBD7Z`_$2^16W^Q!NX z%xf`;X!PxPIKRRyx)j6%ZQ-U+aFpe~kxM?buC_XEobE-(>yLO0rB0#zrzQp2JMxi4 zSE%E`8`J2=*_YF|?xew2BQuWH13_^A`f<;j3ZIeep;Y3tGY~b|CDKOPL?OS=@%1JJ zNzlsP%;|ft1O%A4OkUe%pk6UGxiIoJH1uhK|CW*z{_FWg<`x+y{IZznhUo!*+~#vh z#18IRxOr}OnRjG5$a6&OJLgG{w+1`2Wj>8Ym(G@x`#IIX#Cyhf95)6K$&Wnh-2^T; z)Jbanv_b>4uaY|(GQEY#C&J1M*7bm!z6WRXyO0yEE_*hP&};bjZ#UXjtfjbsV&y-t zRS*92eA{0^@2w>h(LbQ&Yxr~(CLRy;GKjAuox=L515wOaT^^Nycj!l`opOA)d4Skw zqpW{il2!>DLVnbZbK`Kp%Lg&DwSZ8b)rSv>gxctjiW@AaH&IM*@bRrDi_pZ|^MS^8 z5*FQ32Htb*!6+*{_Ewx}1@Gs4l*#G6pxok}y?Fl{Jb8c}x+gXRvbvIG3w!fH?b(d4 zb`3%p-@fmGys;4If!!N$?M9!gLRf3d3Ef`zmI7_35<<_L&at1EM@KH+%(UD;135Ew z!^{~=P@j=y7nK%{9DzF4;N?4zAxpbLqJa>(fbdVQ(JWA;SZ;h9%Z`ze`h7DF$p#Vr zR)O`?tI&IzjrA)Lw?&`b68ZY*20G`H7V1gUgvQT)rGEF6602C#VfHvdg{4PpM#fon zgVkB~@GkLr^k5+CRwq3b)?w~re1B#D#61-Ziir9C*A>!@R)b~GWHpxmNZ@2`CBrf{ zM0?==Wy;rbZ?e#Bn>fpjxdvE1Op|c#GZXg0yi1ePk`z-DMA8(@Skz797TfM-p|4PE0&Fs0mMZu_!^VfWStjtKij zh$E4C{e{p)Y_z-7w8lh%E79tjkY4S8Bl(6J?~nEXufENS+g<`!J-BMGA5Z9J$GT9| zc2Z%2@@0<)?AKwfJ3raFpbLGxtyatJN8ow`r{1Zm$>R5(w_kqvN(6u460U8SM33L& zJ+ba)y$@%f#VD}t+c1fO$5~=zL_GE-vZr}*Y&c1}Y_}m9Ic6?%ir%(}0k8Pk<`rH; zhT|7D#^Z}w@B(ek+DQ>I?BbbVit^fZB=4g&&d5%V?@r-lvY6z<#*M@UkK|<`7KMQe zr*EeH@%P_;|94xZu{M7~HxsheGa56y5Ukn#=ryVT4?m!_=dglIekjmq4Qe;5KZQ?C zRa_|30d>FmCQKF^4Sz3Bb4q|dcq0zfD_IwtHPb-Qj{9;|Q0SlQoF4FpsI7+lySzXM z>dV=-PVmtDF6XcN55UtIr;~K=hN0oTVr`jIIJ~7#pdg{~K!2rEf%!I5bf(D|r1f1Z zWdB%zXxq8Ip1v4`IP`x_+A-ij-=N^~X&8svs+Dr>XR)vfLcb#Fzk=pO)=ygYOsM02 zzs^{OgXhpZffDUt3hx&b;uLt_wmxQtlL-_ym8YzrkPq z^ZeiSX@}Per&epE3sR=9Pawj)kNew|2coUb*`2)u7=>zwlHBlP>6nC z|KIFZL`e!)bqP>Q_4w4kPKGl!z?kAR27ay!buNxLq35{w)RkKsaB1k8>?&(Mq!?=b z2&d13TeXJI^_lWfk;?h2aVkwv8h5O7S86@tG4MKTYcmf{cZ)=^&_TE?W4W_CI}gZu z{A*R8C!wvm7%JgIy?^T4!G2tL?)Vt${Fkjjd&tg@T0Q^Iyy9^-Z{jikM6gdNkIZ$? z{Xgw-mRt~8qx*tNvijVmV^aRl`QPo<^T@6}>k$lp**wsBpmikMv=AAI98a7K_-7pi z&DM{t`5&fH5pQ?;(1Bj?J~|MdUe$}}%7c(@W)|wb*{vy)hoJDVrt0%g^B}5Sc>k=# z6V#*P@L-rW70#CV#{0H~qX&f*BIdWgfUts=^PacmX#PQgN(DnHnpf76eZpA+JVzfN zJTg*g#lH)x)DR+iup4Kenplxc>9wj|5K0Azf z5iOPdXcIKW*bqvUAmHe2RZh*&6O_Y>c#$n&+Zl!I_&rs|H1$~Qu1%!Lv zy<_2(1E;^PU!30_idGvA(LU%-M{#ym*VZ)J5lM%Kr^wYAG*Y0NkG1xI@Qnz{1l1%I z&ir~Nr<&kZf2?2rfPM&)_P+lbN9gc!&SQrL_g13)a(im-=@ldU^;)0E!e6K}Tu8Yl zkl?{~Ja#A3X&x~@Q{UH3l?-I5@oFrgMd(+rQJM|gChYA?JIw!#0`tD0OuMWa1;L-o znt$03K%EokgGSjo`mT7s>$!|n1^18Mo%nrKOS7Wzf$Br4eq>w1=&cl;T%CjJvT2l z!$BB2rN!2PE{iH0ln7zKt0^a9Wly&teQB{b@9q}Bn~wWy&Tf5(HmCdK?(Sb`M4Dc$ z;^}VDXRt*F5-MvB|oOF6{0%mYE;@ zbNu)7@OPWEOD^|z-Yk4_)mcm}Z*gOt=Te5M%6PIv!!)m}E()$e}IYYw+9fy(K^7+H%T>~It?Y_`*ViwBr z=$C9`Gbpge#>gvX5=rbiHSk{N9x_yx4WHf4g1zq6xGgs`fgVPM?jP*jKvgyALlJ2t z_*PIHjnnI8K=;0Jei=shlxC zsVT6I)ohy0N9%}{*Yj-kW(2wdd<52>54VclAw0BN0jEY!e4HZX$6f8&jOtx_;f0KD zuJZOFR5pG<=~>$d5l+6)uiwdz%cx_s@#W;$kNoyaJDC}9nu(w91x;7sgS>EOJ;7V_ z!Fp?8=FAeby0*U$nW{o<^>JT2TUWvS)BAYOO&ZKug8EwNX;LiaUeNL6M+1-(TPl_J zs}qct+wWcvnn4;je(kQ79{{PLmb+9H)8IiqAlpmm8y2#r8>dUmpmr+nGcVgnFbTE` z#>;nKp&ExXlnUn4h@D5mK=#xaLh412g`MfJ@WQ&ruVlphckg?*RDZCa+!u<1r44=7sg2o%_&?>R!#iai^{yX2_?Jw2*XJ70?kT==&L)<7Dee5+K_jwhABsGuwcn?~^b+=vol*cRJ z(U$TF`g4Sir-QU`((4#RQaWq+x+WcN+U!&|h<%Kh<(qh&#p|Kz!)c=wr&v%-yiu4e zoC=EWFGKOpQfWvfes4O)~{i>-c_`KLd+j|D%oJr@Cu|FVz4Ph-d9=iC3om#_L@ayZqml(v_=3--ghoabr1s{lyeSG2b>j@T?Zq=ZsgqYQUjgv6boY)L56(mBF-?0I=CNBx=bv4ZaJDd{|Q<+8i7zmfR5lLH4w7JDCXH)EnLl zU*ZQ~O7LZQ#-;C2?s4(SjLsCuY8*c!y44Gj!X8Q|CuYE2&!JrJ^C;x*auKRkNC$es zG3FTh6xiuG9YgoF1D;;Yo0q1HM&g-=BWA2VgTc>A{^y1Suj`dJLr+I$Aw<C!-e%*KzeseBTkwHcZJ#-Nu#=8^>~kJSK%Pcel%<` zyc+=z561TNaS-#SD|(5;hdV&z%JzuB@lN0gBz^BT9}g8FM;xPS#-Uz9P3@!+3ogrb z>Hj0_yTiHs-p8$Ml37R;C8<;t73YaJ?yN79aSQ3l5@jo!*7Z6 zRY5B%l9#vL7f=IPdgUCYpVE**NkVSmEBs!jE=GR#ZV7bpbNnH;0Vr-eTKT-F3Hb~9 ztv00=fP06Z7=v*JbUam^>zJ3rMtz06UUPv^(VoeSNAjee_+JEz1+`{=GhAcFO`xd zFJ^#2v!U&!!fHtIXP*7hJQmXfV+#N5%W9j8osXq4JJYGu0b-T+pKv28FFY==S=~ zgqRWrjJht2{owv-kUyazBNR%EjhJmX+w$;XtLhKU1Fq+Q#iG9KMNvxZ(oJs{homD| z!s}2DGb0S1gm7KiWnBx698QHvPEK$~ky)2GCLaR#giYt}YJ-&Cs#h{9#b7E;;hu!o zap73xDOSJkgD&$bljY<7KFnuJ^8Jlxpw_*n%yaG|;9tWQb0(x%V98;3il|oLkS;xy zI*I2Iv&!A!VUEG>haTA%K*&Qm7m^43*jR`sVegL~G^*J4-~$a_ulVsXizn8( zh;_}T_vBYjELzrxPJ*zJKq|(|NMK<cmZ~XOyc54&~fYXqukLTc+bGkN8%E+O)uAO->Emsm;a%65s@1yUZA}5 z_kFg>KNq?$^Y>kg#o*Rg+jP_GmtjgyyMQdOQDU=w8+;Cn+f^{)@inpmzdQT`ko!*c zGT%f|#34nRqq5)#??xIGQfv*7@R-i;L$r8(UcFOM*7l*`=U@`7*mVnHi~i*9kTXON za*wRhrc0qsI*y3H(#i428pF2UHu?UL=wOxTwrBnc@1ir~V;RlSW;+Wu^>gYUc~YT0 zRO!;^qJPJKU^`Mi*NQNJh=|_V(K?@PeW+YK8AsmY3(utTyu%z~w)t-9^Z&y0PY?Md zC`Tb`~D&D|n>lX9nku+fLp-O*b><)2amn;mRcaOgBIai2;Gs$NfuDZ7;h)h}FCrVqY>j;7P>sdU!xA*a+_IyDeI z3EcY`%lf-N!a`L=c?jU{-cE5qU z7elPIL^NvDwZM2mjfoYHFIkvL99F{XSk(B6JvF3^MID~~q+I*+QC&x$AorXikl4p%n0 zF9C4NNXbZLLtXbv+0`=x@KWpMv(kh`sHMERZy$cXZw3)T-?fU6u#ShaWNRdf9MK4} znCu0Tbg&~{R=X5dQ3CKe1#M(M}3nIFBf{9jw6eDga7W=~J zi`IGL8H_Yip(d3{Ze^$d)oM5%6u|1iR(dY;vKSe*Ww&W>R;ly$<9?1BN|lWfzy7Cv zzk7bC@~(Ct%6opmTE%%8lqvUKm6MEwYvmuR|I`y>V&6;Z8c&U)oJey?t@k9@#K`oG z`*oUN5OaBbICBk*!vdak;&E5~?zY{68>E<-e$GQSL2j&~^oFoXv_CRmS7oBe#N$7e z584UKFksJB9vIw|t3i_`yWd?@??#gkMNitvo`cV7=RcJNR{*uA#Scc^VI*_ad$(cj z3{+W0+U~3Gfdsz3BJ_0ueP8N&Q6@Bpf`%v=6x8P+bM=@-Ur0O@ii8LpSM2~vF{7v_`cn0%hQ7g05c z7f3BG!%3!R?1zo*!RGbO6io@-FS+>Pr{ktWNZvy^A^Fm7tef%8#}3M57<>Mj;&Agk zJQujMvu}9`r90Q`%zi+G(Ms!3GY~n$Gd831Uzi4AFdCsLrU}%|cZhENJsUxdIOv0j zS|%cDIOfsuL) z<@xV1$YM_7zC_*#?39RxYWD>6e@H(?5zq%yhvKh>jMRZ2i}uUO$sSO@*NdA+EssIh))lQdno!iWW;%3jv zMxkLuGCm!V%+?1i#f86IU04W*qW$&du0 z!-vw42JUZ5B`;kfMQRI?C(=vQ8J&^2XHccro)>Vi<(w1rg@M!^W0i_^HHiI$-v6d_ zM!$I~%5RJ+piMf?$UZFvPXJ7Yw&t_RcUHo!Zb!EazCW5yJ<4C};)*ugNwBG(!~e(= z4%`u|7OKb0w(+;QYTa{z@BUx370sPIas8)J9| zMrK{NDEj>ovC;?eVqQE4Uw^6xjmbwuCvUp@+I%kTS^1d0??W5}ldC9yj&X&FCql&& zE3Rn#-gm3^lkwZ~E?CKF{lxQUFa8H6Av#a7XZ7BH_ZQ2Z1&p+6|DEXiE?5|8FShwesOP}*Usr+eQP6;1lXV3(!R%6V-h@GZX>f>_Vl{)j6I#89Z2cyM`}h~6MxK!o#QPEA%?)<; zrY@kujV9WFclnUX(dG8`LN8)hwzt}$Qw$-eE_(&@*FabVVco`O6tS;A@fp3|iuN_^ z(NeGOLQ{mI>kVvmFvvH!ajkL;G4#K!xO)&x@9Hltj4m9jg=z9nI$Sa1X!3%Zarqr$f&`i*pyb(zD<$utSENHDK&)JCDoi()yG?ql2b@A6E@=0I2lG7x`C6*-M<|G)J- z{9ouHDY5D~Wm<=%HXf*3$Ye7NABTH3wblAJ}g`EL*doj=3R_@Gre&6D|uijM;w*r6R z)x7nYSxD%!mNJ*X!1N38#yoiq3`D|pw<$yT9Jo8t{CFP7+&kKmWzY{acN@%nLl>Z< zfasiS+yF2bP23l3?1va4$6KWte}H(*YD}H99`@hi9R42V3?vsmjLT>BA)fS3qxUnd zpx93z+HN}o<AHu`7&{wUS|Pi`&)1UKb#pACd`X38N5CLSj(l zT7jCJ(|Fxr2A zz4ENa48%ocR|igYgL93zr}+H@urnu! z_r}um>qj`?bI ze+JHg+J1Zd{-LVEk4jgCmXP>8_d4416YlIVJYf~n1rBkOE#qUAaBWejfbA-Vx+)s_ zTkP85ib>d6hBKA$Rn#j<%sC&9-TO^*#XcAH6kPpC*l z3!~|*FE_#5Z_Sb~bR4yi2&g!cG7^GK>zAGJJU?F@dIqVei-1>D=^+!=3b7$0Dc|t? z8YDE2>bWwSQI}2b&AZ~I@Wc8(<>x!4Fi-V8qydjx{!Bf4hf2Q_$lq^l$XfOzGA&ry z^}P`WYGO;vtD;~sTZ%LAZ7qnJJ+!=|GmJikKbKjUqbHm&IqcKWfO8wga-8L83sQFN1dpqKPiE*W&ghk#i^d(4*w5AJ_3&MjSb2?-aB zUgi5P^Dp|GyGR4Ycb^24_%WgDHy(ku37Obkg5fqj`VdY>dmiq8=$(Mr`9M8VW{GV& zoBZ+n2T4nN6ZT|CrT;k*=(HaWe9@K(4NV2K7FO~ ziwBY15u?B5XABY6CyPZ++d~%R*q`7-58w^$=f0Z}M&N#`D^$Ml0+5?r3g%XO4PHUg zM6?l?(Iy>B6yPIx=J%r`+wyMmos%$87QUD~zr?O?NQ4x9R6`bVA^cso8T z{eb7`_I$SV=sGOltdaEymS_>D+2_;S^i@6S1otVvgvj=fujJ&d|An`OzXhKOzVq(1 zG6v&m#o)5<#$ZT%=lV;B0C;BsiKWudz-d0k!K^hFBKFT%PF%2oC&6dD4D~I+>esx3 z29XiEv}iT|L*EY0_Z2qw`MV=^i>enlSHnSbiHCIA#|J{bQ^!3Kw}1l`l>SHe+(KU^ zA8IINxopc@_WF9Qd7~ey_zyHiT=lm0!^|4na$nnLk!*Xz0uBl*&`V8MJ^c0;FuhxQn?Jnhxs8oNaTUvx#j_32xGH@(D>Q*Fai|}=Vl@O4HpCesU?NK&#>V^JX zcK)L*>+o^UchLNwh9?7vz14H+p3S<(c!2Nq^)pckc zw4X{Y7#$jgf?INoK?Q*@C3sMHh^r1+N_5T0)bv1EOWa)}|1|XcZY3iPZx*`GS?Ds@ zyMrLE?5}y$Fb(#W>XjrdEg=Ak5pXQ)$-&w1n~BDpu_f zbv){>s3HD6bMuUvS#b#T`(NZt6lg@|8VjyIe8oVb<`~w4e74LXPuxWP)OIS@CIrt6~3MESOD#_y0e}##F&YY>L--mjkMFSI5MXk*j*}A zf9vin3ULs?$oO%8(qziTA?G6G_QyeOkun)^{;t}eDAtPC<#_|ig?skq82@xE#v%>Oo{Qt5!|jkY=!G*pR1>QD97_7_q$Tu9zaAnBwBPb zJxI(2e5B^ffxdW^rOm7yv1m}*&J!1)^@nnQOioRJ_7TCzw;7CtVGHY{;l(9zEQ|xv zRGSb{|ARb6_7=4NE0z?2-+Oei-Z&=nv=N0SxbFIPs2iT#g+CfP6yQg*k*f&TC z8K_QUu7gir0u=2>Cs6COjm%g}8=TR&LVZ?q4jrN*>C1al3~GOlnMO)e5yULI-+Bk& z=benHtb6viqc5zwk$;qnp_}sJpL06pXk4CP>pGYR#E*MStz%~)?`au%9)5mNc1S2S zrl%d~Y`RUwDto|9m7a6{_t?)tY*)_-}_$l6e*$sSWsZJO2QWfD&vA} zew+N0QGbMrXf1Ujq7{%6@)EKKl>Ja!LE+gyZGRYU)UZDv6^DjtRf74Cmm!)#0e8tH zKV%%wvwU6V2I^>!3?aJZ2R1ZcYo$)OpmzZw+*4jDz`asbEAiL>G06G{pRjxeo|bwp z=6xUjp_7AnsQXU(uIO*;ZIiDax-`hTQhz%gdGzGi8fe(UX8R-B)Q>jWlqUpf(Ya%7 zOAg!kTkA(?AM0{X>s!$35lN8{^xN*IZ3b+S6$5F@3KHv*zyELH{a^U{1}_~iAqA#& zYJ-(^ZDF9jzQQFFuOGtC?9Jbk2tBl1^)wR0@SQOvMu#~ShSy(wkP`R;6RN_TJSl!4 zS>#q~a|nZ3gCXtE&ICL!ot3Q-e>Y6%J~*R$xCT7;8~(l@S_qBg7gQLm?m&TO2Gi+V z<=gV=vFVOoiA)BJsi{d#B+%NXAdDV3A*?Re03h=$NhYaXH%f#9KHD9FE&Ezn$+|O!D;B6V!yB>B^>>6dTklNM@0CL zMMKa&y^3@jem!&&C`TV(Wv7`Ag~HvzB(jj~0z}RFK|X3<3VL0Cj8ST29RjZVv^-{6 zgs5{K&okRI!TJte(y?zun1Z9@tMYR_P@H2JE0?DS0tq71*0qb%!q_9C8y`x|crhE*V|fq6_hV0{twsZw z7tnC~@p~0hYy`ij=7RZnoxnIo9~M{IK9tC@bWXCeA8rY{vjz!efrsP9nRB9JplYbU zcD}t4=}H|Dk6Wv?V>92&wSI#3vu_A3eVF0}Rke}gLi zFGuzINU-sofilBgyRn(oVol-qL|9IwR5qI`6K2Y0u1>i+4);{&F8c+op~c6Pw@gl9 za3#^-P;0szH5eN@Ov%)uH+3Hm1=)?DO7aU0XLnH%vXb6(4`<8*_l4$NeGS9ND~ntG z&~GXNsGJ#ekM4#I`$x~tou7d9u)5w0!?j>QFX^s-bOXZJ&)dew<9W#+jk)bA8bjfG zUx!Rr*P+W->)aw($H4LOp{_SacVcH*ZxQX<7)54D`FFkuPs8b9VJzfLFVyJA%dipc zz>JMZhVPxc0dbE$*ccrihic=7-j@e{!7JgIxVSsz;4-M~PcF-i@$&TLjK}Z5Mmqdx z>eS~DQ5D5&8=qg0!7@KjJJ^j3bPwD1G|xcdFCpd=4tTwo9`WO@s!LD@4Q32yNAdb^ zy`?fHOK|pi>ij@*FXFab+%NhNkDC|PS5#AL1lE=d#}lWB2sc>{(54xYW4+yXs9b%% zpaUBjdaw4*08vJ$oqu8#=vee$XXnNJLY7BZ-AHu8znxQK7g{X@d|Z#)Ic0%jC7X+zK@o% zv}*se2;El*Yh*GRV84I3`{K!I^fRQqNPlMo?3my0!y!tJ=`UpYX5`}WqxV^oUli0J z9gP!rXHM5Zz=ilPM-&H;5=+^=nZwiI5j>X=(IrmEp162GDC`I!NQb@ko7y1)*8^_~ zk53$gL)YFZQmYXYGThH_g})Xc=)Yd25_^Q}4ZO~0^1esketh1O8H?XrF}~YP-oQ!l ztSUa`d2bDMTkJbyeRT?XfBbTp^AaiH0~u@hv(b4ZKxWO`b%>YnhQ7v($tW682PWnW z9(eOV?b_0O;8-%}C&as;TX90c5AA0BymYZTZyV2+{dB80HzU3tx$S?({t}7IzL0Aj z@drWu<7F>RBLDSX;BDzu+P~}r{KgMbgrE5!(GcRZc5#;5<3y>2goxs#&?Y@kl*H&@ zP1gALeYeTK5`Cuh_ISyT$2+U?J@c@Af_^LSF;EJ$g3Y!KI!LC6ms%b~=f)*RuVmGL zSBMq zS)b6={*%0Cq(8zY9SnR#TS!hV{ynGIE<~cub_Q(fhXgj| zX+l5iQBPS?!1jE%))V@kJHE}7(MZkWQS#%k_uKkC|ET%VqqRW9y#LW{qNRVw32)(V zK?dt4gJZ*A&{P=-iFnU@q&VoAta`f=_<7#EBI!guvix?KwM_z`@yILFRQ$e6N{HI3@L>xy4i(m&?&|?- z3wl3^lh;5f%TZR^A`BhJZiQDT;`@e0ImZy4CZrg|_(7Jx79zjwsI|uH24^Vua}Mn5 zL|=$_rQ~nmc@AndKO2h_Ax-5O@*lT?P>A6P(VeV~C|O~+VAZM_?Y~VEnH`STKh5vW zpdF2eI^IAIosc?2#BW_iJNX5cXQOW_9iK%0vHGI@ylud*Cu`zWHx7byHQpVXBWOI8 zpuT%F6OvWab4rPap(!pub)BpQEvJbbr=?0m@eAKSc{V{j~Allmw6 zp<9}}JA;77XGH!nuXt<#k%MiW-ZRapP9<{pu1q{ns}h~`h|35F__maXTX#Sv7X63g zizT|BcV_L;!x}_+G~|SFUJY!pO>CU~Qid4c8(Cme%!CV9W8?Z~NC<40c?gr)GSby{ z5{T}bLvfk2*ZVrgP}JS|eJ`2Tk>A2w)ljt}WRm+zd95u1?ppM6MPKYfijh)Bysvhk z6w6b0{H{8{WL=)9?Bg`VdG*)%r;b07|DMIk(xWlx`eb?nqwvtS9ZTf2|Nf%a2!rVt zis#+pw*TL<=l=^|e-%>tI5LeQNXO%j9$_TxmVNY6QOpXB_>u`dRGdYeqMF3ocpiXX zr)wERdgl?Z$dGQQ*i)oYrNc+XPE24R3+%67Z9u-$Jy`EEyuNk2kDwC?Ga=60fKn+Z z57lHDvkEr-Li(3WS(V+I;CQ=h_Q(@Eu#P3&bz343WNmumrpN3+{j~A3P|_Z>lY`E< zG<*WRlJ-BiKV%x&+8`MPvu>nhbF9h1yAY{gb#*!-&qi>dIl0nzb_{8fjJ3(6`@oz0 zr2)E#YE)U9A3WGQh~%>UhT_yl&^c=Qw5*aOG?%qEU+r)jGHvlP=lJsn_1q16dy}1- zaDDuIZPIO0LQlVEDyil$V%6tmrz0eT#%W_4W-2m5kj*#6SNV8eVOd`7o)8j3x7^+M z#&c7!(@Xr5z0?3Ypx%@jcyS)dhu06^=P3rsD(}6=$okQ2z8VsrT!doYfR$3lK`1ow z;}^L|PFNXu&u{wlCvf}yE~OZ#hRo&L7lK6^(Ai3+-#6n5fO$mr+RBkMbR(Eg!kl6R z6&{hh2EL8RdP=TzDlZMMJ8^4tO}-pP#u#FN%zvxH_)JHFcFy9lv5`>*I6MJ`I zoMV@@C*^su1fnmY66ae%@Il}Odb^#NO6*gz0?~sQX7V!qf?pLbB(fp0w(>l{zN*NV`IUy_HD|b( zP{F(7f*HDtyA`ddXQA;w_r9HcZTAnI_lV!mOf`DH?Y2CddaKgO=44?T9j#7b>U>k%kBAY&3nm{I(6x26c|>#@yhV zYF;0<{qO#rTXfR?41SVGRRZi~L}P!y7wjhPGc&#V39P9kqel~c;A)On&V+g`T(vTd zIB+x^Olj_^KlFbKj$yJdy`W$X{c%U3Fxh-CSu%(k;>d&u z>Y+yk^bWwtWGJeVrh~^XPy8`*`g>lqs5!1gjmM1=YyE%d4M&>7*_%cG&S!AcEi1*~ zEodj*&ms?r{g)nuVo#A^D>{hI??=Hmt&o59Z_QJ{NoA^I${YCq1HZymhkEWFhe@#E zX}!n4`q#f{YyAI(;)Z$;YQL?b9i$&bijNc{YhHGS94$&hrkJmnmq0E=zy7Wq8(xpz zD?3~n)h`9z+E>h-JAGiuiJNk&y%R(dy56`(H6xW}ET7J-1MSo5d%5`ZC(6{`(Rf90 z3|6^fc^C2ZWF$o_??P%jJbg|?YC&0wil-zND!w$pgSVsnI;a5&_}T3iH|az#*I8DG zs{7Ghg2jtbwp^f8ss3~$c?O++Q8e?GF5wUE^u%0Om&TYng?MK?I-cWpB=f=e)(i4XwBtSr{hX&4d?T-sN)ydQ z7i34D&v8Vcs53KNcg>fOFx}cOeYFLoc7$T?$eIUaw#e_A@gyRUcD9{5aC-yA-e$aQ z>Gl;}z7NTq!ZomyRM_jwm3c%(6*YCr2t)J_+Ex5$x{-R2BnNyVCb*gYUMoDXmoPFh zq2+g=2)`)*x^&aI0G9R}r5rAzC*1qG)Xl1c*FQ|@tZ(BcB?O~dnW){ph|h)T+^@Ht zD1YUpS`Eu?Lht7XHB4s~(Q`>(uSxse1e32v&#h~%qvaomo4eDOQG4{MyS54>1R2RS z%92=i!d2S|VztTvbh&UW_}$Vf8qKV^^MV}DS2SuQDRuK3lD`t9+mtne=<5f&ia7?+ zfyplBYU_IRJIXUd#IgW|--_V-wm%DW8ir1WSJWV)uUAeMwO&Oov+29)KQUq|{Vv=O z*!vOP!(fNKoXi-D{r(-CV^oCuca-0E-UiQC z7g$w3_Q27j%H!Vny^C6WQuaCjVRY?$t|P2=Li+3}m^aHtAybdms%Dyy?IcMQA1M*G zWw-f}nR@d+3n11p=@{?W`(K}nt?^1_$5iz`xFL_uBU}^4Q;4rPG5^^6ZZO|%PoW@6 zMVOxWfphuYrnW|;|2u+w*&1H3?56a~qCUv?|;ITzR7T+d>9akj2 zIXHqiJ?IOt8V161nw|)!56RGAcB(&r4Pt}bE^xghSe~x=5TA!8+yu(`u^^-p`PqYlc@sG^JT?Gwr%9Y7eYIzVM zB(jD|2M1C1_b?;7Lw#uH&M>{7_&tL+1D}DU3nLbC<-ytc=OyUv>Yel6v{7gyQ8cD| zL;#b%)F663aUaI~*zB8K({CX5**oBPiWR%6sN%q*HG^(s?akpS=!9L;dC%p_@w$5- z^*p(6H=;_TMHgNNN=$PX@#u;33#gWjn=-hE7%Sto+4IIL9|eW1p7kgo#+Xx?9?_h2 z0p45MD+0@`glBtWaws%wKsJZ%Xxv!L|FmoE-$e)RghYYtsL_hsZ+B#D?<^{M|2EpP z`^eV}BnC^*kldbYn)*BrV3YLcz_7?06m#v^G`VewY@Np6jX{HD7 zw)OF1*eusSISJNFDmkr6gZ_oLrPnQ3yE0&qjr;N5x=iV#fcvF3hbzvJbJc+Nc|q4E z?{JV8HcCutX@Cq9A7-<`RER=0ifqLAejzW=#UaxjNlEjbOvcya5>MNO?!*4b>y!t- z1X(?#$_$GKmVbkdy>qq1=QAMqo^@uF2h*cj-(r1IlaR#(!Wky#Dxf zj)nAZeli`F0ZomY`M^G%@oY4`X&Y}#e*7NTP)X|}WY5rcow;A|ul}uZPW}m(lm-)F z6IMY1bKlW~t93}z{o6wi!{q;pw}tP!^jkfDavp3Al0$cmPND<*j)iw~lVWeQm4ct~ zHzO_ejzDtbdbk{FOv6)2Pe}EUzP}?U0S&UAEKFHlMt#DKM@_98K}vD)9m^gJW&h$O zJUd&4azgPqfHNy7@z`?C0pU3G=7Th&n@0nTYtqagDV;$=?2X3kk&DQ6zOQhueI7N0 zA3ycLwHR4)ySDc28ijhHIK~sHB{2BPrRmVqUl82G<$8%D4*j{%9dN6R2D5gr=c=R1 zM|Xu2Z7!qTgs38#I~)4-XrwHG|I+<>p_=B^fR2*NKvf{O`maBfSP6qS-Kf@)qM`= zWpU#&$jB97B z3ys3d+B5~4;c+(|dm_rrOIpwv$wdLBp;lnClzLpORRPBjd||Mg8bTjOl$$%dlF;`X zJcbA8hoMvIrrsU*ICyi0BZ5V-2zp9Y@0z*dei;F+8Z1BZV331aQyG8Hemg6qIf?Jz zO0Jb;Uo|d+q?F#a3dadxy2JgY@_7#oPLE47P|Uz<6hNl9s{+*O9=T=jnS&3jN^29; z<*11B?cwU|W%x=6aQo&w3nVwZZ>he)?{N~w*GuJ_k%EDEG(Dc*W3_#N#~`~JW$m{3 zc#yUh-ItiUxZh?T{p5C%RC-E`wH58_w%@?d3%*TcUGS<0W^1?A#kn+e(N8==qLhSS z5?$we<@6s!Wsz9u%(H_^?APWECynFuMHx)DLv@!j#&3#wirpVRgfKUp_cxvMK#=tcKFPOy5&`K7jN2 z>|d8Hqd`GsJ>lhX+%G8bDfy`cKj`g#$3R5efNU9Qfqy7rtOQwlcESHek;6oKz?++k3cc@#-d;$3x zU9Ymv=|r607O41YW}(XQ$(T3WHzXWjp~$rswr%fQcK?6j@mRjjl2u0}*xcyCnjHq; zPI4U~zx~(WgCYQTPOy3bE~oy4{gF07-l{)j{n{LX_Q*BL!}rbq_1rL;3p=hVo1xnk zPs*=S#-KO;Eyw5%{>?8&@|;C5#^V**q-TdRfBKp5?EJf5+2oG_zxt|Ko8oIc4(D9f z^8tHg&RFE~*4p%+wm&lR$;)Cno{LONTMRXh{(xgUC=A|@`ogGqhR1EQ7of3IN0dV& z4Ef!~E}w7rg#+5G=UGx>(U~CuqqJ|%;LBC5@ND8ao|pfD`%v>c*rbyVEEj3QCeABu z>ur+`ib20k+0N_sUo0P>}y(PIfoD0|9p&N?O>0u7#sJ#tL~^Mmy}bK26NsPS0z z@mu+zuFz0NPJw?f7&Qi{ovH-Wja})l*W#e(B$ZFmPy|SLh-ook z|A8^U`8`#m*xh+sUpDRf5`9ytXztqjL29SW?f$luQP=HtAA@; zwHw1utAq%&3G5Yj>zF%0SZBI?V9f?{zj?g@ztw)#(adUUtcd#^L5hJT_Mpw`LwhBKxjhrO?VAW5 zpsGUUnAVe}*=e+tWIq4%1{2{#gJL$ikdB%sbW?7#*!1kqP6_l>K1k%PXFYg8TX|LFH3uU3VMaEeTU;;GdH;?0q?aOI~W+;4!nC@$}$wEp#MW-zf-2wB@=~ov7b5L{F zFE-cw9+)f2FkgAeOGtk9@J4eU8$tgV)xAT(b!c+ROYYzp4S_{(-%7YiArgJ0p2Ok& z2YLd=AKx+VLBW}?=tsS7!q3t5mjpadi=gN-SHQJC7`ftP_{XRKUEFOpSmY1|beHUz zo?U7|IaY^w2T9TpcfE?d_~>GmFe%|=X-KGz`!uw99X*s%76DpW*LR=e838W&`S=*uamc=lI=3eGC;E|u(PkF*P{OAszRkqFt-SdKvCN{{i zxS4V?ZiAmlB!=!+VQ@Lr{?_t7+cJu-Jz89TZNotLFsaW#Q9cI`+S{?_ZOe2BU)wxY^CFpa1^%;s040-y=E<54-y75ci z!cRij2_z>jIQxthY5@&iK?#f!vdng9p z>2OBr>~FAe?cP(d9W&^bm~oDf<{}&_PV)%+R)pgDP7GhcGMsh^}vRR_Ifv>*~z`#{atBZ>`_C8~I0souiO0 z>7H}hA)$zdNk{Gh%U}P}L?L~z^Tzr}{Q#y!qwb8B$|VLGb?ouHgVzm_m&d(dThsgNOJ$vgBb>IKVRiswcoyM+=fkhK}fw-e7|7Emu)(m{Ogdw%Bfq& zle>{_zg)oGPY*znwOzmY{f&Rx&!K!Yn=@Wx7-=d53|uG8MbXou#T)m{Q5;Kr$cgzl zlqUDSQQET*rE7#|E~L7m$?R7?KPlhi^>2K?TibY|^xnY0C-xXpl-B;)=;QSdozLh& zsYe$hiQBe3n|v=JzbTipQ%7GQH*f8LscU)vv<=awey*ZTd0LQtr@QkxHO1}uZs}R% zpr@81-6xoZr_sc66^FpApxrD|IuWuSNd+%^8bZ-2Da2~D zrz9Iaj~0BfrSFErE@oui%?;ETJhkEFG=jhUZrxmnY(?sUJ2hn9X`CAy)u}wY4AMLs zkqPwOxHn8wT+Xx$1s0<81rKi{uZYB2Gx>%m(R+sSnAD&9Of z%0n*nIKVN8bDDPkJE()_PCe~lJiCIv=i83CpH(2=wo8At`GA-F z%f&s=_Vi)0LYDV=u~QVJms+Bi7rxpeUm!brSRav!CAYGIZW0!e_Ui34xDejnUk7}z_P_)&FRWt z{8H%aTKB37P0qfrH~ZNRKHd6926xoJ>+38JJ}nS>idO2^lh@inLR0mT%>pIqw%E1j zN|co_M<;aq)2nI_zeW9tC$^o?=SaT0$lCx62Y**pMvTKeb0p#VEfAyg_HUNz9S6!;W@j z+@vWu^fPe>$+n*TJxvh<`Q5j{ck%rt&~3xIuKdE=XIrt zX>CgKjM8;I{l$!LHEqLy$ zudMy$Zj3%^FwWpSi=$$Cv|U$cA@AUI1^U8ys3>{*yzuTQNxN^q`Xz{-V1ci(bU zsNg~~J zeDQnUc)Y3`>ZVwqUvXc+)%DO6z07WK+uHXmGjt3$Umclwb9WB8?khS~eJ{Y=GhYlF znW#wRe#XUdBebMbw_GWX54ORu-)48n4tA0RT^0y^?*;TeenhU2j=b++iPm%iGwEsN z<&>^H6}%{M-M{!-xFnfz2Ds z!0W81v&)#1EbAz|a$#Q$#NYIY)i{*=U+bD_Uf#R&ZUO3*Wj&Q2_>F~5M=2QKAO6_( z{mRZHRjgpo^V;9|3IlWeVZ|*DH>Eq<7OMl0!977}ZaNbwRwYAr=&521r}PGEr5$#j zGjMvTnTkC6Y68jH5qMngUFJw@0!l4coa@_+hVbD8s;sZUctzHAg7O_=yZxiFNP`Bv z?#Ia=I(Z1oR1X>U2ee=!vyUg4bp|)`h`};5;5-fpKv0DTgO8o4rR{`?jXY+-b!!f_SOuab1;# zFJ92C-4M5F!ny;I|9lF6V_f~=_T(%1h|v~%r6c0;huMRfu7W7!s60wlu)`XadP)O>Z%C?;pF5ySde)W1gcS*OVfdfUT_ z$Xmh4FKp)`$We`Iy8QBsPeNg|FG}p~o)FZgk3L!Pz8-fmozS^Gm4S?Z<@l9{+>vi{ z=xzvgG|1uJDd#=kkv#TV-__U;qa$DG!|OzpZHnI4=9P;{#!)t1Ek&4Q*uCSstj9;PyesCpWjJ&n8JznOgY;(K{UG)moHSe8@#;tP-g~ysY$y+v$Le>I{}$lj zR}U6mDKairr@uW`QibN1sX|6CN8yu|Po3n7W>lnoeVq06T{u|L6g%>PleDW>sjri5 z6-<=(m25jgLGs#ka~X^+1x5Y1WIvT|NM~a9@@^i1j(-~&?@k4Pvc*>&<=klK$vqyO z?3)BhQruG#T}j~Hdum}|?^BR8^BYR%eF@wT9K4INKLO9go2}I9pRn&Yb9*e2PcnRI z;AfghD!eb%*04VR)reTH8bCWuHDE7&-Gutd$&%(ZtLA%C7vsAKI~wbw|5~{*w)EAJ|@=P zSn8K;a=o~Eo&UD_ZeL&s(>_Nb(gphzYyO4z7T~`+%2?NyAl$Y8{{BmrmMG#I)Kk75 z1dJogY)eF+#qLOu^d8AY;P^|!oNbi}VivX*CHC>Kk~kUPWt)NmP7Egf_v&Ek`l`jb zgwHS?vQbZ$oCxF&9(^;axi<69xw;Z&O`sS7yCfn>WZyx{vzro><}LAFD87h{{{{=_`(g^ z4;QQCX-KLb3dduYdr)6DrE@HA9gN&QDyN?L2OEj{+m1T+q7wPsfw>0^BPZNH^&Y`9z}zbZgW;jR#0{F`Dx>|O<+Bd64Ix_NODPOQ?!|3APJPI z-%t76io+_usWm)VNx|yJ{`m;?fKt>DPxwD(^7HWUR+cj>kbJuH?8qzPxx&MuIN3Ic zel&qtZNHzlam-pjN+%cp=KGZ)=MV_kXlYXS&hct?(+>dk-*I4CLGKt{7uI4Qci=)!>zlJvUTDIx(x#_i5mJ zW)iJkNi0*_Bxw72d||11hc7sEkLXO%k_rbBb`M@{2gQuN`VA>#;Pr8`-ttlb=)bS) zJ@#=CsGeDzkmjw+e?5A0^-}6b}F|$?Q zAoMhjudZvU4bqS<9}CN{6Bxw1XYTFQ4j2YS&z#QngOsG3FDi@8?YptnZ2Uncc?5RV zy7`={9l?)LE>^M0ETnt1(j5~06A&mBl6tDY6d2wMEONif#}tXJ>bh)N5)Z$%o8ibj zuz6hHOUh^kuM@)e=_Y5<`uMHJ%%{^xC%OKjRlX1u&NPbod2J!dS}2iGhsYZW?9lsL zx`;9LDM{yb`*3sdC9QOA2MX<7?S98XNoLcMxU?kyH~6Yb=>6DTfN7Lyi3&^ zRGUHgnQnYQU~?QOO3RJoKOcqUV0!7O;31HGO5GiHIuvI=D(Ve9T7nm$)*mc;rO8f? z()acz3zIvDT;3oTBF8vkl{HX}hg>-$&Tn=lAL1wWyi}0oCEF)^h^k6+l7kFR@bQj~ zLCzU{&*$HFkjI|5=9u-eldT;G6;#geCRe&%H#Q7zz->?3h1&u)aaJiy@nZ5UKH&Y3 z&dSk&hX+(^$ULR!rDEmSA^N{u)c@4+|2dp}7L-~To7kZ(JE@a2W{(;}5mp_}U{$Ds?+_(6@z zbwGvC1G09uwE9#6{gL3hvA8eLSVQ@x{TxEM@_jxU*K+VN>XFQq2#2ElEQ#Mkxj058 zd?u6d&HGGjhWgW%gSXG8!n0AoKv|Ba=Advsgk~rTU&;Fga@J8obN;dL%=P}64N-m2 z4!zT&Oin}kWL@F2mU&=WwcFjTm*^AtHQ2>azlRL+Q@*LnZph-0&pnS5^)vr#6zxGq#x^@)7 zpcB94eW-)jmo9@(9)*Kf?PU$Og*vPe;9XBS6aoisF}*4v*FZ#&`7FuI3B8L*mg<|d z&xNVlcCH(?sV5vJdXNeC&`u=jOo1&#}fBmJ=7pP%(NvVOzkI~+| z@-lk>EMd6 zz3`&py`p+>NO}1r-*g#1Y&$pfT*Djwfwn7GI5DT`mbp}SJRaz7a29aKG~&CQvNT3Z z!bfxH`*`D#K1hhG8mgP^hFO`rr^FnnNvSefA4-BMA=FA|R4um@`1Vt1mO1r9eSxI% zuy7Un&;7dj%ybM4AH+IejZ4QwiJK4p4k;KgP3T-?oOAi4ktZ?>pq1|1B+8^tiih>c)XD|oyInSb)Oz=$i&`GmZ}8SO7EJ#GwZr?SjE0~H7 z9j+In9J|0S?I=al`8H(zlgakxYCF!i`ItuZG(uqe2s@1$HHoQgKH%rYBV^@gA@*Y} zgpa2ocdt!7J9)ZeTR5E}9a-7<$M>^ZyavC6 zRZhH8wkNn{x9?WX=ls|Gh{|nlNj;M?JY;Gu{=jkr&%C%0^4wqzl_zZMHLX{`ZRcIK z+_rjftu&`pp`;?;Ty_$mD=LTQ5mk3Rc<9K+4?3y7W!55>gu^R?H`~Y)iOD4~H2cWa z*CbXwv<6|!SnjsSky$*Z8GcmzIt5v2p(dZn?jP)*-EGKrf(%FhJn~wlkt={Ut?$>_^~OZrHW39)VsXQd z|FM)`s}dv0>dNs0Zmy%4b5HFSt@JGFuwMN1jb;-^9&sOvN*u-+mB8$`?rX4LMKk}W zNh`c?w;2~L6DHY|@Yhwon+2(J3PmtUZl@X-7r}l8vj+6Ak`EA>8Qw~z= z>#CrCf}jA4&!A5rJ}F1BZd8A##Y*J#WNcuD_Kx9{IFVIV)%!Sg1% z%P<#ISpDcV8O74qL~CQ&NsnYE9u9G{ktgnM`_b1)@J&wrbl@X&ye2nixc@vKMtVjk zze&A4B$@dqW;dqu@xYqVM%%mpu19$Er~W$gat<_MZaHs086NeEI%e9p!E?ET2W|Q; z!KHU)l~doofhGT(!cb`li0Bwj@&EFLb;;j?mvXXT*&+U1mx~qdU2FUrB@_3gQLpr&GG&`;=-C?xmqEZ*6HZ;Cxt@5=r_PfPo* zzarsqcH!^-6YY7}J1KUiaUmHa@6r0X=Kle{T5ZpiC&apWZoAY7$1k|VcsO-0`oJHR zql`BjBJd+mrn&#&0IX>hkZ|9Yi*8C)xo<0p{0cKgkKXbIdj*%y(F z>v#Pc*wxB0Fp5Sor?CRwXgD`zdgg)%rTVGLR-(s6&pz;2J0HAh0-nCB4#(o{tYue} z+CX;Q^Ng!!8BXu&aS}542bc6KMC}M&?(AcC)4F4=&>rP+UbfR78#xl+NH7YKH8nZo zRZVHgmB*r+t%*M9{kNOt#~B;3x}(NdptToeKRwP1=$^nL36-?jZ&8F2`NhPU)_8nn zdQ4oAF_+*z?i$f`Ou`gX>jZZ;D>OHHc=gEU8&rNwxB7UW6EcRJv@&G)jQgIxFc~uU zz`=_H4!f0#KwBv4;d?@#|9|(@|M&NGnkOPEPwB`#cE{bdB64wW3p3-C4J~=!)0N9C z3k~>6wCk(;dMyqK^qZy(W#iZQhrDJQWTZUWb;zdlFK+(y=F5B7hq3Ja=T>?C5xLMb zTg;+O*k`P+%=LW;UKj0&oUX3MZ)S8f={r{-R4h26=u8bh+qb$Wbfg$B4k2cd&d;lf{OXvv2_I(~a+YZ`eO~By z{A}^bpN4e`mkuetx^cV=?=CoT{MsO+a!S;e48u5TaVthLU+=@QcQ=kwn3Uk-7InGL z`Yzb}y2yv6km!5FziBv?)`m0lWq0mTjNo&P+Ekg)X)K6ddA#M40gB-=r*863qI7LS z?Am4*9#T+B%`{8F^*s;QDutVfxq+?sr2Y^}=6Qv+#z$juy02!~R4TNZbN^lyokK?k zb>{=emm#LVwmOm6mxb+DpUm$c23AcccH5*21^S##0q&j2if1~9caAj}6+vyzxsJF&eLGh&$`}^9qemW3(aw(lN4gWdmG?E5gCs$2 zFMWKV5&p~xFw7sOCw=oS|3?a4MUWY7RJl?EH_9Gzc!*Jx)PKu0I9#4U>E6Bkf4ho7 z(V8}B#iJW&J}I@HBXWsTDz?Tr3fAMT5MkHt<0_ zyUf6!4dgFSe_>WUjvFWRM4z;GL8scjH!IBH7)rCl!eXQYr7b&7zP{ECV&%uqjgg3a zo*|bH6ZTBx%D-YaCtmfU#|qiprnnbQA9#AnLVO-}{53706RSfri?0%L#XYEQtLPXj zS%HW18CqUk8^Zi!jwYWd#!yq0rCFTiy zcCD#1@!1S+N*Qcc6)=!}_75=0tjqyJpk^U$_$+=_wTd9c*P!7<3A4CGAQUo)Dd}~r zpxq$}!?Chad{X|i_Qg?F659#eyQM?DAiH88np{)~B`oi^mRoy3e&PA+O$92Fo3XQu zt?M+X-Je|S*lNLI(FL^~Y-P}R{l%RbjR7!y`!Vc3UmdDmdhMMcv4VUN^?`BvvskOK z=iu{Sn;4&IGICY92WBOECylv6aQ8c_Bs<+!P+O^*vWTJ~xnFzsqCa*KXbMVcb7uYV zjdt6Z^s`(v3`*40VV%Hxeu;~-<4X`k@rd2KzXeRK*|f>>Bj8v}^=omRiuB!v^PZ$L z1xd|*^_ycAEoptS{960=O*ox!=IziLC#kSrusD`}6M`J{B*Lvmz+zU75lP!f<{T4= zK91F(yhjyB34N=9P^&OSV?H_#b1y%k<{+t#6<$<5+6}zs98e*W|zljuf1;eEew2qz*HWPO7gA z0&2{$H@-XKfPrfQhS5vEu(F$+GdB=~Ru0H^XuBgY6Gr<9K*5Gm<35_!$S<=g!+r$DzhV)y^yx!iO<# z^T#TZ854)JT7zE?phLc^{WXCZBL5&Vr5){2m3{F`n&?}sGcu|skqG{Y$K20`*Gu>~ zZ!$Q~u@TuiR`)B`{6s2Uj{e|9GKLGgUR4QbLT1mo^sCxoI4I5-KGPb7(%h#iav4I2 z{}Uuu_oyB{X(P{!hWy6MER2`m43=WYMFj)XH^CSnV;nzenSix6&%bean4$uAf@8{N z1BMTV>{_p=!95SkWzBAtqS7-|7gv9Qm94hjYnFrP5JB-&L97OZ1mYeBTyTcNyIyR+ z6cL8WAG9Nly}v_NQ(4(R(J<)Ukt6u?MKmV;agN){kA}uhnL*3VeB=~uoB6lsj?WX~ zDl)>u;r=UL`_}7T!0x)NQn(QVZ!F{PGzlNMbbX3uDu=Y>=TR2Gp)h9-TKpeJ6_UvrgN@p z*_5Px71L#>H)u(^ejPiq$#w89-!ClRq8}%3BdDM z;nmwS31Bzz*gui|4{^Wk3=(sCT zbTfXqrAp)<>)b3vN%fNdTGv87t&`OD{lF-4?p*fiYBX~DVvtlz52S^!WZRRc6}X3v!6AKhht08vE8C>ai{{e>+E7GdDH-{ z4kQbW^(l1Px#7Ppua~%gzaA4iJPJoVU!37c8bR$FUZ>=kN3g}#K-poPc(auxLk!w61{0ueZIigJxCKxD zRlJ{rZ$v+TIQr{WJobvzoD?8<5R=?4lnWo5f!=Dt@m^mBJka2ek@_-*_m=lJ3#is& zEK^xn`rav=`|PDc^Q{izyqi9Y$ZC zEx?N>?tRhh>wvlJ1knwLLTC+tATM})5ctRj;RW6O7xZFo)oKaPX$C#7$ar610x9si2@eqPL@gx1r?eYyMn_Ag(>@Gbi z?r9~F@RPn-=+sl|jv_v0VW&%lW2?lP&M8Vo4Os;8@Q$IGcq9fjRh(5ty$wpFtm|Fh5F z%uco0yEubpzOX(Z9ZS=vm$kZ2F;z5`*AaN*pdI|Jx`*j#qn@+U%)t?I^!tIEawa5+ixfd zL=9so-Iq_7y8gip+dQ$!&@7@~`j`NWmx5)@6Opnz?Bq{}qR4R?FhKN@-Mxjxo;529;Ju9>b0m2zZudK+p70K#mem4W^hkIMD{cZ-! z>BMUaJ8FTOdO*2cvKKk0zXY5&S;KoGMtod^u2wyKPUmjP9EObR^L}{CO4ct>>AXnz ze3gGoIn9@Kqmjj^fcm#4j6Y{|TTx{cT%y@p_xY~leh;K$h$a#W@-d{5i*PQts2EWw-F6NFDg zSJ$pO59hw^J8|oZ$A7JBci{sU-1+SY9zB;d$D#}D67-KhofQpR+h%>wHn8G%4tm(! z{Rr-V9HD>AB1FMp!HdXK>~Rx($r9k0n~aqMjS;)QOM_>@ zoOTFR40Lx%JV;q_fE1@4mIc|KD1St&!=U>H#JiDeZ>EHz=k?p+#UFz46=%^C1KC`t z-(CIiw$NKp-^(9^J&qusVk>c9%^QriSXQpK*ueoR6~dNXh?lhYR1X|+fFIS%lV7g+ zK$m8w<{y$9T#`zkj`2krtvdi9Z ziz$I;YdxMj*TV4B^Io>$^>4T=bi{>SJPvG3>wFv>pP|n|t&!;Rmq2N%$t3kD3^X)^ zS334b!T@8U$2oZov}$8}Kaf71vy=Y(t{^TgNQyFx=qvERfqmXB5#}klw9pwW^EU>D zk_Nld&ZYj>{Rp3vtE$vOBCZN9Rr)0o+@fS%jfOWn$UKJBR$>9I5V31k(1ysdE;wSi zM$KH=;96bZEhk zHB(@j(6hdM?h>23xQ$G%UVf&V+6`Q~K_S}&`=R;$1OAB73DDkqD#mL)2}>udg`R$0 z#Vwz9`ENtDNO_Ejm$qsE7t52k<|NCI)AGbm3K;>i;;}oo%8H5ab28L!hKJxIhL@^Y z7yg0h>SD8Y2TV(y#newAsYyCP+X0V<-9ew5{3N`%IKt z2^?bCR)S-}MdY9P%lLWmo^<4nDLlNz!D(?K4JR{iYcc+#BGG@`dv+m`g&gjFmOpiW z4Lr-dnX^-E3b+1b2rf@IpixoSHlxmIWXwDuOYU7lCrQf=6^~}T7ukB}`HNP}!dC&` z{!x&HLp1L6y7ggXz+Bec9y;=liQi>6p3ft_!LgUmtlQD|s4(w|Sx$2M{$+zb#2kf` zO*h9@TZrv!{DIGs312pDH0WH-2eH?O$2{+3!qtk`%kOVZ;*VYFx9=V+1?Rv{4%Vu2 zM62y?!hRL-GAO{p@IwfO|CTMT$;iX6s(nFuR!rov2c>Cw?Xu)A3E~A6Cc@;5z~(6~ zHg@uCsbAq*HwQVvg`G2{7Db&X2Wd>?s ze~4W|%2%S#`d@y6l&l|kyd^j(?*5;B3ErpAu_L-BH<(Dl1mW)g>9lr-|}(QP))GWThDlkbkStJARO zn9h14XiwQZM~G<$*iYT6g;htwq9u845NWCyR0BDUqXQ$A%%r`2BeJifOW?2VlubUr7-{L&SNhcS79gLx#2*uJm~=XL z;F3EFC28f+(R^~n91I*dzVD`13pB<~N(^ilAl>?9=mEPrF+=^m`u>7R5V~c;ovOKk zrU!3Iituufs%yVkbeNaI`(dFmQ;RY1f9U8FI5>oZ;XCt$1vX&*Q+Mju=6tyK>7Y-X zdNJ!G(f{Mmu#QGMf61RroPu`2 zT%X@&O}HYULp5*Ig-aW^AH4kBh(@}bW)i*|sAJx>Z2Dy$*k9J&P|{>2t(9hT+%g_S zj!6}jd2UY9eoFnAAk}T;H%A)e_Yqv_SG$(2dYd^&=E|xKS&R$l`u+E&>hD;P5Sx6T z^XCyNXbF)Eud|ZwOEu{;9AChXomKU$Pntnve32=Las{)+(~SkYYVn|d>i&X{yGaGr zZk=dI@W=BxZ)&{q`>*>E18S-FyQbnn;bX#~F#9z4Bh@geAleG8Q#G_u@ZJ*J=3oW0-8Kd{)5h3VTvF zsjoJsgJi(kzTTcpAYX}6WhS2UI!ew%52WA0#}~^D&a%P4R8t%()m{zE&P~3qK0LtG zuG08%dIaw9w~SHxPJrF1p9Yqlwoo7vp%blX1XM{+jtgJ@47!KX>~eyqfs6Kbn5{wq z1c*zC+kg5BRf#$M>hgr1OkNu$?)?LhdvIz|DFQT;T`xJ$W`bXgvQNviNDvIG>DQt! zfb2)w33_8*z<8@SQ>#4<*1s9*dJ-IvkTmh+?oB@+-@miA>7fTMf_;{PK1~p)zc2HH zcoxu!vV`BwTQ0kEy5W9zUl76`&I%$yXZ!nxb{peKE$(Y4NR(F_QK!>Dn8=z>`nZA1m9xL<82aFWF7zNa3YTUvW+uGu3ZDlJp~Z zM@Fv`_dG2Auj_RjIgZ4ivcUwdCB;nTen#=ANUzIJSPFI2QZK1IM)PFf;Y?UH439-$+D z=RLD`WpEC1tJotB2eXpy<=j1g_qYXQl-}Iss+Nn)-85`_vj4!{v!@F9<=S8pm6n#& z8Avn1rPqyC2_CEmP1r0kpGcIw^5D?3V=xX1d7gi@?0t=ommhCueG`uz zR7+)K;VKAkp1qbLxP<{`M{_GaQIT|ZWC_-Z=Ax~lzBt*6hV=yEEV3Z~xVeY!CnWP&qZBJ<;8f56_2p)MsAGq%xB9nDzef@r>}C{_|a9aOGr8PUfZvspfNw+B@qx_+CCA zIm0GE+DxmzVU$8o7Au#(A!4`yDwiFveLT6F6g6Y+`0v9KK07X;)Ap_v8s&bNDiJ!` z{qGL-ZTSqtce@?#Oy4%KwQ6Q+CS(X~a)KzV+B;$YYul@{$9i#{L7z4bSN^AtpV+zm z_EqYF^yD2H5qtjE2mJrHExCVFwpq4j0-go8HT|R*f{VY+MZVsi1A~i7H?B_6kgu{j zPLkt@^LLJ3G*wu|(bG%}Z6~sE!$?r~Z^bN{j+aS~&r9pXPT3gMmv_Bo*x$K*wA*9e`=*il{5=&l)vKlL@K{xK7Y?@93C+XJJx`;GpL zT~HVF8x39E&}qOIA=r{V8U=hsI)2(dt>8PL`J_vH5ROx)2>$%o3A4q=#GamP#Km5c zD@)B5=B5fW`5#OJ(WTzLUOsB_fyG3wrIbFrw0M(S>sBugoI01*v6s*X-A~9=H{3y1 z6>ab3A>JE4rBU zpM{Bu5OXJkd$MVoU#ZEanq>yG5`9>r>VNHN?F8-)mipW-u!DR++`&J(gM~Eqb(Tuv z#CDQcl$^rB`*TP-^Xl`CdJfVhMxU2AA5xGL?cOx*iJ8Zfdo=QApRkg4l@M;4)(v#d zIIR&tkTL=Jj$y2C=Cyzvq*>C@?&Yu{Xdbe2lav{DCU|{MOZ$$cc)B&Y8ys)!Rw1tnDUl@$s*`2Eq zf=jZp`v=Rb(C~MqPy2~byq4FmQ0$d~dV^0-);{=yk7%C+I!!0xNclKR$C;P-Du;jP z(e6HUSbP=)2_-1DC9ZZ>uMs(DbooXuT48-|{L}CcJs8S5$SFD&k5{Y`9Q(g|!o}qI zALHX*_~{lStzdfef4I#g2Z``#FWx7{+f``-z~&8q6a2CfPeoILuuf$cf`^T>DoR>eu$ zyp!P5p12Bpy64jv^Vh*Uv1a|ivs#${w(HOMrxtipQ%BSNs|RQ}?G9a+3kEg6mF)7d zaF`-HQ9?};eCawKsF|J!QZ56@4RYpS_n|XA^noRKS`U{v?RJ8q7pv!a*qq?h)6<0{ z8F!%Qdb+Tb7=|7cNhNaXHUD*=ZD-!sxQBfi_9SR&z1`ac_xt}^n3(nAW8s(PExB*8 zMM>~+zQ`983Vm_qI-&Ei8260uGIm1t-(42JmWCiJ|L6&s;zn@(a-OQ`ZX~4WhTg6= z?7~XZ1ufOgKHQh|&89f914*x=C^Q$C$**qjTiVq%3g4+h4_yo$g~nIbtRc3|;3_tv zSZI-kcKLE%r^l!9*|Fl#=WKuAf{`kp{M%+Y5dTB>=139F9=t44qD)J^_-4n%4#sM9 z5t(GCR_%rQu%M^(14eM&ZsK38Z5nLb-SAprr2)EsztgrkISXamJ_Z_Cw}Qr0tI&%R zRxrVLRv;;?4d~C09aA+-0yBjX$7%7K)xo zUEgg^N8Y>rTi`3NZhRa)ckV*=C~B(YZ?$m|>!*B=v&}6b*ZONp$?yiC z8J%GgJ+2*md}0iP8K1e^ zXXilq#~=@%@Lcp`X3i3xZ-EBeZk0qULN|2Z%%bd30k*iDe?uusOODUv*19>wN>b-e z3_iDyf+Ro$fbm?VAc=q0f1gsj4413D+NPJ_p6FLPgt?~ZOQohLYmWf!x1 zxPBA)Nz$YFZ@Q5=R+~yOu%GblX3=c<L)Gj&<kzCKBZAgL#}IK#@|>25z)y;ly!`m=1$U@Rm9JPl(`w{M=4iy`3%*%PQWLxNqyh?$nH4c`r8{{L31Y ztyPP+&xGRy?{0GF^p6J#O!LS`OGV=QIf4h?9+9;ZYykHU(>?WPS;(KytUK>9+dw<+ z`U#eg<4A23ka4zb5|8EGW7&3z$jdE15X@|`h&MloI~^QY1Ph719}akJ;u~27;Y}4LUWXTfS@W-Bn zk62V#@<)9?vM(Gvy?JZ}MSf-Y@4>IY zQ!c(|+~qI+8U301Iq);Y6;|-Q^@@W7_2n{h%AYaYl0;jW;{p^hO=qXgw!^K6=57hy zW_+jBSiZWLf#D&s>BlUJuxHzyiv@`fp^{?TudFkQM(uQm(~ zis+NG{-i?gO8b6x#U31<`F3mcK`svDr3^e<4+IB4>OD`shY^0-`XQRJBq$!*AH7T+ z4EgQZ3cV@`@JJ^$j5C(tSjlN_xn^AhlAC&^;Y1WlkapZ0DzL%JUsD_&IZ%+Ekxm@x z8teg=;Xf|Z76Zh((-pFt^5;m3$1JLzQvUhm8j(Y|?z%IFy$0!c{Z+hL^HK7P8TeOrx+|J*U)}k&k^Weve&*5vd%!WFva)QUCm`!5UR4 zwg&b8*uA#~qwhCn<`*|X?g01FdRin%pLDBf2}y+ikFYn7rZWE8{|$wbF;kL|N*a^~ zlI(*bQ%Mqwp7r_btixaD z*!KN??|ogbixPkRYRvvh(6*V{{@imO^V|%qzfXo?vCF0Dw;ZL=u*=pyrz{hT-nEHr zJKBjn1zJ?I(jJ%tl_wj==ip4JSH7AE1JP6{bt9bQq^5`N-C@Jthc3EStlJ{{K~mQI z%@)Nu6kbu8iPBoaov{sy6|3EFZ77IVgQpF1#2oB$uB@Q0_Mxp@lY_YJZ?&JVI4#jy z>&gC;F}6U?8@?4pznD_5 zhw=y8*meoILqTEG0jr+3^ai%g;#=S4@D=@OoD!}QxSBl(z4VN_cPeYK zC0NDtt7#inG}W7H{Hub!n%fg4V!Qv-pKEBmv?tX1@L-8=Z+OFh=d(Vb%)M;=vy2H+ z@p=Dl(+~mO;cvpW3lSwO?+!|bPr861?!96qnvkLqO;yG|H7bC1~ye=TED3G~bNh_mVKL8o9*?6G;Hu0pID z!sV-i8azmj;mdo?zBQ!~$J`L-_jMCx;ez;E>!~@YzNOp3SGo?@;|FkK>t^D~8STYA zdhEo~;U5l~1Qq4pyKVAQj!noT*cW_ja2~5;J_*>f{XzAV>DIRQR>(U)5yG{37%P7W z-chh2b;tFaq#m;_VpKxrb%mC7D6H?&7u(*Cv2BD=ViGGwebc+YJT2RZ0qWxc>~sG> z#JgLm?F|owRf6X>gCaBWBtmD4(D^0!Ce-2?^>!RwwyOMlwX%isy}ZJt>jf_%RdRyM zLhlbC!T)cu`xjn`qz~KPy@=;a6fBfxgeb!uXII#>f1*fo-DWA}|K)1_U-OZ%d{@dL z_DV43pg21w)&R}wrMiE$ebCspm%~i-I!I@w*U&tTg?uT$f8&|y!1va&N0B=k96|%% zmz~N3r|S+zRTjb6)Y)?QLa{IGt-PGOv@-{e5b_`0Gf2LAOyxBb!3x;F_)g;aWDUlI zUDJfGo81~J!g1w&YXEkX%ZfB#!&eP{D2qH3ThXA^gw}~`_mV1{Gs!+ zl$M%UE2-}qed~FJ^s629ry z4_h-+s$LJ^pFZ3$*H4 zr;e!fLDYb@tC5Ev)*Wg7r>wh|7&`t^L@AJw=oPn>3#DNt!WqxaGza!!(iI-D;fudT`KC03j(JbyL+ z74{r9X1Q1Ai&T$S?o1a<$_z5xoVs=VBOKa)bW1QRxkow1uct<2{@42>-9Ki1T}f7g z612l9h4eLgq{d%o%H<)l<^uWFI$Gg~*H_PQpAj^xYQ0JIb_&dW{z#_kko&Ktj(_iO z)_`cO32VZ|BMEegH|0_H`|UJOsGP~@e7qy=Bs$u$BoU%rWt#~UG=wYTS3JS z!?v6=en@w8_rcys0Yc>d9O;_=3UZRG)$aMfK-Q${t<i^`S8224wZ2xsfWah);M_l%NP4_|hOviS?lTpw;S<&TkyaH_MS2I6+T*B<#u9rV& zlXKSt`^`-{GcbGE=w|00T0*|{itcbeGqK$usYIS54?#4g?3PIh3Uhya|BrSBQ;QX| zKV5T%*0|K>NP*vYASpc+uWu#7%|qFAeof$D{Tah4iBdE^0%hj@%Z@oqRrl$@!O)n$CAY=P79!sqgcsBb#`~F|Yv|vnwq8Oy?17 zwZfD+ChaMx})G;+bb6;*qIVwvRx2;(G_kHB$-#4;0t}mmq z{F{?cNgmFU|K+m>GMC^4_*}_=C1BlP)aab9!yzg95I?tRQ1nWaa%75zVwN{bauZYV zy>#t>hHxhs+W&bdxV8)}J0-UjZJmXZYqyJ11?!>mPt~bouJvH)9(alNUL6X(k2p|K zR*QEZJaf+@a}}G9Z25ZgR3Vg~zIMW6xF7i+484tGUc|>{txtc3E`W02=_5gfLoh)J z{swQR@lwae)o)*!h}mSTW)asJQ1^FI=!)xw3d7t?t(#;ns=Q18x6czemcSZw@Zh0ynN6F_(EG-*NJt#gXKkqFvgn94fIE9xw;acVm7JA)2 z7;Y(vUFw;K%F+n)otiUfWf}LFW`NY4e%yK7VmFy5{ah;ldo!sIJ44L(yl`X;6;Dgf&)SD7C^ z1r_D%$!$gvNi@Wi636!^WSbAD zu)f2}$_P1Kj6soX1~IpXMaX;DoaeA`g3JL8s+z6KmdKl?7iC1Tf*ri}=~5)Wot5vn z(qr}n;1++Myuc`lCK4j{Y9c&nD*MZdiHYRBK4elGI$Z?&e(ck%o-Bf%`vN(e-o3)n z{Hn|O<)LtX#ykBUynsAfcHIXFJ@JggRAtZ~&A02s%Rr=JU&}}fw}PB3cH!LZZ{e2yvnTcsW5K|4 zR}dNc1Y?_?EeA9jA=}ec>B~>FLAY(z`hjd4gdRwIe$*orct@Dk3YjXvq3*^!&7uMB zxqHX@m`*8fUS%PpR@_lBI{0TG=QZ%8n-_~}q@c6ghqm*tKV!h768Dqp3b^@c%w<1u z7pQh^Irvd26KFzCYk@ zkyQvqwVt>W8VW&ZF1|g*(zKZ5v;4j4;2(}1*>~Jy3W{;KdNf(0@C!`IUOk;jm53v~ zMNQLT*7$+GtcvH>XN=F*Sz9LOl#03rgCq8(*m?~0M0Jx;y}mEp@vSEM4)jEpOY2~) z(_qOP^8d*~C`svQi5N~Dl$6zdIg7hpxO2EA8qipWPnTt+5vO;?ztKJ80*ZaDH}=2& zid{Lsx$hT$!=`U>6d9`R_+7wm*+*^sZ+4;x~C9ppBpYXhsJVJlRB}f(wWE8)&J?^|5siA#;NEX zJ4P{jZ|kIpb3G&+PnVB<)C9*g5-HAe&~^DUdqIOTXWJVYxnw_K$f2dNvJ#80>pd2m5CQpZ2~Z zb5MKh8SR;xux6!pzFU47qRPbc23(t9^yw#^9WT~ldoRD<1>PQr7R`#=*&Bp5A9750 z%1y&aXyc2UY+c~6FWkU&JPTeOu)J|qzURiQ@i?PQx z%2amE9+U+asVml`0*WLtM`+C0jM z$Cf!x&!Y0fwTxenGBBpqcJn>w34C^7>t|V`uXz5D*(ToEH8^QT$V7gq0a}gHxkJYm zfIIp5rks7HaF70=!bmBZpC>v^K6d7CPw7a8xJosQO8+X~!rY8b8}++-C+qNGz?cF&Tq`I( zdOh^=!xy}h>7Qao`Wv0nwg*Vk9wdT>hJ7?cxrtVJ?gR*q#Of@u^Z74&7EbI8U+ddKAaXm0 z5}7ZTbV8w6kezaSMms6-!Y0bJAk|_b8~L0wHE>qu{{U2Ou7?fV>)`JXc|)U)NU;0# zwAH&M5owYd)qhfT!;sg}<982Npai>H2QP3Cm23+1x0iiET(?PXhWxwPdX|2yP~Ado zJiNhVw)q8a-cfhjWcDL2s>#u=LNN@fY$<~$0usAg%@^7jZQrAIqQT5WLvWVBu1xOoqPA-Ax=p3;60<4rf{j~@l4t^#V; zqn)5)%R}slEzCOHqVob$o3?HjmD%O&K$~YK?_!*6*eZ?kIdr>E?S?eqhkUBQ6(j%0jMi(IDX?T4Wa4sbArR>AKE<{^$GYyP2rQv7Kyq$gv}$Tg6K%S zP|WA#s<_d4h|kT8tSM zXX3uomd2=Aii-n?2AXMyAs4laYsA-t;dU;+@?i8Gy$lgZ1$Wi)_Y>rUr}YyY6OmjHFW(;h;T%lx`=Q!NM>t3S63 zAoq-yrlg8_I-oOVrjgHJ6xq!#{0fZ}Bjmdd|7H^S0xfrpuPa zLZB%Ac)O6BHSXH$wlz&Q0WEeFGwk@#Sm1s(&%5)MI1m*3t!jH-0B!g&@dMtEF-So9 zcD<_)>T5=B32wOtAJk#`?1LjPVO4Z^O4S|HF8Vi*mqcJ7_qX(ouTkj7zi?7(H3HOG zzTmNZCu~mhWH`*?3$jmc9T_M6w^d_rXQ>4^pm>rtm|W9fo9x?yM@HqKBe~IS9qfRL zOS}0P_FTiI-QCY=-g)CI{tN8ohkAid_iCrnC&v_kjHqF!JQfvTLMVHwo zXup7q5B|CjYPf-6j>ySRrxbBbYT#keu`s+nXgX@FPe1}w)kS4iM_iHU-P&ciAD(6Z zE{@@=hvr-J|70m)FyPKO*y?8vs{3d%1)|d#KXa2hy$}nFAjy4xctO)W$2Bh!wwVqX zyXZWHpfUfCcAHXgZ`dz>v8rq`FUru&IjI^CzbRk$dz^zY+}s9YZE8XS7)=Nc!_A3|r+k7!nv$;idDmXe@U;D&F)|3l#qd zo0d-`*h+o^`8^`5yJPR7UBjUGg+d$X*Ib_~cZ|YWAFqSY6Qi&-p+G0$k`k5_oV@K{ zPx8LryLcFDyu#~@iIy&kFL3sEm4c{7AhI2pwPrFJ#&H%e1qU4g`m1*hI5Uq4}|AaehHQ5VU$@f!+Nj& z2C4U0;kdjaEzkl+9P4VeX+L4|BwhAx(Js9H{A~EqC*7FMuUIMFGlggGZ_BxQ=?}i& zxVQ4tkj$6A{W;`!p)1gxIpH1dSq*#tZ52H8JDbcU><@gYoQ9L4)1mD#J}6w-;bU2w zk8XjZ(p&ddqOk_e?Z!`A2>0hnsmXagVA&BUWZ*Xhmnv3Lg_zqQL|f?3UCuZV{n0|N zEHnq=JK~~$+apXL&%91uXn|CT2Yua~f^hu$+^H1W2#mV0V(MgB03qRb9qv5;4S~sJ zB~xsfxV1A#^6%J3)L6OkQF*ctH_5x~!Z8}+&PLCAT2BUUchh>PVO@Zl&P|IVe)Z^Y zs2M?*N9saPRzI}fQ3$VwTlxJusVQ<61D^s-`!UeShG$diEFRhU^kS%ZIYwtGhHnXG zqUy*(hvIv!TY!ztHrt$~QsIF}Py0 zZ*ZV04f+jOd{u7sB5(xQZ;2x36>G02ly#js1Rk~1ESmIo;aBRT1 zcUKdt>XR|(&J!Q2tPvcIX%Zex9DsM}d;Bkvz9yl(A1PtNoPvG=_bdSi4jhlB`TL*yqDI6n4o2z%l0Wf`H-F{He?5=TpV;@h z{$?$7_59_oIJ624_r0vx>gkCyM%Qak%TQCSMdj)PJ(9q5=&7FK`y%}Pw^qnO!Vb5V z4|OmNmB4!Dr`PmP>cJ>Q-M!>U18$n|{t`~vMm(BicT70b19775cHcvW(0Bgo`*HCF z_*?I9=Im+@Wh3^4Kz$%Mhg}>hgj76yr1b52TRY_Zxs!5|oU>oL5q3O6rWJbJ=ayrw zOQ3bve4Ve?4|Gd&3b?qn3H#J)WHp}lz=f>DiOSU`?BU-so=`FfzP$zK-dB-(U+sw8 zZFLpoeX~Euv@so%A{dI)%(8H^`{1bZmT{b0@)&1NWumwq@7|XEpa^m!=}SLeZiMCZ ztgZEbs^H-P@9ixNTZtbTM|lo>Ng;DP2lV%UoJV?#&vnkH2O#G?RRXQ{0KB?t(P>pg z`fR&OR3yzvo{w)&UvXmJf_ky*^}KfX$soo>6ppsb=Ot)-!Xdz1QMKF&-BkJzH{O3`NC` zC3q=JVsT|rw4m^BDAS(2Z^t=;3X+u~%pGlT-fJr{@wOL?SqgA(QMN`rjo|a4CDO+0*$SRA5nczrv@B4_y`SZy zp?yjd(EZzrCd+6XS1 ztk;W9ZtL_!w56lJH1-1JZ|L8VC-sa|jKor=DkmtOygwW%rh|Ukd9l2V40}3+6BTrQDNa;04Q>;_Wm)Nh}ymSYMQaR_FXQE-mx$s+tizb|}pntxDe;9t1Rf+|^^TaPp2d~r~Yk_YH z``%r6tb)zr{FiqrmE)7N@Dm(cD^Qfv+;lbQ5pdaj^S#yY4?c%Mpikrt*fHKe`jh(} zwz}2sUHkJCo>g*p6>DdJ=Qk_w{bx!3<&~Y45rMWK?LF1ix92pb^ekT2jS596%llhd zh+qV>dMVjXdk8+9k|`yX4M_&G7Yn09p^1}AEP*4K%%2HwjW8L&=8g&hX6a)1E%B_7 zGa(z)boOs-m3ajhb>z7#=xtHNwe+8#4gu#v8z&T-NWMP%={2VF)wnQr|ITriD$wp@ ze)+F25H_|lE-6Sx!XZNqTf;+E=ym3^)1A+3#KME8nU}kkQ2O1GAXc3}$Zow>R`uiu z<}93!P&wCxH}}8atU~(J3|s#>x7P-e`I-(n8^5D5gC-A-4(FhgtMp*HSUxUL{rOeN zdk_2iEDamVOi>`ebabTtsahUe^zMu zJQB9MUcUFTFC3@0NR>z0wL;{*J>n4;NZxqBDVFWJ3s|(me@6XKJ4|q$d=j#24&~Th z)$}Ga61la9PN;uL#cmbF%VAWAOA3dsr97{L*b{ZnzU(4%+%EWb0G!!242_IYV|=x$c?%%u#_w$zoX z&n4%>&@Da4J%~d|fydhwx;_eZC~OgS zmOXzAvkwQdBpq7DQB4^&L(-r8L`w6p_Mcfy=CPVW|$qrZwe*?yjR%8Ji=2B0EuX`;%wfVjrpusZj2e zF5x|$t*okoJvc8lRYe*5f%Cdocm}%3+}iKdvDJB1Xq1vL@bFL`1Z3yzJ84~wqLw}S zUg2$cbYAOI*?}-Px>{;oCRmC*8+`BCZMX?t^U_H{Zz@94@mPqc82OyCNjP`%au423 zPmfRkI|#v?N%NgoCgIO*Q&tXAN8vI5^2WrjN>Kjl823eyoZIj&&q^F5^~km-BfNA9 z@ccXOXsrhYa3ex=mD&CW^z75R_9!_O8}|wDS$6#Ie1zFFVN_YZ0e|`*N#=cQ{$J~x zK3C+lAmb9;s9QZ6AGMisMNy@A{wfuvf0p`%%?vH2-%e-Yj6yHet%ME^?;z(9&x_Q= z63Kj{;*YEO{Oe>67S9eJ6Ec3`RC2 z<7hKDDax&K4dL-sFzoIzYVF$weSbb*JuCbXyz7l$UEVfJ=2HjROOQNK#h+{4v@crl zaFxOdyYLb;^vUb<{@n>qHW_1kxK|+ai`Sdk+OJq$u&?mmDw$jTQJQJPX#s9M=qTYL zeI!FxTee@{{SD$g_Y66oBlA_vzTeZOBRMJWjPj43o&n3dyG*}lGE)M-5wFWLmcZOg zr)KT>DinOQ7PAnlfEh;vojyG_iY`aidh*VGU^{a7x#3H<-_|n#K87^z2fG=FpUf^1=k72NmlZV1 z`VD)r)VXo&f`2~DO3oazHy^}Cx2Y^C>OoXmn9Un|*-Y-~v-KJGjN$2dYp+e7MPR4G z^p;_{2&Zkh3w3ue5H~K-GxOK3q4Skfz5ydkxO|VZ_i*+a9(VX?d79+4x7_i{EU0H7 z{3Ug%Kcvh8=g=E&F`Eih?CVi2GMd53MltKUkj(^VwDDuMo&tC!;7C97xB*{`#HntS zEg(beE#~TQN#x~vd2;C6zz zel33BFjM{g*$`67wt3|LJP8k*j+)OikvSoJ7p?}_llj_NkE5T@Wk9;mpGJ-%afp6B zRGwVwgm;2Q%h>is!|J`4haWw*BDv;GEa~6Vp>i$Ft$Ne}skMrI+ijwNwY>KFYqSFO z!COpC%R!LMr0x*zcONp{oKNnVjK(YP`kr&O?uImN_4y=q7hv=zzSXzf(n zVz>P++_~zfA7C4U5`!`_T9;pg>#9y4m=L&fURVEVZZyUih`e#R@EIQIvm5sB&4yUB zhop<6o%!fN%Bv4Q=^E zEI)lg#wN@TW;Faor=Mq|DmANvZo4EVxVwEcZ0rNRR~$z@*$JqzihI~bR{>Ah9G!m@ zW<$85^;rE*a?kOBI?3++3y`}crx1I?9bCKV26)c~;|Q1hD_wgsXD+ogUr#t5j=46x zORy%tr^#3Of+beSeBgbkhnENZ6wA1fBIN`h?nM2OdQ9#e?IXfJ-bzFE?Pt}*Ez|#N zU0d|tlzS^a51nWB39_>FV#&DwX_lvKl<2>np5xthFk&7O5c0Gg?3<@Pqcxc~>&5o> zQ1C~fnA+W;Y*K^JpDYI-l6uofs*7~gloTjZR~c|5c|ohk<{D^}$3Xc7eMLyc0!ZAy z?PSeEOF1^6T_ekY=qDlkbyo_3lqRC8;%Okr=dEQMDHOuvYu93I`W26fT8a^%^n9Yy60n@fx1@n92MmygWg;_nMm4dp5=LVcM<4%ywOMxt;3~j z(PsSI|6pVfD-ZYIDY#i4+fkeQ4f;z`8|G@WK%L3pdiU%A_U3MRBPZ?yH+z1pf2}V^ zc0TR{CM5rD_T-?<)jeGpwLW{KIjj%;Ix=~_uvB8qisTqr#>#>o>tMHrQ(l%s#O7@Mw?%^M$#g4!K? zgWeRIzM7BYb0r5A#P{Np(GZzov^kCqcH&s3(d_?7{;%sMr( zc6Uo7P0A3+ct=Rdn{PnPmt$#*T#Go%eUQeD^dD$-S0%-fI;;45({8S(`>_q8QYnhF zNZmUabI7|FvVLD%{?1+w*R&76`QY4*#={VH+7`}0O zk@!5GgBTY5r7I&^fUml2kJg&hp+p#QFVw^WfFY2(i>V8>m3}>abA1?X+W$ zq&XxlncM;5Ek#+Iof;v0dFQn&rkjad?}C;a1XqyGylqIH`)b7jd{*rj7?ziZ|%OswqSe-u{_?6Df1kBC`Fa@Gkq zdDsEbJ{eK5>~+AC;hfW(Z4a&)JL)ZKTVa@fS@YMeD!658nql~R62AX@z+}9;8{6}< z_a5b#M=e^%kdV(LpC$ZN@Bs4?svnJw_Q~g@yz^iwNcCR=io#CW54|1W?r*QwxX=Rg zk~@T3zEKn9`T9G>56?o|n&e#8kU9`D*C$56fn0LFT`-FqkoHOyKBsA80YKpU~Vx- zneC}P6=Ht)Ib%;g|2=c~xZ=}YCa(%6?zC&Q+lGY49le&5F%_TucVb=#Y10lZ(oIJr{Yj2{N2WC!|vJ2$?h$_uaec`no zy66jqRo`+4HPTsits(~gzLbyQ@KQp$YYheLkJ9nAc*rhUlLE+i^!r&2yC2HLNDmtH zNFXJ1vzAzS188%~Ww70?fR(i$B+0}b91GeqdRkwQT!`0|acQ-{aCzj74oe{J=Nz$Y z@{2-G;nzKZPcoqKtj6|H({wl`(K<66@)F-T$|N({If47EgTyVumE`fdJX@Q73F2eZ z@nh3^P;MMD6mdHWoN`WPR1_9tqF|e6*i#G0_ZT=B<EnkuA!7|ORglKSe zImmvc-3SG~-tQX!n~E(4jnm0#1en|sk+$Dmj|&Y~^*uM`p;O4^g+I+E5VRy?bVk)3 zoaNK5KRz6ej+__F-EV0k&uzL#+jxKA;+~x}ilGEXF>0|qQ~CtSdBOZu+IgfOqbthg zV>HxV>yvDtiv`NA^{d5ujWIm6KvFo(8no%ia|Pf_+mRQh+iF`?W;rO&Z3-6G9;h%{47uW*Gc4GwF|6U@5KvoZ=wwB z24P)#_w54`)%fV_IV;Lk3)C=Ye?EQxCvyK?ig$GVf#c$&*6ej`$OF5mtGVA}2vpgj_FMaS669&O1?lrA;MDZT_xvIWkY7EqJGY3A z;*=+)s-rrF?|sDm|LiY>e!p$Ixvc(T)3SZ9n;rvEtzvZHv{ejfR7BX_vg(9Lj)pC= z2ZxaTP{7%fPF=uI9+qh9_W_gCFYUh?-hqz4b@HoA>~N`Q$-}0rYmri(Gd&$`ru+^&G?jPKVJWM#9PQ~0}nCRj?rt^W+|7h4 zS}_B&j*d0Y8-4*vmXjFg*y9G*~Gg z-0v+2eJ1sKc4Ll?UE7I&2JPbIx_@As>#+dWLDH`ot@q}2Y(L8F%+jwqx`2aX(u(G{ zC!pM;wt1Al3uARhBevy`IfUP+k`5mzfuiQK_l0OS5&u)S){Q^QT-itQ@XpEY<2rTY?2>N2+4x*1uKd1fYif;ZpNqo&07ePj`(8UmB=nQM8HBoF@9 zNcdN2Qb$HBYw_|s$-x^8RG@qr#~Y1)Z$+L@qqTz6U%Budgccpc%(pf2dF?G%QD71spqSsXYJ#3829gVesZi&X1Nn6jIO zn*ZoJ9PeNhQQXvy`7hFKeQahxAj{g#<<$V_o}H9q_MJuF$!Dq}!(1eJR6oM2e-+e| z-feGgry+XSLMqj`o6&*&qUdZiE8)A1L9R7v9xe@!cC#__5^ln7I}dO#V@tDTWy<#z zoDz_|rKe3zxthMljN93W<2n@msMn-!C1vSyL3B6rU$>dagIRDCXt_B!Gl#}Cx+%(* z!+8F^;C}BX^VsViE@dZ{hZjyxIS2So;YkHChhrmSIC3^ilm1I9ynB+@e}SzC7vm4C z{h-vMu>LIn{MQPwSn@T#s=!1sB)(a2am>Q7?uk1=wp*S=yH&-3#6iZGDmV}4PK~rhWCQ~*UVp_H-j20oEa_Fg0i4&k?#M{ikt&fW>UKdiV zd{DC7=hMcoK#>pICt?;-| z)nMtgHzvC^e;Pg=1dIZ_9nns$aKVR9ma{e&*pwpcB=X;Y2IrBCk^}c(@Y=qBmtHMxsFZkALZSz@sHQ-i-%bSM6r82xc< zqYnB<`t}KvpPSjVFH1l#5LC|{EG^WY~k?)jIvnvwoYN$nRGls6NX z90si~MmJ%;kD<}&lzzNxM|YTnjAG8-JQdlUhK{fEUtQEK#v7O8@@gm* zI7s)Fck{W&*jXUb;m+@j5_y!|y{E%5UgD5zT6`$(Pk5wtd+;mHN4oOuD67NsTB|=& zx?BHizs~ugdb)yl18L~OUWHW+!_!l$htqEI5X{x5!Vcv9LW?8!`(|VZadCNyb!!5F z)87o{_6&bQo2N$OF*Yu^Ks*~LQtZc!E}Az=rCs=NOo-_L$w$A&s?1nm^c#zd)lC^R zXR#ts*{tm|Bq}|CtB0`AnnyoP5B;t7OhE@uM_%XZX!UB9}IQ#ry&Nw!G zJmN4*>U;8(M?aatGSt;XIvsE8gZtW%4>k!^gLce9>xonfzCXYcY__=pw!Z%KGHsv` zyJ?E*_P`3X2y7kSMZbY_2@JUK~tMK?ddQCn(nzzYdZSCc1|n6XL<+|p1#g@Z|a5%w~Wq|@i&os z7V$SD9+~)~^H|OWk{_#oqN8ZKxDTKComs9YeJ@#O?drL1Zz8%`Ha3TB+D*_jf1s=4 zAouY{+~RFWomBsB5&uN3UaWm|VcyxR4efs)-Y`j-z|^zu7it>`GRNx*Q~956c=qJt zLYQO)vYlC%EhYEwV$t^&i(Xg5;H>m<=ZZSu>YqI9`ILs(n^pad_Zc;1v%OG`@;4@e zx1e4|w~vJ)^Ur?EEtOB;Bs3&$sJMmr&P?CBlkqp?vaBDt9b1pKdWZYIcBMg9-q2+I z$UKf|eaZeTy9T76L)&&>5TlV@x}>ZL_GTuXh%_01Yw7E5o0O>ja~=`?bywgu$@^?C zkUZ5+@`(Pge*Hf`S3S!5Na6bgcozh_-x~W1DH;W-RZU~KP<^!ZK?p6Sgm|f~qdgrD2w8_YEKNU!}HIS%Ur@dbw@vZ;_t!u8viAJ?w5YeP6wkks^CzT`pGn z2WZ?n%oF6+0bI8HKU~BFC?4VwH}wza!7Bd;%#qsltDPL-x^d2Y+nt8(Ersefe))LUz%G9%{s#`x z>~Xv}umDF|QblxDNxiU|M0D!&a$vvUDOb$d2~Q@XA|14C!X#660%Pb}~ogIOW>6Jq^%Ul%cJ5g!l zKEGj?t*2>-;AgOj=lCeIXA0^M+*>pgW}-wM-Nf*!{WA;?F@^3|M;{MBQ8{f}Vgq;l?zA9uQ z{N_3?)JUa4fZ!x+9hTtQm6WF%WF2?RAGEH&u%FO7>3YdadkO{qdRtWN8^l!(c9(Ok z{n+Rjf90a`CgS~iXwPo30YoY`ErtD)NGM3eQQNy<@3xysU-VkBW4&Bn3#O1EGG?CT z$^z6#C>g$;B=av=CU>dq6d>%3L%Gl7ZJ->LJImta8aA;8Il2i6lD_c7VN>(%1naw> zTBp_ilKsba){nwU5QRzi&g~nA#u!(IG+#zSA?ePhNAGC~gWf8c3&Cq3w5l^PpHD-$ zxfDfGz1&RLHEkAdVc$gDICtCq-s5GQVV&Y!U0{9a1R+}GO(I-FqEcdAZ*v&=lDxj|in@-6TovA8?T#on$W7@3+YhLV= z55n@0)6VusqI?-X-ZOZkkkcQ6o!=Gt(B6UjSG|vQbAEt;Rx6KMzB+84Wj^!cT{6Va z|Jqb${21J+%?3`I1Y+b@zWFEMgxPCp=N}APqtHpYY!#s*sO?J)YTDz3dQT}Q7QfMB zQkwA)D}x)nYgg3E+8YMNa|c*Y#T|xq1M}o5*83=Gu<*2)S_8(eb@CdVZiK@z^#-q0 z96-?OCCD-sL-$oZb5(OCOuQ;(UtU9?bU;RqN%|A8G>}s|XQc+`KPBkS|GtOM$IQeM ze`KJlXWExj30nB+?uj&S#w&2iT4;xts2_aUubQTK`U9FBxcT@ivpz5{Zh!;5EUa~$ z-v8E>7q$A5I`juGfDgz;FS+SqXGeGKxvY3{AO6zFc=9vSpYge?GZ~6oj@7;UO#cJp zsT-ff9drhxnW8csFyeAiZ4}3JAWZ<)h@-@!R`N-UvupUpH zjKQ3SnU8Lz;I-Z@<@!}macgM?o8d=m>^yY()n;!AEaCq2)|saRs~8j@J?cBwQFcB$ zNA@K?!x4*@Fa6-k<$Yc$2j3(AfPY*|TmZUGt%tC#n#1`MrWvkbPtcv~;fbbTA2^Z~ zmGAraElA}ZFtFKl6zVNP&+p=6!~6`b6UW2!LF1`}r$xzaD1Y*^VDI2VaPb(4TsZI@ z?8l1_3O1(v*SZ#>u3+eUHI8Mo;hdZAl00SeT-oB`5vb@B7ihWj3qlo2WNja0z{7mT zYmb$u;jwzFjvsX@TrJ?%J2U$gM5Co`3rWuL?L}cB>5pGA|5x7UxAB8;AnG%n=EWr# zO+D3O&o~DmaNT+41Or8R&*w7tfBtanRkdEtbRM2mYcij=Xo79r?0w0S{-CiTLV4;x z2XDyq@wuyg=#O%g-=xp_v1Le%z;GGJt*{KV1<+9Jtu)xf$y_BDshlXuKji#>O4E3W zyBM3Bss1*Pnqz#v9d33VMjDfd_=KZrux+m8)MQrC_?P2y$#fnGFwO4Ny z!~2{O`WsRNR;ql;U8$YJv3I%jX3-6Bf#(_ToX2y#m3yf0k8=Yywbl+(eb7bwa#o8? zE2F4zpC`X%^%MSoguQ7r)o=9oZzfafnW9XU$dC{j zDw$^)_A$@%Jdc^lJcj@0|KRt#*Sgob*VmJ?4o{qOu63P#?Q6eZFRx>+Lw9^)KuxBS zHSk|Pl;jd)&8$NxB)t5o0oFikTdqp?I>DE{OtaL=+XOFcv%F%=nvopCM9XqB1qSHU z%Z&#zaBtPWtC^NVNF`y>_w{}mUN^O6Tw_c{HES-hp8db^7*o?x4I3?P9K5~)mw~1?i|HVj7DG|t4X>7!8C-r@&cp1n7FYA4CUi<}Lw%2mL zo%E!x@}i;lKNhiyRWmMZ_W(p~dZcwLRe`>u?Q`bLBD|?-^jN5S9*ySCRqS6J0MiZC zRfXP66sVb4mI<1MaT76Q+pwPbPTMyp%W>y=cqx4JOf& z9LhqUhGsT7c&dpr(#%#zS{n*!Vam}#n9U4gNZ(GUuA3KHj&xcZR$+3?h2d=qstU^jhV zipJ}CSXg6erHkL>}* zbBQ~-&d$Jsk%KAd{_3oXebcI#>DURu)O-rXMG z^=;t5DZz=nG+L6-DW!6w(s^h))7AX+(LRz~G|S$4*FIDk`!p2!rUg{4Z!~lXQIQs^ zEk0QevXD-h>jd7V>xaCUtzXYV7cj|fSvIe<9XB53(&;knCOtS~SbpQ~G-&HkFH|%9 zfc=@?kxpOwknQ@h#rD(VV0oLqE7_jN33aCX*=cN`7W3_NajFq`8M)`1uVN$wh*pa} z*|~}4AGTOIs`$y)X}eVZUd{uzj@GV4OkxQmKNYg_zZ2zcpKx0K88zY_(93- zqr4(7*DlFs;zbqX>{lQoZ-t+rm;O%|VzrSunVPFfBcQ{%aT1x4tjmeeoCz$pFCu|`;DFO5}lX-BPY&GzLek-w90>ooF~O+F?pgF zm_ih*)AAQ^^v0;YpL;NIzx7whhI$UmKAoBq4m?Wkxb``%?MVcvsoW7MwXlW%S?~X^ z$B4ZZ!@6E((6P39ZqnsFzTU@Pr&p7V=3a)@bIRd)LxP>ws;-)tAjBg`_1yv}SecmD zwl(K{){=2i+O7uOoF9t7Y7acyzg5dwF)Tm&a3E>)sv3O1sOKfoUfNoB&*fByrX->u&MOJ4=wzblAg zW3@&u>6m4{sAPC3edcoAx7R3Ws@SC7^9dZ(9xv!UvBJRp%UP+%6QNHiMtXEq1xxad z>}|tWnDTOSA0eHEK$#{BZ$2d`Ct@Z~?buLXSKdM-AqgI(AC_JDm<06<2R<1LhQr)e zW~z(hMdYJBF!0GN4wRXBygwEvplgNEr4b8V7&;&7efH};On5TOV|+6SPgY<0Y~8L$ z_%y>8RrVTT>xr<(EBqlSIi>d9q2@E(VPV%fXf1;QDT+Ti51mE2B<0VQL$~1H-|VJc zYPz5!UD~SG@D5*?*4(1VI~jSJUk_#rn1I&4c>lPi%5>H!@z@WoQLiGfgJTx z#`B&K>YM#o;$YN;2*FmJ`K6yY9}u!TNBIYQ{Mkv>rd)CXdlB)i5(9s$KIoq9z|R{t1t3>mwUZG zf(pgWMoe7f&w*S1k1q@w#+Xfc_m`cfH8wl^ESV$uB9r#v;ePFMESI~^-=A3fpZoPt z$q|bqU-OalC-k~=>I59wVRnn+(-LYLDC98Qsl&CFAe$*sXH*f0EU9!SzW2>uT@XJL zjzNMl9fvDw;fGhR*vS-k$a#Hgkac?{&Q7tKUAg@o1WLX4ecPD9>I5I}^2{#$v&HoI zM`1JetEGD0(I@Ur`I6gwRC=KBMDIn@q9%~_{`e?Qq5?GrBlt+ZHK@*g`>o6EJ`k4F zIdi+E2NN${7xrQGhMZmU_qP-NVXX=8WaHl>kYUL+o321fDlQs!TRz;0(Jo=l4YRti z9?dS^TT4ZnYYRPD>NE}|&$UY5Uaf;(9a;6zlTpxe{W{lKo@R&&FJ^4!_=@uFERX56 zXh`&DmwTglf*@t@iluaGF1*T03uB<_!Q79$rp{6;sBoL!u}abz9*XUYc&F3=-ls?9 zlnb7LP|P@sOHm+Pdiv~u1mT|zJF#FQwY&w+CusAf9b2JY_Ck_aMg(rp4NN^am<`sB zdjnLP=}9-LjP%zo{KWG+9!>T5^g&+`_1T-Wjo|Eg!YPQ{1sHkPMKE;T9t zu8>y+DqQsEc)Rx;mgZYI&`sgs1Gyu^f0;`iks}7{pBe7w@t||d- zRv^5T`^d6u0J_FVlcgyC!TFO^`L?$@;S2q#dDSb+u$t=i>tZGoNjC7b>$*%6;k{(2 zwscNi+Ptd`zmENlh%<$I`g(w92Sv72!Yp$W(Ts6bP8MO_Y94}p&ZUQ zze|(Q#K0?Y`q&?QTure{FrR|-S-t1bd)`v`HFK@#mCgn*3hg}B@VEj8{SIv_JV{NO zNfLM;ANv$j!c@POlr*DE*dQ=^8X|*P7%*>FWqD-|OR$ek7yDXmts{%2_umo39Z4g||`rDdu2J zjh?T~oSH25SmsN>y(QxQt63)};|s2*w_bcEw~hziUv{XTTZXF%UcNtM#&I8AUYP#; z682uV8({9EA_v$iW!}BB3@mLnOnI5T_#!M&`Rdv-cDyr<^OWC7`VuC+(Q-EsnXkY8 zy!VOcf9~5IF6{|XzAvG_{eI)Bg)?-`uRG5Vgu_2~I{yp#HS!{yu1rk}m*JUQwt8d5 zQ*by*d*;wrQ^1}U&Pg9{=xOSjiT!#3^^Ufj?b48jKE9WVseB$#;cRP3{U#P3b$4V) zC&a?7#m>rFP9MBid_Rrhh!coV7u_;!a)5VNPbAb?l4089<1S|L!92;?IjhHp>9Dy^ zdgCxn7KG0~daCU22tx8RG)giGV4@)R@TQ+PR4H1yEQMx6N1yWI({92)gHEe?*5{#t zJ>LI5?>pdXJ-Tk&5eibwk9$RyU&6K8@<)Z{NzinRChFGwE#S}c;4F6e3|wY@S-hX0 zLI3qUs&sd65Wdbe<>YP#HSg~6tr)$5g!6Bdm~I?{Evn*s^Aa^6{~<-h=TZQ4tylCX ze8jq;s>KV-q?vi(PAj_)v4dqLhPF9=7UXnhNndJ4{R_C8h}M&N5$o-_Q@9|B41 zX<`buF#hyq28v)cxU+5QqS=EVkp9A%XDl=n66E}fBnu6IbEvW{jfn)#yq!mKlS82)O!6wn0+v|!woF;JV|-ET!_aJ<8Y;ki+aBt&BI91-2QSAzttMaA93=!EmKw?!%j3(PZ*<_u|21IIdVGz~xi$ zpLMo`fNFhS)Fz^TTI{2;I^0sxo{+pT0&iP$ha`jYiF`ZD!j)N9=ss9yd{(~*2Sl$W z-LDD;#lVLde+ev?m9|L0V}UlDa~5{|!=4TdIcBd3fH5dtR5;$^RSVlx8ZLG`o&{UY zP_7bgRuad z15{yDMqZCh!ZZvQ)ST81iiP$H+r=^cImrJ!B$Tg0__2>9@ymcXqS%j@9i%f2ec>jT3F zPV2mQPECFxJn)8As~r}$7PL&)27%ez+y3avB3f{6tKF_maQN?(lurL^#JEP~?XKfZ zxQFUN*w(bQkyl?72;p1qh*lZWQ4wBDL&J{v@nR5kmu zp$-`K;2DrV*MMJ*!twWtD-OO(8>y7*z|e^1ZO2)vQ0om3dz5eqxEO~0-OpW*QpV@? z3>;eFg2}fxjoSl|_iq~45$|~zo%1+*O^b{4z=8>+?k>Y24Mo0bUS`tR%I(g%_#W(0 zDBNY(IY)R{c1_-{rX{@=zrFG_hVZGJxxo{yRt2eHll}5eT`=dTKNFz&3)u%8Cxi$- zQr^!~+uPm|bC%^i}Yp_l-hYWj$E4@BH*Pnv-mm^{cwGVhXB~E>Jq`Z^JwG z)jrxg*vMW2#(L{vX`m~&6x6CshA(U%zcA3H0{3uN{!=0b*C!AtG3IFmT3^2jrBB*j<G%QDc>tYHSSDd(Uq%WK%c%=;rmdAvp2@f&5$H@NewB#SMk9!|ooWQ(1f7S})Vvu!k7c)QD3XNQE znz9b(;U|uDc}wYSq<4RKvhxk6K!QUy^`OKK(hu%WGXK6&lE}J=%r~A)Ls?y~e|p6t zpo8k2f%WaAE5e4NmA~hpkTs^Ev$_pEeI$KNt~3z+(v!yzn$nSKAD)a$z19RGm)`i> zw9levq)sjC%X)nNg!f}t1K|_TZuK)zWgy#*%s<*119Bwunneqd`_0^bKP%E(lq@4M zoZyhbNA|G_xWj3&h~M5Q=U6ZBk&V$QeKLfW+`)K_o8{Uxu+NBBYISmu4|3mKNPI%f z6W#pVNzF`4mOma)+h{lr5_`FVy@vA%A zqq^_^xvp!D)A^tOl7@#r-MY(0aL`xm$HnJ(no-TLfBfn0e|e|RGAdKNe}_SFr(-TL zc;n&Z;+b=M{V*J)6K;%sLwf~Zv5N~2p;eesuj}AR{Iw|7yOaAPN=SD$R*Xf1wvcR0 z#dH|hdYSPP+%7{RhuqvJ75^jD8n85{#E#E$QAnZiVV`8fJ%jeb8WObAOQE3tYNq z=P7C71y-I1#7;l@1Qv2SS#JfRAbq|1#JE8sJ_%7b8lv*YAsyxF?e!hV^32rh{hkyE z6LvntTJ{a{Pwpz&LvZShDPK3Lv&0}DH}7b!To_L7?)rSOxCX~+zYGrLBc8Ahrjh#o z4R$qX`B0EQ08+in%izm_Hx>e~+2gg*xP9YtzkV`WKVh7wqW_L-4#mCxFH@j0PVK0z zh69RM?Mfdq%_8>aQ+j&dHBi@iJ^WycIP&@3UK5Kui4D`~C&EO$Ktn-;%StH?y#M)_ z-1n10#_Kg9I>~3j)YkDp^~VR;6zfg4C+ev#5?S%3J@I`~{Gm?AdKmAXw?C;(aHIb3 z^Wy*g{N!s(Pp{LXxFj`NEUw;<#V>8@#S|IH3<^54IZQ>!Hkl&!_)ICDbhXHvXjsG_ z%2IWV>j4<3o}S}jJdepEm3HCINw_t-?dzazIf$wJ%e7Ie!W3q6hpJZELqwWL)>9agL+56G{y$T@R_os&@wK%D)pZrF13DU$Gw5V(-2?s7rW3 zgpa%(=2$}=3!%n>dz}!rcK4!3b{3L54Tt1@nnSF1{G+ldX7W+BqD zpuEjSa0Y)9Bnb$!U(_e&Z6cZqr?T6irbojZQ)x(2G)JDj9AhBMRh7P=Hl9VgL%Su5 zC4OR~clMC85*0~9Z>Ff0@Ptd|EP2l8F_P(TwAiT;`<==uF=3yw1+-4C7fjFA# z%U6c*(~jqK%mZ~`WzV%o=2si&_(|xzCjL(z`*&3~o@4)8kMNBZX+6v!@`|c*>}*Ai z|NHy@dtLv}bDOI-Dn%b|;Y8npfgMb$oJl<9yj^7p>1{opF7Q*6?v)z%IhzjSEkCIPixq9?Zac$h<4D{?HN*tO5S&rk zj*6?3y-eh)VztqQjcIrgb;{xUt2(fUQw`fx_(`u5ME!rCUc$;jN+H#!e5C#xb%wWe zWZf-j=^6!zAhnoa1&4S+Rca{4x{Pe$cCu^0R9HOj4NEoPE>kaJAZ(5`;AMx*qKFad+;Q;RGy0D_Dr_u_~&7WKA!PXlzRi>qD)o<{g0E{ z<7VHQeGSKFMyB*basQq7Rg5a0+Y#i0;~o@#XFtCo_{?Umx%ZR6!`w_`ppypk^r<30 zomK_me5UQZF-GWriD8!Zyct^c^HnfycLBF1>kaMfJ8=AX{tzq6IW(QS<+A;~C)De^ zu{-emg6-9wk~{zWf)U&Snj$_hSveUVTx`32UuqXmLuU9MyJI}(y7rrt3RdY~x(K)(r*%^cw1Re#i5uELxse{+@^?~20 zdfTzwWZ>I5HsH{44Bi|68B0^etT711l27?YN;rY8SWEl^VooPZbcWiLy%2VP^(gbboeY`AV^@Vs z`+#NEyCSJ83PNQCWCHfY0e_UtpGQ{`uq#IA5P9(zT>B={LTZRbH-+^=JBm*+67(PevN9 z);*nAAwHjbVi&V!w-n(4U)Gq*H)D`?w)*B&>54Sgwqm<8KErrIm=<$r5!fYKAC1Nd zh&j#j-I{Fp&o%JdIZ*iTBaun4F2y444k-Qfc+{fTx;vr_aoH&`Ntd^Cx{4 z8%AE9O%5PFCuUv_hk+URd2^dWc}o*9hp{n#%ysh%HTHg@TfOhp$=UySFPDJSMVrj8|5Kpt97 ztL+c?S^+VA4;<>GYBAm-;N9c*D_HtF`_GEWD2Shpm^gcjnPkUwz~LY_1F3|h=JHdH z;3XYs$vtx_3t~v0W6udwkqkPOE&Ln4g0{x7KWb7Gq%yf@yW{msP-E)m?2Y0n2>CF~ zqD46Xw|p1FOUg=t$901PC+0wUSHc2WkcyOMADFuIYY3lD>@eQ;b`D=c8^*t zF-Q64`{lENz^_@6B1`Zf50A#iCeZt+WjAFTTfD5p&>XD@+q_xlc_i^z20`>Un>SK z`N%T&=VO-S!z6pc7sv6~`sM+hV%V)gC(_+qh0f`Pmc7Fr=%>=1TI~IQc=4Ii!Ez6M z`@n|5SLl=TfA{|;wT99gh+Om6g7`VdO@ib9Y)yLe9UJ-JK<}^n`u)gOR>$v>7YkIc zTrUYIHbC1t&t~UbG+dA5QRVwKiT>AirAsN~0CU;6gCbGaGA%kE4;o=3zqKG=EzT%_ z2Nfj+w11+&@*c;bkqR2pnhaY&hEEF4EPnAfy;_c58y^_t1RHT6c-A?dwFVY#GmEZs z_M(UmdysV5Z)Cf{e&k|vIp#7uY;k!uAa&mEJJ!lW*rv*Qro^WLVm+;{SgOpTNy;fX zYfWO_+t%)Y)7LU|EN-e1X&J{1`f8;HV*S0jW4&d68}Z-F;$ZZp72MA%rlmhYMdqq# z&buDe1Xp5Kn_sE?fy3Xf$miY}fX~VD$E$v`k@L)%9D6t7Fv4RBRA?5F<-8^HLyHBF zxL%cH_^l7Rl#eVVn+{-?W0ySpwFMMvx2#YXAUs6(=G~~CQIJPNKL?jyBD|VM^v51~_Eo;a6ug-TN&P0cpXALiw|jG~ANdp93RW8IB(t2-_e`7dcvy4ZE>?XU&qMMthx1ZNBnA>V~$gdNikT7LRtbf7CJ$!!6M#ltL?wIP;O>$Ath@w42M>WQwbSBFow% z+>f%cE98V)0lyn2w8?qK5AeesI#0pd%z+qiOmXk0ZQaN)?7*hPR1McZX0+a-Glz4x zx_Hy55^+g^(D`CM#?$YmGNQ16-oaUV@_Y&Ui|SwCpmoKA1GTOz!AbbMqe0(8<|Al` zpRE@NNe5fWC3=UiAF+OTjX5OqC)VlZH0oyllXnvEc(WuofyXe_F!f3@PS@SmbZqIu zO#|At6`MN*@9|=j1$`sYub(P^ot2Iy-zo04O}~U0EqAlXMHL*6enchcT93IMVn3Kp zB|=Y0MBT}j??7&Nv{%a_26YOI`8#%I!YoyeI?uX`H$JX+rap1f? z!nY+b35zTZFO>YwgImh|7G;6Ip{!}^#4D+Cc*=P9{i#EJ5HYG(7AKhpnhBECW11OS5oqGmUh=aYq|TRRO{}^FK)2gYA)R*+;<vgdjO zt#&x@s6MIV_9yuG&+24q2p;!IxiIs!j3NN@q_;eA70A&cwdXchKahow(u)xMP|6!A z=G|9U(e?&S&{6GNl<>c>+%;c@E}7+@`xX0e$4)l7r6Y-8%%zpCZ`BW;10s7Exm@8> z;mjT{`U%j#d77PpD-FZS#n|UZs$Sw z2Y3F$KPx9OjA_S_ML){CmP(Lu4VqATNJF{<&vpJXEMe+7hfDc)?BGV?Ey{Jz7PLIO z`l6gjgZdyFz~?rMs#V9l=<~92gf;l#GPb)P%rzKHI;TDQg`R2 zl4Y84_}8Kro^ODg0Xv(D>*&Y=zTx>bvWG}(cN`S+cotzim0P9n6c6cTYRAlrQ_ua|&0!q;8$_igF` zIv!a#dD?Ck-Lt6`k}v+kiln<)M_0dr)&^tUkxHUp%*}fG;Yc0P-~MCqbf6Q=dVPv1 z_l;sjs9#pKN;i&=$*4>=^n#XPBQy1fS>PKLbv~5Vhxg9(mQ|Lup}54;OeQe|tw$>@ z8`Qq&LgzH1`*aT3k4j2y(j!g%cCt%X- z@;4gI6wEJdy5zu9hRNhhiy`ZrTl!lsYWx1`^6IeJbW=YRfLMP=dGc^)o(jUrvnpW zDgL!Xy__~dd;N_;$p>}>m3Koj*FKAm_+<#}*Zz=mVgRi3PP>`CY=t4!5(=h+^Mo(# zr%nHOH7E*b($n)WlX8}#oOw28;rj#k)rJ;U(w+W)wO+KQNd>rX(dx39c@WGm*nyeamEtUqahr)q^?7D@ulK&;7g^-z56~Z^3)E-mp7@tpj5Ze7r&&ZIK&s8 zWBvIxew#dMBHtMZ&PJZbE+5R%=?M4vV>iBHE$ipAe5M2^sX&{(_1ZRYx_Ynlh-^2) zm$!lsJ&C;25U-ECmI3CxXRdhp+7N$!U|CSow#DrC_w=P+jN*d@qr&#(QZ8nHC@vxK5}CK`wy zX54wI5bIbskN!Mtgg5Dzp57wn>7;FzDxSabfYi$4$LiQ_;}=fmo%JOb;l=#vhC8nQ zaKU}X(n+k_?Rq@6+6SEyZp?|&f*J~~H7@S%A zdR6=l$SS$%CEX5$Qqw=&Z0#8!=9-l^R{I7M+;v($&nChUwTOhr2QsGnckbIEn}(a= zH>vrG>|tjHmxqmIIGo&;{%GC*7ZgAH6ZBK^7?y_HQ}*R}HjF@vg9Qsp6iRzNVnt@tv#geVuOe8Kg z%y*lKhSdv&+LyN`U_hqZo=Ug?&xd*nxn5{S=l4lb&cfNKcI`e9v6urc9`9Ld=P7*o z#?{kmtq)~C@e9Qr?Ewzf`|5)06QFp*CM7mt6n@@0UD$fN32R9^H#bbju`X7@pE02o zsN_DL{uDip@!Vo;^?JVW-XxC9sLoFoN@kRcw3!12mnr7mc6&(gesy1&UKqlPIJ-mX z!Y)|k#zo7!mx(kU5R?(`vjjwLh3DSeI;cr|y;pwscldPmPnn-*9UL6+x>J!>4GX(d z`~LsFi?F^!!x6Dn!cTq4WS;O7Mu}V38FN#Umx>>9Cg0yp4)$#QH}TaRe0DR$-OOl( zOE)KL*dDB)q!VR(sc!vXjj&CqS?eZqB(YNIQNi37&uOlNJO0z6;h;A zRE9gUf18y~QIS(iCY@%uCZOFk(5pU z%;?_p1OJP+oT3gd!$00LPsrWdNut&x&RZvY!Sb7Z&g82RBF}uQm-E~l#(HW{?VcY5 zz6O^ca?H)}C6czA&9x4Glnon9T|w9>E936{?ho!~SnJ+S@V9ER`8C`IlA)H&DV9L0 z2V2|ZxWWq|=oU#;e;^8h?>dd4-R&jNJDVC_eoBF`Nq89S+<$~zcMPwn~ko4t6T;=_>fD90Y#hIszRyCB`hKSs`YtGXbj@V- z5|N`3wUoL3-2heQH$}w@M&M%gu}h9kjabgYRr|VW4!Z4xxBm#`BQ>{*_%d!0K5D54 z?$Nc)L=LOBw6S^>co%*fx?E_03kI_}hja$usP+rxHK&JYUmVZB9y1MfejMMKBnIJ! zq`JV`qfGoslfJNx^(W>_yC;`=g2qSphE}%5qw2nm9RYXa ziM|B&srBg@;&m%k9sJx2E-E?gro=pmf1X+dV_!GCiH=ev#`5Q!*-(07|A7(0>p~%U$=USqCbArGYTxUXhSLIR@mW3NL@sY=^b3JK zzx7W)B=21rrtjB@jqsbmIkC?_FLtw#4J^n*HEJ99obPUNK-wxM)+hQ8KO4e689%oc z+Xa;V+Q3-wZvqcw6cD_fDLhtlv{{a}1;;KNqd4C;k3px3Ei;2F;fo8_&!$?OZ5Fpu9J6AG;ooZPA5fh3R04X z%FeOTChsOEFdd}m`8JB0!Cldk3iPBi>1{lrDJRb@Y?D5s>iE z0Xs#bdUp-$LuuFN72~9fkW+JrpXrk-Jm6%T{JBdA?S~y4zgg*^j;9M3W3V>J4(fiw zz^AYwB^_9E-w)D7B)iK;uOi>hOFYkBe!vmU$SZVg@lfX3Hur{13+^cArlwSYs?lGS z+lV=qtd{vJvpUz1Kd(z{Sm^-d+*7>9diy>;S@IS;@70HjkmS>Tg7E8Q{H_DmdoXaM z>fA4#FuZu>OE&xWEOeXxIKf_Scc0*vLsX(x~cghF%6F1zG8S+@G&0CdbMV1WI=GV#0P9mjNm3?>yffgTEKBm zDNLip2ph}m->D4-g2JUR>C<%2;79ql$4cY*@O7m6I~`L12;FsikuTT>&T;!^9~gxK zqg6{I+2}K{|F~kF&lms?Ek3(&|4IOFn=3UT+ArYoQRcX#FB*VjQMe}Qaxvt@Wl0xQ zM8ogo%YCxkwqP4fb%mxd4whB(JQ^rSz`&uiXsAheh~64mOqG8D?;e?c@u^3cJvMV< zZ=gT0jc)9_%Ib$Zt8Q+OJe-cQwKK~!0S~}Z@kBU<*J*GW@veHw_rtfJf__A@v8C<)LL0T_}H@^Xr>fTxE#v< z-+lc5wQsZSI&@$s;m?x$;N1OFZUCDd2ae|?(vS|>h^rmGAC1Ome2T*8Bk@CjvF-R0 z!P!hq`Z4H80_OhYJJ%ll#ZL#W8B+OF;VX3u^$(Wskh=EpW$E;0uohEmeR`mexEGuD z8q}Nw3MxPAc}F_ZiDOl1iO(CA4>hAmjFzg=yKgWxw^`EKI1UP- zkNri8dQi}YHuz&=6X?GGW!xl~23!|Rw%{};>GLiMI<|-zl$iW%`i5c~d5+&^?ox^i z#^;}CALsH#DVh_*aUc2#NhfDyP}Z<3n4YaFO%vkye1bzu3B@~z!(+cC^d zh-bTN32s`t508fvJf48rB3s==;ykl(m4kB$=!{*jmWgwbDn>8f+>#ha)>-kNGNu9~ zXKvx+PkAZHnSP-YwoSAorN$eyn^9b(>EIgHgrqU_2-vqCyz&QbiqG=Q9GL`5>r|`O z)?jB7Le zv$5zg4;uK-dW18f`F75XlCq*XkUs%`z7s0?}};odxzzUXL<+loaWuV@@f`>1FxLIuOpB&?c_b((1Ula z1ZyG${tzDZk(<5*5Byur`Ma!bRhYiqf8eBS2mV+&V))OG@F}iGURsMUMa|HUXxhHQH~T8^P?J)ZqNP{g`SNKT-N<7(UQ2iwJ$*K^BV; z?kuC7$0KVEX~u7+U?Oqx)^npGNW5*!p}%bw5AO*3rC`v3{=tebvdR`AF;ykIv~m`h z?#Q$$9h`zQtVwGTwM!Tztn*jsTo;c2+hKixrvlsdPH*cqtVj9qn+*|V%UJZ+VXU7_ zPnP~IUazH0aK5<2E;3F5YOSYbtOd%@xl|ke!7U(znm^byH z#(9RQ=`Tc1(Cb}uQVJEBLRvrJ_f97`8dvL9QrU;~AD_}*PdrTG+}=%n@Eap3MPBHg zdb$XSE3ankfzUsqkL`Z9ubY9ywq-_d{8y0VyWP04VE+_`J&rwDqc;M5rGkg&!e>C& zJ8B{1=x)-)S+$GYMBVM{_H|`QZ5oV?^;xyC0cYlC9``I2;g0>c%_f|=N%nhgn!H>O zg=^tn@2T=W{^!2kBW}ey(d~_uo}3$wd%|JcuF(P?Vtz1QPf03GcsB33+XU5g&V8U3 zEM}o|aKN4>;g}u2tl*+R@^AgeA5l^3PR?YX5z?tYna~M5hdajowZ;QYrEFWbYD zQ6oYxpSLp!19SbphX$lzw9U~#e&&~`l9-=&R`LVR#Vt)27ZqVzT$dx8nIM`vRvW({ zIM4-U^WTN$>tOPf;4Ih9m&hIW`ZL|5;k@iU9(&vfKI_f%241J=e}hAxo$^9vHavks z2VThsFto#DOti%lrm40a5PVJKR1Lyr`jx*xqsmCp#Wt^7)E75U?n zd%p#5FgXEh$EN(5y6D8;TB^ta z&2mKk;!_54;qY8~MnF2k2OfkyJG=0Z*e7MS)V#(rp!;Xm;YOlQqEXD)Fn+`zYf37l z%vfIHI`5O@`>a%rNL?cpY)yuMGU2Z2b5us}6S<)TmD}FTs1GCw4)*JKz%k`x_&N zn&3%+o^IWpL?TbxQ@%PMiN@hFR{Nztq7h|^VBT|k*i&mUUl^tZ%Jcc+`DYTqSx;JC z*ESl=nL~b0sHnsGr~Gb>nltde>-pcOrI&&70O{X&hBxltL-wwpO+@*moZubl-wEFM zx|+BCfBV?oj3dn3?WxI6t3$WV-kZehi~*Voh2u!>)4!73&;UC6QhxilRiU8K*&n>Z ze=zXgOTiwIc*4UeDEsMcBj&ACx3~upJaqM@@1^(N5qxSF@sX5aP{RyLFNX<`lT#T; zemMk77R4$Xr+1M`JYU2c4UHk|6P920N?rKZ{NfWU{w^G>iwRnfD29@ynrr8lrl6bN zp*He;1Kw7n<cbD7d`SS+;u-q%&UfGO+Kp+xSu`CQc$Wg9*d^|UdwbAuP7i!^l9ohU?_PX54K z1e8p?YwfpZ&?V(*XvLkMpj(;tIBF~$b-kDv7t}uC_s5cwpRdr6WafKvNZ!ey^=pAz(oJ{mPxvhH$gMLzSCb5=7X2$5!Tfp64m^JZJdt--FNnUF%-!{(tt9Yh9PM_Jh3+=XIXP@qWMF zX}4kzaS*)yoeLeWZsBq9tam|5L_D4fSB9{`lQ8Joeb3@avex`mucH+=@a_ zd2G$-9iIqsB`g`2>atPi*yBASBpv5}_9GLXMQx$XtC($1;J^94<-e}mB6DGWiu3N+ z{gh53NMQstvW*np2i2jKX_(Nv?tW;O*hPzTMX<3Vdc7}Y4zli#4aZdbV!}%CUf=XB zkbW6+;`>Z5#FmEe`5u}A0jii+C3HKmNhhk9IadJr&AWDb1{YwiPLb-`RVqTqg`+!W z4Wyj5qXWE7+C(s|(xx8%6b%HIv!i)OYVkmcN{CZj8%PoI>esLTAo1#HrmWUUEzMI4 zofX{mz?eO&drM;od`l&~cslzaZl7;<>qsn^U#?`EIWYy%ul;b4_X}QYRJyuTor8Qu zgZI3Y%7LQweQ1SRA+X6snbu) zcvh@Si*phzCgoOgW=p{F8{M$}Bn3g?Am58d~&jScp5Z&e^vZ2?to{-d(!sn zF2Q+qT-^0;8135y){ezYB30s1&)J|(;Jz766Qo4q)*f`~K2`V|-8y@6EM)2+$y4`E z*2xBp@7t7pSj|M#x!E?A@puV^sqz;R4(=invl&E{&ZJ|OhUM_Bj7E49^ZdSQ>JGBo zxBUw}%1L~E;PlB*k8#Y>H*Bc?K+;$Hl)s`BT1J%@eiv(ODoNZnHt!6#E-0dZYbU2W z37i#)x4bTog4CyzCYz&+C~bbAZ)dy*4d`VP6i&@TBe}U)`s8njzp&Sz^C1)QnRjkh zkMI)gq47GM=0Q#@w405xvg9WYIIWZgeW51a<9iZDnYfR5QtjK%P8o7ygNzk9{ihAQ zS>ku$?$c$U+*K+vVmJha&U?(ma+~mqqX7pcDesIB*+Ll_GmkRPT3Uxm{l2L#uGfio zi?PqarOvRb6_gkYgw&1<e?Df_zIFt2&hNJ@54wa4uqd#7;~QKVPiD;{j|Ug09x9fHis-vv znBhe*X_OLoW1eT+8$X@ty)3L*gbUZrU2je+!25hW=Ki zQw*y0(x&eZc#ruS*Yqj26W}IDx7*yCkw4vk-gLr%jECpxqlGShkS?FW9-bRZp!! zyh7mR-6Xy6^As0LkF{iIemp|=g%*)ACH;=Z${HkeXI^R!O+m8w!sj=r2hf@N*!^!7 z{qW|o$3-8WHLy>1q_S6^2d;1H_nUdspfUMglHRXgYzWIRN>eR{d+etrrKYoB=4s{w z`>iA}j`TbkG%<$9YZBvTyyk)ORh&DQE*C*6g!AA`K_)nh)Q5>YjRuZwU)b(tAXrDJ zPT(Ihg31>uO$wSOIM^ruH2i!Tyx<=;&c4wIFQfB&c6;|hRJ%eOuf#BjZVo&zBk9Il zu;FdrTnbFfnooaeE+_eCzFb>g8^-g^^1H6(#er?wRmP8P#Sqr?U5oEj8Bmp6y}9@y z4H@HWSxXA4koC2>#dk{z;<9GF#iv|)!XeIl0n0s`u;(QQ&yIF8jPO{maA(Zms`zbT zpYuep^C=-gRTv3gY5d!xYU^-{QR~vs+%i1X&benM&`sjczw;c5hy|B>e2+UGk?M+0 zAfB>o4?$^O&cs=$74)fpHotczBhW`ym=4%d5;X3*y}RLG0n8F-vpJ$yv7f%`fFExI z#5$%%DwnpAeEUf;O@E4Un~vzf4+C1Yv!xy=!x5(#V#G5OGVbSkXwPUfcxn$E>w|nKx#K4kIY7_;E&>ms#6}n z@$#V-s@dp1jBGBXs=d>WRF<@o67c`HX9hPFa{CVr19|xT%musuu8&Hr5#w@e?#3+1 zBUYZJ+h~z&?K+xA;!;zDcnpY_qyFKxpAXKpVYKE9&tzg761_8d%;UbHfnJ|CZ4DJs zyTLnmUta~j3^>lzPUI2)u&n4loC&9gt-rq9OqQuTa;-<8N1*ZG8+l8i`bd^kJU zuZ*XUNbNTIn*h59tjt-ZzN64|&D^Kw^%xK>pGJ450e+uREr?Va!#Wa5m$1=+Es7d5 zew29-Jgzcb%tlKTZoTwPp=ba(DUu`Zo+If3=o{LfMJ?dTx>AOd#ib}S{pp?ca2q;& zw_oFvNr&z2QOq$8g9+tVOv-n*(ObrH7u}yxtkEZY>V2?+3H)CRI06dgxI zas44;%X!vUiG$39?>Vpe&R8tL#A5Eppm!TEt{QzO@fu05J;mKMYg-4WG~AJIW*UCn zu$TRDmX(nBkLkkUuk8@JSMkCn@m@SQGBgvq*nlKvO>@QP!OR%&w8STxNgK?YGILhDT$-yw{p~<}f3H`Tl7I zb%rJk{L@n^OG8V@d9^TcEs*4o%VoM`+PjN*_yc_disd3FPgINlS|ZYJSlvw{a*b##P(fx8~=J6Q=*>l{sU zdFzm3RYS40+y@WcufNb8s)GY60m^OTJOue**R0CqSknLL5$OgxhyS{6t7-jx@JT8F zLdKs^trW+A5NE}{f3nrU_|aIerA~;X8!P=$(fbgH1+ESrPD)S^)%Z?v(+@KQ&hK$h z*GKsOs9asHFF+=Lu#OQV)TgiL@S6NS(#pVQvxq%xFw#ixpXaJqM=xX$`h>0%K!RTea5CCAM4!U5OnwzGo#t`3p?IrHHK9h zf#Sb|+9hm(Xl`FfC*XSxjlcLj3V785X7KyPUh^-Q6ePua&bS!d7p)!r)9--NsZiwo z90dY`9|f{9|KLG~4RR~l0N5L&-q!xu7xmEscz>SDv8{ZMW|3`axBtBayKiF455-^Ovs-7zuB?5 z;oBQ8THyovk7AD1m*AnoDA&mM3ErIinjRyNiK#Y=$3*wrx{a8%FMSw#GRF_n+4sV!{*<@Y7h$l*Z%rH&+C;u*e~v^ z;$5Qp7FpT|4y;54t_97(%o1n%u19%r+zj72@2W*N;g_`n_TMnUb;Q!|j~mD&g&J;D z*5J6oJR@e?1 zS}?a@u?sho+|_mz?@ST7`SLe9e{$Wuza$84>$cfVrq;oiDDb_?fs}I+xvgEfrvyhU zNr_b#NjdFYL%iWZ3>_!&Nu>F%jl;d@iuGyk~V2 z?Og6{k**vy9$bp%cpish(ZhVQom9lPUP7q zGpgwD<5&zz`#dlAd$f+43vEnVKey2In$wBK;t`}hpKxTxYXf%cmgEo`8{nfUx6!M~ zZIC{u>zu5-sgBHPuw&z=c|*Gg)E@qaSR= zfBe>kEDQ`T?aYHfip*_by-ecWi98~Uo%sVyG6#e&r#2&{-jxc`mj(|J19_o`;Qbn`@B!;;P_VlHT$^&;PG0 z@cr0i{I>v>xwa;_1)w;Voh4-G73#OgbuygPsr%NxvknUED)C}{z>Bd`_R<;sE~X|UtiC@9XD?U zXJ&)pP9)`W3f?-T%uC|4c6?F0V>=4h%a1X0=*;3^M|jaiHwxnEYvZbSqyIsDZ1w^f z#Vj72ExIsrU=R;Hcy)=YWCOlVU9MMho&&kA$GiI)7a(xmgr?h;n%I$SbqDk3@Fv$z zwD~_0SHEzoF5jXC1t-g{>c=L-CY9D$6wN`R&F=FVWIJS)(R+1M(wgSnA`_J{^8DV|F+{G=(s-NMGrD*}*N*_7d^Lxi+&1HB8>>;&iPx70UjDT!H!uXnn3 zuoB1^{Cem)8Hty>9KLTh&=OPi6CE36SP1*RuKev0+D)u~xU)#IAS2~+*x~QaV|chUiAEFZH&!9V*4@L#h~l z{?~QeU!&vQMV=^-6uQNw^OJO5Wn-SXr}z^ztoJeZnG#Shuhuk};0V5#sK1_}4urvH z*Yqwtc!8ot{8C#}$yiVlQLNq`gq6$r9mN-%u%TY$xCV6!axumq$tAttsT4ZbB0BSs z&Zq9=C67Wp{#B?iHTDgu9t7FkyFWvHKN?&=-;ZxQ_ETyk>SMj7%2VCq?KP5nKcvOkN8-ChZpt z>kLNRAa=eeCPXm=B!ijy7W#A1e}!FZ=oS?$n9WeEA6`JlgS`ipUZ;Y%b)N`L(GbbU zQ$9o%VhX06Qo*90Mc~Fv@2zQ{hP{W6KYtP%0NqqP=HgnY(4UaPa+_l>O^)`X*y0FqFov|5DKkUG>@DsC$Eq>xfY;?3KAv zG5C{+JU6S>MvFor@Z9^7I`cU2kZQIlsmcJQppKH^C)E&s-L>Gg)^E&sw)P~5rx;vl z>}dqoZom`+Qon8zyfC8hR()wg%4JhM6wy)$N}Ni)RfJT~da|#| z`=1l+q2`)Z9li$ptO;S4?|%S(K9%0iwNL2apl?H1tUy`z32%8%QZBu>vO-Zu!+%|` ztK+1fp01vQa*n@or%NlLhdJKSRjn8T8{khxWC=3b4tSp#EX928@Y)i#71S!PS(+A$ z#N=xm1p%LkFd}r6Ym%6bCc6IpdtNo8y~HS8__1o76|v0<>Jn)_j>Pz}eYkBmCHdV|}KW5ux8g5Nb5ZtpCA0k!M)BI2a}^WK(U zA=_?)n8a(9%W^%PbdLTaa^NxP`!;^J$rR?HJ4IkIbx;Wyaq0%I3yB*Sr6!?yG`NxjiZiIue@0WTX z>3J-DqwoGbxEaM1Gy_B1N_*N?Rdlipozd3Svob$|0;@~&vZ zr`I(F&T#FZ)BC$)M~^LG4_kc&RZlittZJP~{=1CReSQ5?%~VA8h%%-$%U)#Ca$~@h zCD0H`3b~u^fhHZ?AENcEFo>*~Mms1DZDKiZaNjD%$Gd0BA8-_c-MIXDI#Un$K7Yeo zW-0?rg!+alXOmG;&cZfvt`CnEpUOS3B}(9Zb0If?jE^uUxc{_A5EG$12Zj2ry91d2`wcDa=|XuAvt zf$pxZRtKggADtYgNrP!VYu#m;Zcwz)vQ{DSF8{ONkQ7#NUc5!h;dB+bnR2+|f1dy6 z@BjOnP+cd{Hs1zem!ckIZVtoy(@c*}Xjj2#G7I|(Nf#&f^dWuR)nZuax>}&t(u4wZ zTFM?7?@`nLzOvX*8CvZ6#VSOaTZPiw#j$S>qfFDN>A8|GX!PNz@t^TB&=S-U{Nnl> zX1Q|09$i?0dDf>Jb7g->>&KMgdHxpgvA2oo7;{96RK9!7UowGr)n@Wh=KvgS4lzh8 z8A0aE4kq`l7OeUEelMFiDQBrx?YBey2u$0hi7iX?q2@ERifIo=qkVr$%@4mpFgQ6h z@{5#;{MW)fu8G9`pkTnCWnJ*%#?2lZFA}dsqjl|2bp=+HFS5=H4g=+B%c3}IQcn43 zQHTHiVwh06m8cO=w0jn2B|DBmauO-8ha0ge z<@fssOa0J$aD#?3VI206v4wEzb;4B9xOba0DVL`577kM6B){qa+6o$R8T{MA1JBd) zf1DnGdoO#=G2C3nUfzWK*QETRE2`876mPDAJ9|gJd=n?p=U;eQUWgr7(qwjD8rqWm z-*x=I?<1!b6VGMSfZ8*q!otw~5PDCt%`Vvhx@i2Y_Iyv5?R+%yQN{kJtl?}S=fj|W z*@WS5ipEEUu&B~`Hs*>DuEqNb%1kkVW%sLVC(iQ1d8W>-@7+8=roL#I_wEb~Ja%O| z?IZ#Pq1_FOT{nS@gCXaWcd%?}sgQkY=B%tsY}{Bu%5KzuDOcji5-)2b9o)U_d>be! z>LSkw>7XRCBpX;4$r6@2Gkiw>6jE&T92TRkknQ#JQPNp@gf}&HQh5sR;_}mio~=1f zu<;iP!XZ}R-uvs2&Iuj(SoD6>$ZkI@c6fc@dUgiB83I|@US!I^V!1l`fQj@_VT;AvN2hb;z{d1crf0`J zq?jSHKO9ja&A+Dwz5UL?LB1poQAs68$UPW1Ft$@T?RQRd;;b0Psz0JgyLuW+=RV1M zaVP?vncwT*_DoowLtb?_-55@|w9VcvlR5}+vR*m!R92woX( z6{wZE1%5P=J43q+@v5`fztr8z$RYG|nps`}CD($-G95Wl@C$|GHD4{96BCdx;hHM6 z@z&DbHA#Snjp;jIz6zoJVukd9TqiJoI4E~k{~RW7{^_XtYKym>j!_qc>rR1 zn?45a|L;6BMUO%Ty8cE~j@}-6|6&S?UR$5OoIDB_rF<^` zNA3iWcTulfk?$jn!)c1`rA|1iwI}b0^cZQKYt6p5Fa!ZyjUqfpNprphXCZ} z--80JwZKpCx->H|fQ|VV+kHqm-WtcE(lpHe!CSjKXdV6;&k5f4+gC(MI6L{)z4_r7 zUbYgL@LKUi1tCUOk=0dbJ)81~({%;*i3#nt+^K*QzSeH6x}os=!YjXkmRbmYzip)v z9EL75Hb;k3JAmV+5WTtzDQ9IW>V5>}5BMDP*`K~E9XeuveEr=?OStW|^1zC=OHuPH0%NE}38 z_qzA&Q^A;I`kL`sekXQ|XNWUorNR8x_o=4h0W3IBXs*K93J!F=yD2WVfR_(F#o`A# z;+EB(G|9yoq`KE=S=2;N6nrOC)g3npHEda3VQCAfGMvUsP2y>5Q5SRV*W3ojy4wlI zigGY>F!a8d-Ui9X{p_t{Y8q~@H8^FK(OjX#P!f8Mu}^3By4vVVvWB{y4VRCbXOkDm8@T`k8? zv^rN_8<9jsa0=;QF&Ur7KoM)j&S+*LGok7MS2T%Vetu?br?elr-&@fy4lN+@$Tiv$ z(mbMrGThW-XbdRy7*!*`wW5lPuJX^}&w$#AR6<5=An}l6a(Ctbo7W`e@)~b`o`mDd zZzyitRsGjo^d*-ObP!53b*5$|ex{FTS9;xnc8QJ+qC!-}BbBaGawl5wme$;r zDvd^zGB`%AzUmG>8IMVWp;2rt4Vb#@U5z{@`%`5;k6^ip(HqqZbFf~+@s*9(i5V?a zfk*6paOpL*&*(J1r2|bf`qQ0_DsZJ!`0q)>0_1%`#?X|;L_`y-qpRJW7+@F;S)K7{SV_bEXs8w0 zD_uD<)yB~A*!87ncbn09YEF7vO3)a8&jon zy|&%Be2q>2(9I!qproYM>+hO#2*x3 z7SI64{iKyfI;fB(g=>HM3!PU3J+8V^5KUu}0%OFML4Lmt zvw3SdM&~hyJQt@TKD_LFyg_LY_z1yor3I%kYuW$TpZDhoQa6kF#Ru65FYf!UeX%$} zn6s+L_WxB2#6I~9nmjVXnwf|^x%e?cO{CV~`^0`^={jels@4o;USf z`oulf|613#le}yqbPqx|?P$T&v=|6&4u!My*@N*5i_Z_TD`mZ&S?kPDR>`JB`;ku? zEX%6XD0`J3QNRqT%_FAQ6|nNRTxZ^K0XVsnq^nbQ7H);f^YK}n1q<2uH%cE`c&c2)kD;ZVTk(am#ITt3FYXS| zoIfjT$z_U`OaeycP93t+GIvE+8G8z^&%b@@Q#UAk>AQ-97s;rd&w55W#v z6+XRJ#Ak}z*JOpxz;ly>YwMgVvRrgSx-)7nz`AMj+szaUi#y*j2OV&L(}CAkelt9T z=d0faBsyP!pz(OjlanQ~Wb5~>{LCKU-OH1Cqs}TwCSqKEP~v&v;TRuH2`4>J6{Adv zJne@2m-FpEk~T#nROHuxq$|Tti{9>EMYrL~=jE&E4Kz5Z>Sz*arG}?o509#4oWn4l z3tZ`&x=^lN>YE~X7B4&x>`SJ83fqGnlea^(ad7G2j$Ek)m}+U{DNkL2qmMHx2h8L! z#0ox+k+>_?7OcNc#oJ+ZZ{ceA`8#-ce|B2fOC41C9(>}0`F_;fuFD&fHAj(muQszT z9>?Dcqcnfd8j$80W_OEuI_0C;2%TB?evWB-awy)XwUXL2YviRZl?Mw=99 zZ?{Qey*%NLs_F~W=qVG-6_u1MqDB44G%Ghb&qN8x@u?~UOKm`)jgVXtB^f8Df z@dp3VYY^LUjXaI*2Bxmbs-CG*g{j{)#-Gc?@Ga-*BhR~3@vjuS;arCScuX+gtM%M~ zuus*SYE7O0wXWX_58r9y`i%9}PZm}@=djV%e7s0vH{qIJtH;r+UqJPsv#9RL77%Ib z56rjyhdXsLA&1=U;EZF=3o)lwJaXX2Lz9+=5dK}fTJ(4|RM)AlF}qGen8KZT!VoFn zM69DcPHhI-OP8FY3^dVY+b>{6Bm|xb&cbAgJo{ZDA24y9`HkJ!FFYH1 z`yJt89P&pR1{>JVW9m7pwhGevn%dx+;7Lrx17n$_?9p|g)Fjh;t-p`3v+yur$)N~F zuX>4F_|)K;yEjDb*Eiul=bjs4TMOX7YpdtzqjD5|=kP6GGaAW`=>(+8B#`nU+sHp3 z7=RxGX(0yc|6l&m^HpEzKJ4~rDjqjU#YKA8JoBvXn-4r_4_e|hn(-*s3NW7Gs%T?#p+6S?GgJPtBV-p|R zuzcl9>crX$#~Fny+fnL$(r^uFzenH7Ej?({4@b1$YzfQxL*A5JdCl!A?A(~moB!5{Hd%EGk~en~>`pO(^SJuU+49U>S- z9VWP}N(%^(`tO!e*C-ul2Vn5=saG#q_7R?B{~K2nE`@UXV>t;Lr8sAP{oAp>e}PfA zOkT}r2TJ)i;@#%E@Knr9P#=3Mj9&1l{6*@A5=4u*b7X6dyB6t7C>=$FJwz z2fI0?cG=6#_`lDM|NDOG&Z@cZxmidfEPS#^nFr|?;%h!7^YGopi*oPsB)B|kG0yc; z$Ir*l1n8wv5+BtYcUC?O#&oHvd2tJB;#nyT!ld^Qn(-SNExy}Jtmb&MLmkLV6s2Tn zIrOv=YUQGDKi@lzKXSz z4OowS9tXx%_F(CxEtHddoxSWcjSY#5^PT}iAnh7aq;j_b>7F_2ihp0j%uOx%B8}fr zKvmwU>er7ad@5ewBIW&*HY->12CbpCP)}c@#vqWIuHlDf8sR)GoB1<73Svk7(X2CF zy9nBH$3Kj6^<(!d=ZjMN*YUl!c3$I52@;=~7R4TJr@k;;!{Ro->Jy_@ueWW_@!I%H{=Mb<7a)QBX>$O++Ge9F?EVzOjue7kW28lv5Fh z74~lRbsr!keY+nQPRgNlS!`;HUb=@5PgjOsJ?;+~efHHk)$D}Z(yH_)FRa0}vio}j zmgc~7usEwhp#hGImGCY}Gy=o#NwG)wm$9Yju4alj9YHhv-^kV=DgXQk^=s1t3ZjGp zX-6bW;woPqDO)Vtz$I4YqK}-UIcRj}i>7b&pc5dz{E4ap2j>i{IyA|NOL{j(L}dm* zp#Jkyr;=q--<^+-uaJmF=dhhpE21-Jw>{#wse*xlkqf1gd z`^Rxliq*2oyTe5DjHtzyxZMPwqyNe{Ri^MWM|ZfG4lA*kGWqXrbCU0ujrM`zn_2YO zs8{c(BqQowD3!i{jDg5`K}BGKKu0i+KA(C1&oa7S{BkaFz5*5kMrWkem*A+|1C^Zs z79t6TOGfMsLh`BjZ<6gi|Fy0)XzI^Nnw`KBHHSAXIp^?K#d-?Oxfj@P_hsJ)iKfDb zWJQl3F4q>WU%ys2RIpuG!Y14?Om`V9>qD9b?_36(A1->i9cQqjN^Q@ZbQyfE^K}2a z-7+|y@|nsh{|Zvj?c7?rqlv|hU$esOoREyML4`gzzR>51cWA6UBXaVUSX#f-hx*ZX zFBZR)6&4WHbXLbs+cgHKnqw zzwOVS{O}SrD1K54D%zpZqZVbPKfSF^D2v=M~mKj7c>&=!|< zg{{dR>!DFNJ$I{_ChU)LyM43rIex3WH+f#!88(jpN^zCE2QIG+r zvR8cfl{RKr!$!kaanJ{Gpqudwp{BfxbOxRm*@`cLWXVqY=k-vOZyXCw_r4BU%-;8= z72m*ZHRse{4_*L)yy&-z#ZkOW(Qc`yPW?_5Zc5)xRkk3Qi1y>F-?vKY7zo_JMUzlg=<&sc(&} zZl@yO^`D8IPcp%Tr25}e*9@8W!c^3`~ZVSv$C3t%e^h44E?(xL^J(%&Ao!fGih;r?jGwmJ` zczE-g;#ZnKXy?9v#LOfE?;o|DT$RZNqvzy8ovCHmdO?#%-75~qvu}vn4v-V4Hln!5 zYCpr;)qQOB%JHz;__*-3Q9CS_`J(Fv&K+{$5GDE5{p+0kD&LXv%ai<_F52d!-*jj(#?TXey^iKJsI>yS zOFO;SNCEc0iJG0TY(jF8TPH-QNatLE=R+&`-KccKA$yXfSJbxU*^^VSi|AjPa^j}a zZlc%q^#etg2Z`;)LCZJ$(s1!1fBSRVR?~nHDxdQ2M`_T1?{;B6O&l;0I|sKD_=$~Y zy1qI#Zll$=@#vUSEJWHp^3rA!;~;|c{x-aWXvo^C-FK-NW&gg3Qm3B;M!gbu7tJpG z=F!U{(o>FnDF(bkp9`Td`gr}@*->~icE07;bOYwyKmN)oEfQN9^H*=DG{7Op_*cUG z#Q&+|8FdDQ;nf1Doe1nmm9PDu=l^>j@}K*zopE^*8U;e1?Rn&*vjI1}`7W~6w1J}D zT~q!0!?63pwuHQ93B-^csy%Gpk0adtszC?F9=2^l zGY#Wz{h&FFyD~4@DnjZbsJxs1NzM_2Q2{qh$TP(jwdaJqc z_?P50*m}Z&)`9ISB)T&gf3+S$F;l&|zONPVvHd`Fi*Ggrd%H%~=DVU%(>@OAkQ-<& z=a(#)){3Sre@1uD?Z7oyU9Poi1d&wEM^{Z3k*uO7r9LqWKedUmpCGhgg7%{}_Lr$h zwM&Y+ndDPbSj(flLH`#wy@qd=ljcErE8qF~%*r8fI&$^K=T%HEBIH)2v_a=Y=skV^ zZRD$t5ISC5hJ!7{)mb-6f`#X@h+bj^h}#y2b6g`L%Q;@UZZQJm> zQ`Izy2bIzK@AL}HRz`GQoz8|Q`y6@x6r>@&%;=o+Yf_#7tL?$lr2J(?3i9b)(IlVV zeStlnI!L)5&6y&yKS}uvMvvEvMkk=-W!@?BnPJFie)YE8l?X4t?s!CAAkFcnWx3M_ zE1{d~5VefT5TxEsX47(BNA6WK4bia{h<=n}5%83PaQ0Vp&+sQwzcAg@dF<>G9Okj3 zP8;VZDonT9eif!7G8`N>-8I5N9MkJRi_=>5%?#=tl{}) z4yq4~oPO)UP9#XQOK2&*hH0&Y6Q4^7@Spnqzpkn3joVB)bU?HbD~D9oN^WkRothnW)9+eo|!*{oAx zML`M>ST`}gW^xIx>ux<8{`ML<*rJzHHbnx?4Nq5##d$j7`Nf6uI2imL(a{k(HVC&e# zhlTQq!a3WbU0GG8*f+VVDnR`R+OxHYpAXxCXmam~!^y);Fs zcN8H5_p~6PL~J%z=m9L~&h(6n2cr+~8IH#WZZPGl-7RuQ9*zwi5IgWG1|KmsUlqP& zgy*##_LtCJ!Vg^snvU)_0@eJwjlkV55K*rCqOi#r)z+$6cET*7E!}u#Q1&Je+@71t z-@XEr5%M>zm~8Q*p2XKK?mXnba_y*Wl^cFIbTJ@1#~-~7H?y?f8DX?o8RhC%RwSN{ zH2JE@3n}sL7q&mdpp(GkSa#dbILK~XlQQ@TgOtv9TaId>8JUjEy8#bH{j(UzUZ5D4OEAIQFUn&o=glBN;@gK+Pjj@Pv+fF^ zRE4AJF&x)*!$GC}R&;(&8Ay8dxYBXi{nzz+yZLq*TS+UoxWey=4?WIxBX-Vyc|lRpol{@r;}= zVCaH{8M5_D>8VKG#n7G`L`LK-o6ESwQ$q5GWPUo`pAD}JY0sK-*W$#a@bAFmti*~W zM*8KxaHKl4S5PHj4o>wk*@@TZfz0*nu?o2$e)O@yt)Zb)nMcwBSe|Mk!K-~h3%0;aC zsY~E&CC}h?b{qp9eWNj-9K>4b*vip`Sm6HqDsUlb7ol)5IN7c)ABb7;op|pzQXUGf zNa5*+;VTE+ZW;c8_JXw)JDq40(WOlMc(D^cz8lt0jBLUPmA24(hgy(s(^P3HZwQ?1 zZD!Ub$O+khf}Pt3NK=yaNTz4mRcN%j9azRO3k*&xwC6J4;L_#FdyAcUV18#Gzo#&1 zj#e*xBjIc={yrem|E9SJ*o!PS==lbw@$Qoig!J z+&*G;75Dif;eNO+jbATbWg?c|5{bF9NJd!VJ#yof^e8rzOG|c;&gqH~^eG{$6VO2X z7@|e;Ys7mOnv6^~pi2A=9&Lu-c)I6qT>8i$+^oMoKs?llTpewvmI!>&`A4qLxC;rWHr|O|B zN4jmMAo?u|qA^u;t+dqw8a_~?$jV;@Vn#=}HKQaBcs0w)@0){__s2uWxQ0M*=+4!3 z_7y09{qAu6ojn92n*BM1BZGK&Qia8`Xc;sPx+u2fkP-NpPm#^G|Hd>f<=Dx_Ml61* zyKx;ZgQ(T9;I6A3$ou?7_r>IYsIB5#)U7!TcD>ahQ##G?@XBSyww`&+i5r+c+P|N; z*IJ8F6G;5>D#NYG7tx@@OU)*JvKn0#M;i`A&0=AO$xFBSKd_&}P&hDf6sh(oaqIRC z;Fz(|om3uDuHz*uO{t1~#6&&!GpqY(iCoOTX1BBF;Yy6iDy?i7=t>>cavRtLi?czx z!lDaE*W{6|^^TfQ9rNvN+v^G#QG1(Y#IXoM+n({M?i9qrZ>Puh*v`N{=BjBnt~?Si z#;EEG8x7%`)2LUh`yz?oz36wZlA1`ASFqzTr~=ieZ%o54lJSr6QcejSS*`$1sDF{p#GWqDz9;jK0N!nl*mYUGGxeOxoZKR z7t2XZ>YOK#{rp}pKEX@yl;eicb}@p>Vevj*#(5YUE1?jI<{`|;F^gH@{zCL#)e6a>dVH9F z{YqpxD}nshgWcF7P1sv=(O>OjEGh^jkO`=3{!hLCU)9a@L|$0xv28 z*63G)dYFEzgSfz+3Fen|^e zEY;i)UHIn*S2lMilos0o4So9Aw>2KP`|iwO<6txhB&sGR4(LL9W$0Hb5*PMzTAa=! zG>5V`_jcQp-rq4Lv7cr;(m+{Nr~A%SI=Buur&{_^(+%ndBmGh94kIuEXwEh9QewpVl(s%+C z6tND*9p+#>^U?}J1CXX~Mcn>F2l#mX)&IcO@?Y2M>PouPD`CON-f_NJ%6b9KmR>)1 zEZhW|RS|r6X2j^V$%ZG33epZXDO5$%^ z86+oKUEm(5mYhNkEwmJq?7;pwp<>%5YN8s~og4|09xmBBp1b`p6Y+U(pTn7pJ80Vx z5*M$%h!ILv9xd$?xa<(^TG+FVLI-;9QPEDJrbAL(cSjORXDsfB?Qg;G$IO=*EUSU7 zg*NlzVmrRfUY*;!rvyt5<+ij77UM}(u1T8E?~s@EQ8+a;42Sa^fBAhYNB;azmLdfW zs7VvT*HNcL&~v7LFP14pST~DbaCsz32=>{X;_KZFwL3%iq?O1CUOt+pub%P~$o9^8 zT-E9Win6=UoS2JnS=le<+RO&rBCoAUFJL4XSv$<$XKBXxVyVceJ8dw@y*)ws|0C>8 zqp6O&H*QlIqD+;dqEt#r1Cg?isS+7VAySA$nUlPgl5P{+#jPyGXY01Kr2m}DS0fJI zv*c<6tP_1-&JO_P=K=l;m@ZS6WmEUTm5do#5h|eu%WWQrJ!8uWUM1gkQNa zhhcB4w|+ewMpmQTpMiPra5#-Zx9sc&ULXe>?=K;^fw8&qdXO=h*6=Pz?EMm4T?7sI;eac+B|nf$gTBp*^%DvKxP08Lx^ z>u!V(1VEoNp5`r--B!lN}ULXD~!2A!Va4+dvI4Zd)GLUeI$eB{TpR>qK z8Z=fFVr>*Ar3z4fh^L|^Y0>la9Q(ydntmy&!{T&_bgH^vvqOiHG+;5jI&3bsEa?<+%iLipgT_3sU^Lq;lRXEG-#$L@l5>Yj@v z`{6@t61y_dQ2Er}p9>oQvmb#^`3@JVE(1Qxj2k&?1{4qJs?SAPfH2FK&Rg@la9X0* zdnfBDC@kmOn;du!xmhkT{87>YL24n(bKG~~wN;IEdh%IR)jB+BG_Q#n1*xUt?r~TnE486PQXR;#(KfJ05VT+*zv#C~AH}PV0 zbD;_%An&+WQg!(uWfmR}e|MTYWwRP_gp9@ey+sv{(%?X`H<-G1KaWQA7%-2H9S$qBfe1T>)gr+VnEH6LQC9Lc2J`Ul zb?Gg^_`I&J$TxxbvHi5RpJXCj+BMCW{UZ_>WWI9sN4!9KZmB{)#gCBWkn((*I~LbB zydrx8(=biW_|fj+NN^3fZA7zb2K%)+=gKrfArD2}xh_42n$nfncS_@M`PJOV!q>mx zPt4j1U|=WrCU>DLG;?*CnGFTuKgI|9 z$mB*y98A}ZIbZod&uf|`oyULE=AcqMz0UCRIEdO>H?mX`zJ~Nk_UPhdbQmw!y#Ct< zC>w{F!@mE6AQngd?Y%x2^|x*@Xq>n&vEO(hrBMj=>mglKW;IY5&0*@(R)XDa`-UjK z)@4$m5ly(kZ%B0saqu#`hNf0h{>*Icnp2$W8gzqgYxFcfB>@ zE?>$9=dMZX1tPagrSbJMJ0&7N@svs%IXoFfa)ti9wWvbvyaAu1mfM&@Nx@i14l;4`rX{1=e-ws@fuEOKV!4|dIgy34a)VWe&-lv2F$ z)UF2h?2l;Ll>7`*p_5jRsWw1Ai{`+@#U`AUCLR0b_#TrZDmTaujX)WgSq6hm=&qmV z*dW;tm98Qt0|A53vrK7eH?Ra1%m<$+{4N7)qZ=I7j5W~wGv@tD`6yT=zRjX=qabBe+p2CCB#Py2BSuq2PqAhzbl8K`2rx>}vO3`yjb9M|;^z z=O{VK%VA&m#c3=kqhk3%nnCN1xX(6M#_;OY*l5l~9dvvCG%3@l#W(jlWdpK?F~gqy zOK#B^23)$*!)8k8gM{QJMoKclU#Mi>O)MT0d!~Xk49oG&0W}^^uF?P2F{-f)QM@ceg2<*<^R6N@fn*OKUD^0ehP1OQ(NF`sc=u5Y%rEpe(38RDMg3b@59@; zI&pVsu*SQ!60lU~{A}<#3R@V0HID|@gRboO9~;M7Xrccaf9-2Ch?#>)>&607E}sqy z$^MFZW#2RhcyfULGk>CJ>nKM2dgH(3orwM1ZekKe-_iArt)QwI0YndvH_FLv2isbn z)C(JtXp{Ae{&rJ040XyXRm|4FCEC-)W$q(5eJU<6tU3;bOv2TYKlVV`aDmW7a11`8 zvS~LW_!M+8bJ7-9`oVY7_MiOT5Kv1BpV*0QSfA&Av-?vkJ~3u`y_8iCZ~D|U4=|0v z0me4(7=ZyiDpKzq6`Tz`wa&T)Qx$moW>&+$J3}Z_;%K0kUy2}eN7{012D1ikeZJ~6 zhcic?#c$K?1ur8(19jJSyr6l&%+rg|Ab=Z`Q-h10UmhWRHZU~GNjAm_s|!gt<^wVp(-L=|(al*$bZ!$ZT3O; z=|2i{bE~jN;+2M>ViBx(@vHExxs<3+E=LFHN0fCH&c?mTBee&h#WD$@UT1+8yM6$?ryYjyr?- z^MC0sJB9vdUFV8LE^F=~IO^1nN2A|e#f%abNA>_ibexryzSKG^9v!{rcHDeeoPU|m zdh{I&IGs1J@b6MaRFuWrW;rGI;~ua3SUbPqLV9U=YVr!4dz%r^w$ z<3^c5>)YYD5u+NM;rq9sp`25>tAqx*6~w#vHdwIX!<+Q2@mS=v9+H|WdxPFGe$T%6 zia?iSOEN{d0tOaF*+pwA!Jd8X2g=uEkbkeyp^Q9NeCU5yUS&)eo@(DDD?e8OZKFGS zY*}}3dy}UvgRd5TDl?L`Yh;0oxg%rE6Mk^?)1UheX=4Q@j-6+sXy2mcU2bV8Rv~!l zk$>8*Kg53r2md;`4T?vfbvfP;8-Tpbum5`PumsJUJF~-$k0HGTX~H7%A*8;17Gf%uI-CB8DLg5NJN$CO8%Pw?Q;Almpg&kp=59?Ermk?* zyx%R0$(QAgmIJgfOZ-Z+u8lEVHm#ARDm6gk>btH5@D_rbb_*1EMk4p8#C`9%Vz6mb zd-pBITfpqrdU>0}4y=jjYBx9=3nvVMjCSoO{w|g=)|ls2(Db|ODfj(E5dBi_ysn!8 z$rJ1!OcUYbxF@e4r#W!xF9U)Nyz^fbpyRzJ9%%TRZ} zD+ESszS;E@>0-#4o`_|6HOOUCW%8rz@R3^Il<>ms64FTV#u6GD3IC`g#)n2sX{DubRaO0oqG9`Kq5_=j#T@EQoh6_7EaAK zZXcA$!p}Z?mo@2WNc+ANinaTMLn|ZOP;1i$2tVQ})qh?<@N3w~BHqn#)uUw5;ukfk z=ESMb%oj$0BIne(QrUH|EqHk9VZ-P@$$#*)+JWkWMhWIG2!-nXdkv8R{Lim0jl(nU&RbmmWQe`F?A4}BO>k5^svMiJ$I=t_sSTTihE^@Oc-DPwqUNk9yO{7BYyIHm(&TJF_wKvCzrJ zS{hQDbQ0HYn+Z@jDJmMH(S_qQ7u0w+~SF-%;wc-Kqk1KJ3}JBwlsou zd<5CAWel@#4N%k72f$U?&2mX}*OymqmWI-Z23Q(lR} zyk-6u(wA0HF8*7=gXUFKnR$42GcXJw+$%VWTj<9 z=tt(g9;CQzC-RIRa%dZ={(!Y*h79872~h{*d1KmUP^p6?KgT$Tk7%B5H7T26zjKnX zn%M|u@1^~4<$O0TKFe`YwH*eM(wQ47X#)_M%UWVh}pJkg|7w!iRKx(yYH1VhJCaMpy^am0hIR2TH!ux)b<0a96g!>>!W|<*W^N=tBEb z>E*M<9mwvlees3n0x~GK)=L#m;p&$jmM1y-y)RSY_`VL`1zkSI z_Im(-rsReHo+hyQ-?mM>^ zlO!CoP$^4Sy+P=Ud{`94Z9vJvUTeBEU3{cI{+GbzV<1&{$>`doBmN%Qs}T9SPh7Z% ze%10tFl?CYf7?*3iH$q1Nf%RZgEu|`^4E%(&`x*HxzGQ0!i7`MZp`co#gIo#o4!kd zNG-XluInKV%be+aEe6UkHZNz^`_LHPaT~HP8QlTP$8+gl3#EuX%2_dCvKT}M^2Qo8 znL<{plG&r1_c8Lg$*|}V5$KTf6sT3?g63|Kn$MZ9!JsvBNk4nOz{!DPnr~APKIXi& zxOmnSD*C^$1!g*fQ$Ou{J?9Pa>bnf?8cr_g6Sm~=^1cR=E$OpT3WTA+Un$hB*Z^u2 z)i0d>6o59Op5V%K@@K=xg0ZGP)`!!7LK*T@{Ovw~^2G}8u)`%rt$kx@rI z3WaVoo~WmBf*+YP@wuJO7+&)%y5^7}zVqSzqIByi9`w@dKCWj85A8pDxH|-5+nZdM z{C*$2`g;6|eU&Lh^PHMr_moE+*=+ZhpFe>cQd zFXGa~vL3p^h3P%#vT6)a>zi%M0bdQEKRjI@>aUE_QFVDt)Jm8*X=`e-;sC?&QlWjzPa$%eHY3eF0 zYi_q^A#xae3OY6V3Z8@Pm@Z*UuE)=uKdJ&hC85~?PitqLM#M30tCJ(6$av;?z<5yx zoE&m2w$qwJHwp4o{;OogZPJN`fv=*y63cMQ;mqG=?+)CJZJSy& zb9ntMugZ(YevHsz7YiiLg*WT_!#lNqp<44RievYg$*d~VeV4y1pmXA0-UF=c%Nm`jP*YEKX`5_AJ zp7)kV;7ep!*+!KIaNW+tfd@hB4W=8IyWKv zKhJshrV-$wRkt-gGMFXn{=^Dxs$I?!!|?AC#lA*HDbmmnp(cEBltlHR ze$|QpEU8{`>$JwR5iolEnIY{Vaqp9O@m*T=I4SPH*0)DPmC$SV%f*S@h^-oI`nSCQ zLKegJ-kXHZrT5$j&&EtYs#!&ht`L03`!i}hnZnI*;t8+y2i+PN&Mul#(P1S0r;H!H znAyC=S%E%cGS2)~j{md1`zUcPeg7}GU!?h6sCyp7X7&yAUHn7%moFDZHnu~p^Z4=I zBYF7N<+#wQ?K~Vj`*KdMH3W6DO&*jzrY3!iqcIGKZwArF+qbh>QjuKJrJ{dHvyssG zne6sIUvc5xdV^xq00`NJvETehP0F1POZehz50{#b9I2~~0i^?chSo{C5LLGrCU~Y4 ztXVxS@(BM1%DaZ1s+#k_Z1_p~wEh4bxc0a;|7#-L+i7Lg>M{z2K^I@i9{U3gN>Cn4oskpedyfa+hHjF{zphnoXDM6Ieb$_{x9?vUaxbN^9JkXHS-9bF5pj1DGMjg zk37+^=#TN;xaW|Ua_)Ky#!V$b-#3DLdA3>T%(o!`%}Z1PTeRddx6ErVJl0UYERp-Y z$tuKD&BUbJxc{ymz7_ zr8c<%?(l@YN_sF1YN zS#G8L%Cuo7f8ggia8_py_!>9p7OuVkUzz}Ob+>AeFRXl0!mt4q3|0N_6c;gRDwrni zem&L%yJ`#+FM!rfiRb+yG^C?1e8LjkH!$wvWP}X$Fj($P84d}cCI!>o4d>KnBI~)i z34BOP!@|2fUL6BU|Ff>CLR|bxdCud7O8tXaYl7Yux_uVHame{3UBdY&HSW_syJDKj zj{dY;!YId&NM8`QVXX`DG29n28g=3QnWZ){Jt@?+2~n|9yMx!SHD08RQ9<*H3-wy7 zZ_yzs><^tCv2SR1Pz+@A#4drN>d~qFSgYz>bcp8?awOMnIamea%HOJMD+%)jIw2M< zlotp+^61qk2?EjRXj^zohVK|=cE-PPy|527clt2AD?X1Ds-k}dKe4xz-w4~nnpDOw2O#NarbcJvGvXd<&`bO0Ek41YgH>GeNcT^9vhiFX zs?0eQC22f{qnS4dot7oCrz%k7DV!mGOK9wMbvP<2gblh&ZHYgbZDa5|PUztpSB3>T z0+46!p$4G^JBQ;|$(5cz_^_NFpAQ{fKub)B!^SeJ-kgho5kb9Jm z)vXkmm6$6M8kPXNG{tlyg_n3wXZC%EE}@UOcus!mj3xY=*`~QB_XsjHl-35D3^3YO z>66DPbJQm#Q0;Co!ww#W{PE9TxK409w^{hX3mW|+8y(M~!T+%5&mZ;}XXD+Gpj&`8 z5gX&z%OWt?N~Y#%T^N|_EUq?2yak4gZHw(1kKkW#%y#zg!LYd9ud?cNDArA1&0ZM$ zj56!b&KLy-;JV$XpupcogpYW6o<1rRjcTo!{{DUn9rMLIs7;$7Xl`%%%bY9-N*{F6 zU(SIG$0q{5Py~Ud4pp(~pgU|DQmGR-ZBgI*bk8znkPu-9<9E$i3 zupRIXh4DdwTifWYfNUB5*Dy^Vho1XYm-9>Ge(~0Q4uLjs!AQ?egv}4+^2K*5kMsx_W4fq)X7C$t2FB%L;Kh{e)lp z^p#Zl4)l6Md-1tN0~-4>G!7WVqE5f4(&Hlx(R$=wLMj zKm2s*ugG<9dbjre&3G-UDRsW^Z%lv%Uq8v~kAJ`&#b+h2g%Z%d<&gX0&#w@DbV!wH zvkdixB82%rE}<%e(EJ^vR@9Tt=-+cJ9rIp%@w}!zf?aK*ViNK+eok8@6pZGV;Aqb_vp4C{`f_nOm*KaIu zqSVQU>U-*mob20&dd+ukV2ku<-V^I7kXB`0mu@^)cTHbB+M9Uui$@{_F!azN@|6N|{jk+?&q)P#G@S z%yBOGe21M)x9|D*_Q62gk)uk7YjE4UK%s*sbr2&v_geAaVY0=whpkucQ<1}39prhe6O*4*=%RG&D2Yk=YDAt-0OJSw@=i>$>K*GS zZo$WUwZt{Zf8fATY8pTGD0EJXl5hA;rK=`%$jeBC;W47`}XXYVi8c$fM$6w!Q}a@Mv6ugJq)~ zliaUSW}I%u7HXxlvBKl{#U%RFb*%!pG1mQfV7LWUJp-kGjFcnaE8fBwgGnL>MuKln zY6$NM&kE5_%^`_V-qbX=2L|%gCWGW?(XGV150)!N6v(b?hGWm<2 zG1cOZ2VP%&MLIx}Zsa)Q2(e$|;7ppY>H&%ktFWf}59nmpDC1V*f=t7PRzn2OeoC&N zc_xIG)Ns}K_{Yv7u>V@X7b2C0wC0hNVi#M{XHSDx2a(%yW?v}#w)8K=|JiOaV?GD- z``*S+302^Jd-s)(hIQz4w4!k)eglss%M|zYHR7&KZ%yCJ+sVmB-|f0e{vz{P$@v@n zWW4yi`+TJJ9Ln$9m+#)cgw|!sQtm_!$ZY%Nl-C5`mw}qv=5FUW=8xWyxm7=aCx}(5 z`?Fr4RS8g3UY`US`B>VThogA#%Z%R<(_XZx;s_Wa>Z~*VRmoZ|6?wx}e23o2dh8Ro z*O+md#n%zy4K=H?(4feXd%R~Hj_GKOdq)gnd&PkC5MMR0eo432i0OpKhmUz^F${r_ zoP0ZX(FiVN_B7t~TmZ$!4E2i4ZrJCd89i(^0m2MN1~|1lL4j}F?~4*6=}Lzb`B-Ee zrVfz8UWGpXpZy3I$D`Z1A4$kiHF4o~lNSt}PI_Ir@fD1kI)ql9?Z%*4rGI;66hZO! z$0;A~8@P1LRnqpXF(}mj@X@>H1bJD)5<}nj!PX8PO&{&MD9LzO{0^-F^o8%ri@z2G zWj=n!CjIX~^Z1q9%qIGnDj?!t&ZGi0kyneg-`zv+^Bynq2tQ(%R%7CGp-u6Fdu7-q zQwtzkW%W!7bv(?s3@-^&DM2$G*V1-MF?jbiDCP6lhcHKf{ zG#pw_KvCh$wTKB9Fw$4amT&ljzR+|;hmyq5xo2vqOEb# z59^-N-z(Hffzr~(X6?Nsc&7U67ZLr2J8zX_wM<0eK04!_(w)+9)Ua4lqud9F&t2Q6 z?-qzrY$wb3PCDV{p^h_)Elv<}-SxEXMl$}JY&hcBFZ4P*xIfur`$sfn|??0Jn8-yJ3Dil9$ zonS*QJ5b_X6dGEk`g}O_032Ix3r}^0LrCIUu=JV%c-_b@PH<^PvigxP>qbdvP|`g8 zgtiE`DTI!*()s`<7~X%w;sm+p4$8RLrel@aA$!d}Cu}eh^{r2P1yM4*yO-4*u}W}r z&)LB+v}n6!9yW-HLy z^((xWZTz3-wIVBtk0r32xc3aailv+b?|b(h&*n3ct#hy0_MRr@x{G~t`%dL!1b^ex zgA+8Q3oL)$eDHGv+hmq1cm4@5J0IZikaL2>-^D3)L z=y)k~=IEmoSQ%8YSY?^Q8(hwJj~Z1Yr^Y9`w3i3Tx0K#U)=7=P`liB9$&+lPd|Rfh zN3K1%mCJguo6ZMJ9+|Le{M}CSOfY8U(EA73QIE$h_SS*W6SJoq^iDAE`IzEc%Wp7f zzIxlxvI^dur*1FuoCeso<6~pS0(v@6`V=re2T>u#V7+ika<9zH9f5tj$zHR}F7I=) zG3Z`NAH&nPm`%(2CXi+Y&&<_!DHhJ6ZS%JSQw)<>$8tn*#bgUfpG!129_8Zmz&N4v z57xl$ibif=S1k_cwX%zLQPiizz3-ZdIVayEm&`S+Usuef_1s2I zko}grQB#LCH5x zNIR6Wet|Ly5B{aBQ9V5bl0nXHSySJk#Yl%&)^!wZ<%?Q0-&`VpfAdM`_%$wa!k3!| z%D)^X8{9b}u2on^_)pVPhdh?>-*Kwc;22JFwZqCjIqM3%u+?`g|7<5@KD|am7G1=V zhx{~IyXeR{9WM7Q_jaHq^@TMLgI}N@*J^rAwHgkq?CG#z>&0$ki!S>u!l(NGy|$Nm zd{c8G{5fAwpa*Z;f1m&7=l}QpV8!vZ(yOb$US2AZ&A*$Zqi@M;dU_6`Rt%!kPHh5- zJ*Lx9@(<*Rx3r(Gry_H{lsYeeC=iT!!#1o%>B)R2{_OyA4~ld+T2=1ZMfUN1rF8Dk zVRGl%s=AVE7x;ef%}}AAL|&PfH^W_7$c||jcc$nxLS}Gyaz_6E(Aavbc>gA!eMWnE0o_iED0iOB()wGWY?u$o%FQixHT{5TFy-N-^?lbEVKyRXT(>W zQaH(lyHARJwr|JvKn|Phl{5I}HXCd30wrmWYL=(7`8tM%itUPe-Vf9Q+n!N5u#q)a z*tMdT=I~%d!-XsA6eMoW`q_1sKA7&|ZZEIyge|`6w43M2khOM+L?^>c$}(uBo1Og& zd;*uHmHy7b_N*VTiyn*tdom0ExAWzYDk>Bc4q_~Vbbky6;hN?1ip z{-Jry#&>U%B5X=hKl7_(4*OOPjrwLTz)=UmrlNlXKuS5QlV;V5T!#l5FA(}WX$v6% z?*ns?pb=8p$VyKZRtrhcw;Mv;hGgcR-MdJqv^xyP1sKSw8NV_P50$`$TkP(4JI<0r z>N}JT{C1OHO}F-y9OEbdDXd>8rS@HJV%uybVB>=lVulBEzIXZ?0d zw;nfas17!LV6uKSlI;MKXB9%thu?Vnblr_Q?#9= zz?~@Zrv+g-#fhB>!9yUOzed=%nluihef*D`Onz3P<0)!AJoY;Cka4$??U>b{L_0fEOS z27X~q21#SiFbxiA-Ah)cyp7*XqPRrLo?(Tg``7I93xo@V#YR^V)JR=C4@~b9xa7KmElL zt}|M@us9HYjw_-?rJ6-ZT&<=_q%cfwy?Oe8`csf=k{UN-CF9*CzNbBFHmDJ&``Fdg z6By05M$8&*2o8CL`>jP^;1lE8DwYN0F`C@Fk?MrU%sP86Jq*SO?iA^5ID zUn1_Y^@{9RD z<2oJ=H~bg2t6vC)ujOuCHzjg$qH2A3L-qx5a7rvb7qSPt&w}QM!j$1t*WK9S6Jy9i z8J)^>l#KJc3K|TgTM50x_K=OS6sX%Xey45e1Ky0*GPn^^hYz3V-M_cj1taduKYz>= z2x*j$>k?L9qj&X5m*tOH1fP-dht%$uz&^=y{r09427aJ)JI7%UBMLvx9&k4Y$8=v= zrzga`tVhB18qXgTwma;9kgo54p4S4U+bs*M=E1`=I*MKFH!ctgz3A?75TKM>X?zk3 zy>hlU>n`=e8$sbhe!{P&p?B7k_tq1jcb)dwdu|XqKI?zfq$4<|+XNlX9{q)^ic8-* z2ByH{sCn$8OJ%?y_wGQ?=s1)MJTd;xLQe|%MCZb}h`qVK)``4B1u`arRUUP6`KcKlX&L(2ab_A@7fr zZh!=%5i_-B31rnO@BKGT=p@gb+kZno4`bq*ZwQUBL5p$S&fx6%pLB>GsKDhX}l&z^_0OJaXHAD5!< z;fLznLdAGxFO`k=FaxP+dHeA}%0IAA!%(vC_IA={hlqmrj|tpzxA69;*Z{BYu-Mz0 zyGfFzjb|#mPLWPUMU&W{b>dFrV=)mQiG7WstjY>w7;IcN@zz*Qz(=$%t4Z&h;rxbW zaEM?9a%enIK0X?TUs+Y5F*k7hTF|AiPqupPcdDYbLcQ8{O9VHw`x` zvF6Uc=R1h|?44-Wqy1;8$kYr6dfEt1EQ958x=6@(yn69Mv5;8`a$d0DS~Ty$)beOW zkyL8(fBFnEmGaM#l75KETd9f7%m1I}_Ro^~Tf9RFuzZNH>t33`iDN~l9`Fp{x|_j+ z>qnQcXlT<#>3S_xc2PL{NUuW4^`y4kqv`Natu*cDo;hIkv!hM1D}>`6d)@mlY`~6# zw=DK1?jZ?@_^tn}N`{XfPYX{t^h42B|Fe^te_^}2RZYl99>isE_vPF!hMJC(F??TN zgDOvJn03KtbliDDFZf3b4EaZnkE?dU>&uN6dFH?1%8`XrL*iKwDaTvz!)*zUUVMIj zP_qR@Ty!Po{vjS)-TC{^rDAY7`q}hD7#V{K4fgLMxGpkRLzhokAW#ecrcz4#0XLmP zE1R{(q2@=9#z-$M`ASkn=G^)OFl1`pFP5KxD@knE6Al%@nf7eINj(}8`;~rr_ETN3 z8eX;Y@GBDW3rx|`tyoNVb2?>>#smW75lBzpfhCpF+ zv;EP=D0u5g9k3g1$D{TYKW2_}L&jvVmdm9&l<$|zVQ;GfJq!yQfO(imWD*QntGpUaIZcc>`3yIf<u=9d4 z`TBAOI*RO@^Y&vV`A#t%Q&_Elr|U+F;+@Q7fi&yuSI><>t?B-gMuAkM9~3N9tG0i! zUT^$Xq8TGOs$iO>KeHN=_TBq!amep~)-`#$zLSW^MnS8p&IC#qDEriTF|Q#JG>Vwk zSWXE+?OlcJbWRCyGNjLObyUaP93KDczAv$XKl)RwLl6f3IUe~l{t*UzVGEEsBg7Wo2cSj1J zQlc&MVq9mieuk_bVNV9rfMc$ePx3&^royQ5wgpD|iKmvz$)nj=;NKIQE_fNLRqnR^ z1Rb`SlaF-EP)3lAr=O&XMW^ppz34Ru?GPQqKeAyMJ#IZ&Zf*ci_i<>d%I2UCrPtu` zDPzbPV>MZJdXEC35*?E7yivvYiMHsU&nRN%$=G!DHkxHwF8a6s0E^_G>3KiS;v2J4 zevO274BzhczGy*nn;wqrBXZ_tVigP1kvZ0^@>z`!$k*r@-pFVHc3(l3m9wEh_hR6%ghn`a z!P6b%eSy$Z({S8%FBxdurTVvM0#S3P3SXCSAb1Z)s4V?3L*I@s5zhp?@Y<;*7Ab;b z@^6XBQfXfckXmP(hf3rAXI&Q+{@ZnJAQzKm-&E}k$i&$1fq(A0uEG6(`&!&Zze6y$ zO7td8EbLt!FBGVr!Pf=}XSk5isfg&)7o`#Y9f?EsaW8psH|HYlkKktDJ}ObNB-07w zWr33A8^w6fXY*B`))ch;y?atxCJm@VKOgTcD}dzggX|Ip#2%a+Bayw`14G1TPTVVM z2SH!O>TQ<@e#m(vv)^Uukad$`$K~hUAjw8&&`l_dzr`~jd!oxgqGzf(oFCl+=X&3_ zzmwa<^OvXX3g(94+f`5T`$g^;=7 zjiqa8py52^<&skjW#Xm_(@~S~bgGenF|NY0nuFwd-uKXGP&A)bx&!cF@Av$H)QEZx1H}q>_U73r2caiS*f--D+(De<$K;L_9j7OKy6vSQ z|MCDyb%)1(P3jTo-OKxzM_>R}V(naBJIA9tc4XNRzFNV!QMtt5b3o1Sac-M>9X3UG z>bUNXL*C?E_N6;PsHQ*sez_tO_0+lD2sFad^!LwW9sm7(W2m&eTW zdDurUdUB6MGhXfQ)Y`MO}$$tsvLLW!*1%N{GRDw$eqGRje1o~yyHavpjY2+;aD81dP&~8 z_?gI${dCu1p$N6-RL>;bABAtWM+)}uoI-)qvm|HTK746#dG+z*ZuBM7w>L`+p!5Ds3i}9=Ys+(npg?9fLIFw~^PherNnJ|J{y`hGH+ZYc?VLyI5WS*{3Dp?3k>OaN-vho3;Q@Zx9l%9#D2(@4 zJ0@&OM!)xGB)zkq`cr+O5Zn3uZru9Zi-Hp4yV`fI!J_jIUrvE__{8vBhD)vm3e2nC z7ZCfCeM%41j(Fxm%HX@ZT((8HmEsy7O6)}*_OTs!XGBR-FuOmOrm>wQxO5>DM2J10 zpl<(Tg*C|M;NZOGxdMh#hs6sis7P0+?PnOijzZaz=4CPIMws74F$`U`;K5Gfsu^vD zYlE-T_BBl6J+3bWk-3C#*ktm&Ng<)LmT0AoCiaF_H)}iHYSxK-yQWW*_x6yb3)ovV zXNi4RgC|$uPAYP}wsgh_>puut+skeLbQqkjx;|n3%1O2!k5T!5eN4?2F)vNN5`1ZA z^B7?rD)JT6GDY7=ZZk76?c;|l4>gV$Rt@r=G@@CF=G)wBG#}CQPEcx>no!1IcAvQinQp4?ZCRM3Im(LYBT4J~0oVIbQ6*LpT7;_J45PND+BOaESrfF+a53%bDrf@ z&4$kfyZG4g4J3-11XF3n0jp5$Y0syuKzBKt$lx;o`L(MO+Kh=9c4(NURf+@*ynDDe zmtWxsf0vum+j#u!rgO+>>N$=Cymr|WXO5Pi*LoME<8k6hM*ML;eb8mfbPw||0X?~` z`;~={u;oKoq^`0DRPFCF^z^z98jLR(+^@KSP3x(MRDNe*mWZrZe4>u`a=O{eYy&Z5 zRhjdnp&7)Cow42$2!J|h5_H&G2NG5M z&^66QNIL%kkmIG7DAgU1G!V!e!K@A9oucQS#vn#X;s_Wom_yQ%hwiRB@ltT=x_Q}r>dwH1zhKA{Vpp~v*~U5v1P z)@N^#QVXOG`5qMO|KI!dgp-$ca6G6$Pioon-ycUXtl-_6DUmnz#X!|Vb}9}f`A^b( z6fK9gY3;-h26K2y^z-*q2YpZ=b}-*(ViF~t--aEhioo^K9x1lp2%D=XbQg4npw6f< z)=fJdo*4b2xWBg_R6o1FSNXV&-&wlDlcpO_yp1TNe(?*E zs2lg_?p_4ak*-NPwN?!OOk*E0O-8!zA3r0AJjLs>k2ZuqkAsS>oiK;p7+&!9Y>lI) zBFDrQ>t!g^f&UZcrPQjINYedtsGy6;m%n(ua+}8@KC|0#;M;sV-su#t;~R)Zrep5) zlvbU1)aFu8#oIh&Ppb?ROk2aLgK3)a4~O9aAG>AQ#y5iheP^9{_W&ekeY!h9vjKVP zOoFn`*-&LBGW=<_0c&NV?j1Tb1-*y%X&doO!YU5^mAOddow2cN3-9a0NBlbWadI^n z7~OIF=e8!K-Fd{AKCueSTQ~AYdkFu69aBYjeLAplZ%^xSn8$|!X6Fyxi~_F1ZGBwF z3Q+LTW3Ok2sY&bU@7vPe72!V*7PC!-Rp{|D6qftCj86611-ap4aDMg?*A}T4jgN`8 z?NQny=7OXC#+koy)>S+*{N@lmlyl1L{o;$e2Rc9h>FU9bllT4z_?Kh%Hyr~xopNAo z9^jjLmrMVMs4#?(DlQXvsO~o@&2~WcOYz?x0B(oYzbfh_9{$!lfW~ zXV)C~heQ;g=AH#tym#Q$%Pef!*W)7|Tu1oL0y#=;`$2~0ueQG7cUYh0W}NF>`ETDb zJ&fJ@ErZxsNS*V7%j3V#|NqWy!Q*9oO&h6jl6giAKCA<|FPfV3C80~K2s*WRhmz!Q zqw{;HYALc&hOwMfUx(CPUuxUq{9!pUB*->x1N@)<@lbXk_@DY#{|{mB8IEQA{*NPN zWJD;Hk;;k^(xA>;sI(QOC?kZdqLR#v5@m1MN|_mvb>6b~p4oe6uZ;iofAIM{_#Mah z_&mA}*Q5J(o%j1X&)4}HP8Vr6;pU;swZ6wT;kkyCl&rxI2u`sa9vGMhT1xFO4vr3} z4;QlVNXf$%UN)Ag;95NPm!7{bItkvUL`3r4=zykzWxJEamsomyO?t6@8Z2B}zHmP3 z1;bbA5vF~EXcoTb$!?cs{1AQO69@4*7X%`%jq5jo$+>mjI}l{!;Wg3chv?&&VZ7cG~SJjwY_JvMOR!J$XBR@CH+&l(Lvg~IU`IWMGP zwgjkOwvx*8f8bQ|;l$RR3lQ_#f&GczB!mo#GcEY^gGFS>pp0i1*pJ%hs_k|Mxq*Co zF;5Ee7crj6T_r?5_z=9$LHui^`BW^*XARh0ceqZ@s+r&fGj)A^(`Yi@qkeY(EN_c&q=#5%-U$$Q3W^K80)XkuCWbxvioE$$Ql(H`fbx5@x6V z9p8v^#pti%`ul!S^0Zm_+YN(tOs!Fr+{xPtH?H=bANt5j-r6olaY9LeEY|%9QeSh1g*}Ax5AJw^$zB8IC~N?gX{ks8|299|=_{ zXnyPU0Zp_V3_kG$WAMSC;=$5v4Eb!<$l4-?99Du=*%t_1s$}2KZ?|(J6YalB=>5^nxl+x61xCKVZ9B@)U7Y&n@zZtq8@w+D zUa|w_qkM_lFO(pqNVMy6jR*WXmM_DztqISFj^0x3%7Luz7hH)s&*4u%rPriDIKJo` zQW7He1N9;UZccv2c7) zUz?Uw8HDc!eK9Z%!A=_YnH;;bVDCa{mAb7N?61|_^AZguc-sLzIoApy+H~1ncvS`Y zT}kH~R*UdvmBPkwA{j{+PG1#V62pr(zF)JR2!g>tVz0jT0vMIc2M; zdZD#}$F8`4i6|W3ty#Gq3h}z;i0=I-T@CuWFqZz)|}g`D~CSX8#g8R?koi zr)Lh|`6cFtB}en5**p3{(e#%XUtl(>4VFD|PR@YS6@1a`V|}1)tVzF6H-*~tqOS|$ z3&4kar=-dQ!q>i`?a)wJ7BI~2cd_m4gH&sV;CYK)Twl0mX?dyv>(&xb(-@V` z36~>_tYEi1!T(IKC^^TtR*%Dv3?En;{6*3l|D7zWw@`I#aYttz1GgonRt{F$m zou}L!jY?r()u)!*)yw!i-KRgndkEY=*-B4%PJ!qZPn*5J+M(Wvj&9}SB(ks;g;uZ> z0Q&fNL}~6n%kO!e26Ns_(mHOIV?{5RmXfQdaDHP58v|( zkM7W)m5^)1WHq(bcih8-Z|81_7qvUd|LHdbU)j8NR{9H^i+}BFe*E~K=l0{jLff96 z8v+X5u68-I3eX8@RQuIc3Vu_oNID zKoD)ELvBhp%xt?*`}b%wJT9MG3?Xn0r|RnRTWK5EC|KPdmb(H9#VWL<*)_cSTys-z zp%He(WX*nmNI^PVef8Zlwh^$ARi|Ad{8nmJz7J>K83(hJkm?INXYj~Xmk7on0_QF2 zIoWrA6$3-*5G1ETUJm~5wz5E#l$?sz=pEgo2auXI;ebH#E% zK=_wb?3qD=mvDzdvxkk$(%={ir{=IJu4qv8;0#>rQ`$SWHh@g~n0&<3deK37s&d}` zAINNp%J*JoCS_f`Dw8xk1#XWyRF!1L|NmUgjXu&ma_`O-wyUl{J#XuZ1>ZirDqvP@&uI>U^DxV1%=`Tpe_(QZX@~x!@7;xSARO=a%D}k z%4QV4PZO3L4KM;)k^ZmQBu5DGUaYFO_rewb^F!~p7hu#=Vdv`|zY)|_+7yVrG^?2;u&&2b4Ebu>O(f~V~nTh*nZ zxND_{ou%e1Fc_(oCmIkrtC6$UyAq#6q=Z0A-3p}p zt&1~lTi-(r3n0tcnD5f!CEOXZJAP8PA477ZS{gN@@w4JrdpC|M)Mm^S*O58{iCG28 zjsy>%_XUsT6Z2{@W11JmniN!ZlW(rfUTc>Z%6E@ZtFus$wgp62$7 z@bk<+%^7|88=#u1Q$^>+6b$Iva6i^1`kouQzD{qVfZHXy z?pMtq$lO_$@_iixWp6&;Gp+rK;*z3O`gg;ijF#8rSVcAP9m>fG91X%i{^o(znGm=V zUn5yj?uNPh2K6Z3`Vu*b5BjWKNO7`w=8Pt$^1O7?QUwVcs6ua5U#j&xD&{->NV{D+^@{oE$F?YuXn?Qs##E3vJ4 zpLhurN3}oF2%5mp-6r4G`&&_D)yr7h_8;uJ?ekP3b_+wMg-4}LGT@rrkrvJI?PS4? zO1sPAg`gHemgAFL!GdRg-{cO}0qXL@UJ%nc@$rsqEAnv9NO1bD!cvhDqsFd&JZJqudVZ)HEE05S zmhyd(hnMxq{H+UjEIxT9_ zZ-00@ai|{rIi#OIpdfr$uJ5#b7 zm!Wl|_rYyqvmlar;&C}?8;Q%V!2SYjBlhd0kxl;+`08e_{d?&pxNCJ>{?Cy)IHu3y z#6|3H${wXW5K9>YkKKOXDrNgX-g5ec-J8ES_WpdG2NMG+?xXdyGnW^@y2aMqwV%K< zCg!bjG>JW=_tjT=p4-Xpr!0*d^~b?P?``(+*?DYvk~m25itwAMJIy01SBWAUHcWe^ zmY_rL&8&s@EYxj!E(QOtg&5=dG5HAsPaO{k*iGcf#8;(edZf+50Wo6=xzCYcbUBTB zyK*mFYc;o3tB%7I9fqPK*QP;t-gn}BLppps$(fd0+JbRBrTdjzYrt`V&jylxAyD&5 z;TB&H?7DvGkGK3B{^Y&)O-z#D=hXcu=hZHO8?r*7es>CRFH^plmUIdPtc*UcQf`OC zG^s|>0_`w1{GwQ9^D_j;XsoJm4#V|p^P7*n+ko$I>=sRK2h7L5ztZsj58*OBA?~SA z4mZ|&#O<>Ok+nfQxAtr*&b^P}t|kb7@88j%y|qG1mdR7&74qjHR}3C={B|H6ozrzq zT=h0^(x`_2?vKM{`^T1^5vodH3u3nkUOK9;SUs7HADwrIbps+gm1!$%`Y|fg0fkUG-oXM09 zAgp}sV#S0aP*6@=MX^hwch}gH#;Gj$UHqy|VP*P!&g-*2*+t)w{@q6nX8)f^oy<0y zEp-_T`y}u1XR*WX9shbSd8$J2XnuC@VKSO zx%}fz>fUZbNvIyXvwG3d8uS}mL)v~EM7^ti9a{bt7(*ea8XfC{UBdp=wOsb7JrDbh zDPDsh$IK?pTR)_fI((zq^(}bO&pxOAtcr*3yR@CmRlsS!!P++7SI{E+>X6EzJ1}@! z&WhH>5%vt8p7o^A*PskE$3MB6nnj?lS*Lf-zdF3j5K(ipX94qr zG#uv$-&#|wH;%eC42RnuWU&5+8~bjchoq z!a!j|na=ZBxSF%{(EN5g%sGli?&M8{W9_@WELyvuovS^+xbX+DbyJP(enqGr>n{7} zHkV`GMx7MxzTaS`+`*H|IE4Qeua_+EpdsJ(|L)JaZU-KmCO!M@y1?)C(ru2o2K4^t z@Up`a_4?h>yEob&X$3!zLmpE^e-9UcNk$O z3-+xnmscm^xfl1=UKsqt_pg?XIX@J_=x~RU7k@N-+CDmB<1>t9`LA9?sn6nTElH*t z$A6fyr%mlxDv>*XPTzOlrXRO$g_pO6Gmv>ax85Z?9wyg3HZ*y3vJvNwN31O!T*3Fc z_Ee`L@(4W>$2gzJAhJl^rs?@Si)t*Nihq?Cz}X{jnBGjqLXpd;hJB7NX0QGu(YSV_ zyIrv0Wr7D5pps^Cuek&#*4XxC7Ko7h_g%4Of5Sx9bUE~4jEjq$E=RrYWi|-j)_(J^ zdp7Wa<+Xw#1uk;ZxTtNJNh3P#VXRx$sRDa*EF^3l=^_X)h)>+&!_P_W4uYNn! zZJ%(`^bZjIvk$(~EkN6uyy~RFMYz3eN}k`}4eu|N+AI#W!jy`Z>!d^hPTXParsn(r z+#-Ues}JKqg(08e&}23g>^BR1S5XP%O4W2ff-j*w;{Mi4D;*;WpOd|18(>C*$nc_F z$JaUHIv4k3W2Wcs)RruQZ^1wErSVz-T)F+`!a4gYwC38qVfM5Tz4t5Tyb)>uB8*}2 za#$ho<{qKmQ<#plFw%0qYzvf=&(M&CYryRALY{+24V39v7gdF|;Op*zJ4r+z)0TDn zn&*d7)H}6%-wDP-jAYT#U$TotQhuVop5`DVOo!g!@$ZEstK9h3l5YTSfm2g1;folz6sdL7s2AqW zb-wrSErYqR%geR|Z{EyoRcyAtBzKTqqP$) z>82zfbu?p*sp27<2$@Vh{Me1cqCDZOY!#?86KZKgxq+?=_M2p@y<|3xhU?e=HsRQ3 z#h+C29hi2sfPbjF9fiqNm&)@t(1q&F!QoPVa;jXi$};i0vp2KY#&Ko;|E%l#dPjoS z>W4t_!R2J-{uHiDcw=gv>MSOrgf}bG{vYfV=e!pa3O`pPfwJ(%SmtaHxs*GHQlWe zKa4qNxY7=;5{bL+V`+mWz@(GkrJ4?l7`T=cw zOi;w~ZY00!d+?db1@$(K?2nmHz``8aP(H&8<1C}kY+QSSO+QcU^~rU|nefUh(z>I6&I!6aLN(;4apwOnfu>x{l|m9z5W3>^I}iVBsU2I$rvnT zt{EAUbwG(?&TCl{UMMNmMo)J2#{+j57&Utc-IM>2_$HA@OV|W1^Em!M8@>@0C2?bL z-x^NU(I#@C{u(x(%)0^%qg2N&IP0)w>M3($#%FYoJ{%V4R*c@wvWwRk1L0@<(+7Fc z{&@ejk1HcjA?k^8sI`|_qSPzepL69du-)7DiqOT^*x4>0|J(9A>hx+cYBg#>;&p*7 zN?tR3qBp?mGOY_@x>`$b<4@pGo9Em7B;xRWNFYmnaVe3fl$%=rKFC3{`ly{dlQVGgLexh!+Z1TyJ(?W5y%IOYche<2nSjNsO%fm2>|x)s z@-W-;9(X@=Au!6+1tv)O%9LWiLFnk5MsVH$8n~~V{(HO=5}evN{*DZwf5$00hA?XK z!Gsf1)xX)T+W&jTT1bo6*41e3RN_#~fxJD#>R}BKR-#_w&Zm zU%|y8k2HGf3as*FNqphkgX-t~-H&FD!7y|4*%Y+}i2QKwVMlX4kiA8F^ITtox1ayI zspCADy9GvUT&RGMlL^+0qtU=5mmVt8Wd*eH*Bw32M?-^+YOq}E50Krjntwcg4m3}b zSP6j#h)rX?yw?k$AnDK)#@s}4#*X}8&lOCz{8W^C^B2nRc$yVPSqg^NxyZBqmAJIY zb@w-sAM=F!ki{|WIy^Idw!6cA0EH)H3%@thl1<7fe5N%9kyF+-GKMz?U$*t0^BCU5 z>9?u_MOU)1DVZ}pjYw@G*u1}gNeW>%o z|M$Ea!Ou|^S>~P?!HYY;j#a-d#2cIieSa(CkV|-Jb26C7OZK2p);*q%GG`bfo*Ok_ zM}8pQ4J<(sU7@M;i$$RQ_@y~_fgoAi-p$rgo{4OmSeiZEu%En}q9x?TgF52-MBI#P z+eVJ<-_gOpxR-1t@~_*Kp^)&8R`v;+L6nvm&)+<_fV5h3IOae}e*e73Jgk2Z1uZjA zXnZ2{j!*Yht}CXZ*;?Mau+O~&DYQ(ed!6FH_y~Q#n(uvr4`?d&>efVL;s31fT;^78 zg@4`HdaSlQl!b!K81U<1bLk8kML)QA?av^FOpJZB@hHd7V$VNvtuMek^T+@5Fmd;;u;EDKf4`|wll5!)NLc9JhMik2<@ih}2^yKB^r%|fTbR@a$$ zdXhRsZW&s9!SkVtt);%%Sdw}Fo5?E=?Dry@`aR1bOcQOev=8{Mf9-_{!ze`btGuEg^NGooNgQc?WN*7*UYV{@DSBW&+pNA9~j8>j#;A|b*sqqTIKpYp-X=MMD_Y`crWhTQ=3`&qZ#j6 zu-J5G&Ok*G@4k18`^XJ@n`w?-?uG4d`>GOC7Qrz0O)*Vz6-LPv?+EZC@@YbJ4<6v_ z!VBkiuV?M(z@pR!-zA+^n2irNR(@3u(V@YmX&gV1>VwnT)l<`85X!@NkjQt;pZe1E zA!ZL*n6`_0hu{KGL_a#Gl^eKR0}B@itx<|Ju_KCW&!-KP9$=6(Mtm+u5EI)cAv6zA4A409b+!jD#r{z_0IH ztLJr;P<#335jsOY{K_AooKT~M&vq`Z5*9fy8m}ALC6$FDwxaiiY)J6vOvXN$4gv@8 zeL8fimme-9Kg$;(_7jfG)H`BFlF&A2ma~wG1Y(`b_MV3>L;J;!pO1IGKwb@ZJD+2p zk@n|{E0(GA`Kc@Ce+fV|&^@zV(Q~0eb+s|~^L*9lDfKk}del`s{y8Yj;&v7mzGm+B zkmms@Q6=;AJA_^(GXKMgFk?7y@>GpNnhcD-6Dgm%=LlpeLAtM=eo&alm1AS=0ncNZ zsXxE@h$*6`=U89I!(n<4B~1oZIBjz>|H}1e@GsgWQNLOb$}2J>3f?-S2uoW{zRP2@ z=Ms7(Nj|MElE|3X#|=`Uc5UL5q@d?-cWOEf*X(eO2y@)@#mWk zslE>$;GHh~f&N?toPGMF-1hSa5DRo_bJ6$0vX4yx$;%Gl>2=`lj;T~&JeqRqo{Ke_ z?RZ<>VQmitWV|K5sDbUiBW7}1&oHx8WjFI+63n=eCiTSAkhZM-Jg?5z|5?|!!sW;Z zB&MTK(yX~%1=3X9!`D9J62+1u@VUxAA5 zF`;>H!e=9%XS0!b-WAkiJ#iPhv2e=TRmf%tgShV6CqDm4p}Z|KQwK!#@1WBx6ABv4w0Z`oF^n9POK~R`ds^ zW!!GE&dDQ0@DANh-AZc_Adm94GYXz6!@}d2;=kFjkV&jRQ=hm^VVu&VFGoiG313zI z{^1AP$eJQwf44qb#_`cz+Uwl4c=kwjwZXMpaQ;a2rzd%}m=6qc4|5{$THLg8V`CS- zQ&>OkT18E^ej9hr-@+8bHY%<}Ixvwtl;4J3XyqcGJzZ9FXh#DSP z))}v+*~pidtEX~o+aO_><*L151;ixK2OYbQQETt zp9>iA`ITKH+5zV0%ALQlR)8kSPhuQ&HD=gG4=|JSWy&%XB9D;c0$*Loo|pjr&mSaf z+rL5CYWIqL)^9j>b_Z>8bm<>*Iy50cUOXTZAOd=>J)rcfTZ5szz;SC%x0_uj41 z#=HFr*^uF+7Nr=OjC32REJh=(aI%D+w)Yt)sd?+*jz`4vl4ASG6x}?6vgfB5}Sjc8DHdDTchMe+>szhu{yRmIRLs;RAc-(RLbf zYErTG>E1Jhj;^VzN=h-M9?xCV_1Gb{jdY4Z|7zdv8JOXkk^kyUMQW5xrPtY7K%1Q% zy%pEXKzf&ulw`pg1T5B{-WRrl0cooqLh9?_Zpt0O%e??r@4f2!hRON`a`C>hF^~;o zD3xA!(vo7>4Xj_pp2nTBMki^KD9LR%{;{4BIYd&|;#W{_m_w@Ps|^)%6r>N8a;B#> zc*(~jvlx3Hbb`m*-l=1?v}6kd-_@KK>|_bQS?k&d1rWrWE;}negFn0|v++d{JjfEw zG-T%@HySo%IkndjydS0qjLn|S;%~HN^%6RMEvu6{8Wl;UgcDn^Cl0P zx8EtH%JBT3bxlnrN)@^{7CK^TPg#gLL9Z)?=C_|wu)JGAmb>Q+Xhzl5>aHn)#j(Y1 zi&}dajfuK+lf@lOToc2Q(Hle=m0JD!birgyMD+LDmypnZgURcvBU}r461~@8+5Eo^-pnCDQ@C9JCV+pGo9oS_X*uJ z_sZS<{Emocr>ONMe3`?k{JPf-XsPJGY8jF@xXYu!BP( zk%u={O0Aa-@}+yl7KuGYuFjo$akY>5yJD&>XJ0E2$U_o2<~N21R#-j}Ex$+pIZeqlgDO|S+iLu^YT1qu059N zlCMT>qvIV5_Kld+Ch(-@_ylg9j&TyI2|$_fFXH+0uhBx!t=Lz*4%KRuPW0aX=|*6n!QW^JgzAP)cE z^ZEb%`_vWRgT^%@Fy;TEP$X^;x%e!eim1?&7SQF5%|zzK=CFcbyYfWF46Iy`E zZ9MpILNrvJl#2X296#klUCS<7oxeW#VU09vP55jwex!e9kx>WVYNbB~-Wi4MjYbbk zlSgsFM^uA#t{bF{cDSaWa>qY`vZasI_K>vme#*!(_u~#xs&2bOoq%7C$=%`agQD~0 z>N;O6aOY*xh0U+sxGg@T`X4C=41=;h*odctV@H*P;OlghWZdnla5e_31wD^ku}FYR z$q{>d)R&N*qpL78t#~!DeG+xq~hebxphGY1a<*j#JQ#qVjef1c&7Qt5QK7APd9NtLm5xG%L_+PUB z(ihx052^7~x0e`efIE zUH|9rV%sf8-hc`Gr*9*6@##87(n;vtOJ*URj|mySlr@WH&s4kaj{LymjcR)~ z+X($uBM-NVLMgOc*Ve75uK>+$T@j6zN{D^?*{Ak4BMH=ZDO?WVB^^^^O;jE9#H|&- zUqbRDIDANRYjk5TIcA+VKGEYhDh`XCRTb~X+0R1@tn@wbdci=r$fy_lWF9(p7|o-; z%Eoifid8Usw14kS!r#ofCYa3cGL5spFLs||UPiMEUG^dyqi}ywNkZZHDhPX+&t3Ou zg=gFHj8*%_kW0#GOooG+)Ev=n@~w6lQ`%Wy*Qd9k}ejzejlJ98?2X$ znP-jSE+%^)m#IyZT50;%-%$_DeL~CgCY+>t!zYEjx>G14 zsh`LvHt~yLsRHHud15u|lPKGIk@%hLBpFSu4p?2KB0tZn&z4b~g(9h}a~CAvf!o>T z^%|KbSU28VUO7WW4zU~Jl%JSK^J&%Kp9-ruR&iIQ^!zmP))`)*C3w+WkCn{tHd2v< zlvkfB7_gE#p8FZPPEnEE3xZERTAu-jeWhnp7>fQx#Z&|f_ zOr8YUuiF|#tk!{LE#1e^egW@OCJT1NGm*>(Z%x@{FTzuwhcUp>j}GJN;a?p8LU5Jv zagD=Fq({Hcz7_g62$y{Sv>Uq&fX>0M-6o1dc=|p)jn)xA{AT+w-tO`NlJDw1g>OyY z;g}zQRa)XuFbd5p>Gmmt3S2hZdf2ZCS$4Bh;5s zH>+L~x^FbN)M&qj!}_L_ZBq7dQu~f$WWaM|SM`u%KB^D5tZ38?mmYyj$4nfJZ6v{~ z^lx#qA@t@d-3|0cNf^RVd71OzTU1`ZzCW4vIicTX@5h)}w?gafJRjh(PdZ-vhUErt9JT`S?blkzQQE8H~li&u!uz?*Fc1sjrcW zrQ1Vx^IuEFIC-CIT3zAz(s*5(o-Z4n{+a9Fx}OY(JNb^&T(JVBTMf}WAH9Q;gB|A! zJU*lJiC4Qx)@jgRE5KOu@jKp~N;-2;&;_r2m-ATJ`y1cnS=W(jJ#jX3?FFCz3ZWY~ z66Sd^7DFZP`U>Rw!!0Jshe=EksQIv1jLA_I#260MvT-HBi^e~OH)8+5$%U)e_WtgN zA5wYLhuD(fG9|-TDGm?dlssUU@VXS``2+oo1~hPO#K@~vb_c1~f5#7=3*&Im%0gC8 za~dQ&$2u7(eTjMa`jbAJNNADzCmoj614?zYlV=s2z)Dx4aI(EH96S(=XWGI$vJCrSO;q2- zt85rGvjkqgJoXq)78YLN3-?35Kl(G2k$*wu*RvXC>0UTG#+qZKFo!~k41U~4tFf#@ z?m^J#5N0&E^0c@xk|`+|_vy1lL4*H+?dd6L$n*A_od5Mw+&2GLB%AO_y_M*);WXNZ zPH{I!OFIMbuECKVkq4K7m$BK6u=vNuBaNapjFsRaCtMdd(~0*3OVUIS%_EDwwtBGL zIJ~UbM#bJy3U3adRpefp!e8Idh|$EB;P*GC4mag}VBYiV;d9^3piaN(A2Xqoic?rW z+CWM0d-je9_r(rj_rK_{+7tDVsUXb+d9T1`QDQ?2dM=2h`K(Bpk93T3`gq zn!}d=209^;e(1b%TQew2bSxq5Jc?{Tun{KM2P2LNrzxJ)q5sC|!>;O?pf(a{ma#dF zH!J4~O&JEjlv`e#-)jKrI?LB7llt+xRvj0ASqGf2;0wHTd=C3hi(c)xmPGi8gxAD+CAI2a3 zdH-_E1jT&~PB_JsA%zuxM zo9vBvB{&DUpKTR}?bD$l+2@GV_XXIV-ZrxQrwx>z*_$q3Amfo!A6mkHjKbz!EuOAp zxp1c9A%_`73po9%9+eew0x!X7iB8KJSc}M*EO|K3F;bFK$UB;;4C%=t`3p66wA0`?n;pp9HjGuA zXSSaf7zAU>N%cPCkGQUQzVlZ5GIrk%DsWIw#G=hsaG;Ybz^uj^%Va25LyU5M#k8g+j456#OiOQ3udE6h< zN&7ADFH+XZDA-rDBB_U?LVcc+Y{2;RI1y|G!e?9k=nmC_h35Ihfti1(wEf;zdwn^^ zYo)PoX8t93=4z}C`!_*#{#Rp2R~>{%R25!mqa)wBXZ@8oLLp97`n1` zD{VKaR%d-qyEGo`gDjstb!)~>I`z(XO=YmeEvCLTvxxbQUWfk?`mtLz#+jst^LQ&a zS;yLR7-dgW^WG;9;vUzwseZW$$o9V=bP%?YHLTKD}T1^b}BwuAA77k}7@-N`#Gu5Lc1;`hhwB)gnm_lO<3|UGbRxhfU^nO~#gu z{Fmev7E-y_3~x>Re)1njd7u0cO48nf$-`$ajKBe=k>XYipABVBZWAW7NwnC`BU zFBnAI8uQF8>VMWXf6qkdmwRy-ym&nB<8C5X?fSxsY>Nk+z8SJk>{E6O-%YCj0zY~`zb=svKoyemnsmW8B&QCwh-QC58#|UW5*8<5#yZ*H zWUw2O{lIYaOBy`;I&TwC6@V0yj-69HyfF0G>dCP3R}B2vL3YzD2Fm1Zd&DaWkv!34 zH2zQy4NPY?YQTW_%)7mN(qR5V^eHcr zo=N(jbv^LlAajW#E4iD0S-CVf3+6&H9tY;KkTV)Nl^Ja-Ad~Fp1``XYe&EbeSHd6h zM%I6MA4U~P2%6GdwOqtLRgm zF6>YEMZd5xsoydlM@i>|sr&lv@NhWSTq+?SP8Xk&vgUWhorfa-@cAXc+4SP{tJA@# zt^0BGR01WLMVNnYA9*|Z<@Gdoi;`5_^rHFbYMLoSa8<~XL4qZv) zyjX}yU)6-YDk#a9&M~iNsVu=aec00#HH|A#;tzkMa*)F!eEf|9B2oHWCM#duHqsXl z*9SWk`mkTdga7=aK`nb(peCvNT3 zTMP}LyuC7|KXwJIj{e9hCURelJl^=-5O0K_FB_jjD2dO(9%sJydLKAkrhTUA;SZ3Z z^W&mq21ew>QCCKdL06RM!!FZ&Y>(0jZQsvL5T2s+MI?a!qQyOx=MpG z`Fs_gcFdt`*c=Sr`w~_wSZzQmujUVJ` zf%|f<(&@yU|DXH+*OmIop3M5CVPfy$XmD762?P`;b8Z}?BbkKMs5~)WgVL8^)aup- z=QLl_o}$_Wo|nqCqq9};y;jh$y@ZDJ*?0cNg@QhqSmxe-`56=Gmt)1vr;WlS4z0o) zWp@3rx#x+NuImhxx!-0jnWZD`tup@U`>hU+JUp@eWJd%162dzA(bKLW|G(x=pElV-FAnPlsNbJex3doe0`4mWbFSV?7zdg{@?$999bbd zA+wCqpwceqy_Aqj+7XgSQADIfQf5|WDcNN2Q8*tq8QFW!viBap`|pqU>yPhoe2%Ao z?#FTe&vD!y=k2_o=kfcxGIvl49sAi8?Jh4*16 zE<6_2XY$xgY}v8vg>m{2nLm)}S`bc8+>^h5>(l93gr!T5#VyA&N^ zr>F5^J(T3k3bsUa?AgFnjo~GsVd$LAvM- z6>;-<%B1z|1`s?Zx9N^;qdYaU*tyV8`ta}V`q8sN@?B+ADqfL!AGHhTvkfF@NZ;pcJ8 z`?SD^@~zAyFUU8;rhdo=q}5tKoFzFOv#fj9!;uqcPSW2}>^TkWB3il3JKR9veUnbk z<*UH@#4ubyA`-dN<@d!Fa$?X(-HwES>rmrhxGjx262ry$diRjN_fn&O->;4qp!Tq~ z?A`MRW$`)23i;=+jr&u6!kr)YFGx!*Iv_cZ|wp8 z4fP!(mx4*oS?9gnQx{Rlxs5qMEeR!rYL>YEjDUib`r0m~P~acCCHRQ;3G{OPDfE7j z0m@@x8{2J)VMV_8p^wZ9Fqt@Rue$v=hURg+8g}%63$c&x`jh>`&8$18C+-=*GRyYJ zaK1pWAbORZ0^Hz{sLi#dARl;>#~WDIe+<{7lh?(M*WuJ~vq$V$It*sMGT`aTLr0Bs zuKOPB19_<(&g`{q@N03yC-!ANPUjv!&;808y0d#4*V1l5yDF<~zEv_Pxv~@G`GKgc zdsAvy*bA-B>@LlD>xI4NpH|lB=Rmhzq}wxbIvlKv?D2o04OuN!uO;3(V#S~956$~+ zprhL}ulI>3IgdR)Z_1ekQ%U^S>0{&YNdBB_Lyj$2)UVYgXtv|wr|rzXs&UZn7a=gg zK>^h{JKl-A_wg>h;61K#R}5La$gQ1Q2E7lL0vQKN@ap(m&LhKlsIc^!HH-KSttKCx z@X;rjns(hKbvh24sAbV|;~o~LNBPt-*MRmP-I*BMw{Tn8H22GEf2_ZK@l&mE8dmVH zUuKTXAoJyZ-&T_-MXzr0X2Yphm^tsPmHts3hwKg>JY^Jv0daY8+WQhQ?nW&1*51V5 z#Vg@7YbtOil`~_}i_{t(#HZ?ZpYb`38eI`%BGx>X%Y8ti`8OM+9i#0F{Lgw_EW#yQ zT$Th0B5dpyB;RFAK<;32F9Y#L_tUcy?-JZOkun)m`V-C@tj^|bn!!X)hMrirP(0I^ zqs~jTpe9rP2D_sJ%5u7Gfp1MtgQ0=*_pWMERm-`cW-qzMZNR^TQt2uWF+wjm7 z+?xgT)vt2&c93~uUwQSjKUCvE<1x2{O<3wm@u@Cm&9^Aa0nu>^3 zxcX<`l_e-JV2yhnn+NOWO;3L~FM^`ofx`w@*$K96p7m2{F<{do&UvA*4J_V>Zsv$z zh94Kzoj$bo!NySflIvm`SlHaL*7ha2k8abhhT`PjC@k!spC3J8sqo^%5!XSCaQvYp zc9)tc-On2OW3CMD>{0iTNG0#Vqq+9H&d11u$ENm;ZIBS zJ6zfxS6l>XKWvhDf=J!(`ITj<d@CkjYGqZTq*ZuyKPZK2MDKgk8_TgQhB-*6X8dz_2ZapB~3t4)M0eXpL@bP8l zwKrd?F@<&@s6Gl|%Vmz}ga8VNq;2bY=(X{``pjW8)TQ|+3x{&PYi+$-{GaDLgHyQI z$F2^qibw7{mehxWPfzdj-Aqdn+uv3iD!K@FWhS)f!|Rdh`1hePwt380x#wdZS_#+p zhvk?C&{AHp>y>xks6(+!%4W)abQGG~hLXA#ycGH2qo<7|dV!PK;KlhZ9T>g0t&3~Z zEUNa*D24qgBe`Wx>oqGyaP^j`Ee|B&ex=JVll2F{+%hFJPc!8VkF?4PM@ikA$562uJ!P}0*X}JL|8UERd&JnsZu0jpne)(Y7I~J0t;92WLBY#Z zii?ZnlnWPk)t_&|XikowBkB#v5Ozg#acLD3wps??IJN{jv%Q@GodamFqV|e-JA)c0 z^o}o+{B;Khy6@ZMI4Ih?KSXk*_Tm1W4}^EW+(PkJI6XPVv;dz5&aABM>%o~fCXOXf zm+%?w9zhZ2bv$wIf#ds?1?Up&?G8OpM|?H@C`a>o74|-SJZr~%kl0maqd*l)M?@bT zy&6g8*jedq&-ZR<19zLv*+PMm#I>TjfrbiRLgcF8p7-+f#15afthbMPas4w#9`SSx z56@+(W-0fhAOGgcGN~14^;1;~7U@CmtwEWLmUP66$l39{BTMikD0Rdjuo+_FuAcTI zeQD=fm@1ysGElM^Z<{24TYx!Z8Ht|aR=l0hcfZ-S8-3D=SN@%Y@TO_Ilb$^nQQ$rq zXKKtxST29Fx{*L~RNfcwSgH~uey^Y8a{tLjF+b57diE#{#Y|8k(_W+zgs5wu&|Td? z>Ffx)KgTy9+w7q4k~RZ{{k8E?mZljrx~XxCnvsgQczw73+5`)Q#X&nJDyIh~ehbg# z-Pyn?iJXU5%ROf2hUz8J|`0Y#g%Ek`38(Q})pN}lg0Z!UxcT%DC z51-M&;&;H(uQ3ww>pMQYCu3>yR1>{ZU%nWtB6&*1ZNn{O9%c1@wc*n@b8vUFphqTq z2K*fRcU-;(^) z#SfeEK2~o2F@WFC^t5D-O<*CFxL?4jHk6SK+O$sU4+Y*|m@Iufg!$S2wUqtsU{H~G zU9O3RIORrB3AsLuZ568VHO2jS!_ku8&SVsM*na7j{3*q9J)L(a?XtmQJ3HUvJ3q*D z;Xe`cXa;%L4^|{3)PP>3^Vd`Q8@Sk#vg34GHG1yrf6w=umhze2!v7ZxVA9`=Wt*82 zq?NbvOc$8Jtu_w=*$n4#=bCE%8haaN@;C{NZu7#NMBdLuWvwWnu|=lwZ65kWT|Oe+ z_#2LHDf%1!W(>~;GxF3ay5a|uk9ol|(`Yo+$UOTsW@%P}M(lw=R#dH+Si-&p5W&U7A`RT7_k@avb^}0p7ULMH_ zSJ76s?1ICsS=zmx8_@ouMP5q0162dm+%Lb0$C#4h+gb~G7+)!PkZ!6MW$&-I<|G_c?j+R&KTMKj6{!$_6uTP6OJdo-Qy&-4z$1S z*}G@ABe9ifkej^*)NGZvAK~dC`QB6Dl}~;ri>LH$SsZ~D>G7p5nI`z;IdSjf>o(}5 zIm*x_orCwj=vz8+*8;0!U;5(10=WJ7OXvqZpa0e81zQuBJ@u97aw~s(s4EBbrBt58SrPdEsLGf@07OlP%OD$^=Tf773jkP&XX$)@xp|$Hhr_s-6=3} zRJ8GB*-BB^e34zgc^23jy5p@x#^B$^^@Su^2}0DUZ|s^e6+!*$xsUl{3F6qYo;8zt zCLU<~_|mHTAFiBx?aia{7Y=v0%4^SWCe&h09^p_26l^`Q=y068kAtFL>KG&x6_q$lv+eToAe57zl!YW={Fv))JG>Y^4Lz&*m2oMTad^W3B zk-2}DCpOmpu3$Istl95Fw8WXWFV!NYc?hS_G``exJ191VA$009J1F-x*LD>ua1l@T zoxjvBBuV+SaQ$-kc~TEc_ss0xBR;~Pm9gxvhA8D%{B38U*Ib0x$NPSPhGd?=?!p%n zp#sE&^Dn!9!h0ygpJKio`XNM6*)x>)yKJKv+zh%#L~W(GMD&05l~g9a(pegQ(aXlh zvfno6Wd55QmHa{IZ%+JiC9yG{lJ2C(fpyzy_o7Rqvm*87mSykuf@jxz;n;0F3%Vi<00Yv z@iNssG*0*A{dxQfiaprLV%idneUBXd+e9kSS+`2#*`0hGSILpoygQT29XZh>uTJ_W zLi99~|yws+h;+4(>utd<6-XROGUGbYGWTs9XUlQQ2O(o0H{&wrn62B zhxUF>*)609E@+r`!N#Wr&l-6PUdpt^vy%cJxOZ1#T!Cv>y=@#8pGdrsRFIFk8p>_E zbHc%qZp$6fN5SCgz4Ok^0~9M=F!RYHAzI^G|( z-uvZo9@0$NJk;WH#-3-*>gvKZc;Q8ZZodNg|5QYNkvQ}i&WHRJTKFRgkC2J~vRW*h zmQ~!vG#-ta7T;U~9>rlUm(7UE-DtM;69iw9Nex!YYK+d+=2h2=w(6(ofIa5>r( zj8r~9tZ%uy!lz!g%qv_e=+g0gYHTzS7Vn*S`ficrZ4(DW+Z|m|@`l4^39*0RmidNo zc%F~TFSTdmo~8rsD}&q9LgBdI&d2B6Nk0q}*(v>UE*nOTzO?*aE`{hDQTJlvYv2(B zmi$aN!5wvhj1NbQfragU(iNpY_=kSh$+W}>brt!vKAxO_+xo*j?~;qb^`pY$bZ(N{ z!&OUfTT*~K-t}ztJsknBsG~WG57$Gv?K?MFeLH+)Bq2EV_YGt*@(1S^2ZOu+Q4P*% z3K-bR*FL+fNAlIb-nhZ=9BNDNIQ&rz$6&Q^uIC;8a9Kc8Fj=bt-Y6-XoS`d*=ilZ+ zMLx9sXT9e7aJFJ^KtJw_>EQF5Z346K4_`l$T;oBzzWU6c-$7(SeqH?i`}zksevQe zy))evX()S<#x6skhU6z4<32X3hnkGTwePMj;OpZp5pVOFP)J92FOR@9RKCA7%=m8t z99Sr^A%VZ(om{R$^!0Mo(lgSuSg9rXR3SNsnv?O}_klBX)=zPqUsU-}bUYf@{pmlh zm5n&Xl}k)5;^M?hG28JO*ww>ncE$2N6rTKJvlu-^@}F84Q|I$=TtR4*7>Wji$%`ti zG_fE?CmXRXd=6&5O#R$0mya)>`?eRemf{_em`{Cev-oIWU!C)wehB|^j<#c@8LvGN zc^`H%ANDFvhaG*hgmxu%Q!FZEfAWqo^T;`pWB<3ZMB_*`Ufo#t)qWR)>RwNR*x!@< ze)#olmq{8#o?~$MnKcNCYk!~hl@)=jf3MC$XeMU!lKZ>c1L$L?%%}Hn0|lNiH54&b zgAmJ$UIV&me0|Vz{C;vMMo)Mp>{KnpeQsu-a*CVqtpxu=-q&6zcgjGr<54zL`j&2q z+g6O%v)fCCc4uJbmddX}4Znbu|LUIBqfrk6+_lj-wg4O9Mg4*141{pS-*LBV{g}8j-eRGt2PQw{+)#;hhKwls8YYuG zWDGW^rt@t_=I-e92vRSt!8bijY)?R3C{mCOs>X!v6`!OZum0~GUyeU=&1+&1S5I;6 z!sxdD^(p_a??_vpSd+BxQCRw2RPR;7B>0W$jCM`6;I0gbpE<4Z_*L>-cX&%NATyV0 zwA&gg56zX|+?|M0ZgvqIUl}NSMExh8d9vo5l@Cn6b#EL!> z7JlTmIC?dr>A)?`3au(!Z?(vc7-)w1BY~?c3acP%xb@QJSKTO=)1voNy9z%{`cFx6 z%%bA%=W!#KYf)(UM!4CJZal3T{W(ay7^LsNV!ql|2$m0&qBv*PQDuj>T%T4w4Cmjx zdh5&pe6@SK;1W(txzclkV)if(%U^kwl+1BZM8&kfJgp|@Z`*7;ju(nj4p$4ted1}y z$95O@U5+L*f$fD)c%N#3GkvntWe2z@sgmz8uUCUuZb11~b zOMqg`R^^<!){fULpJM9(s^IZpOhc_HLpty{yv3rzG?HxpV z_l58wmKN}hzsH_%wGqr0N2Be?eNN&d)~~KG0Fh^|n95%#=O>u0)g(U%PxHSvr|MVY zVOPJ_H(hfWGFLo0LfG{&dN(%3zfV+_1Ql}R4UROL*+C_gWSZqnzEKwcUQ z&$@DP$%g*#y#K$>HGBH*h_gJ8&^T;2muK%o;HI`ZRMJWAL+*GPd%{^@G1oLb_Vzw} z)n`3FRCx|ft{jV;IT8fp3%WP|K97a{iH!*xERwiMFX-g5rWL$-d}b`t{X1;cql#Jz zibRd&LEmua0HnIZ9b_cx4_|S|*6&T8c#5UnG3p1I8fx*m_4m(auuc;%7?I~Bd6w2g zv%Q7L9bnCWll0dq4c>q8x`efspV^M(!@=BkHD3DDygUYV&VjG#TTuDtC7S-2?J3=NM!0 z*0CbHFPzcv@5z422giSd2qo{AN1Pm7D_Ji5ryNfDl-Lrs*PB3fTWGQSKnrBvw~ATr zNy4A9@*AUW6`-Sdek=S_9@dt>zlI}-|@&dlWiW%oy+JG@2sm$hDqCol!6&c3y{MkpiW z{&~|Z`X=C#vgUc3p9KD+LN2E4PIzrDGCV9k5j$C?i+V_I(%X{F$_+7j_-IgNigfM3 zNufS#S@RxX)Rj~)8jS#+%WJ`Yn2M=0JKV}FpWuT*K@lGag z4bu%4f5wXzqrjyHCl`VSFz=Y5!cOURWYcF}oy+hdIe}~j&N^NwnY%+w`CSW2?!PNX zozaKxdJ|c))Ot8cf3v_=Ngs=@_cQBWk0p6ARsmLC#mH&ZS^0bW5XsXrYrAh=gAX@J z8K?06HxI49%C6N{duj;`ujyOq7cscB=1J|A{a2cD0vNXQSZQ?hXh0 zS`3kl{-!D8fyH~rDba@!3>#}i+M-Lqfk|hmHMbDs4;3DyqZvnIHmM^0yF++Z+KYqZ z(gOanu)Xe4&qd*0uXR_A%7X;1OpCKpjli(1d}*BQUund`9{BfGW5=3|Wyb^+<;=dn zQX6l2!IZq^D(*Jmx2y=}(>X;LfA_P9OsOD+k>1#dH*XSdI#C7LTq%IVBW7nl4L0Hn zI=||lr-R|ur=Pc@D;9w52tQwUd^(Dtr7%+nIwmp#)i2hoYFT;z_ z=k!xEncSy*Nax3Hu@!Ws=2B%iMo~YU9MN8~u3XxA{ zZNl#l?^{Nj2~#vrNl<1IN#E8@rI^X^VHg>{DeP<5gNLtrS3O`HgX>HWU6^*Y!f(k$ z{So7KJeB`7Y@1&mo_LhNs3Ax4ZC)8UvmFbojYDA!2ob)oa|1ugjIfVzaS3|qmt(Os`4r$Y~_C{(t za^9Mj(y%|G9(?&GFBE2EqDIBno}CBhG1@4vr{*D<<5732>v2OKF4j{jH)U~BUboae z6?-xbx2zidln>HSh8i|b9_83d2}nK0@KU`Aj@R|f7WogL7M4F{|N9p&+lzopUN4G7 z+?_1Q=m2L~UA?83J@|ZGRa9j<2XkYOcLrcN+;}i==6-~Q@_%*t>C>nClVmI5$GB3? zIo-zp>_-$EiX}|l#~_nhmGP7FEC@Rmk^+V8lvAO~qZ=<5&@c3%GP8Lbu)Ms+kv>l5 zImCr~1sK<$FC+vhOi}UYFr&u(+PJdSQYawK8Zjeh08Nh2E`bP^3E3uGgNj#xz9-e$XH#k1gQTRt{r;~^N!jZHnI-12Euw?Q7BO1SnQl67H_A6!@y^gtY zeSI|n9PTF>Ge^U~W5~!o@ca-O1}I!H`pP`Xe3P5jYKgfQiOeRCB9v47Xlb(0?y$PXLK zocK`>zlyWn2Znoqqi63qL6p%q*}%1*3Dr2W7TCS();xacJ+Lj@t{*Bw z7H<`hIhg7f?Vd)8jKelN#@sz`mf(%ihtR7FTZvW>Jv2`Cks^I*7sZ+K!1|U!Tb?p2 z<%p}2*6&@SM7w>2Yy}MsMQ3y2#GW%t$Z*JZ>C|g+qN3*Kq1)v%;9#KP|Ict1ur)q# zO?DRhKAvOFCuoS(hVwyZC0EfxgrzxdxB(nadt6Yhn1PR89ih?-YxvpB>DiPx1Cbh> z7wT=#M6m?d-;`8(!f&Y1%~_a+a{Tr$VVyB*!dYzdgI!0bV2hck>*=ihlt8AzGMesK zlK1a2y)Wm>fA%9(8e(l@B}urq?E6C8L^M2Yb~tkST_S|q+8;}QwG;Pj`AS2_Wdi}D zqY6g`y>YtY{J#gSK5!uI($-7gBGD=G+8&QTuB0FO%!1d6hxq<(vKaS75=sXDTUJ>j zef>wDGAmN@(PN1w&0H!2J&OC|Od$+!bJB>1s)V7(Rd!`QzDjgZR6nhI@ERVwvDx$G zwhE{%JYy!QOZwzT^ z`fYS633@kPM^=xhxv9sk5cO))Vb3iq~2YH z$^RJcUYlyh%_q;#JW+TIT*4_+Id=x}ro=v;8!K5bs=`{KlVbx^HA>RALcFm*z~Vj^ zpB*Ztx?bHRn}MoMS3l^uctb_Uw?J+p1^#T^{hn=8B4#d3E~v|y0Hgb>lcKAi;Uj|v zw$XCw)2@k$Q-B-Td6usjj?~f5#@JPGSq87QokutjhQcqR1x(l=nr9&b77eU zwOr{I)xKY-qOCRkaz`K>Hf6ZQF;j^a78*0`0m_)&cqAsLn1|Sl*(TZoD^TcOu$n46 z2XVzBPS3i2Lr9xn+8G*>_gByvU>+C?2k+)l1?PW;2Ssh)l&?i0|AWcml&%(7*)8+q zx_vb$thrRHRy~IJ62Xr%#+F#wsL2n}Ad?zmK|~!hr4EQPYvLsd&f3WS8Y^ zKX$2pZH#hw1qxgH_V43pgv+I&c^mE}s4aBix3*FR%6%*k?&9o)c$Hro56)I$IIWVx zo6S9Nf|mVIe%&IhGW-tkUh06DkT)4mtr{R!Eb>9tImFSTr&pXF=c4bJpL5wX{WSu{CxD5Ec;{;sMxA&OK{K-FPt2;o$0H|yr9BY$9rxME6uch;UO#PxE*1 zG)&>_8>vRK5bcsA@fuKhZY3-=^p%_+WQeqiSHWYuK1+tz>!7pfw)1aB5}a@w&mTBd zfS=QJ%jeshpxUQ$=ewr^FkDC3M}Ph^-tT2rTciDfS}!}k8$L`!?e%?g_q&!*omxlw zY<>m^Zpq^H7o;Ud9iN7YR~3TO_ZgF8=i2b#H*LQt={|UIU`0TM=s=$_jsA+gRk)VG zeiQT>fZwC3)QO7R-$t9A-YQiI8PeRvm((J_N|*g$cOEm5Z1!O5W-1|q#=z9*Nm~ed zlvd0LUn#|L$89xO=|12a0N(I~OBrhK?R4OM0R8)V-X z0*h431a(y>+GID37MlD7F4JId|*At*MDu&-dSW{y86XvjpOD zTjpU0{Xd5{FI!RKTK)k~u6kIRZl;nUlBYkAhv_qESChpnfSHeKr$cuk>?-`Q)++SjfAu*{)Lb}JEf3!Zy7Prt zr~L2z|Me^X->2Hm8S2q9q+VsFd5tl4irlvp*ZkbJgLv&w`u)OG9{L5;n`^sflJ{HE z?R2T%5K|h(Epa{*G8QjZ4(_Kw))9M zjr1RDXMD5RYeIoA*S7xd=PX1pOJ?L%tuE*gvb(1VxP!1gZ`IJ}tRv0I0w*c(qOg{QGC9Q1kij-uRelhlEwDU?u{{hG6B zE9I0sg)kca3yT$_OAm`WQAyf$`UGP?(&Tv?kIr%thwZQJXfdKDx-Eq|Bs6G=R^so6 zf*5~@U#+lU`PKl!6+CC1Mw(#y`Dwj;y(HA2XP1xF9RT%h_TO?3&ttaOT()ZB9NxM0 zd7;TZ5eJ&Su?1KUL%R0bWx9v6Fkrr}F>0}uB5zmq!rCYe4*TBGsLm$mOK*I&yPI2p zUh_Ja*Bn3Pxjo~;LMJ~lk<|1cL3|lZ7FFw-tN1C*tS5+91zQM_K@$VUkXqOi+Vj!( zBquR;Y|H))gF$>Z*MEDG%=7d!-X-Nja!e*4^L{VC(vPXcsLb(0Bk*_mtxni&3g&H_ z$o(L-0G03yo8O;QjVd1W29R()ggzrA~)wNkHSBc znd`nSkHdVt& zMdW~XZyjvrtftTDPQ>BmSlSogO!1$S*9(tLd3gP(McL-DMmT%^xIx103Y6Wy5jNfS z8L7mhOiG?)0>iw0?wk$<*#8{<6c+FlqVubb>0Z{L6c3Z#mb_%})f@eNP(2$m6#tfm zT7{8((Mbi{`^mV;y*}bG1jD^9k8>L1DKNVB`ZlY*CaT*``U`TkBKyd=7ENFXyi=-h zu-{gM1(C0W-O?=}``2^#=zub)wAk0}%3OngWL&*?2i{-?k5T2~&C{^UO!a`O#(V7j zKssBGQRYai?xbxJ+$$=aFL(NlcSVkGntSStj^h{RFJ`ns<8c9o znz&ZV0Zw*adGK=cbKp&S+RDC8=1rVcder^+6~<3KIv?x32FY@>HdIVa5GzfYO(>fJ z^K;oYtQ$4B&wK3nvtqIib2^OekeLTM8kwm|DG$^U+O>y2_bYsQ!R_+;a6aT(JnHiZ zY6qn=$y94PW>~C9%rt!a06QEaQXlO|#$V5@xxU)u!r7A#8{8%T0`JiKynr4rVD5~H z*i{|#pZ!R&+tZuM%-qBxC$Q6LmXW!#o^HW4yo6>#%-bf~YPhVcpdj8l0vwaCGH8#I zx_+CkAuaDXh`4*NVN+o{Z27W$i09Hg1Zlmd+S@Y#rmt2q*rK~pU-3n3e8n)_RJ_Zi zPUdvI{AqY5K$wMMsrHhl!**{;H7VLmM#odk5W2BE~ za_6FrL@&mfT`*|1qb4Nn-Y{C8E<@9_l;TA{LBjtlgSCv`5a#;5&A&_fjSG&opNmTW z|LcLQ##y7u-^DDoY3tqrLZ`~ku2ntn{`-y6u zxEfCvZA1Ds3aJkzec7~#l9dykm+q2zVE%1_iWcO#qE*D19x+PwuGpz!4QWbl@0Y`Q zPkON{NjzD~Wf6m~W@@GKk-3|ZqD2$>F;H)4#$I^Wg)xn27bZ0+RVsjvoIgLeg70KvgipQO?N=Jow}#3cW*+ zD{L&$z&IbH&$@A%_cV}tp(Z=p)NG_>I5=0MN#?r5RDZa*K|}msd5+GPJ1TBc4-bq` zXWNDU_SgKhEsuM4ryg5OKFbdLrKUu;ikz}qs=(#qTRx70Y!u@sbaE`e%Aia{MaAgF z5SX03y7vW{L#3mtV)j7zH{SZjw4mlzijzW@%Z`_IgLSs|2eXcC#OvdX_2SNbn0x&4 zhAu-h?D@gY94$BvgHL(EYc&I-9vt_bO!PxsIq0y@F&uqAs%;|{rciHpIJ@WmOpsVf z<2U6vf;NJ51e& z$U0>{r?&4on5~^wq`TIKKhjb{qvq&|sLcyceTK52c$Z4 z)yVS6_>BSUVovZEQuoO&c`xj4?;6_BS`|Ocn}zj+M3o~79q4{6>SZc(H+m$7iK&z| zfPjXdxrWme@LFi7+Fu@m*KWZH59K@Y&!=?XlS9)G=n!c!{cajeJYr>v1Xpm=j^~4? zjtt_l8fEG;)6~R4mdo`eNz-_26Tf6cb_E_jn(prAvxn$XIkwbnh5vCNxu51^GEfvGo@#laU-9QM_lqlqHgx zh^A?s&N@y@P{kjJ_mjPY`odb@jZdz@qtU|LOE)HgVtw0s`r-&a(HHt%s!aiFeNEoK zd&B>;AK?<(%5h8ZHN?+t3sZR=0ox0{8w-ag!ZRCP!vhi?xfRC(e0e+_p@U#KYHRC^ zG3U>+utj`9Ki8|$V)pUa_d|=Vk3|H{8^$i&C|=C9demZi_((7^lm!-byhw*J+dcnu z<07EA?uCr0uqlS@YHVV0vLXFsv=R!oUr_Chz{UL73e?Vd#{J$gE;q|$C)0MhJcu+u zwd?Ms&p5?O^ECH^D==1hsCv9}!JDrSc~^b-1{&@My-hqz(6sngnVNVLc5L}&`0Pvs zsw#@>x~cmE(~@SvZl82CKafK{D)PF7SR+THp2ZHvGJJR>BDz`vbfb%X6= z6@LLZ3~cfi68wyZ%qxnHB{hSiRgv`3gL87(Iw$YDEs{Kdk@Sz@p-B+5bGK5;?;6Oy z$52i5y?~VS_hg97QZUTA=wkf39gdz#Eq9hZ2iro7_UX@FgPLEvMwd&2VgIo^H%0x6 zV33!GZ6=WigiEi9Ol3&GYdbC4uUy)2=*Rro7r#=WLVDBAU0wCSR=$xWM}D{0Q%%H$ zdHnj%e#Elc&NSF%mel*Wvbuh)#xMrQXd8xV4E!diZCCdj=gu5S>0_=&IYE2AXW=ur zJZ9i$a3~NN{IYlw*~@WcX#8RsXAhcek1Mq}I)uN?E?BQV8HQ|w_kqb_u8IKaO|~LFS#pqFE&vqN+CTpija0 zTU7A{&fSm_C~U=kdK~B0gCAZg2!*pldklXzE|5AV<_E`$sfn3r(cqZ4MA&xQ|Aqc~ zF61|rZ$2(FfNkF{EgED`L2ZV-L9LfNT#G#VV>@>}lqR&x+|5{k`o`^hE9*M&nC-)g zXOUsZTJXvzG;|J@}VSxxt;SyGDB*L6jb`WzFk#d1UMg? z4*dK)0M=gWFEWSdh}}-cN`5|luqi`h?AEbfyx|u0<@U`A=U1tzqD-{ z;$1%PWh$zN_b<+$$#l0@7ESmS_;g(>462E=7d?-FcP9i=Q|#Gu4Yi%V0)j zBXCY@3z2EuHAWTQ2yQ*y7{5M^fA9N_9^Cd1ES_zR*D@h<2Rv+JRR;1QmEsVkU0Diq zSqkPlvQ3a1Z{zb#67kG$C6lv}4NzLlHN>G(1mXf*kLv;&{&$YoJhI&C4$K34jfwHt zzNG)G+hIKi@*;Q!kz?S2w1VSiN_^Jy!6%-agaWHpDjUhOSMK@y#GtSBMD%DV zhu&q*-j{2@oYHfTjn6J3n;hS!W8Oo!?|9f*dxd{U!@v{gR`3tnwftAE(l4N+j6nXm z=p|&Ft87an#tm+*pA$^Yme_+jFSq$SQk~)ZgYWX9YR*ki2)%a>G+2qd3l8$6yvhP3iu$ z&U)-kKPv7h{N(VdA9k1DV_+2?zyL_UIU+d**LKhdzs+exqjZJ-<(JbCx%5CG?%F2e zak_|=*upA|$2MfXe?m`;xE3`>on<5BQnCi#+@vL(Ijy)pzgfd<@yat)vK4qxNvVzQ z{tT+W57z2*qb025eJxcTX^3Ba#T=%=3uyXXtBH!1nb;NI$vvL22-$)Pyi8NexU&6d z@0|cT%7Nm;<#&7;h^GBNZ!D9!LpRjg?~l1KP(DA8I{GbFj<9zp#p zS}jnSg|Tj@2H*!%zNV?lYrNCYFLjvIA8>a}#(1c>;Odz@#>dOXpmc7-v-@%tcD@yh zbx{9-@1=W75}NWr_|-eJdgBU6y&AopS0Ee?8z@OuPgh{gmx9_9<|Gix5PaIHR|+4r z!aNJ#q+qgpxw5THF0R$IJUP`D1h!lCWG`r41~J1+?BA_+sn>59B?*DY#m`OB ze}~h0DyVJq47IoF8?748$jycQYbZRNh-47wE~3UBdY{jjviHe?$3ohnoh$?z@BHqq zFMR<#f=OU=#ckB8_!?C4_9O1Q?NX<(6b>$O)f^|EM8LRvqh~r@FtB&`jRvRoz#@;K zF$?_*($6^B6%qUstj`O1_2wnP%D#e%0e*5$;gEl0;Z5`%&p zTHGNw|64!u{b%*w`XmP85B*@y?fNSGyUgh4$3sK#uJ9gg2#Lgd_364sq|f5wzvl_1 z)3d0we=%B#+8)RKa&W}D3~Z#gd9sl?ADWK>-}cORW8@z(PwInx=q$cKAh|EPBDZ+zK;i(N67v!_rmewv zWg*Q!Kf}SCY(IBDX$K8``wPCxrTEDF9ZmZDA{?LHy`scbjg|{1Zw-4;Q|_BEm~}=> z;{^|oBY!r2Li)QuZ#oZ6W9h~d+GLS<@rQ=1lz&Y1@ZB4ob!rprSl3}O=u86v!xxOwW ztfv(;@(>s-{mp)Ew1U2Es?P(V8T34#5V^=ciGlR_xq@%xMJ*?2?B*EJ3wxnv`>K4IE}a@uI&Z3mGZd(Qmi*!?qbz+cen+ zHBFIpxo3YuScg-)vQGr0joz1!IQ$cS7K*JeX2-z6{OdOMtd;+(&u>?BYX5G11v^r% znpdk;|L^_(%}@TnPlg}-d2;tW zhqcc9SO>!v&nn^BX5eU*nVNgO0lYAKHJ*;_8~>~;RkhY&s`O5J^|58JDJ{KpLzL84 z5(!=X?7wgey;j{7rD34Fd>|GWk%B9JCCMxze1y`dB2BN`AZmT%8;n32!lQO~<_D1t z+&f3>C+ao?<_F}on^RknsgQ$zRfmr7zU<2#vSkE|?<$7a9jOGjaf8-9q^`wfxA@&K zKMu;o$L14OTf2}a_lCX=eK*Me{|LM8a4y^SFDn^kCoQR@v`|Xqyptj%Qc|fXg@%fv zLPJW(-XnWPX7)J0WXm4eduC*l`MZB_Pd&%+JjZ*y-+#{Ia^2T-UH5&B&-wZ6HoeP= zT^M^y=7$B-2zniry!F0r09Q-@G^M`Kk57XI@>GK60Jd7)yqq%x8YW-9Cb#xO356m> zeV&m*XkHj&wxuP4-{+W~3tPs68ypQaSo<*Qd#6K^I~64qN!20p zz5epZOLCoI7$ng#8^cblzt?jyeY0|7_85lg*x=@q^ep z3YGCb(D?9;?x7C@gtML<@lsC2JW&{%qBp_Aj65RN8eaJL=bZ37#T>E^UkxJBzqokl z@g|R8f3WlD-AKPL2kGw~R2SHmDWx{Ww>NR73Pt@^f6T{km@_K#{1feK6c0;cG9EI; z3A+dFrL@kt`qaYqddp^CqPsxUO5GOZbA@M$aU*9#cl?hj$e##!ApP zp3lkRZUsD(&uaBCI1UGH3Tx?TABX*uoznN`@_>zQ@s3h3d5$weI(kN5gOLO5F<~;r zpnuAIUMMCTPV&SaxLS1qvxesKUaZiEZwFpAuI4<4502kv^**iu9BY!bGuFq$3E3cz zjR!)}rHg&y!0vDGw7+oo5lKIISf0%I^85s>OjI)JKNWy)`d+Wwy21(a+c`P9F$gk7 zQ)wyEUmz`I*>dCQQg|Zb_*z!I7w%Yy&-XPqfQ|&!3yrPWu(pjZx`HtXR1LLSx*Ur@ z#-8Ppqy9>aef%f53|cCZ(bMjVP*~U$Ad&Cn$Tosd%%nh^Bh7)Cn;O=ozG=r}1i-^#9^e z_j^7Hnv<&h29Fv^zLBysCic~scQfwNG6+{(A?Tpj>2DIjP7QY^CM}^Ci)(NMw z(2AAEvEec`MM6*IbboRZ4t5Bi8X{;YH-t=C&nu0hvz6mqn|~pQTHLY??C8QU*J|h5 z(n&n%meYBkPBa|vSPpBvF@oW zPgp(!mE1ee4;=HDl5mtOuXH7)C3){{=Gj1aV!A7H-}_=HN^HF+Rn>*3Q)C^!e(Fb& zy_cHn-*v(!bwR-|tg~=8aZdByC90# zPuw5p=Mk?vk45Vah!Lwwan!Ec&X44SQDt9Ztq5WuP97}b-_kXVqjfjTvN#t&b1`F| zD#>q1cQkQKG_?|A-L{_H=Di4x#}7K*H{~ZzrTfO2#y67s$y)j5B(H-if3>!tY7D$v zu|e^P8HvOHp&3T?s1HuJWU=vAkHL_+(o&hM0eVaKoEi+Fz|U*5^vR;pur{0>K9YX> zX62qbCwLaH-?=R>Lu?<>ZJR&+FnB}q_KcA+&<5@!-2&(q8-bDEq%m0AdR7*JO4W*MM+_VA_c~+Cg|CjBIi;{+w!~TXT-E;^-ysLGN(FzCIEJYo zY*&v?V^D=0%W3&6^b!vbn$BUSd=Z*9yt5+~Yr`1dzmlLLbb_Bhh^UW2B}$Qn@-jW4 zqdo9hCxygsoz%bg_3avB75_%+4B72O(ba|k*SS9Y6vv|HW!eoh*3MB{HDloEu6bGU zSt+u7QQmXtMFUn?y<+YXL8R%l-J>k`0|$l{d2}0Nn90N2v_xubk6XO}2gP~!>0wzY!uysUw%ipXu+4VQ!H9|u z)ODcN-ND2~tQowvIkMdaZ#l;tk~3dRWU;+jCwZ8L;_v#DJJ+`x!X0#)?w)FehIzB( zr)_P}5Sz|Mgy`koz6KfkSoWJ+1JdQI6*3F$!70tlQgQXk zQlG3!(oa95c_DT;6~%K$Vd5dKarCA1$<8^~|-2EC9*|hrmHl8U`Cr3~F#>HM>J+Ekgl4TUw(&g%NjJpw2uHoQ@ ze!Oinq0jD;gD3M6_|}qm`jg%QI>1r}Qbje*>FU#Xxh2^h2uU>J8L=@<-nvk;EKwfic}rr^gFTIbtN)I|G)8t<0s z2Hf;TeskO%k{7W{T0tka3&iSM}{!{>HJ$@BcRaW%%V^`8~zAcPu{J-1zb*pI_yF z0@I0AR|VT6Fm+QzA)Tdd!&J_rzrt=XzM#CbP%al8FYaJpXI_jSQ@gFD(;Sf~ z%ZfLQQ^MYv3KXddqm)4h46M?P(%$ z{J-)^L%H#5uNWBA{?zAJx!O2Am-A`CDg{I5_Q{{5c>EO($6x)U@mGC5%A$iTQFR+EeVb!vY7MM`TgnN?|pCi)xz_ki(TdlFXOX6<^Jx^e_HG0=K&!>NnmA6 z$9G=T74#!+^K;uZ!G;Z~27(Wg!Qi`7*f#ocxL%*ORiHGH&Egqz zfA80pEX=gCIZ5Qwf2=>`n`Q6a|1kGYd#Yt*@ATQEKp%@yV%h3{zgHJOom#%LH4Ls= zj}*ze;GcB=Y$uhkrM12v*^mFR1;8*QcSqGP0XIe`nib^zU7vrY`|A%rmYP4T9bS&NguG4zda~8^@CcB{%L$g@9ZkgTeR1 ziBMs%E0#;7A8g`I_$aJg26n2gB9A(YG0>ra%4NnL4SM_XteWVFzVqj)OlasR(f0=4 zXO1-j?+$gBuLt8`A%*1f( zMqaw8R_wkUe#rSvH|a-~i_hxDF~wQx;7bLPccFCHkos#o&fT8=^rX5DY)%XYDqFHs zR;qrMGESMsKt-y0`Rg%{@DtB5_dvZqf~I@UN3m;>z)76 z*bb5VIccsr%|O;SR>51glb|~-oGXapf_30IOT?X`x&bJ~;gRq!d#r2_69f}|5 z*xTMx2p3d%ZZLJ#;^q0c3unCc6YNyY=AFE2iCc4aKHMqnM2fs5PvMh6*ucBx@CjHQTN`C$o51r<>E1TFC0M?HAVB|pAKug`)!Toqlhi$xG(B9z zOsOrNaY{Uwjd%6@m$NrlibyeK4DXBc8^mtkElSHzr90?g<}6*;~i#1)LJ=QN~iaMy&}G&@&3( zPqzlHanpXZZCRt5%{UCxRnc<8i^I4=!{5CjYZ|&m&bk}UaZr3@rnu>@SHUD-_d3=^ zM@SQ9+h*ufh*R_a1DxlkkznDDF3qbzHF~vI&*@UZC1R*)QPwB`#yu=*f_qLD?3n3`uUoQ zi|4Q58Hc_C_4nx^hW?e|Q$id4%$u8-g*ETyq&>b0H`Vz-SEKwUeS1I!nH{KEUV#(~px1__S z-@R8*47>D542aq^Ub7P(%LPnZ4t+z}LK<|Dt}b@}h_`@aS{ zp~>a${xlE@tEV%Ft_QfJ-|nSx<jman%FzKH&4ATT(J!c+PtJ z+2W#{KhOQ1H^DnH8Q)MNp1oqXL1v!h*Y~)olSBF={EmM+{ARzuQ5gQpFAfTL^G@q+ z>-iJ^tNct{;XVJJsw^E$%T7$qkoq^5W~myF-(!*W9&aFF8&~G3_BYm&M{c$!mn@#{_3Ce@T)#~ zz!xpvUhbv&r#-*(namT}sw@=)LQXPIjMuvTiI2MNlQ2*6ggEERc{|`zqiBER)6SUUuSc*I{{LzKD<@*!~-;J8L&B}7tRTofG4RVHm8skWbd5< z7rWH9`luv;ifB>HOol&v(0y{wjKm3Ko3D3k$ZG3#!f$6cuHLd7DF zFbFg}EvPs2cYmB{a9dk#LQS0fkL`q6(Yh#Vr@wVLlxYZ~R~ zOXIV*C=g#RUvB48@UQsa?NtgJS)<4w0H^FFtmD-1mLa%uptYZ+@)MKBQGc7$0{@)E&?<$j+XdES|N^uv9+VJb?ur-Zi6RU5eN zRphYeST)){Vsq77)dQlN`}UnUG7LM{sub-V41=EXXDy-}A3&>FjAD0p00bYd6A_h4 zz@2LSliH%jz^f+pb9H4M_7~aub?N)7fZ7v6>Bh9edNSp zCMtp|?&Fr(ZQhu=v?^bBMFjF3{!rjm-3}jwBvgGru@UArvZWyhdO@XRdqLY(H_%}g zTrtbMg0iZrE?sP_2jA~GPxvgYAbf(Ko;=u|gUnP1*erxQL3jSqS#CpGLd^U_M}&D4 zyzxA+;ntUBQ0+K>IKp%Rlr08qct{@GWv)UU{|{Ug&jPvy=FBaWcZt3C{Ta)kK{ELA zwX`7=^)2x8qwxoO@Zt)OZ9vb%j`yl2dQkR815-Q6x1Zx|5Vz-31$3)hN%zjC!Rq5m zl+8-Tn0K9sXulE)3s)LbeRb(5@7MCpDqRvI%v!~IFW`FOVn0ZP8f+vs>ed#Y5b6hq z%H+4SdqzR4Wz081h>h5g#-@7dP8Ap*xw?9%i!J`#+39)Cd<;HjM&T=$F1Yq;hxA%o zOB{GZ9ov}q1wNJv7Mj;&lI{FxW-}B^>J#Z*;85xNGyZpBu|8IU) z%caQ1ppb4HJ>nO}{lgJ7?wWkQAV*8oC8d-Yeq^HP2=Vg<+)BpA6+2xxokpP}>wD<% zzBJ^F8O>iL{lOS?>Tv698(0)vC=9Wh0!Nb%LPwTX5k_0)9~7Ak;ERbw%G}m2sLD(8 zX4qRo^4Xm77&NWGoip|MP4^lxmQl`%a@Y%3dL|@IicjGwd6CtPEO{6_`P^80tQ(X+ zA29UYTmxxiPVvQ!dAP9a#ia~77Gk-yd}CP4chGk^z9}H28s0_xn26RHA$6>TT@<~h z@OES7^iowHtT@c(;Qxude-otrqWLr%8=iCQ+{iHuY|-t@%bCoSHJ1(7h8leVy@70} zyUi0Y^JF=3T{?L#X~;Y(w{;~+hk2ZTJyQ;fly?MNRG0-%ba3x;W28i?vUW~tkHX_q zyNaJHbigv=E@M{`AKEr6VMd!@(#MZ_TFlMVhEwX9?3h3oC6xgG&{b9=2?kPifeKWcs zDx?*d&S`JTd@unvKNjbtp9~{6)zh#qk^|t|e}{YL(M5bTB>d!oZy~1L^j_%YCG|%4 z?%FB6VFB~#EPV_1dH_(e{*4=0({Mmx&;!_UM9 z8*WcU~?o$tY77dfn4pL=J%rskS}v?;Y9W*=Jlx%v(U4&SP=9l|MTbH+|!Qz0`eBzl@@A=|4R2e{coGw zt>1jd%MA|XP^#QQBe5vHbTdy6sqC-rZ=T~dRR_eH-o3LodMq6z!=`pVa( z-D9g(1aKM5PVMmb|F7+p8?)Tv_}T(x{$qo2Cb*$=Dk=w72-HbjCzAhby5IfO@UmFN z#d;Fng(w~q*wqcI?N>Q`w_ZmqW@aWA9*=;J66e+(e3^#S0-Fi~)kuEFZBL>N zxqoPFl*_R1h4CZwera`6kjxS=`-!a+Ub7PMVrzZ^=QaI=qxp#_%fEa|Rpkq`sT)Oi z%`y`2mNtEyGX0E`QY697PXS^C?*>e}=fHpiN<467CY~`kUfYzginzY=^u_I?zBqVF zR@#?i1z{L*S1st(BFJjy7~Tl}26Ildy{z@Wx`ivHF!TuV*u+>C5Wk2WrZqrfAvnR0ou| z9XFB8B=u40oK;m_=_pdqv-lNFK0?fzuW~IST$D=(WAiVJ?V{Xz+QFYz(u^x@g0DSV z7(p#B4Xye0`PicSStNU^63m_l&wrh&gMEeh%(eFikxr|x=~3}V6knC-82*&x4NQG+ zy<#j4o>3Cx?@xq6)VmaJMV}FrHoYC%cMGUMnen>_==RY8&vU{i7)AC;1>noEK*N(2s_L3{HJRbvT#cz-sX( z0ivCLJZ6_jK$=h2BxxmLajntYs9>RV*ih&5;oFs}KktFS$E)6yCDnn6(Vp_|ZhnZw6OFh12`Oj|#LqVfs5 z&qam9nub;1>xczBbNPmnQPMN)&p6-5!n%yhAtiLiq@L2bM-O|Q!bR zsKk#*lXa8=#Z*Ox0xMLTwcI&W5RcWdk0jsoWrK*uX8yNZQm~^WLDDvHr%wpl)a;R|ke47$yyJB4-8O;H|inJ5omWVXfO>JMMT~>$o(vS`*3V2M?*@-_g@?U3yt`FD;`$7@6z$v3IZ+L|1>eWtek1P{3!JDn zmAAp1o*sYWP&;fNzOgA_WEl59w+hX9yP6n{?_@iaHVsti=3-(6>0rcVn9>89wk0=URTf@Z zd&y$QU^ZNJ3(IFY+YTG-3j&onzN5x~^QP-RnvtgPn&fe{43HyScezAU6We;p=Z?7zrgM7W!(Sq9J9?)(l?a4WHlFJI~e-!v_jE1%rBk$0(iW zc^3mwEilNUE<1)1$4*<#_ssHm_=UBN*S?k+Ji0KiKokL=Tkp0<*HMi&RTK@ITfpNF4m% z{xw!PNkQEAL$Ft6wNr7fHSSHgDfdA(&t)58-u>uQ$x}Yuy~XGWx}p_cx(4gX2+eszh@saT3O?m+~8M!KDbm~xxXzW z{!e+o%1^}AZQ9~>yNZz`AyLxcrW-JOWlqUIIQdsN6r>Fl`bO$&kVlC={arN$4UIpf ze3>;tE0=vHs`4N4j&jMlHAOMFAlr3i;_ho~XtQ+Emq>!(9Z?k;*Y07GztjSWCC3$& zS$z#bwtwXli)l~p)yZ$O|5Kk|<%;3{O(_~W+ifv>{m$!S2`+zy&G1+MoWo!B$;AsR zN^Ath{=T33{e86lu@!Ud5`boeez5iX-~G0|e(_S;g?tD$W95i{>in<%{GI-{-TLI* z<#y&zV3z)~JGIObww+lz)_kfQWb=fDMS7wkU-2@Jqc_PX`cgZla?NK@v@Y&Pw?*-s>8d5@~2o@lK%XEe&_p7 z8(!*Zmwm4XR=&J9aDRFbS8u0@FIT6fh%FiR97?Um@nNfsz?G>uXOlDDn?*dX->s5{BpIf%aVRAWi)AF^k9YqG9SB?d{>%{a@Vd6zAD6} z6YHc_-W`Lx-Mp*IcTiD6w%GUfKlOoBrsp4CP_a;6Xs$nhM4gS&QF`X(vKqFtv#Z8o|7gj+hC)04R6$i51(mf~eoL`iSBpEph)q=KTZeT`-$& zDl2)W3LWGMKDxc)BuY8HR19SdL$igWuIABc5TZMB$AGO6%p~tGTPJ6tg=|gQU6Plm zkF}2Ev1o_JjqbWe@pEveQap)XlZr?pQj2yDcjB3|S1$b2TtjT9dn2zNv7OkmL)uSvx`Z0N0&j|6=;3k=n zuV(_Y;l?%066z^|w1D$l+-l>HwQcnFmEJDM-xO24msx^%1#P=GxNIk$8{R#lO<^Ol z1%9x6q+=tDr}GLVNWBzLdhJ^zxq{+L$Q!Rz90mW$oxVqowqWF_`*(MxI;f~`WPSLq z0c6t@+c?@AV7Fn?sh#9KpMJ7fZLM@Ac=3#{WU|eMQL}dg5#3{d#_>IV;Tu=p^#Yr0 zO85`W&VS9De~xd{h1dSsGGn-C-`1y0#Y!2tZYRvaxQX&ajUz9obQBHOmcQKiWEgYr z@0Cs1xSH60ok66Fr4T-C5cj`|8i5DDp3DMf#x>#jlVf-w|!`uFEc#FD7A`d;5*x<5ZN3 zjz6_roKo=Tvfus6@GwHlyU=#t`!#283(B)z&3L-s1+AuXHg}60nez3(lgX)w@7^Oh>}`U4ao!c_|owecY22L z?3~7yQ{1`Wy|b&X``G|q6qYQ|UW?dVgar&s%gUM)*tzDQsx#L|yco^jV_`~7L~Kr-yP!M{CMFMgzWY}|YT}P- zrKjZgUfHH$t$sBs#U#z2C;5?|%!=qIHKqYg=$y#T0Y>6AW!86#)<<-gF0yXOEr<1c zY?wCeZ-7@X=_4Y27h#m?+4T*9ji~6$dB*w7I9MMR7EoarfZzmn>4^_p38#L|qvayB zM4mVET)Y-LaU$+x;}LSb_^End#Q3LC>?=-GU{c{HXk`wBH|flw%9f^YYZhBjXpOUw z+-4@?mR{5y&n_uY@~3SD)`TM|L1uA9j<#EHcqu62(k+*f9A8qVbPP_hBqG+|4BE(k&~$; z^$PWKd2^U$V?j#n$f}P??kH(ev*LVo!Jp@T=lAHqC(4WDT%?_diddWZ_}!jgBvCmq1;xnh{( zj(XUwpb;OwBOBMq@oem4O9tcmXI<$tanR1Pr$TF`!@SyG-`$eJueZOv|IHFoIMn}0xeCF;-?7_Wna?|ukJ(~dLHx5aTq%NYNr#Wpw z4M?^uE&L_1d)xGyBx#3dpOq@=Zyd>uo3dDRE(#_@vR$Cb+6U(luM zU5FZE2T~t7c0)M16y)5{Dtj>a+rAV!l z$~R1tKx*6matwds`EYu*9>4*Lr9Wg=()h z4WFrj(=j(}%!}*s-U(-l5qUpzbI)Q-D-6PcVsSB1#x7d`bmIO5`PgWlaAa$e< zubmIt-3E5$8*=?8#&NXly!u<}DO^_=VHh>$gms!tyo>`Mux^L-h$ufR@mb<PByoZ`tyd7yq(_N zP!eV>bDs1^Hg^^snsh#w2?aDdayS3MO;0G|Inr;4!2<9DT!O3FLnUa z>(45hx4+Z69m)BLw@mXd=^T@Vk=! zm4l-gxtDI!TgetwTwgh`qOB8TeYLsiIEIjiL+WgR)C5p=yKYW#83MmiHM^bHx^e4K ztIL*ll_36t{jfiIPN>P5#J|Wj3G8+2V#PK4(48^0aa;QY7R4M%K^J#iY)`gTi#P)FJJ>Cv#J+WCG3B)s~5# zn#TGFyT=B*$$N=8={se!#b9^N^MnfN?&`;^N3!PClqKXgqHUQ=pr*tz zZ=nfq8o}E?bZFjN{6y_l^>e#_wj;lWBJJKs?XY?yq~G%!f{U4H4{t4YV{{tFuv}{y zjJvuMyKeu$BG<$)3Xu8|h81q|mq!6>Ypj*37Ey;gk4kq76_K5+sl}o~>b;(b^I*PB zP4s5?-DSPbK@nr2_c|)hKrD}(8}9o$gMv{-tZ|&1DD1+lMe`F=pj}&a!0hZ0ek_|D zU`%R8`6(*yeJ9x|9=CjW^R_O4`I(g`%|9>U0d+@CpTS9JkU5>Hty&E^#hatAG>cL+ zwCAY$WK%%lq};C1Z{B~#`+pnP(NW13A-MtQVQnkWe)AR9onA;c8H@TeA9SZglA8sk z&@uZH+h!AQBw>;*^b?Q4)b$OIfmiUq^5@&sA<5QE;>gtOG|RGLVWQ?at+B!1=Ob;m z6-|~mc)+jxA~96+th=J+-?+wKm*H193?%n% zRpfAP!NSyYC#;vuNqkZ}%{MMpqz`LKbb1+v!(CkJ5tg}lb-+IN^N+XqwP$ImE-Do^ zn5=qocE>G<2w8I}&jfL&uh0g^JrChmJ_ca2V?)V<Kx^kY8|Xsvw*B>EzVg_^l|K=V z(KPAhw8Z?YKYu^>+qNFAoI5-67_{CP=?>`yVfWgJNQc@`s4?St`TbHHR=m~REps>& zHtWthtTX(8pmoOg&7MTuI-0d-=k^DfJL;jBzt#mPexD;fNgZb@!`1XHFCu|&Rb9^| ze_MF6yXvZ+V*oBaxWfI`?ge;#-yoS~;P9tjN3JElyvg2)lK-(es9&E*T{H1FE^mLr z@b2;ATOe2@asPgd{hxHd>u>NQSAF`_BWSq6o}U=%`lla$$N#oV>WqF*n(c7mKQ*ySPzr9gh`YZx4wbYNiHurxPKNkteQ52=X+z&iEBKW>itMB&+VqF)PZ6jZmLwL4j}#YEj#iX zzk!Wr)MMr=!&rTwBd})2R|xao=b0in39y+;E9hZ4Rxs1Wl&tK<33)0ZMvod?tXU9L z4(r8DuZ=zIcV}a)=2%1JJMz5y)5yzg;a*XCwv_sFqgb34=pV&$;I`8So zhx&|8K8K!{;Nq<1wD(;Oda*N|HSV3n{mZNBmp`?`uKmy6Eai~=>=MdvUY7ZSwy3!5 zHri2?t25&^IUEmyL`5ODRuANnJYhp+bGiw;Cz0yJVD#&Z7r4*p z&BJfrC8);KadgC|2b99|9tOV~M!j)2xg5t~QvY1=_-=+eoPEX-eQ|v*4hJpA>Re_e z)*FvHOuKI(RNPm|+*)6XiO)P_422uuCHp(|$>Rq2Xnf-;>(NB$k@r&{9&d$Plw94H zjy=HSTKZJOGX|CCT-Zh)7lBe!;%1ZcnQ+O$SK8y;7u;9lj4dORpuNQ)_u~oyBH>3Z zOWjQlB3P{8L<0X$XuRIx{gmX9$j+A>jVLOI1AL)pzPVT7;n6J@eiswlSBwEY_ZAhReCgSbKee;KLF#qSV zqa3rq=5cZVbAvoM6n@mYYMzQ1w2#aeUT;DAV@WD_eW54f)mBOek$k1&N50?Nx02L% zo^hxxezt{p_rT^jsi(sK`0 zA9kWcdj6TrHC4FvZcIYy9U96WkB)XycM^sD($&sa*MsKvA6#5vk&vVEJbp};nZkOp z@y)`@MYQs|@ib`h2g>?voqJ`Fja@$C;nE_cpOD3X#9{MV^4{da%f@$wDA?<7UDP=V z*#}==>aS}6oG_YSP1gms24+SsdwVeaaktOaAN|mMZhxZ@>Cd=pOZ(Z*6{H@o>`0B) zj%qm8^7YQpa1o41ygiKt-NJ7wjP|klzR=bkX zjYp5m6pZS(;`&Bzo$$9Kc)jAx-otX-lp`G#cixit-KY8w!fY>*`cmt7YtJ|&!B?8+ z%}?{E@YTfLmyEahDTk8w_UxVhh|zlsIqx6&8wc@w9RJgLzPz*T=!6CAxqju0+e!yi z@>qYZlt{vTQ^DDb&c|_v+UcIu{mbaG=jkejsmB=M&}ueUa2KN8L)F#<--SvSu1&*o zI+&lcQHp=ZQ#_8Tm21VHV#=LodT%RTuy}+~ZEdX;`YFu!q}K&w$op-FG%D3lHJ{yl z?EM?;PrO+;QSSk&6`lt9J>p>1 z8}eeO0j8c(S=&YWPt!4*^)nm~g`G$0NBFBRLV>-J!ew{{)0Rh8f7)SzH4=B;yDFGq z{cWu>nmQK@v0>!1J2!7ziD1(4tLJ#p15a|h&J~Q zg&ad8;H&)5(0lqiE~H7=u0 z`F$YB&)wAF33EbwzTnHTcMX8j>u2_r#4q?1Ki+nXy#OMvq#6qR~RPz)Fymnrpx^j?2t10+$ys5(Y(WbW=_s39*x~Y1R^oKp)p;r>V z`wLoxUh^>^dF{qDSIHE)k$5H1fZH3cbi2hN^K|Cp3E3cPQ9 zIfOP=qb@9e4L;ThxdqJn4@<|;vqDRl*R2jjGq_zV4Ql}D7=qs%4~7*-3`%pD+p+8F zZV~4AFZjfHh)H^PA-uBc-~D2BC0rJ-R4pfY@tD6?j5l}{p;HF$i>d1c5P4m&Vdncd z?5#IlXQM|$xp?PQp54Vk-0b6~!Z$LDvfYQ~s&{okx$2W~WaUN+(3+ z@6rphV;2V`nCsA`iQf# z@cxS{DE3`Yi}3mOXT84TL3`9u+Fl4!@$I@qN&K(t^xyCAk4&~%@5t}%xu$jN#-FXA zEWJ|be}0#?`gNGz!V^8`06zYe~IM=Leib*9r=?#r+Bl zZ@{k>dv1cJN-AdtB2I$6@XbZZ>VTf~)m91Dkvdgx%t|$Fu(lg}*k~ehXMl~ZETat%m zA2p5n_NGoeNOF&kN{wO4XzQf@>k{a{M;mAPhypG97L1?uXW^rd@oHhK2JtE@6c^6t zzy;>Q#dTqyVcVdHzY2+qSvMVD$qTC~ap7U<4mn*oQYKfTx;TLqL}jo=wK-l}J18$% z!9+RvXpvUDvjz|Mluxj`a#9YSQJk8O=*BoVuVYpRhjDS`n-Ec+Vh{{Dp2xFx9N!IG zK33XP4uzY=11o#`AmvWbhxnR4sGYJ_Fs|N892T?>DQE8hkq_Z)bba5^W~l7528pXW zbd-FG%8T9)-o)Z5lxze~`Qs>`xc==VRf)+UslEs$rU|Kiq3(33Nt(OBw4WzQHx`6V;l{h4yloWBK_=f!#2^;n5Zfm%(k+Jf){ z3^u>J$U?{*3Um_9+Df!;tjlwDpeJftn?62?V<(1Ybbo&0nt*P-bCQ?twgIo`x>;d% zW@1-nuuM%(FFaDe^>i$x7)jz^!IuI*!Rt)bmSxFR#Eb0oQyu3f;q~RtsKu$Tn4vZq zLw7$EA3r_q+DiH>tBP@HhPnNO3n{yzf9N3aMEkR!uThg2oUM3Z!(6ka->?k&-31TEjB{ZeCI0spw2^TN0v z(BIpyb>#*5eLrNEs(Se><^-O5cYDee_U8xbRrh*AK~Zh}yt_Ayj?< zV8(J8Bu&;2zyD+oUugA1_WX!IpWd^N*7(IkDD5`GTl&Y~@w%gr#^UX8X#-Q9{Q6h0 zto-$w&<|S_4lQ*1`7#{Vy1TNR6}b+4%?#IGJ$47iwoo%h_BWvIb17bVlQZlHeL2)6 z`UI-?D~OeC4n#IH03JmJP>B#J+eEIPje1NPSleEK-rK6x@)_xH(SO_I4K{fUpSzOZ zI{z8>*@f|LJQW9WPqu9TO7#}jgOl!} zSqgB*N8MWg@-F7zZuWA(Mr0`7e1B?lEZXT)r|i_r$0q|Xk1=cOLZRY9(_vj(V6t|< z{%qkhdCzeoVVUtgDzo?R5-0TpEb_KY?$~v3*$b4Y3xY)LG=OVQ+qX>LIL77Qa_E>x6O_Jl7Z2_dsyvgG|NDJi@|G()%n;tNf~*0qZ$};ubXtUko<@@f85ZD&j0~O zf{yYd9A!gm?B<(Vu$@<|mF{#SZkf&--SMcM#Q(>0ueGd&v5AIHGUr;rr?6y1_!_AP z%fHwdXHG}tYBhdX7|2IGZ%a0+E*eUv;Opz+Q$4u9MBC~@v^l;UJa(K$m8@?=%427$ z1_a`mQ;cmWxU^k&Z>#izEVHneEBI32nb{hhmpzDaD?-+bQWapwvQmuwp+dBFz4jr% zHUVzf2TF=ER>6vw?nhqCw1X1Yb)B`=@%SXevf}`$dz#zS(kB}C4dsmRVDE)GOyE1I z&v!EoZIZ9@D5y5zvn_+eN`h2`sKm7kkDivjA6qV6JNM-hR zy-Gz&q);iVjF4=Kkdds+$Vf)A3z1}8FS7R@*?W)dk^G*2{NA7MIiK(Op7-mY=kcmP zoO+z=c|ES{e!tzDsr(*31$QUAETupq-@aUPKANKx_cg9D&cB?8!iwhxsk3dkH@a~} zo!FNInMjWeN-co+zU`E%W5aMX#BtAUQ3_Jji^yGCb=mks(Iep3=~5`EE4@JRtrfY( z;tFN?2eHFQUy<456IfX-B|8N7;#tl-3E$8(G_xZ&F=-O_>4uL2`>KnPgYKh`EwT41 zQ;0LuDJ=w->!i=^uY7>Y*s8w#(kOOoGf+xvR>FMB(Z*J(DttD-o%I|Dl00mVAKb>v zKx#i{pZj!`jZ|lAu9(h5noOInY2Kg$KnUiQR1H!_&*?A`J;srsM3 zLtLNgmC1q|+({0Fe#*xGtlLa^$!#iz+sL);;yicma*}PC=O}hRWgy@1n)p-2NKFpj zIm^m&fzUyX)U^nZs7U3%uKLQ`{6s=0MI0RcmCMfQ>eM_Js*?C1OzXv!Wa+&jui zI!Px(ZClrekNfHyR@)|_JcBI$kI@m*@#4(*FP$xDr7*Cqd$SK~)=fHnuC?Pc_XZW8 zi6v|pp@6&Uv1U8OMLrK0P`)e1v>tO+q|@@YitD z+TVLc_+;g-v8#xS)Zx(;kIGY0MTv1(st%qKx7l9!zh=>KFCs#OE$+{gR{6Q+aXcyS~fi+YjGW_dV z(nX$+{@)3|??;Mc@&=m#>0V&wJn!H>l1$CdA3=^ZBysvM#@_JLBy}q{?OsEAQrJwB z?NQAU?9;x!&TwWs=~_#2-PJf@Qnp=(c-&hm(#t7eGg>JE>VbD-6%54udB>Ms#twT) zg@esW?na`dV3{TH;*0gjp}f+7P=4D*p=@J+Y^b%=G}^BTQ8kA{{#GjB`88&CH9IqGb5>>@SdPH> zV_$Tu2N8Mrm#K_zksx%LT52>l18Z_dQWbg05E)L^!zpuo^?lNqwnP>m*?E7Y{p*O9 zEAjSMYnp+#<%}(NXeQ(oj4u?$S;3S}~g=jzHYYEyDV~*BvJ4WB_u-8jWE3yB*XTcZ0=lk59*!Ye$y1Y-0 zC)~vF*F*J!Y%SU#2=?MK|TDyx4|tqMoHg6b`*Z=tvT{mq93#bA*BPxeW|&-`g* zZ)?Fh2i(+qCzZeK01d7RI4B(f5d+$PDD;AHxjD#W7bTHTcKUqsy_^uFaj89@4lnS= zt^&ER)5c&-Q`6(`^aUz*8QHIL#o>-q+SXex9_Xu8JNIakjM`#}ClfiH5nlZx9Fa@L z%6IFJ%NQ(BwU~nI%BxSP$;~(8uki&{=@~4lE8}3(K92I(RV_Fi-xbMHn+yZj6eC=; z34idg=m$8S09;=Nr6=YiF!R0sH;d{h=sB)9D8YUKm+aUqt?UOdk|8BC)xi&Dxf=Q; zjQhcG^?GW?=_0r+7-nIy_7ld+)2#Ep=fVq}5y5thK=W^=Q71w|u|T0DwNKL-T*G_& zez^yu%!`1l8+&4*HBa;EKa8rtKX*Xy=Dq;1`SbF9z-JenlD#r(5@HIEf6{jk8@hrY z?_2sE8G%?Ip^!0OH3HfsuA?nfeg9dn_2!*-$h$FT=hCz;2H91Xrx zXUxZ&p*zUxd2JGr2d?2W_Q>fks1?h$uhr9$0yqyf1gHfgT)m&BcD4vK)LK_W2pyO* zooi~hKA}&%VE_26#Rz7dnOH1dsfTy#UAAPPPx(Joher7UXhHa{KbvqBP7@Y?x7y_a_FGEDsc7IIZ7aJ;%2gEhGE` zYd^pnk(iZ$e#(>WaQ~k1GmS(25WYTW*Df~+$r5G0Zw9*XPu`C67Ry$kDueFJj^_QO3FlXN?h?6hC2+Z) z#fJejR+qIyP1PKi~iR=l}b;l+JcHNVOk)jT&$LFxg4!uKgui zLYWN_H-{G-|E@w<|E1uIqb=}Y!s>hE+6Yj-(0gg|^*Kg`May}nX9a4V7R%ySQ-k9jpRGa>g5UX!eU z#*7ktXs+jGvu!Of@-kbOwsN`fE# z;@(yN>2y#Yk1OE+xs9Z^(KR3*{}T*-^W80FE8v~f_ncQ{zlc1I>Wl^cIdIDLHw_f2 z1%WG?i!4?3K%qa+ph5U;dG~UD)}`9Q10s?d*S0!|{jM}k>6KOp(QM78_8{&rx+@P> ztbfCCe$ASFjHB>7j!r>&bPlSow!3#9uYj-4`3%)Jn!q98gOdhV&Td@H}+>i|YjFecTi6aHt7}tS+9oAeD*- z8(UR9Ckc*^pKOVlM>kksvm^a(9fpR#Us?Fy{D8~XOx%wWe!Q!@*y^1M8_?W7H!Gx| z4;%Gg=xrP1B(D#8Drmo@AYc8(X_-~YMz+>Z9GH!0#I=lv^4>&$ND7|ZV=co$&I)J| z$WSi@9SXz#tn1;h81q0v+2Swe)lE>Uwy=}G^!Xg;x=Pf6zJs?EcD7*VCknfj?G;F4 zT{vJSw2J202QK;jbA)X5y6fy+p--rwR41_!^YlOak(yP^elnp3cSI9I;f3&q|^{I8Rt0YbikD4Td&fp11gTIzj>zap}drb z?v+R#4E;juM%SW^eyXmSKDpKeKPUVg>^8z!lR;HMhj4U_vNfuA=EAfK*Sz?i=%KM< zbZ7OV2iVSwtf*JBk&_P&G~ zVbnKQ3z9+Cm~g?bMgXa5gN{9Gwcvfx$8TqEK7izk!!e>9e(09Pv~b@|1;5i@x%6Ar z8iUHN-)`a5Mn0XRC*BnVqU0a+|8w3P9ELm{S7`2FJC{rF$x1a`EKfg?v-SbsF-A)4 za%Bhd=<1l^Ap<;hGdJ(U)j(V}AG`R|!5;_mz0~%pb0JIV(Q8FpUO*~-HDWvF2CsLu z7W;6^KoX1h<$E_@;_og&>&DNYfS(G=JM5j1`O%GDTPa0+v@OP_Tiyy+g(*KOP7)l~ zyL?;|vlhU}X6#x>sgGlBci5`bEOBj@Dy^=yDKH25-`(pIf=NmJ7xvRX1HX^TQjKDKt~8!)o_B-34_c}mcb~vZ{NQ(- zWQg~F_|CS7Im3~i`|UZ8YJ-8env{04JBA7kt;;JKf@Q7Nnv7ct3P$iPFVP>5)m8lH(-}eLsupSc#x;Pvs%GWzeqFi_8^iM@7rYk`2yl5-zji~p+{)mV;UHnc06$KZ37Rv zS?0*q4&X2EtUoVai1MU+pC{P+(S{QY?b1f@)zMGEaU0X%`inmKBsm+r4UR?MVeZ5P zYa3CqXfpJyM#SiGRpM`<=ZC|$nz4-2qFd@qEeyWAB)FJ0h8z}xwgGBQc&JElZxwGC z*0O(72E9sP^4u;iuoes=Iv!KM_)F1DsyCr(A`y9SF*KZv>%zf5j1RPASjm~jmMV9_y1=O)+YBXsOcRh`k+k| z9pBtKc%~N>O&)D$Bls5c9VH*T&qu*FI+4mNZmVEL&rkRC-7LIOy+>EUl?|VRjy>lw z+(}+YZYQwvwdl&P@=br4&^N4U=CQw^A(0_Zk>hj$9_h61I(ei4A4dqDx$Tk;O9^AH zw^}>#I;&H+x!4%iU%4LJZtx4nr&-fdD{8?xZE*AP>EC!DZsj>m02Ns{LU&EfXCC%U z47jTjbHd3-kNDEu*TJMI%f82d2p>$qYat@fNlu^A%JSJTX1vU&clpwX%gkr?>TFa3 zFWpotKf!yu{g+7-}8n+Pj?;MV4PldlH588vQcm7iaO#J87N*zkb|tGnnU* zP&ylw%gl%AcwH91k7Fowin9N!_%P1a zP-vd>Si!%N92-`oGzeOEIJ3<68CcGTY4%3tgTj8r!e}po?<*hY@FTDRkN3LYwUQ*` zC6WFU3Q6fWGVGfDJUAUL8C;0Yy*-K8KI(G)&M=bI1?4sWwBUuafzy&AgV21zK4jVcEP{HIC^H_gzaqTcMB%c zNhX?1eeEAG!)qR@ROkGk=Q^P}Mq(<>9^dyS?BFS|gZK4U%f2v#gN8^aU-pI|cnbRd z`phE(7u_^(rxOsRBga4NzTRvAFZZzcIVUAnMRQI8m;4Sz(6ltxHY4U4p)8vbKdCaIX7GJ9<@X~f zJ2^vb;hqh3(IIwc?)&3w>nnSM`ESCQA(2gUgawLUofgZo(EwJB2im0v$hcjJqKU>Q z5I@efvn@rP!A9HoGa@ZIc&*Rv0I4e!zD3D7Qw}_Yh%r;wv2`Y8E`StN`tsFnQLeiTBFJji}zSqd)( zW&DqQjRe8;it5+IUR2OXap?Z!DG1V}nrAwYg}z;;WfuZJK-E_K&IcM+P!lz+HCw1-HtFs<_A zXw*+~p7|IP2&UO>6L)Ss1G{98gb4n4I4t-vTIr4pq~y5VDUM5q&Id)@qc0x9ebsX< z#h$l7BEL;FjX4t5bu=9A7MkP3H#;>81E0WX*rl5lHIaBIUUWt3CBfIv;97m#7mgz@ zcTC-qH-pF1+{}$iUdVQQ&X$Mx|1521-xaM^2kd^j1EkB(@saWFasMTP12q0($33q! ztm3FJ&VKt1|F9UnO*--ssm?n+%^vWA*8HBS&;$N-6Kxb&KfYmCVKVy0RSi~ZjmM`>LysL*ZTn|4{ z67Su-x7&wqUEe{z|Cn1|GC2tza$IW8BI-`&y_4Blp&f8RRdF)Ey%9Kx6b4&Dw`(e( zWD+DtaBPpHZo9^q3^jqpR?^aw`13=JUG=*W+`rR*nt{m85YJ@};k+`6bUb!H43z63 zD1<+KUtJUI*k-;;`Onp_kil?6Ox3SGMBhSY*uLE%(v3q^S zjHmqaWcfL0qE)RlivW=vXDD`=t^* z(sBXUsPu7g@+{t$WgCrm@?B>?c{ieFmU72RXeW}ChyV8Pn1X6d9j3W8zJQzKANS`$`1Q(=so5-+Eg5lSPSE`9*1A&B;f^8wc37?k928GHjHoXvZ zRXwqV?KjD`9a}A!GjMVLia|bH(VuV<==cEpUAb?5E$ISt2Hp#iW$Cce!7{R+whCF* zR@8*8h@63whs=|DT#&W9<8y`W6jv?ieMOafu=?KPb6uCDNuP%7evoQ8 zNmP|>XM29}k(|DnU+;9QhNvMe@^>Ovb(*Io+j#e3($hyl+)GJau;<-V*#YJrY@NQ& zlT<$eU8)6ILuH23XI$YXSke~$5cqe2Td}MZubrHfDwml=IxYc&iGWHZ zVr-ZL^S_{&gA;>VZ4=7->?eXS-7(8Xfm9IzbcvMnlaGw?HkI#1-vBo6D=^j%Bh;bhD&ETdXdn()gd`Q)a8s2!F`N0m=6FehJ@Dv`X@1fx!x7 zC93K=f3L@%UEN{#X`69Mxy^qiy#eQGwm&^_VGXDT_S`k}{Q=?1Ih~<8i`Z2t8-CtA z9>>1QMaYLPLU@bgw}T9XFKUD)M(0{ONLz0DQVkXZs|r^#C1nd{d-83gQYpvxR^qh~ zIfslUves-Or4X>+fxF{#8T1^HC~OiNN6X#X3pTnt$(c(psn5SA<_alqo*23OLL~~B zGNu<*Xqnxwut58b&^fNgZ)YaBLb^hlUgtZ3*7kF~#nb@g?!B+6OmJ`h^0V?scYH-I zl7VVeV;3IwQE?qG90IX-*1>LG}ID_zWI*WyCv`VHTZb&2#LC3jjO7S zh2$hyv_rp~mbC91H`DZOCX)McR>8`+W#Cl_xFqGbpFpIoM;692kWOeizBwK?h+0}D zSDXyAVf?FV2>UEM>D?g-()XkLNTDW$brE;b{DO?*I4GjmD@-*zP5qD9+F=u69Q8{mQCJc?74O^FsP)5E_@h!Id zt6;+WV3IKHH^@_J*}r&=1X{Nnu5~^(g+Dr)*W=})vGn$uir499`1Z_vU}}R0##L!K zQPEkTzx0(lrd}fQiNh{KQ(a*P%BX+Go!ja6bt^1_>pX^}n}K zc_eIMtkedbGPNEYBm4&?Q3F-?y#n!{o1Ci#dO^rGg%-1tL1^mBvGJIa4V;cyU5|+} zhu>;h{49T?;4+_<$}mGDUYw`z`LN=OqJ{I`b_6#=w*H?ZibS7v{KA4`?fVS8bi?T= z{h}52^%x%a(on%|`jR8s)hR^olm>s3bpjX$@U)(P@Dh~t`PoV$VQG0|;g-k`|H82-c(7u2knB5xMjwo$j_(}?y%(NUx}%k-StYD? zz&8r+ZE-L}bW8!?u0I|MhJ7fhEKX_vYZw-}|9GVmc>-;>XIuD>&f;A2s(_VP3Ur$b zOq-n}`~}njOQ}LDAeJn5WQ}D46|YaZ%e3V|y|eCYfdsjkscOa^a@S)&rrp24L#Zvli;QJ4$}_BYNF{Y)%CCnS z*N8lk^Hv2iU(csPfkKt8&&z&f5!>n!^-KnV%Rhha;c-XhXY@mZCUJ03Q$LzjV+7LW zrc_TW5;^nQQ7iJIwcz&gRY)PBTMeRSz86?K57#hd_UYb!OwliS&PmK44t_j5e$KBC z+8Ufa=9?$*_#WYkzgmOHRrVlnL9P(mI^1KKwvD6SKX%<=cRTR+SlGFQunrJ=pCl#I zQv^;44q@J&D^N4UCKgHLM46n*szQf2m|meRP$qKiip+R7Ihcq!2DhNJSaKN@4Gr6`wxi|O)zOH=K6Egu;4Hq%L85nR zj+{A^4kYTBLn?Kgq))!{&qav*4!E~5zOc0fo?4Pjd_ml#bJdUEa^D_+^ilG&rjY>* z*yd3Bu&V`{ZtWggo8M15Jto^JeXkrBt)G-Ki+6)pxsLVD@@AZbH4);@12012w+WT7 zkp4Z!djHsJEE|<$ifr%7MqxYt`~Cmx*-Yz7)2{U!YCFr`Bt}z{)J0`XJyW-ng=! zqmo@Co8Z8mpJO{z4GQdHo3g5d*xY@-W20#gN!+>jCRySKJR~pQv1P0UITwYx0-an; zS+I1l(~iPAP4{I#>Phg^_)5R@jNrFw%IGL3)?-^s`YmRwS!fGXyfKi=Kyus7_?qc+ zFFv|n{@UDn0R7!1?_Te0gBxLd)d`|S!1F4M!i1_6mWx)-cGwTX)g4neM;v;i@Q=x#Y7r||NrJ`0=R{d1e&II5w|nYLhk-?J z?Sa$7?IgR)xBai*?S+f#-?!KZ|BUtHi-y-C{y^9Jk=T;Zb|_V=iXR>whTZD!LBe^f zs8sw=R@5sI{9RYRUd*B*%UTB8mp=M|l~svnk5>Kwr$ak0uMCbMjjC7Kp+E|k}5NPwCA4R8S#gX;pA#7Ds*fV)$5tI(t z1Vt-VL08f#$9>uaM_;Fme>`IyXHGd4+j1n{R^o@JdCu)_&knZVnjcUqyBW8fT^I9c1n!8~?Cf9LAS@PnBy; zXh^IHyn~co)FcOcHHI7BH01j6vK#DNRHU$~KLb0Mx05ZkoSOeW+etpCUnwY-O+n%i zmzEp3F@kSSzq+G*c?2(AKi-io$Vk3kHa&Ub&LUWMp0T$%QI7(m%_ezC<5=Vtf+v`^ zkzMWDE(co>Jmr@;$A0@bL7psK2~0Ws=eaH~xz{sz%@5w>){uoeOyTa2yZk!0V&K6g zW6A49Lb$ATdqyHm7y_nid_B*pqo!HX=<+>NwA`{PON@SlS4=CPWP0fVWk*Wnim3ro zZ(fr!Cb(&o%+(6Vh9dFCJth7Xfe7qjcDo#3`3|(NmmU^Te1r*QWeT3UPjD?p+W4At zAuiR|&TcxM2GYdbSJMj#@XfS6qKcvkrkzsNRh~V>M;%2P^V0ud<)L3|7wycENhj1l z)1Kf#4>7Dwoppzyd$y{Jx#zH2=O>T*co48xwV3O&M8dfg_v`w3FCaszHuuoJI3&Hk zrclx%f%iXq{k>i438H*6*5j)x7<2Zr2MePIzLwhDC!?&6&P=1uS5#xL{KcPtX#GU- zu*lBlc`1UYa_cPjYB=%l#r)`F?yF*4c*ih%knS}6@GPm?CDRDfb}w|p_JyOFd%n9x zn;GsY4{6@tX$zT#Le|5yo;Yk@xD|5Z9hNHBOtHl}p=GNihMC2o3!}YkzLY0CoGm{; znreo-e$^f5{v8eskGgJVsRUrb@;R?5xP#N@Z+=;KPD8_UHm{@hyW_ih(~%UuJQREA z7ysp?BW^$NElY7E2VZDOYuE_H;fIf3r@w@T01e%@HC?wbsCFS?`yE?283;Bsli{E= zWuDE_lZeIIOOjDU{@&%^Dm{YqM843s&$IQj0dRA-&3=WE2FwmR!Qh?n9Lx%sG}McG zA<4|-X>b_=hpAG^T3#{4Wwg_r7mg$Px?gqmp{7{<;!M3mZaP?f*eUtsw;8x?upBpA zbiw(ZyGDNfi36zoZYp*;7H-_Xm8wqt9E3XVKYXO~7!{|-j+SoefMN&(P0L?vxH*$< zoW^Sg=Uy|Nf1HqpYi|O7E4TkQpP^e%xu3OJ1U%3o#QX*(-<%A=opUe(J8xR?0LgJep0%49%SD0=geEsBK#xm(h;$P}z>5 zElk^=z5hwdKhW4p%070#6=vT`+u1!DN1wn#j1kEIzCj^dbHNh4L)TtX;Nb^<`=ubx zw+|8u=jsy4UISRu)f{$d=QN1Sd(~YdnySyzVQve$?WmI{ ztCD|l3>P^2DZDq6;hEB1`wEXDIN8UdC7}Ej)b>f*ghX|t>Pm2JZr4;#gsZ(qbbh-@be> zS(?bz8x(atk-URUz5eFZy8+_dtxgwk6gA)}w@dc!1p(Nc_PX-%okR>=IAwc^YX|w? ze#4%N&vsAD1RN^%$lP!){m;7HQ_6ll|JWQ1yxA*28$fU}436j)am}G&OifSSlVv<@ z(EZE0dk!`(X~xn?P>_y!#tpj@d`ztehTVOmyGTbrpLBfv=L2rbBijcG?ItxgCp@F~ z;U!(FE_?f)$gfh?OU;jZ*a~irl7VM+*+}-!!@D1Jm4al&NZ-_NGL%e%oj z?DxToN=;}@n{+eZY6&t6lMXkqk)gOk)sK7oGBE7uoSdl{f&EUk^S)LC5GyM8w0nbzr18gpHpj>n!7;yeCV_dwAPHU?$B;r=IILOZd>PSO-VBHDd}>mF$->29m=e)6B#BbHEfm z?d!MlksSPRoo;vow7o8#w$7mYDYJIq;`deg2>KNa5>hqgs1~VWwB7yjsl-(^B=vLI#u2RKnKj z#ULy0CGc)hzm@SLe<;hdGHrM+)*y7%%Yx7=F+_)3c!0UUmVTwX8G3&;k@z!k54XQs z+9nih3njJ*Cza^DpqB9s_eU;Ypt+gp#ZK^kwjb#HIXbBhwkIh3z8|M1h+uD{NK z2Q^QFS6t5F-Q5Q-vse*18G09M*Af#UAu0blmfVI*-}D4TBCdj^aiMspt1iSW>Dyi; z^6E1rH>~_Jl40I_RrJkYQ4oH1LPA5z4wt!n9va3+!5N=gwVea6kki8;G?v)cG{q_g zB#js&X3!g|DvMRyia?exYW77RLQ!$71 z5MQ^51Mkp2xAEX<+AJt#o@rt^#_+^Rlxp zpz0JGEUg$oynkHp$u6D3=U?5Wr>pgm@z#p-y~-#QEPmUz+r|x!=#JW-JY)b8Twg2( zdu?E>_D9h8v2U0o zANC#f!D;_1UTG82*xVU;^o-nV44YDy7*BKrL&ob#np4r(VP(IrVj~X`ZIa4Q{?wrD z!Q+Q%J)_VzJMUGI`VU-Z+Egy4a{-aEtCF67%)nYISu&C~Pky|Qq%^VX#$`R6e12Vst!{Yv%4o1TD z5LO{?;@D5<-qXkN!@>d>8F0%+81=&Lc%_@$D~Dk&bBAjE02zhWEFof7Ek4+2JCg3! z0ByaWgAGJ;A%|^?P55;@csSHX9ZnnvkHY=vw3nmja|uQp#DDqaZ6#a55Ns#DXgmRi*lk1qiVzW!hHqi_n?* z1a#6Cf?*e({yUBtXy3Opr*LEms6Ko>^L9URf3tZ|L-o8JTv>LnW_+)}ClV>=`fs)2 zp9Q`|Ye#~spv^qSLF{))o>l5lyO ziI49glFIfAD;W~UNRv`Cqd#sEdWRotAp$0=@GkXwj;zvt(gibzj~`b3arn{8A*V<} z=k7hpadCVNIE@=!S;aO%n_Z(%@qH0U3Wy3a7!)IoeWxw=bAl_^Z0pQS`wPN^pcj^*QDDkVQ(OpI?jHK;A1I*Yh4y zle;x~e3uCylz@I%bB)OgvdFscy3m@7MNh0-N2->w_u(Sf?Qz0@<;MSc{=)={ns%gC z>CQm|D{{~XcOl+)IaUAh4_cbi#5EDWf6(_wYZ<^8YeomQ4uYqw@}aT%R}C0ig@s;!KuH$NqWq+wJdHLM zSG^0}n^BLKnJK$&0Fw-F-E|D@K&{MotxF7+pnBt7ZoP0Je1Di7ey8^fJpKOn%ZA%L z>in)cU=z+rUOJSu**d+5G#;CY53DH2ewKnM>iKoJoah(2<?s`)(6nufGg1;r(vLbzibDX^t6 zjC2%Dg9UlrFw$84E|i$Q6&g0aHAto<^HmV5@rpt;I@wd8p4fn{=?$E3=p{(muiTRz zosNd|FbkLM{1XgW#KS{3s>yn~Sx{Ezv7ZSxcc z-I}ONN+SF>u6xe2zTqL+SrNGThMgow*^*kbm|A>77E3rPRf;r*52~O1*aA<#OG`Bm zxJbnXPl`l*3sH`@HCW_8@PF2ADlh+)#8p3_Z>!^QSqFr@#7A!fTx(*cfYk@%^94(Ej2M;49{!?rY;B@qTrVkuRp7*qXJ1&tS`?NYt_RAuQ;|qz{ZH| zMV61y{&L?t)*C`#{aK$?=cX4p{d%#u@aH0UgznciJ7*3z#G?!DZKPl{hYbza&CB3d zdh3I^u`k{+{T910YKwCA3qQnK)G&C7tAadaj(5%k|9neuJ{C$orydAU!jr<@SL%v; zke2%G@n1V$qP(5sR#a|14pi0u@h%aAZ}*!Ya)(wzPW9U_j@!Orft8=Q0pW)~8B!5n z7W*FfZ0*QLzGb7<$`59~CzVE_YvLTQqPIVObc{~QI+BG4&6dBrN9IAx>WYB(sFcwcb1R5_CYefobY1* z$r%Z^LS(OKe4c^-vUj;2Eq~PTygL2{4HE@hOrGo|dyk&lTGgzA#H8z8bj77;A|S)w#!!d?X-9tw zU7CRodVLW(x@fV79L(hu5p|lp}*2P89?BTz*SUeFHFr zu`qcs4`W%^$;ih1O|YRqbu#735YTIt4gF+X0In0Z6$?g__{@^_qn_?ETsi+*%-*RF z753I!=3VK-2ia3QDUS`{f%=n8tT#HK-Cmg{?|Br=%a&1>5V?8ZSr3awD5s%|@ZlTh z-0Cp=k_h{4ml`~7Om(^Q`3p#WWbkv$VhG+|eNlLoyAjzIY&WAeexY>trx^JHQBsPq z{)d-iOe7&Mog%sLlcb4_kH*_VD$vzecW9NDf>fr!eyiyV4{1Mpd@|SfQMha;y+)JL zg(Zq<5oOO?;LR5op1Y-Nq!JoA86fsb6P2pQLB#!jlI!&qA%djsE0!o-5Yle{_p&&fB)XU&*9f>)Zg+Jv0&^@@t&+*Wd3_L;d{;y zc}=E=_vBt=B)6R1&25uH^j*f2)=NKs>U;e{3*7~=i}j8a{XE_oW#?btrk@jKIaUCB7^)#f_3#!3E_+F~WEDoiOyNw;E7>DHc4zQjGg zIi1c+=_igHX0y2UWdm=2{#@_+b_5-&=^RY2WW%lR$&%Nyi1~Q7mcj9V+K@@<$F860 z1DHPJZ{DxcguI6-gWlC=qHckxg4XaP-dEVMNb9hH#FgO&V=E%C&+H9|LB`!G7VfzTPtQ9rfLoyOrDKmOAql%z+u z8fzI=M{wPBpGElB6^wC})Vr*(n|vYRmh%_s5p0nE)Sr5^5wF+XXMHwLMLxVqWfv_m z0QH{$^fkS@-{m8HqlM z7Rv+&_MpAUy+!0YT%IxPxg6JvgH4aUrkPi9?SP18A?p%Ggfy%wInk3EW=>9AZtcNft4m>f zn}6ep*Ic<9uE$6tr*?UszPF!rBq%7sd+Y#-Lp0ou?lz$lDXdbaQCNh!YRMbScATUO zy?3#|i;?vC=B4Eq-Lp8bja;KJvWK)b=`%h3kcOmAJNGlN@i589Vy5`X{wXYX7%N-) zvIM=&)46}tDM=%gqpno9$DzZj)SoG%1fHLYjY?`v{?EES=qyIX6BUTBcTY25lWDVPH2xX&Z%#8e z0ETBAbPcCpplO$IWXCGO_q^v?dq&p}4p50DqG~YQ4Kl-frD-ssi~6}2oN=>T@@sKU zJPwGMT%IBH>0L70k1$Cc1Rct;OFO07;7m<}!V*aTYgdY68xy88Aus@u4 z6i{JtdW|_x?fH&!#K0r5-)-7bX-Kj;theUJ3niqvsJGSrXrx>z5#$v_@a#TIWsy>F z>~axX@UkQ-#&Ze~u1Tcm^Bn1M`;JrmyX<)C^YN=0HJfSAV~F_qZuj!xB#_o;r|7n9 z#P|2!2^2Ya0avD}K#rRm*d)4GGIvyOHXLhsLd2!sErcDB`~maHuN;zF9JVyxjN!JSh*E zPV8=j1IOG_UrBwyM=L9zk2zF>`CEn*Kdl-l&K336O?!n74;3lzk&^N4yU3&WEefFg zZjnLt8-FmW)A}Ls;1}c#+lsGV2}eFDpO@o36_9cW)XgOQ@S$Aoz-cZ*pYCvcx@Vs{ zG}-j!dAwW$`cJz3a@z+W`DV-cQt>u88lV~c>o~!G*K`!>>hr)WuCYQ*(G~c8v-l!y zaS;4)_#oF2BZTvgMtt!H+>zAD>Z(PSm7omp4#Vvln8CMnFd`oep zBat6k6htuu!R?1$e81@j;9mT;-Tl|dP!!FQUBp)fwtA}8D-WYVz8haz(f5Jrqd8wy z%eT;T)R4*kaR_86KB1lR^26P&&-%#jb#Um^OPitcUX*yQET78L0?{0!3_hoPkY<$W z@Y&1`xbs=?*vO84j7GHs>Iajt;rWvCfJzGbu*8+qJ!-_q1<#}>d{^Q)_Y`U}iWKfiiYvyR(m^Z!V%&I8rB)y4ihb11CrSkwPx390fw+;Jq{BZilvF3dT1 zL&AqQAEe)>V zQSAn`ZTq)m2%gvC4!ReYzR;2xE9PTlC?E2hN>br*RV0;?Y!VVBm7=nfQAn~^cJ|85 z2#?F&viIJ5g;Lb-_5I`X`JVGT=X>7%aa?~mj`O^p*Yov!-0!#BMlHr!occ`H(~COW z-+m|5ZbYwBb35h7G0+b*7R;LH#>4T)SA<5Ev5<9AV(jT|vPH}IMI}x~a>EZv@?o|a zDBQIf+LyPDENME=8mY7h%nyX$e@mhv?fcQk%JqE(-)Sz{Fpm*AL*d|^N3E^E-|LCO|$TGdzn(qSWNR*}S;WqbMu=q(s z(hnk+U_D#cqrNQ(Zl`~9WtQp0pwxQ|Hf^7QWVAEWPmy?DZ$7ihJxEU$oR2HHy3`0s zw>)k{{i%kljkYe^j5a~lW4|NyrDS9*DbEeuUygnIm5Wg-7Fm{F;D*B}sNbHNo)YOm z`6J9j&-b=M&G?0>o>yczGtDSoMLmQO&KI+WS}DngwN8W_F02KG|M&Bk=tb{5|ZeMwROk))Fzi}U+JpT{g zqQ_Lv^J4fV_jy&8mherDxLVS4OrYq^+)Q0tqL+2AzbyGhF~o#3aptbip@*J5@xHM7BP_|Q$ zn-dvjO@hYI#PrPR!ABHi)}2%byatBh$ZGwz!GkO4)WEJ`O!%|pZ}mN`%DclJSx#AnXVcZ_hx)~M@Dh5>YZDLkYz?1&GZ&PA0* zTcbnPv7UhNTg2ZnSA6ztT=5S2`2dGr2OJ6Jz501L5=A*x|9T0z!XchFHNQWc#7~-0 zW68Xo=%g`uwX?MYy9z%z^Z#)`ikEJ$Bz?qTOr*}T=9o8Hs2|IqdQWf>eGRNLpIQGV#NuE`j+VmqVr1XxGfQu^zsYz=6Xn@oZ5BUf17 zd*q|T+|}??o#^TQgNan&jRy`NxV0?q1$qW6 zr$Q4D8DGp-_OufJH_IJ&qmD$N^NTATdy6`eF+)^PLf#O|RlmLC9dp5K66?%?RUc$D zNj9MNNynO<63*XG#Df8=&0A;P3^;#zeSE+z1IV6K)n=z%u<_K<^j6M%OdmLPx7cn9 zUmoz}pfAWnr%LuOc{W+#%hG&;fhP&5ct;#_RKu~+vdsAL{!ei9&?p1-)ebz&o=>}K zMEErIP9(1uW+Ur%Lvw-2NU-}u6}+?VJ5b2v%V-I^qLIijTk|nSvSPRFt|L7JFVp;S zi+v+fhj+AQxd@yGK(%5U)ui#hKw`f+ujoS zI5oN6OiH)^T-P;5^ujB?^yF?by*E#chV;l+vl7GA3|B4aO-kWlG~cy? z3kf&;Q`HE5n3ZL}R^Dgeo$HXN>~sY^Kfikgt5GOBe|P)Quc=VWLkXJ~f5N|aSHh-s zR)Djq`O$E8Il6NS*@f>P0k-&AAGV8ac*K!=fN?bkQ@dHO9@Hf~N@d(T55Kg;^Kq^+ zdsEwxip7Hdm0cTJ0?+ObUOuQ&E#Fn4mIWPmZ}L9&T!0kS{oZLkZJ@5NqWn(^MR(%KV-`8W8!J#VM$dD*s2_~N z&n882x57xKM?%CcdQyPwk=Opy>rfotb8xTiB53JUq*X62q5ut7!BM73qCbCJe}ml+ z>pOl{=MeWM3&wS6cC1Z+U)|$xCVJQD8Z~f$0DeBkNE`49=0e%1J zZZ^9SOn%Yn=$+Dqt7nGYXnXo${eqqCiF2F4o<)l4zsE`T)1~We`$|uy8`q!-mYTt< zpB=J)IgQ~zg~w~YyBpBJWN}fEt{DxwzuWkESD;B}NtRu8JUn1M$iy+!iigL#C%q1J z;9G~j5$ZGT=ymj|qsD9{kZW2_eEy-0Oh1N&tbH2r#)pRi^cMfu@5DmMyjka2g2#jw zhFM;<{O9_9;IhL*aQh|{MC!1<9$+Umm$o0BA`@KAirDP7Z{29L)pyoRwF@L~_3bgE z>Idq`>XBK+TIA=l)pb2ea5dIh^lF^yaPQS!t^PD*6etyT|FK3%GGKkUdc80cyW<)! z?ew1k`E8FIcFq3+(fyO;eXdO)b}cwRlxGskzi_K_Mb_Ya>oGHJ+?=S3l z)p+xZ#SGee*S2Uq8N!`=G^RprRzQ}-WNSywMdG|i-+p;=2o2tLlwFJd1kx&Whn*b0 z!?v7TX_O7C!0P9e<^8w=lM0389x*I{Fx}tI;(G&NsxI;Nk#G~}Qt2pAnlq3_n7!Z7 z2(LhI*{@F4`Xy-PQ+t{@w1k$WTRo4p=}9g(eu{CoXTdbkDw+ezkPK;m$waEOgy=& zgudfT<)4%Nlxv{%$nO5aH}&|gb}YT1V?Y^MkJP0ZCrl6j#L!_^CgB7Da*%mg{olM*@MAY~aeE^~ zR@T2cA*4Vcduv?c&Gk3X)%fJ&JZ2&C=eUXk%Z+p-DKoR~7yoCzdBOpgb9x|_b8f`u zxd7QX)X{h3AqOe;#D%2U(seXA=g7rE5(wiM4dL8^{gaZuU z;IEB<#%nkHknh5iJL|RtHz=AZceBzDKiTa)Ilvi%9f@x)#&QyQwO0{^mvczK^<46q zz1AQexHSHEdT0RUr~4$1y7-`o<&N}wZ7*9Frbvu82k)N_pS|pqiw~11l3vA!ql1&S$-H<9x|ZvF-mb3(SCUy1Z+FJy zkxl71?iX>WyYM|}$7~H2-{-bg67t8}$&C*xXVUTd;Y8i@ArDcA)!1Urp$DT*$catt ziy?UFA=|^hHR9VVEK#vL6)@^Y&z+t_m1v+4`bw)mA4(gan+_WV!i!189>wlYXqH1Q zcRu4Io;kesRpGS{;lZ1s=~eVY3VRLqYRwwB>@mJv(V26?#Ke<+OD&IJMcYMv7Jo>Gka9bQu_S`E+nZw6SN zXoW+c#AYt0r{lTtuma19R4f!c>U&Eh2WM9Y_W93098uwI@dgKq}$1kTBIa(MMSRxuu^7>6J(QgH#fT{gd%=O-Lr} z(pjhzqt1nYFI+Frm|DSi=AO!T62v`R4qI)eNZ%)1xIH4fn&W9`F}3lQHh&_H^N?~Ekw^& zA};7eL&_vHg;kM`%_gCmyZGCK!qs4Xsm!d=xCa&!rQD9_b;9MP>aQ=P$XK9#)cC&U zGRUs)r{v3Q19oW^M%%$GluQ**Zof=i|0}qnGz1b!@2?f^ngxZ|t10Tb3%Kgh!KU;( z4FkJ*e{9pLM5QeOc$9D-p{^Xn7lGYrw#HbC)I zC94-@*M6_(J{!c~2s4`@+F$rGd*S8#PfgI*Q0~0%ZVJBBKDoC&v;_=Scb=Abz652x z=8+>Tt$6%Gka>LF62YtPr&UdL!@Nbm%go*mu(0pCQ;9|^^o{o^6K8Me;&BpLFnbeiu^vFNY-oE7^QKEOSPC9h${HMYnIU zlk>I5NO2(j=Lo8%wgyf-&^IB^7nt&@eAfN!hic_ zp)b_GNpNrw{%3#we|>j2op))}trum6b}F*CGLb#5m{#jw=?0(Q;%9fBrX#O5N!wiA zU53GZhETjV2cjRUbf?yQVT@lrjL(|r!PM-0d2@FoaI0RotU5IV?eQB;)$FXKS_gKk zI~8rn>To7(PGu6Z{F{ahRVhhRlddrjcV(hyw|@EozjE}lXFXIB{Q|Owg_gg^wBZn0 z_>)!W1QveFtnx4>Ll*pKisr}wL#oJ-$-k|b%#itG@&_fk;CY-$#YPKA?Z4x3Y*#jB z(`Tw}^Z7qLT7P6Q7)8+%7MHt35A4ul)5`BFjp*f;#o>mf`0*Ei$C}R=Jm@`lo6D1( zyeS`ty%#pnIPR$-htvXC#Oi2#6pck)Q-}E*@sy-!f7yh1u3k)9(Z66*MELYJnofK_ zGmnAq%%2ffO2}P(WOwJ^5SH@~a6PkMg}f<+F6jJ*CRf4_?vI#)(WaJOZ~qnCyl%|> zTZ@*QCO5U0cjO0V7dEa)P);H%>+Ss9*S*NOIvZ`9SB3|YCrr@)2U2{KU(H>#M-i?A zzvL7NuPueehY7|85OKI|-()zBm6H#({Y#li+wb_hEJn z4G!4)pgxbK&npzJ4liJuCYRIcta&boZ`t$T|HU06>GoI~=df~+^4*wE z{)^s68kCa?Q_>*jkgttgs80O=nQ18YJSIrGP#MH^L*Wm!?kT=H%iD`l#UU~4d<>-M z;~b>Q)57iR#aobE^iGXau@de&ikyg$U4b_r1HC&0mm%!mk?Id+93;`IyD!!{ zzrjAvHrl|w@BVXLXB*w(<6?USuW#kvh>!>cdfTpL53UO6Rc(0n{L4O6(6HXNqN@uj zH#nYgc-)5FvjK^z;?|fS9mAMy=Z04sc099NR7GxyfW0D2dYDsCEPcqx0l(@nWO7#d zfm|)4dUhD4G%q`6xF&% z@URl%1kXEVV4m_$9f8l+VLInm=|D{h=oDT$BdS8ih!e)kK1TNN)sZKO>Y@&e{yJ%7 zE1rvr3B2z!NP!r0@(*(xl^-xIe?PCBoe3INwL^Kw%`x3kl`^~e7>YLSoLu1`yvi>` zofSz|Sdb{s*6A6CD?4S@1KagrBl(EAWV0h?j1Z*2AE> zXis-68Az`8qmvu`kj9W#P|rI93ryK*?M9P;q)DcA)=kIixI2&e^BO=kVvDvRAp&Ls z-dfYy=fYCuJ+@kHKg?8FSs2cWfO2M*M{H|%LHX-gZgtcelEo0>z2Um7_{9 zJh<@vWXv^vU^S2S7dof}e&)4~JsX;ErB2O`Z0ZMe+w1Pc|H=YOic{rwgn#&|nUao( zWA1;hYfo8Gmchoq=wNgAzDU?8$}nF4)qQ>xax!*SIchf`1>ff+!jg+~^=rckB^2Z> zPW!Hzzp;4o>5YjcnxH-%s9Jpbx!wBQ~=-igzOqp*!bUImW3? z%!i{}zx;g4Oqxxgb3Q^piD4S|W*jaqVOPDD?xUMic=_}*2g`yol%ja0%u3w<>plHM zzuhwfKSl@!+%B2HBU8TAxA@5L;9#+%4lM&o%*@ad`<4;A^r-C!w+U%$}S-BXOqxC?t<`}El#w?|#J<>s}$9k_j~V3NwK z4)0V5%q%{cL;vWOydQVS$gq-mF<>GT1mvVXnK)MC#Ml+Cqyk2g^Pbx?Ydsc zB246y{?R|^qACODTIGcYQgdK+uwK^cekrt6^Fuyi;_fJ|QNgYM~&D@~4>Eh!Xx%9)rR~6$Ucz*p-o{R8BIPx_n_x z>?7PbvE$uM-ysaV;^=pPX%g)k8rlP;#(-Yoz7!wfAuU()eJ7<&A8XBkhx@I0+N-=I z^3r5<*Ry;ms`K(s`!WG7?{qf!+X;R{rOTXgX&uxROP07~^rQ2o?@4`o)?g}yKK#kn z22i}-reW0E4Xr=vV#T_?fwLFC)}sdLPVnHm<9Lpy0y$|9E)CqS2Mg)Eb|N5& zp}qZV``=eWlW~gU@$x>@yP>(At)K{xyr1N|*ZUn^(zgd3$sp#wJiS#rIjb;fae4NO z`y_ELDG}bO=!$nN)x=!m36DkXm!fS~CNP-2N{4TC8+rWSbKiRct-#PP@``)=G;p>t z6*_DifYc-5Zj#o0_;79hz+Ju;7)UwnGAuKIgXikcW@9^!o{@f=XWI_qZvXBLS;v8= zQIMmR%_3f1DpHmUEx}%H7rj~AGGO)$*v3WVk3BD*Iw^K=0ListyX?h_Frs)(qQrCs zrs)`m0^f`RccRqOaNQs1yw8s4H%!A*i%K@D)l#I|zP?WTrXQJYL$ig}Qo$z2Ew-qZ zigZXzXQ<9;6o@Mm5i_O<=&tUNkDnd}#)~}j`(0>B`oag+f&@09vD8-gsMr!XI=+i) zSnejccy9MP2yR(h=iIT4<127gSS>r*M(zh?+DM#g_Hyw8F5>_d%`TKuGuV~p%?lnQb5 zq5k0*u0Z^Mt>^!FoviR!ym8PQsg`{_+O^YgBttC7BC#52nCqFJE@9?6kM*OO4>k11PZ4aetv zyim4bCQjr*AXE;eJ}C+P47H4ur$Y_XK%kub?G>X1T2mxARZ+yD=d&Z8G#6Vi!LoA2 zyUPboK9~|&qe%qX0@aVidjym;u2*aIy+CgB&@$EjFUUBn;j;d;1oNW|zSOa2AYCI} z$rx7%2I;NLOisT8$-pxf#qHlc-|vi;7d3uc!`+9ufDi&8bYA$dDlKksvLrA zbV6PCOfbHxG&eL!jRhe}D@M1Ga+u`8S+;^_81Ak1;FG*H286sj-FuC=?|JyJb8bD8 z;6%EwedxM?GaB5pS%0qJQ0Zf#<39ya|M5%(_0uTu=l5uy4=Vv~>Tekot0gdDnh9Ma zCI7i!H{=H~<=HuvmtqKtJCUYxme_~xxL>|@svorEZmWq*6<`?q;HqtP0MLAI7`FXTh0g05UORX6 zfd8qJvE5wDXdn1>>$<=c>^QVfPlqxUtC1_s6OPoR^*bH)pdRB))ghDaHwdkjuy0s2g3NIIl;US5QV46cvxhM^Y38MYZ1RuK zFu)v(_|p`mmpD!}rj+2OWKDdM@GzS1&A
)COthS5zi%Dypl2Mw`&mCqEEdzTQ`bk`h4PM>Q4BB zyO;Z3{7;NaWSqWU+Xt)@aRvLP60mu?SG`Y($beS>ktEYQn?{uQjoJ_I)(=klZ zIhwiu!yLHe-IovTj>pp_GxVa*2|oUlYOSZj{ZOpwCQzn1250?~_w*4wSCKO_>$YX( z*v3+KA@3&f{`5F@`%gLp>2>VgGuLVA@yWvTG){(YbQq886XMRpYtHI-r-f>f79wgI ziYGBNDn_<<$0RJ4???<_ZiCvFH{vsWh+I*^-mmejKhSC2Axu7W7I+&4Vo$6Lpyr>_ z;x{8h;QqR6^r3bsmLDujJM7mE4^Gau{Awe(K{0M_uWt?GH|J>KxY#P}n9_D9k>QA$)?w}1UKgA&F>G+ zE#cSL<9{?cmLRQ>O*p~+2l7wvT<|sOh7VG~iw`Bo!2V9iTG43=@<4g{udT3JV4YLD zUweg(wDNdzVQg~}PM%DSkH6A{0>>u)a(^byHG5*3d#=%t#ufPc)%xdvicMd z-|5<1o6c>4ka+WsGF$ExOz7mct8SYBsCq` zh@6UNv+`K;^gQgApBPR01U!dsuNVUp5k3HdS*)eW&&{1hX zt@C>Y!*eWjlnHNyq~q7yNB@H`DE4AKY=L3U}}(l+Z~6_>MSK+bHoEq{col6M9_&t;Fqq{6RhqQ zv%fcb2|Uy%r8U-qkS^Uo-%Kn4?Zscns0%;Bm`=@IJ>3uR`6aiiGS?7{p*q1=J{t`* z=8yIzP56SvR~}3M=ujlBt>0m}BaG?KSf75sp#h<7tBP7&o%rIeb=j9xF*Mt--_e@t z4BwczFUzY{U{GeY>B`ajK)-$PfQ#`f%ntvjl+E@MoT&o_a{jdAyGPF&hVt4_sv%69 zi<$7PN2Hl${fb7?f=i4X!RJub+n}t{@a7r1}#aRhS_ zy{kh<>+x*5yd~pVJ)AAxBQaP}g<>4KEU^=0l$@_zFp=^CwkKM1XP>^ug?^?;v)fhp zwV?34#|I}O@0{Fppx*@AijF`3c_Irw9O0-_kn+cqYV2kY51T`ww?@QUji;a*6ApUU z96@|YG|N9-8uF8>_J8fpNBAj8Q3yQ0PxZ(*!`_&3YB2k7HcnDA1@5mb@g4;n?dZFi+crXx7y{Gw-*)Sx2j!I#< z6nHv)w9hj=hbvDv=xkn_!v5z0KfNQ(AXuMC{BLC%Xkt3QOH2dUk3Zc>&W;7P8oM|X z@BikrdL*4P_c+)HamTw4eyguWf0ydUXxA<iaT7!_l^iLK=!XdGw41H#Mf|QCbo6F9vtosPk%tMt(&m5P zD#uQ0dfKOHwv(>ZEM)4}< zD7pOc>ea20W<2=T!g&@^JlS)ta z!rE8(=;$|EQi5gFlf>E<7<1N5W<6g5eqUa*=;?Og?(JU}1U=J1wYV@r5S!qlf%15- zNgbN=JkX7o@55~ol~>y`s&PPo?7e5J83O!{=J*hEtXOtWI>qz5NgA!;iA;YRQD9i$ z`C>#JblrRAT4$StG7}L`4JJxad*^^xKn0P59X#uzwUGvlY*$@NJ@a7y%lBGT;$>)< znrAzk?FGl9I&LwD5MI8A^2x3p&G1hD@kp`=1!=)pTOjfj!R2Lc+_QhrJb0bvOYfp; z$0j>Y39X%JNUKjRA#!jAe1xjFXhI9XV!BSjblepNin(&KD;ps_Sz)oJFa{srIoMYt zm;M0A$p8Gj{RU^IaPB-XoK<|hpUA;dkUpO>H7|h-@5YZa<&)@0+3~s0W*F`k|9dKs zIgC37>>q7aL?QK73xu)&hlh6le58FR0Anqlfh42i-bS>dl?cyyz z$^zWCR2SV$#j!l^%;J{T0mSUpGlJm8u=dwg?#}2%??j!y zOd?B|pun>^#j*s9YwdzJeb;d38F}9HjYu@V|MS^h?P$E-PCnSs)Q#>R+$mNPn8+C? z#y;nqBYK2kCPVx_WYnfiGvcctcyYUDoD~Vb7sX`>C5FIqpk{kb+DZ5$ZB8jBu@ML` z--tc_+P=NubkV2i+*UVADUKZ}p#Gbmmibpl7AmO=V z(|FC+Z4Z2G!?yhs8jXi)k)bqI+w9f`3WYi5KCH<`>ST>}-iBs;tMnrLcghqRZhShY zz4;4So!KtcJs`Z}6MM9dyZ^x9A-7SIJtg_yn6_Kf{NQD{NQ z#HS(9b5PpJg9&tclj{iPx%10U#tv%j^@KMt*%AM%R<6_ zz*EM*%NKX5uRSs*@&Tu9xNXNcGx6s(pPa6MI%rf@_Nl&j2|Fxu{s8eg;CVhN=^1AZ z?pt`AvLIwfc&F1h&&-+tYjSZHh0+HI_hD?dyxNP0q}QuooGgUeru~a*zZ~IKCeRNZ zk3)_;7cV}|I=ts`Z;q$i4(uD5Bri1-!EMcS&D|0aU`kzl`tV6I@~W#avmEyYjwD4s zoylbQ(>xcCZ-|_2h0u&ir7{L_KEAdnqXnr}Dwoc?w*lW5}H7B2(6(p z`3jajx=fGNm0^r0TwnD~Iv7(PzP*<|3&d9%2Ga=qq@bR>HS0=mhH&cW5#WxnBzMuTG*ZmCnuuwRsMAWd!EHxpSCjSWRlx6 zlG6(-0x?|)=J`b4VV}Y`IeOA&K*EhTXL`^?DcjZY4ACoLHe!!>ngF8iJS!4~1P7;4 zK%lE^3F-G{u(lD;e?u{=Svuv!{ma=tkJs}bvBl6%xSTc;;wm33er#+;2Zte{keL)9 zbFX(42D?H@0x8tTG!l9?ivnk_4uQz2PjdCU|ACEEz>fRwiQw`5pZJ$IxuCo)K2g&> z4-#^P{9m?qz%Kid;WOzqASLmyTiSgd)!ZBs|DF1UN4m%g%IX{NG5w&#z~ey}8YzD6 zdy0}=c5YyYg7O?{E1I72CFf(QZvk%v`ybq$nAGz-B?sqJ9z_q!#KUCtC6euhQMmRQ zPAScd!DexwsHrz4xqMc9CIr5LUf_LI4Sp(eXsC+YDDEOVb()#eY?a`fmCo}oxi+z9 zpZ?UH>JEILc%8Cqpa&>cbR>Y-P7B4b`{Evh&_sEjC&214^)TdP$BBt^qR#|Pe{ z+8JkF?ga<1`u_KV*~}z*8GKDq-5~sZhB*{db$_w;E}wDB))weJKBGn}O5|&A($W_Z ze%}?AZ*pr{G^9g=!a;LS%8}xE>W#^%I`m3(aV#|@`nJBTTncqbU>ovYV_(%ch`u$w zSYjE4@;W(Rs@``)iiBy1q+LF^CKb)*Yy4j>ycu`RzRI>StTG%v|K|$9xA~8+_`*Ps zb}yp$5Tp72yD2S6i{F^vcI^M$g9UGKHd2zlDUQc&j10rgw@vM5RNHW?Mya+m-vzxx zzZ+8%ezu_L+fBnyy3o|({FJ9$6BzG_z=wqtq&cn&-81)^Au{WJpnpd?s;9d=H+oD- z+8=Z7Y`ai1T%WurTS%O9{vI>QH*yF7v9o8XsNzRK?1-<6kp3!=60&CMnA!>64d3gE z&t>?AqGj^E&?+dpIX(DH{2sq|g?9JbhLQTI3-|B3EMPzC)GCue#`k$M193~!plg%d za!|7p_peejnvBfBysoqX=f)_^U*<~jIynRdcp~l3BL$@KMf7LAjdgpTid-t+~vgQSD4g+q+iy@7&=B##LM_V zNjU}Su%ya$w@jiJd+@~>shJJfV`lp(M{WfMpLEHX#ScLec&%uLuYg$N{nV0yb{MKZ zvm?iU7|-{9+rb#!3NNHhCX^Hk$MYQWxrP%AGHR z-RfU%=ZQ4p>v3210j3=!+X4Zjd8d8kT~CltdM_23{k(qE(+X~K>cxFYdb?I|zBm5W z3DO1@I^0Z=G3F+xNVHI2*%(Dx&eIOE9^K&kfQRCADixWe_|cb2ft9?G>sm%0|BY3& zd}RHeb~HXdE8e!_AL7wTN#V&w{3WO$@_@(%^M-snut%sA1+BDc4(=xMlK=6gFmu>? zGx!y9^zaFbwT7YZ%qzZT-U^J67IRe6mxGaRuKL<953r}fcLp<_gKo?Lsux1`(6W)@ z9sT_?Z00i-*8jA_P?nd*ZjlaX-o3PGLar0+!>C@3eNBax_8bIR58cn;ywU8~@Si5lX4vJT4 z56J(?L%sL=t}sfMV9-9sHTAv#)UbD~{lXRiJ(5x8#PtoRM81!r+xrQh=bIh2YA1Tp zlmmVbsG88j`9;9l8h_Ax$gr4d?MCoDxZxGa6)z~BXdjk~L+8{haYn>^alT)Oel0Nq zBGVpQhh8oK$;EpIq?wD*+I8&#fB9z&7@g!B{j`L6LI33cPL-gx)U8XMgJn?v=#<>$ z*SWBEN8^@seFmQU8?kyapQlk>qvJq^;=$F@vG?d zE&0qTV$Mxpd2wwOE6WScIMtWKOU`hS`!rQhH|@bw8b(F%3RY+j&_{vlQ4!85R& znPKNNLioV=h8G4Mnz6zue}UP$8=vYOEcHkq0tcOM8xMEP;LE$>x3)VHy}%bf#hqQ_ zAimB8Rz#i?7|RHy#|(U3y4GaU-hs7dg0`G0gD62WYxl#j7~bYqzh^YA#IhB!-@WG% zEdsBdCzEK%TGX^zWRFoO+LCulf5%GF&7{4xI6s2biVA}3O>yv6xqQ!e6>8GSdn!h3 zLqDM`WSRf!bO(g?I0^jP^A3(YJ+oK%O*_C;({=b>0kUx;pI0ADz^}xKm>WzZs1{Vx z5kKdG0kU!jGw&>-(wCs`m-PSO@HLicJz`#Psi^q2&D}x>@;Z99gK7+^Ze7~L`>-Eh zy2nSex^yG&=)ng<#)-r^xlP8#_#f!Y-VUIA(FRU-gA5Cg+A;m8P4>XZZ)j6%Ox{hJ z242(JRr}y|SRb$8#y~Vuznaau5H=GY>vSG$5tL+4f^m@SN+}4xKR`zILp|S zvH|bXhMy?p4MOOrL7THTXi0B_qRtHn?;+i}EgdH=^c{^aMOPYdkHR2NCFR?vxlnVd z>jFOu(Z6~c_(L)$1yA|Cw>kE)0nV5)wGYoXBxlw5otjxjgD0YEf}I8j<#RlTeEKi7BRfaDH=t#Pn#`NSa` zz(z{`)goB@cN?kMNqJG5$RmXESe5IEw8Nlk=O1RDdJMZOc{7H1u1U9&9_UyiJasQN zyic#T;w6J95u?<3u(inKurykSul{d#NLzP8sHq)&&e9T6@y$?f8S#>%E7gy=b!I_m zi%f36MHPeyJY}hp_C{VA&d+bf2+u~NjE&L92@uJxkZP10g4?#)+sH)jz{j3GY~W=R zd>Rb&XPjgs{WyAYqI!QKeh!&3P|R;6=J$I?s7?)I9Z!+?b|GRO;(wPT?DR79O~zR& ziq*rh<%8)Dl!`!bb!6e`;?0+8 z@s*v;wuzGrB*^Kulb>7$dt-;P7V%BU?GZ>3|J@6^C863+45lDT=3Y5V-vI1TePC?h zxRdl~JX+!Ip#kU#`)Tu0vJiOVt|v*z&EmGAa<5m~OAzgDHPR+s1DijtYDuI|gEQM+ z4$7=VP%Np|J5x6YT?|PJRyl-Evd_L;T5%ZEJ_|(qvo#_ATj~tQ)g7d$q6~8E@E`Cp zx0c)fWC+r{q}El7kCACB)R~zCD98sTZYXD}9Uxyg*ur&6m6jB1P_dp&IgeGU{oW6m z4v;0-D8>Fz6Zxjo6b4_NqAPQfgRGU?NZyaUR2F=fP_d$l zOyYqm_}Pqs=LWbXfWzs6MQ=TR@&bOa?1J4>e^ zSo+eItd<{&eL+4hKD;En@=^BCu$v{E?^X%BK=m1oG}H3J``_S2r|d?q`7kV=tEb%f zV~1`KcGQOQB|eXnl}@w|L8?bp3GqJh5ZAW+;J5{m=ifG4bipVZb_tE{5nXmit*M8* zg{w31%1^nhG#MW>FtdDdX}cl{^bLyFf6T=?v4_5i=bH#l*iuBx4G%nE%4u61cnz#4 z%a|4#KB1>+2$!C34|*ATQVxI5#i=em?bKvZFk#ck5+P@z7v=hJc|$24g!MaSkG;|C zwb&rd!4Tk0x~8}$83l^p!bY|%64A7deQ3MxL%b@}m#Dy(j`t(Rsoy~qZWC3BF>H^- z@HnP<_4NZV)ZB4%r+z9pykR?(FOiFpmuS`R>~RB`H~#sYQ-mKiEhtgeipCkzH+1>4|;$xS5AU)*3bt!2ttb0%(>hZN2fBt=G z`=rw!rOXaJ5M%Ymq4JJ}h!2lpX}^+9ad#9_Fzs-I_oHC6tY z*&TnF3E8rx?Rf{H0x7mhoYrv2=nPw)zBOKWutoXspb;3j$5LtlQaZ*yy@o>E*=$ z!^AeIW9K-@Z!(F3A8y(@CR32le%hoIsc1#UqUWi-Tx?`5#Sa8{dmI#RRK__Tm;ueE z&g}|{-@&9cCsdf|FNI3lsoKe|;&qg*u85c*e6iuXyxph4wRADL;dBk=?o9~(8Axzq zw}vk(>vTe~I_+7#cMK%;9<{S??~g#on9k%1eKaU}ZcUyJ zXa{ddo<9(eXXkLip-Ge$6P+aBmhM@oOQTcUx;1!NoN{4}L21!o0; zs>7*GFkXMzy7N8*nP2IGq{@MGjJ#&Ye&}Hr&>oqSI$%D8CvOya9a3Ayg3FQ-zTAXQ zoCvskwr|4v5yp47%!!^+YmdUNtVwjg`_=umLOlkYn-bd}OG~2dby_cR&4EL_moHNM zoyM^9e2+fZ;pKVDUer@Lh}l6o)K{5*ql(^Y_L5W9^Y6gUXc0SyOuR zsN{F_TCp@A*~~15(8Xh>bFu! z-#^YmB=hTNd8I1gt(NueRcuG^k@CH-eW=L}YK65n{b~Ag*=%Kv5+4r zGX1&0AiX>0_0equ z(E5XMg~oprrk~{#O3D$8T$fv(B=&Q^i~flO(Gq!gA5QTMyHk?rZz#>tkB_0@fXl^V zf^+q+-7}19trJ6I519%*o(Be&EAICrda-5ld;Y1>RyfYIF95HVfUK7KXIkn$?5Lvp z@|lB$L}xjB;yif>Zst!Y4{mJWDeLZ3>ui5?{54J)tVTgrFLp`{ZT$_gp~n^b`B=#4 zu(^Zx!#Ez`8xaX1a*=nG$4{2s=?AIP)Ls{^P>>Vnf-k@S*bKHy=0`GE8OR0)$7!#O zt>fu9t&XQ=k}{kpYI>LP(hKq4$07ZAEmN*EFm)A+c7{jeX~4l>7h$)$I5$I0?> z5i~zT_LBJpG8DvZ1j*jse}<{QFJjZTQg4E!0S}vRsV1d~lSTFozT*<=#PZ;9{~dwt zV0?V}?6p!hvR>{gtN-o;WRWDHKi=P0z~A8_dB}7DWogWw>U^%l9Zt8{ZCC!_!TDA7 zk5K~Ty7#A3mRPrd)Yo~zCKW|n_E#>Brre{G9@gZ_a9=l4T0kqhV@ zGu2FuEuY8&6dcMppQ%fG<%$IGG&cTw{#PA(({7wQA>#&9q6rfMS(l*Hxa_O*?+aMh zXsh(;fD1f){Zz!oC=-H*Z)*w@eJ$^kHL7h}P9QpKG8uT>8V;sEn3LWCPp)lO4&hRC8&96lNVEbPp06ctcf=sm`fj^K;Y&!sW2|5J z$}!A#Yx;}-OME4-S02zQfRgIN^kt5|=yua$+wL?wWSKgvT;A@68N0Um8Tw~~t@c>U zE0)F&wa~_r(Pi2pV}M!QBpV(<-YkL?>U;(<=vy#;{@k> ztbDRMjnF%(t8+g~6^CWH$hZ26K*(&Ads6ZuQcdm|i#(QzY!%xR4nIxCgZieSpN?pu zCd1x8J_09!u6Zu;ty>X#JlA$NsxZPW6D|IoH>{9H$-*HZkMNb>N!s?p+6qt06hF%@ zR!22g)<HYhvFKkqH&?(FRLYTI=O~`tt#L7*iauxvzsi zE@T&R^{0SKVwJMw?o{A6(=9q#K;#nbt1YYvGbDcZJ-(^Zx)+Ssr=;{#XaJ?_Wry1o zQ#cqRba&}q1(qbA+qJ!-9&>mjSY znRqwgJEM22R3Zcm->+n4T?)gQrN>^c_3y%SLtVNSdv#2g?=)uB)d$_4S7i;H_u=rX zOWbm&EphhlvHNtF1AwJpSuc9N`G58!98Yzwf6#f2`NK>{2gtLaVy*Q^{?a;BG%6gb zs*k|A^?MJl$NUE6X0sf*U<%T}H7m0pWHYSp(Tp=}7y|hoI*W$Zbf~H!jFDfzBBxQW z$QS=&*y-2c(ZyVgQ@cA?))J}!Zme8gA~>*u+`Ibwqg%mk__nd{lM#6L`n#F&?@?%B z+~gVe4@9LmT0AESJx#gV*FP0!8^GbCGo2i52`I8!#6OdaBHma0zgTTX67%V*`TH!D z&}bAHTHwb@@@1A9Owmh2_s^G%dTs_lQz4y|^jR9xEt=ZNzmtE#_tYtOU6Ws+YzZwn z^`BvKIxXarVi|`TF6_Q0KOoO{L;i9P$OOWNaeyb*f}XT z+%BOc`Dn9hn`nhXVt{ex#%MK2sJ#65o|qe?=XA!oMAw6%y~o$D^M!aLELOodc@U;{ zjY)~6jl-D}LN1D*XMrXsEG^(!7Pi%Cm?;vvt4j`QaV&C(2kAaeENa(7fkAPpbVC@< zm-B2zv)4h&?ziX6i21$BH{Z@fk?-K)>|cd|bMs&=@n*NhiE&g$*TvxRDG>Qp{Qc0y zRXqANVt65tiv0Wh3wkNuZWO5y3fM+)#b)QG6feFu#p1(Ue{N_Jevd=BD~?J@C{}xQ z>*`*jo|~R6a$U}Xt-IB)TQXun%$*`8Kx7bZA5RL9eN%{Sak;HOc1)mUe|}-LI*=zL zH15Y-=O^!~p(9WF2$By8P^g}4DFLdJoQX4g8&STO9JjrMlkCUZG|_Uu5k7{u6Xwi9 zFjA1EpCilW&QYL$rygtYbgN4hGP{to36&kO&dz+(VZhyukRzN(YRM$z&u6ZxUUE4KPub(k0$cg%k5F#L~g*@W;2oW4d{98U2Nr{`p_BNwZ8J*cOSv06>79#mfB9rkn&o!iXrl-`RcBo zFkJ!)5s^DRyN19{dfgd3 zL50A8jY;g)vsq+Mo+fhlbk<7MhmlpnFyWLSF?U||yz2947-^T?Z%JkifUSXT*w+X3 z(A3epe@*x=wv|U)^`@;5egjWIX5Ix@X|vU2C-vf|3xWY_8`DtXp2t{ll9>N4EtIM~ zI7T{g`{PbtOHXcM7_Iv#$X?LSISAzg*9q9mDyUdLabvoYh-<-OBy?fz$7zc*2J>6%o6+-=KCELOVkQqO#9VLS{P zLLMH-O=E)xEh`JT9Vc*M(Aj{l?iS{g1pkuTsT>tPBsEHcTmYX85c<&#_lJT`r@Fw;r;4kE0MQmd;hHJPzw0kAB{Jo)&Yb2>j9zRe+zCETzw{~YXOS0 zwnzVT=Rj0t&#z4tPmJ5vQRvK~2*JLdIdQy~|3Na`jQ=zGycrS}~L7yd(kZ6~1&fAvR#utMMs;UlnT=Ge=JUeGgV{H`k+s zH)VF;`NGLokp~(-6rL>obU?lLr6QIB$#7U!c<@d*4OYk3O;B1SK?`T^Xl{-Zq`jr< zn0sZ2bqs3`&s{trj`J56%g$I-(CGenwJi)BqyCJ0DLe&tAt%zVmyxJ`kaKz0T_X(p z{*y!Zl^XU&(TwTcBDnnQUVjxYy5T$Ie0}%0CuRr!ewIB%^d|ux0vo%(qQLQ@{IvrS z(0lv*{YP(Nfc;YLU6<2j)O?}hz$Y4s4dDMj>>3R`!bw>KlOIpNN}-s8 zeJKro-zSS8Y`55|?I{biFhQnd+Es{@6g$f7^acW>H*ORp55ui5qf#-w#b_$5XRvEq z9Xfc5Pf&aqfiQ)64&}^#C{|uR^58-*D1B>6yfDH*61Ux?ESLHXyBj8V510=?#_QZW zY@gbJkN#Sbh<^#%m>*%gH2W8u;GgPfPsqy>vfpx$>l&THWhEJ?6) zO!~Hiz?U^5#`YO;v=<%zY9X{6Sfy|22Dj;y}u#=B2<0}b=dLZw+J zG4%|86>SL(`2`KVqRkC1vQ3AaKL5{dG(7twphRLGlJ<0`i=GQc?#%h}^V5Z(pYGzn zhawl{dVENSYl!@y!{zjL3dxv0M7llPLU4%m3k9a5iGFafP$teZ6ZM78FeMGP;CU^I zBNW+^XGwlPB|^OdnZfCwKR47l}%yBx|SCr_Mrf2VHPd_z5bti{=d&z0pcsmZzzeCh+W>)b8d3a z!7hilFSiJt2xhfu?ju`#Tx63L$$(hW#fS{~Szw;c^Wjg4Bj(GmledPuz(&A+<1?XK zys&Q5{UdW04mRjrD^?=*Jx+tWW(=mWq2#8w{Om92Z5*Kdwg(}W>v4w0$u^7|m#%fH z9m6is>3f4Qx)|c;-ZetxRNA)BPYb)OBbE!9q)iV%U`M6Ljz5h+TNYI5@vQ@Igs*O= z`a(e#H`|Qbh#Y|U_p<3V9Gy71q+(2DtKz1b@B6eidh)whJb@#-JD@4r^`nm808)x< zg^$Z=vjsgn{{kZqG(!YkSdWPZk{edz^g`h0@t?}0wJ z9a6N)Z8?c0vsRj3S63mQLv&Gte-^*7HuYZ87=Y^V2Znc>hw#ft{=IGfQv@%w+n_Y9 z8K!x%jJ@p|hS6zht2=Ie-++&z)uP!d$#C#hO-=2QcDTuRQ-fh^ z1bo=eO!d3dka(?myFF!S$Sju__I;%s24{-^9)*N;*v%0fdVQ66KRJEI{o+2!%V% zj2kJg89>P^o9^*Z2zW|}#iEocM62en-%C>fs|0F2k#o+dUmYT+a5oAwr23D>Q9I+q zlN8n|aS!093O(DQM`3tNGVsbTr$Y2I6lFMIT7dR3F?(ww>Gau>+ex&mKIj&duRA1u``@AxacIKN1 zDSSkM>Byb8_BIkaZ*`8IvLcMS?s4Y%QyW~oAmjccE)+EPvhS<)kzt~CftRQw7V z6sa#tcrW0Rsj%uLvtfL9;nBc3Ea&%oGv3(oRdt4eL*o3 z8B(cO*2!M?(IN;~EaDCF?z~4m#qp`@H!{HCuI%1~YehiPrr7ct3j(?8yPpkDc;khr z(S6@nlEIbvRpFdgA`bua&CeV4gyRc;-Q=3eK_Xeru+;AzT$0~))@UjPUnO_irWU-! za=ykJJ0oaGxe67%mK^=Se&;+F%lUbbZ%TME=w}BinFZ%`hCR_{GRCu8x(~YY$+sp) z!lAvg>(gVFWV9b_r3iD*f%-pRHzcJiVW(@(sPLtysBG8r=`Jys-)>QvamhpjrozSY zYI;m?$Lr^=PhE2%F6!R^#`1#@xz!Kl zI?A91^GnF2Yw>yu{+mj=Ow%`vGkcr^d?=X6F;fXi%0?M@q)=Oz zzk3uu&x}-b_%2`(NgT?ug9y%N@*agOYI4`LRnDBW7FZKx)3i|dg*H#-77j$!Vr{YB zcaje``G|cEe7KDur{cEO(!86jC@7?#yj%fdH=Ej-KE~i+hTL{v6H4;EgvD1;$NF(B zLN`hKMHKR+b~)6phC>$X!?s>6cjDZ8u;i5&!ikANe>tTAFgt(lT^S`6S-~j4p_4Tk z(%7yfJ!YaH^BdMX$a=7o!!DhWY%DE8?S|?TY`*odThh;nzMPs|nrZqzb!Z+P<;flk zDSc4b(rQ9oum;;%?AN}W?ZQzD;iEzOiTprXWzW0o4G>`^lwM}D0l_y>a`#9LT>Ke& z?h7NKx18f)aTJ{(`k8xSEfroMHtnD3NVkK`lY91^t=uF~*z{Nqbuf_MHyb?ho~0l$ zj0)2>HqC+VF-mU!i5d7dbomj-?Ike(aaPaoMGfvGxU5xTvtUVjETQN03n@zUq}Ww@ zA$neJv7l)dqOy;yMWzzDL9DEo?zLw^aAStC;JnQO68i$eK&^$6Jq zvv}FeyCjC89pA@@MMa1;p>WB$eb*~#$vPKfn}W9y{6K3}G?*VmOOC6m7X)d^qB94x zw;L71(OuLkt-D)bug_sVC7JJd?`m4Aqwx@g*Wcc}le_^NszbH|FF&HkC+6usjKmv4 z6@s>hCSi?gT1?-Vg>-D@azXpPHnhH4rY(D<8O;k-BrE8L@o}RO<#Fl1@HoN0&GXGW zNLC+ulpI3jY_r{K+u76sJ+v}~J-3HYA#Hq&`4uloq{DWL%kLjldg^`iI6jNP`dwpZ z_L4E}!b|b~eU#)s0!69@qO)*)s`!+g9WB}PK7Zo_!3K0K@%UDBWdxfrVftv-3UnIN zU+wxuaKt{!@XsksLUjD%up}v#y1FMk_r?<-XS;m^KdCb5>bes5;@H@!w;8^);yex})Xe zT{==**p&ww`v(E827SY3&d{YGai}dbI`W`A?I78adf;U z*CZ3xh@uywn*wG>Af2(yEJ&G-wCJhiP?|dqY5hv)bAOCu9Ngo~`P2!5-p6%>b>^_k zEbrryv@L@7{V*s_Y?ScJ87SIL%aVV*sLki67bol7)TE6Ql_D!GU!Wd*x{KVG!6uzh zxPfI?#7<1hpCgBT9eLthvw>lBYkj-h2jTi**MC#}0_3j5;Yi!VC&{<-1gcg2mVw&( z(XS@Xb^M!u`S6I^Dz+Ir`407MCmQuYF~9iJ9JOD2nzzRTgO{*lq0R+xi@LO2+6&6IT7Uns zbinA)PVZ~B@fdUJ!ksX+cqDUr%f>s)V)W;%9Wv@gz$ijN(hB~H^8#W`m32wTogwt1 zq{RV!z9v=4`+r15W{Dp&LN8%u?sDFjSx4;P)RMB=`T^+3_%8j?H$2I3YjO{h3+n70 zyr@v^266OU!dZl##k<9%NCn2Rw3|xN#|VXhXh=<-r{r>OTwnqgrVt76&Stogx%_d zIv)E%w~c_$f_eVQu8@R#@NT%x?eb20EI1(d*l|7+4}4Z({=q=#3jW7KUd|&yHouGD z+hrJf;(<6=X*Q` zx2lhcmRMz=hAr*SkbOBw&%`UK__YhQZe~ROecFdhYwe{4j|TDct=}KC8n=<1LRJ5< zHckN**Xz6&B9pMgo3Er=ZU(r{@H`XdD?<0Z(oD1_t60fD)vcCg4JWxD=nfKknE1m3 zw1p4TF(&SKj^YqE*+kF#r4C&UeD6McXj>XHX`rjzYTBm)?Qf)dK1#Plhgwa4bt7t0 zsdmwK=Zp<#-OeJH-17$<`Qv-(FM8mvf%gv|u>FB!2Tz^x-VLS`CEmM@9G}d-8bsHIUzF`VC9|^7ZYn3vC94mA zh$ZnvZV}vp7Pa?7a+7HH@^ac#Z5JLGb};{{L-0Ru%IH!5Aan&1QiFVo<j=nSnE%Qf|4DKIpOJ#Z(lM1}mSvBXgcN;iZiC z8y&gCJg>rH{jyFk`c^)^;U|BV{L06YqI)|xIp#)Di>R{zIq$a7p*J@PF4e@P^ZkUb zc|@NpE$|o@nYs3IhIx4vj53QmPqmgo>f|wZl>iFz@SBd97lcp8@<#*fR!~2<{4}A> zc+`Y8G(PcevZa_+_>=kKk!(2DJlcILaQVM=T&$x)=i0) z`3@>_)nXwxT^SF#;Lt$CxOE$7yFOG79Hk(C2u@D8vV9rrrV_W+6MU6nm5w3aU}v!2 z->h+KWgNPL!=%|2y1{9`_%7PgVz^~XewRy=ivM!X{kr4Tf$tr@XFaPM1ep`hs7-gV zlBO>G&=>1z#P_TA-!!=gaqQSV+WcRB*um3o!BRMaA$z2}40cnJ8Qg#Rtlaqn|N0d2 z9IsWufoPi*;j2s7t@mgf%jN;HZ4i6LL%fTAWPTbnE_%;DSk}k*7Z!V*z z#ojPCvoe_amaL$5cLu8~ecRuP4dJ*+DYN~7kJ!bZeq`F8o&1fB{NX_?3pu_2+4Rh{ z6}X84S27H1Ab>HoAUCBLykE7khi3joZ3z+fyJZxl8T+$lCQ^p^Idg$HiHmmBQHFWIy@h(Du;{WDQ=kJ!(6R#g-|Kcax&9GSuo}$OgghSk_bc zEjNHcx=z-OZK)V3A2e97)eikMoA;RnsK~DpBZsu)S~2ItG1-lT1sv46CctGn3!Ldw zYQ=-Q$d(37R-yviNMYUj?{@qehpMj8bdkn0B)a3ia&2t;NMiVscAo1rN$G74JB>Lp z*Sq*HdXGLo>945JO|#!5lFsSB8eFDrz_vtHQ*ogKu4hbkvBq$ca#k-rF4s9nns*A$ zq#-pSzlXu%LADw2BRf7haD9n5*Pb?mbS~2G4>zMYc3dI#b(J$IpCj@J4stU48@>2% zz5l=JyM(gMQ%uzzTw1Criyc10TG;v4W5ft%+Eb6io#G^XF%JBs6r~3ZM+be)cojil zZ_r{L&0{#|l-E4daS0N$S?|Se*FmWi%FX`;6yTiF|fR{r$-& zTfi($mgV-7M|jTOXXahjA)K0w)4iK+heB6>G+9`5fKlHQ+T)%X5QU) zuvak*1fP5opwf#4^=DlxY~z7&AnD3Z9*zWTdYiYbC*uG~v`#Lrs?m@_6>fOQ<{FCc znzq{P;;CLEPN^i1N{&fcG6Jh(JBE5m)Uo$ykTPlc{>FIC# zo&eR8G}m;~-{C^9Fze5tSg1H{;AlA#0%>3W*|c|h!S5l;55jgKxb^kIDXA;rxYtf< zRfGKlZmGVO+o^7YpK>ErhW~}&i=zt!^Ya6Uhkdx&*OCGMJS3AXezoFh>z<7Ty<~i| ze=gAWOC)U8eR^Jg@daM`H8*nR?`LeV=(`+sDGS=>x&Jt?A*xjEbb57x;7bP{&&_Zm z`~c<~H#=jU@CctR)fIyjc;;nXWuNYe)jQHmM!3tMtC+#?X;UC_2wyFty;20G8(geb zskvC<9M$8q@fFzZ`p?*CR)d~n1lyZ%5BNY^y+8k%Evk(7-)AiHLkeR>i;KCLgikj5 zkmyTyEDvI%B9_`P+v4-g;-?oNdjsukCYu=} zo$>ql&A^w8L#Qbo?;$)|0-ExpX9xC_!S?C6eDVUpJIlL&M9MoKOg&r^Ds83 zR?yP6A3lEPi`iaOfRSHfwmyVWk^YVAjqH`4$Cyut&l_%MB8NUKx)(X#1aVyVsip@4 z;8Fp_#1Q9patdRjX|BTvKDHlty9D`ohx^!-D^{L_@2Y^_^idYFuhQ=bVXMOa-j-lJ zVQMm8FW0k!mxaCqg=t~Tha&Nen@#T{D12zHW5})t$lL|fhZm8&Ri|fas zHq>6*-(0*_j<;T$l)p6F!Y2*w5fh4osQP`vJoi*DP^+(cymjtJ#e^HZf-r3wTH*q zw_gS-|H0!*GP9;B--x`Y*st@I!;oLh$9LQiNRsi7=3-X(Np5v~qb_g7N$1L1E+5(6 z3l)14m?m@?NzoEvcW_FO^k@D_g11Z-JPIz0x#m*_g2rKUM~kURk9=hJyi3?YqHL_u zW;;-b%JJ&&4JGTqf~G=p=5-hRplnskC-lZ1JFWkm=w&4Rr;H0D^?vC7+JN{NQohbn z|NmLvfx3pGovQ0F%Mc>xtgwdn1|zb6sZ*2a*S}kr>Fpw)D5qaxCn_VT!_-o}WCqO} zKam`-6Zv*J=Yq6|{(-MFx->bb8rkKQJAHTk!JV}8%DmZsu$n@`TH<^YMi|^3a=kr< zkKQ$FyccF9_nYSZV)UqnTF&A^>P-B?48ouu8$ab+2Q`%t7nhFh+861MM?sLe6%fGokQ z4f|%IK|(>)&)RGlzQpx!trB??7hU)9wxspJ$@^l(BVq)H?BS;E!cT5;$Hm)$CN)!_ zSGiRs<-CZl<~#*#2H_|vcePvY!VFM0xbv?_O@mOgvQT#SKOEkl-F^Hh1v!{`#-ulE z7*%WTtN-~(MUozpV-n)W!&!nt8K1`yOv$lWmvjw1) zU(Ed^F$J&RG`dJoage9Om%fS6ZzEr;-k+wmw1k&k7h8&!SjaCNZS9}3&!J>~j+KfQ zCwZIgI(Km9CfIvXEfi}01G%FdsmxD?kVYj7y0{jR{kG8(@5VBIb=tvrjeiRTgUio+ zC~QGXlL(Ue1QYol8>{b6CuZ`IN4(o>2wl<3KX!#0^RlG{ z%pCfZt_qPDbm#?G53`el*CcEz5@(>peWLVYA`7YC*7b1oQDQlfGLa zdv}uKX@3a(CiLOsOu|D;A3M?PA|=CFiCv^NzNg2iK@KF87{F7uusq2Xs2%VLs z(r8wfdDQ=`>)S?w!UlQ1aOYHggZ<7AV6_^?c;-(8Sk#2LaI>+am-}s{L2VPb$wFrH zEiwUqVTXu5VRy`Q&15S+o{YdC;<-)H6`Rbf86>WpN4GuE2llBYVrX+uYQKCw`rN7c zd_@Xzhlh7yKm9jkRQRX4^feGWKRBj`D7t{<2{xmw_nkzZ&ETE)ippr4XP|nxKM!aU zq6=b9mP7V~18>x81Mt8jkK%QG4QycVcdjn^h9lC~5Akf&0p0Ogn~>N-9DDh@_Liy( z=DOaSx^OoL*oIFgOkTAFqolpJKHW6HGYo9MRVGUDiXq9~n9UE|(so{`I%oq|_uD>k zQ3xRB_T=h*@nk%|%JMtlfGwEPZ>x$+G>7dpey`7GT*DcmHpT$a5xnf;Cw4aJ9S-sD zcrdu574xq2M1|zshHD&IiG@${!Br|Qrm`ptBB#eiy47BQ(V@0e1{{P>XLqan`T7>v zWn=ndr%VzKPAU0EcSm9gmw;SidK(;+sghGl42L8kTZNI|&N%6_Xnw8u6ZCoqM5s7l zg5Og=bt4+y134w4PvVplUbL?lxi*mx&%2ceo(%lNJ^iwj_55Fv-Li$J`YjnIjAR~4 z7nDMgNYAX7b`kvY4)%Z8N^nppvWi;*d|-jub$&A?7)-<;W}My@0Fj(+`6h%OhP_|! z7}M7ZATRT;8rO$H=o_8`FV5uQVWo~VtB%JgGLSiP`N?(?nVspUSLz^SC5%_~2`oTR z25pGnTpB#=d9#1>^E+G&T_|B-?12c){h3QaM1Q!HX0@$91#2?%Pw&`IhTyq^Lw`P( z!_#B(!FWmuEb8Y!MiQb-Jb!mQ-^~j&xi=EZJxw6P{;f~~TLxUKWE8Ml{EEeimTcFk zfB(-uTgIp0dOO1$1j=eG2%cZTJdN7tf1);FZ?C4~Exkf~y{{*Q_Cg-C-QD~6c{wZD z&uF}@Jog>O6mo`+*DfPNh|rX4cO9&M64&43`Wt_o(&;(INANS9YKmrzX3?eHJ@g^h zH%JU)uARLyi^sJ@3N8?N7;BF{_+ATLMmert3zG62zF}O}y2)3EkF7SFcRB^b<>no9 zdKGact+0Lj);^0$Y|m$2KHX2Q8kNn8*xQBQ ztMo6V8-{?_%DAxUAS>CLPwKhOIu+R|X@-U`svc8H$V+Z~DaaySpXS!rgqDJ76y)!S zvsM}}R2Ak>$k|HM&pi()XRf4k?n2ZlPGS1t{|o$H)%VY?j)BCEw~kJ(@9>Kklh9YO zeq0XnSDbqog}Eu|S$_KEnBqSuc6~7$>+b2Ohg@64tZXaF`;)80o?no%$%oK!ihxU< z0D_W9)1Iw=%;d5<1-_`;zleF(dt0Ws6%_frhoY@~49-8v8DqLyiyD)UFUk^md(qc~ zI{CDx@aFIJ*S_k6Uvf-DeAn$o;Qq$EakP3KCvPe0PkPgnS;S2CXsPj&k7qmxN|0!V zvGy%PoAVR+YUB97_YOta(3)i4>ob5$U26j$eiHMm$_GkM&yE0ln@pIyaTsjmwaV&K zHG-etZwU+M1>8C_qw@7|D87mtxn3^Yio6cz`~5?2kow%*?}$A+Nix67EXblLNiwF1 zeS73QJ1NmGM}zShElKD5Zi=o#A<`?Gl7-{_8*nITQ>n4C9~pY(`L|OulQvm3I}3iW zk=EO7nrH9KLgB+_20f>n@IKom8_XDi!zp=1>WmA-Ii20{$TG!$`;oe*t$R5&i@`b9 z!o1A0{eRxKKc6eHR4|;xClpUtLSk0%m&r!_p{@p`bxqSR{m_Ywb!Ha6zlShv2iYxG zqyu)78qz*SdqNiJowcw)7v2f@;O8sX1HSPx(n^$l7`>z`YpKXgHpnyDeX+I@HJ2*a z{C6)vDD&W%Bnt|%M1(?NdN{$eo#Ym~MbU@tDolF?GTdQLyQ;fyA;FP+MP6?`HjB>Y zJ40%VilIg}?6(AOI@B1NDu=Z!V9l|?DVY#zveIYirL@^TFnj+Qih{z>MEjsc^*7Pxb`)Z`rIzf{$ zI}H-j40BSS|Kgs{vKEq+^Cz<;2QAcTh z$)#xq*X$H7DzxXKp_+Wf*nu&4qD*zXg61E};6iis)*|lmsS5-zL?H1=4+=c|FQ;$M=M7YDoVj;vw065pb$|=h3-ww0f>QWuFLQANq|$%c(LwB6 zX_5~-YRs9!jAy=n5<1i*PP3EeJl_qWg9l6Bx(Pe!asG#5A1_LhHFr)a#XEM=$Lrfh zC_@LJh3W^zMhPQnLnB#ohyMYRXn&rDv@tQ?d-v(9tfL0drzHDZkFCM8Ir~fZno~ms%%cy&Caq7pTfwlTK<5q4gwmUgS?+^?b0TY3V<@cX+)F4kCg)UT==BEC#u%{)4ApCb?`dW$|?4AesJ zm%m<4jJ-zPzXvnjWp0DLnfC8Zi+dQ_W5*l2!Ge2Eem2x>Ohv_y@7*uk_(5%QsW$id zNaXbu*C@Zi1|j0p`_;?Cfpfp+Gyh|T@Yu|0%18AAu)k6`GJV?yqh)UHe)cXL1c$Zm zKRsoK4)MlH`w#mfZS6Wr>wbql{MiAOye`nMP&U;5_yK4oJ_(c8z7C(6&NQqBi^Gq% zlxA&;FTnfK<5;~vrZ{2pP)<+M2Tr!^qdAosj6*u|l&~d0Klg8g<}!)n$*PkETcB#Xf+_l?#-6G=p)$h$V0foh!TR z8wd3$omKJ93@nmY`jcOKp#Hwlx81w0AjQA5rBgeaq0N`t>CC@mDBuul_PbmJ5q+EH ze4jnx+pftuQWL?Y_qc-0K56i0p6Y9(of(vrOkd(Hbj6cHQKv;lykO_G*V6j51V3zK zgLdz=Q((0gM5*!WI#{_xeHJV?g!)b1umexzp=>fFx5GCOV$&`}#n5NK)n%ctvC5VI zv#vjI=^osQ>2&04BZhTunrQ4=nFAkIf$6=a^ z{;nGstTO$yuBjUTnQGr%NgBrOf={OP6x#85fN7=H8-Iv6f2~^aUkftv{tA4r5Q5Wp zZ}XnKHws^~Z$DNMDgu4C&1u{H3DA}4nREJQI)?dN+uy#Y2E8(a73|#Y;8L}J3~>|& z2TNOq(+0mFlr_7H^=t-MTiY}mEmvW)<3yJ*TQl-#lj05NW`TdM_C$W_Jo+^bKMf^i zqZ6;%&8T*Ia?AKwnQLhr;ZwLT9J{9u1e6s&z3dtWJ&G}R1KJ2Yv-G~fmEiGD`Zd+~ z68*A_bBG!5j~cktcIB7dzA=zlRUn)6_QIvK$4@W3+)1E$1=c7NJ+AV*TjJ%Qa6nM@nN}85 z4W~pb(vq>{rrwY5wLZYv*fY4vF@-yn^bNBDj*>1Y>|$uB*-M&o=I?sQz(S(=GBROV zz(9H!a9^E+(2IS3M8*F)WE%G#{K-psZ4R_nl&nO*)MM6y-@LBJILK!EQ$vwM${as~hhOJ~;9rGs zVhPXsIC{n5u)v>@5O9Y_z3J#i{(hfkg92j5kV z0B4MXi#(|njA-6GpI2=FW9}{vsy!5B3)R3FN{3;nJ^P8;Q7aj*)r(H|y;y)tvPwFv zHvO>dX?p6-_gOfkCq)Lpc1S`@vz&2}t^qp((&L3+FskUw?L(N2b4F z8Q<%c;p(HS7ZixOMexL6Rzes(>1C7o(4N>Tu+o~K4$EL8dEKatXk=@|i?xprTL=$9 zUDU=mFbzj;E?*(9W0WNF_c1~Hz$Pp@cIA07-y(2rnLEDSPV8;%2R1Jy(U3ZK(3i?O z4}cNhg0SoHGCY5j^=3`(Ox<4y-@UL(R-S{Og6#v2>(y9i8c5o^`43jp z%`Y1h-`B3kvtv(sQqceE1J?Yjt&q2%_N*do8I0#dj*Go&B|cY`M3LR2z?>a7m8m}m z=Qs}A`#P^9_erNCtJi5rk*+m|gJd=VdGBALh&Vw0cvz$$X^DL0-aiOKwQ zx}gzry!V>_s-PfA&FtdHpkgLDRy^GKC3_Z9mmkejtoGr)f-{WkGUaIE_D43-eLpFy z^-lL>4;4v=*IwYv;aM!0r+=Dwr2&H+#bf`@Gm-WLa$22vBt$B5o^UKM|A{e2v}IpX zS^c-(|1%f-zt2g7f{K}%SD`3+p4uzM1f5?zcw_%i7tYk(+sbZd16^PJt%{+Gcw1_T z+luNI!B=ea?TkEym$jX~Swz`Ed9tOzna>6=QfcXu>!S{aKZ<#tQo2Cdr==XLRCh2= z(xAQ;;R-e@ESAeh!a$WAy8ls>E(8|24ZJAR#i4DRCr+(L!?BVT!wr%cyuMZ8e1qmQ zQXJ_HW4ibVW^OLg=-+q%2RRhfo*S@Z;^1HI%{5D)G5qkf=tb?H-h?||s%f#h{?O9qq1I8afkB>?FWGLs!^7_G zVW!4v#JRE~k15RnMTfQY7N4u(vM&*(RTT^@`Q?A&?UD;_6AXhi?*a(_HD=k9_m-Id zE}gQwp90@=uKi|D5XQ5q@+m)k!r+eO2cG_KmUwbmq2^+%DOSZR4KUid!-KEo8E?0K z68Q_J4Da;6!1}6KWQLGAOy}Itu8fRAAH90f#ogAp%kkp;k;9hwv!u#NpO6)cDjLy@C6EG1w{U7f((E z-eU7(=HvVT-UdGtG-=$BUD~5*S}FvTB!v!zK`G>9AV9 z2}aF)P4zjHgzwBq;_ffPq5kHl=hYGKp|tPu#e2C%DD$(A=S;&Za5kwHnvea4D{rJl zbk|hz-0nX*SvJ-<&Khcz`pgCdMNH^Tocx~*>X(I@z3xVQL7cMBXi zbG}tYtL%UFBNT&Qh+Oa%;{Tn$VyHKYE7{@93Da{B^u?+%IWhxI=5RR#{waj&eadTl zH|9~)$iF%aUV`@?ih{jFE?9kmW<@l?Ro&~s?)i$?N13N&d#Tumqik>MnIiFKxOnv4 za^Kr#sBWcr$M9?v9z1JG(xG~fFWT*6TdihroMZc;bMb{x#S-8fWJl!q48{<&r9SY} zy6m!ZZWb@Sr#k!8rVAMM*}Xa^5D61&pQb1@{(<_=mqVH7R|yWa?}dhNLTAe)yLn`> z9=ruYZTf?3V6VU6sqmuhWVeT6(|n6V82N_t9bc&}hLd^fm~ZD|Eh(j zTP3K)m@oEtfRQ}&Yv7|AWP@bua@Teu*Y=IN{*iv>ZZJAg!zFu-(A9S{w(rRZ0?{=V z4&Bu;ERpGXV6v+eO0w3g5^je9#lcjjbZ>3Ao_!|;E$0Y-LY~kA-*r6elFah^eiN(= zOFI7*Nkm>3o)Z6-9i*U-kDB}#(jb4M_^h<`B-U=TO%5RPNPB1hDSp2|=nsMfDYY49 z!6~j*rb%KP8Vww%?b+wy_LuKzra(>J#&UQ6{tsio(Pp0HnoUdkBoa~dPGUc4L-^;S zr1War-%Etjs`AHff*lZFn9R@nr61_r^}54EYH;SzhmU2%98)l+ zRr8~MBuLVnVhF1$1Glfwy3;Nf;`+(Go#uFmjqD z+h2f<#HUWTZMBA&hmJMvT-yJW$Qy4cvsY8k$P;?xs~(3^N~mWF%#WF z6eRO?r%TJyz5lbmm9LI*NVkuIq2Ff?CW6-%e5BCQBz6!LyXl2Bc2SUt+>e^!kU>b= z8M&xi5P&n`bZH*hsX*PJ6zF?<9Hr(mQ`LgoX7mLW&;~P5;-m?QlA7A+Y5%yP6S@hrkI83LMlprc4tzdwH!h1vs z5h)QQ6)>>HKmkEoK?y}txfSOVf6lkI+8w94XAX&8k5%-!IRlY zx^I7pK*~=-_mSb^&l}&+tMC_d3VJMft`!wsYGfng+>YUo)EEJ_%TqGrPaDzaSq`?S z(>q9YURc2J^#j7!pmC+nmJ-V*3w1xQ(1HSbeRB5m4uGdE8+YqE@qMo}UO9WW8Xec| zR}LX~MA#Xm5~AJ;bMyx5+|P-+WoRmMSz-(g?~}|dZSF>%lZ&pElw;6;<$RpX+a{>E zr~IAIv~xp|^*6f- z$Y{PvuFJ-PaaJ0iOgTb^h0_Ky&l`^*isT<8@=<+=Lt9{~LVpEiIrqN^BYf{}-Am2% zQENvzo5Qz{o+rUXzLPk1T^xh}-JVn%sS)@!`9O%|@hUn?yTBHZKLdrVpVmyv$6-YI zc%;hlbrg}H!^Q0;jeW?WI&+khANyh6_WXk`AI35e%Ou81=($*HiYiS};F%i}519`i z#m2Kr|5>L_AfuX_i4u_$(C6)}9?HUrk%c67Wlr;8)-^?vhKK3!!mgLyALLiip7p9M zj}RH=_^Q6kI4csoGfu>>d}G57+8bCRyc%H?uTP!!CHnvWIL`Qd$3M`$MbZ6nYK-ME zC@HNkNKm%`O-Z}7+>H}KFMeb;4-md#GSUOWUk=563^56~h$1(P|-;V?7GV5KF zl6P<~_vwiAlm&`zt}dH66a~&hYj(DQ#W3R)ERp<>z;`y)zt1=O4TLEI&%0$Wu(G4k z@(8vBcB4GDc;0UK;Lfq|uv7^q)h(VlDH6DJndC-^i3YTg_-~Fp@Du#f{5wrqq5~#B zzZPgzgu)|*q5EkEtI>C>(<*aE0E&Ef__}?cf#=`HAzxY|(bS`CXTcLbu#vmpEhXy< z(hAsi4Lkl9b`xayPE~uL5Bu7Sq#wF~E(_hN=o=5v`h8xpn=S#yi;I4|eWZ-?tmkM& z#3IqZ#>avg#s~&#n#B{(6S~qL1sCW)g~N;1(z$=w&p{OnRcuyJQn)lHY*ZH7MRK<15PclhvlY6$lQI&mYRz zXA=A~J8FBupTPa(O`!UiH>wJ_@UmMu6Q$py4Zp6GhIC&y3Gz-jCx(4(e|Le zM}hu*(7s{K);N-YN)JA@nj=WBP4^PY6^-Li^yaut#;+12f9{Ls76YMUCUrg5tT!7< zLeT3!_O6hw{vkn`ng*Ltn>C^$8%D*>O_Y%wOGvicQ1tmTd&DsLp`2Mb5sohf^B(IM zKt2kj3GZiOkWBi+_YKM!Ky!Vp(C1Yln)CjtCzxK1Mh#^pZ4BPP&g$^Z9tu|^*L02# zJE;vvUQ;h@&4`$s;XlHf1XtNw&QJ(~x6f0L`q(eQ zKKYhq{jvkt*pj(swE17q6!&V`Bk+HMu8e3en(&V&!5L50e1Y=7-xm*6uK}HerGDVU zM3hsPIPlY~1!-6L2goYTps@4A9qi4(E$qwcGh0&3&tKwYV=yyz&wsHWzxL~2gFp`j zE^zxz)ydm!;N0TYb&KvM%ue3jw9#t?_SWt6k;lZIw0hg|C1)E13;f!W^dZMYKJ|^& zwtAs^3lX1mau~3D=aUptKD^kZh7*ZXd=cuDt$L$Ql?%Ee<3Xh7sj$%53`%T!30`Qgsm4I3Mc{v$w+y^@i;ac_A6)~VF(CKx}0LYnL86p3Lp{Gng->Y*~! zkh*@GrZEmRwrsgKooGbYLLc~b5PhJB)eq?yI~q*S-Qa~9e?JmjzY!Mqf)sO9*S^1= zcO7^SP<9UQOd}qdWG9=jRm3J{Bod@bjqQ}wwb7mIg`$fSG~dYyA0V2g{08qXXo@)- z;#b{*aQy?#C&z87PLJq^TQ5>+Vjk`yW>IfypWamT;Fv_^ zF0qr>^djar3JL)>Q62j&52q2 zv~fBAZ3C+3nsi2S6Cg8sI^z0HF7TN2km!FRc-yC{ibv0qV3_6mKfUw*t`{n!Q@md{}u)3hA}8!!UkevF$Nq53;2aD7m1q z3+Lijm$t0vv79#+zTqrO5Rzc%23B>cM*2gQQdthO{_tI~vVGwT&lKFkT21)(C zo^Y7ZgUNbdwZ-o@2rrwK$Fw+>A^6@K9#8p6U^t1N{rQ6mKlquiIxltw_0^d@2rHn# zdy_s*8HY@x0nM}a?@Hzg{TG_WY(*06k#q~g)e&+$gRC%jkc1X9Joh0c=;sLX{Jpzz zyL<)?XpX#-TO!BQ@442Vz-K^3<8g*@zZN!PoMuk>L=K~h*OBmF8*`nJB1=Q&`X`q!^*5mXSd$JTs~PexvDCIa?}5JFmI(0P_YM*|ZybJf zE(kOmv(r2IO2O@3;^^=(FZ4xJ;?tkvCV6e@6XdJh^ltuKUS^B_<08|Mt!4l>QKVLsY34BTDSRv%jvAkS-gD^eN| zS=@a zY=j97%3z9tTfjjmlI)sip(rO$k;3yYK<9eOK&IXjEFU*I94}mkZbi{AyOIpScBQbv zr5-!}TA#u>qk)!qE`)l-ODefOfNg;ClD{y;xOa+dw zhG}}TrNNt~zJ0^rYe8mPlC{dC8n7jWmtFIO?yVJLt(AQY64~v((f#i`P_jS0qrNW$ zF3a1F;X0q8p<7@$_eB!)Rh5awkP?0PKQEnSrYP9q@HOZd9!1Jj$3llj2_A$_l15m5 zJoMT7YO3y!0dbYpIi-6AXoQqKPq?!Q&YGQ#$K<N;ac^9 zw8PiO&~oGxQKxiD?A6imz)Sq8=rL8>fs!-vaK@$c)%Z#;DzX15`-g27d2UADkk#^o zbap+Ujf+4}J~cSa5jcs%U8nbL`j#O72ur^gS7(uizbb_d;Wy!_a;x1{W%xhi`brR; zl(y9la-&mg<0v8gtNtzhdCbj%QQWZ+h%0G_J@=hhpQl48kSpSRtokB))Vy%BWcU|s zFBdHAn$04$d!{{(Cq~e;kAa`{^=9&>2ALzan zT|x<{s7X<%59w&~b~tt~qQili3|(32=&FxN-rli##FiyjeD~@)G5?JTj4qx<(?6nB z{w5N0VXEQHn#4%tE;TCtzJnWcAA16IHcAyve4_RT#n$t7Mm!!z)Ddd@ zFR2I6solsx>$(6mo*ZB1A6$bDzCV%pM3Edj`{ux4S``zP8yZ+a(L{%N|8w}W*-;6* zrGkRjq*u^=#UmZff{k$Ag|DcGh7CK=LHW*MXcXC6>^C~-IE%zoQstkeQ{Z{`={gpL z#^JJ!VeEA3VC(_E2=*%9F)sXnb;h&l>3@fLKO^#X68<)~ z;{S~AA6XMtFYc8hMGa26y~quebn^XRfdv~znk1o9FvyIlCarGYvdTm0IiaFGqFac) zSd0h0)gtaRuRr@s*swbsFWO{$hfyv+%>*yWVa$ZR-e`470wYO3*WjeTh|XTal<)s4 zMG_24c8_V;aA#$yN52R^>P_)0YVS{UAg#wfcJ9ej=#BMkB-z&1LMU1xUHizcz+YLd_H!PW^SP2Qz-jgI2q=D<$i%Q!MhbO zNjh#Qzl3N$CY?Dm!H8ATM6f4?mcj4lmPRd-dN{h)B&^iUiHY2e>|A@mifR1v?GRm` zMF9dK%(-8O;ml#y5$#7a$Uy&c`~z3D!PtH*tKG_TIwers#PvK+} zmV~X|7Bm}&%w^xE#7ylL=NUueVSt1q`(qt1{_yNm+F06s_@hty3>=Xi@U_o9EycJS zMgmIIa}lzq<;0fge+M z=GV~1a*FqtYAv3@0! z6S|*R@i_<}3DqG;nH?X&TZsmfd00Os66uSD=b>y zH89Z$N0$m%9v`YOhlRm>Guv}G5?K){39s})g=u1bKUy3ibL(wS#9|>TY_Jmy|4!iB zBwdt0oGL}q$NkT5*x_hyVzJuy&QBC7nt*<~rlP3vN0v@%ZKx-C@=QsV0aAWOW4RnZ z1lpxHj>K$rz&nRYr!U5-$S3Y(cWI3+3MfPlr8xyiQtLu*o=zo1Y!o&03S^^G{aqv5mH90xHU+LvD*Z$QpY-X7N^65tk4y7||Bh1I=_ zo93#KsDy`EF3>FvP1maM6kPH{HShA3qv{Bguh=^FINCetNuur#%Dcme=Vt5c`RrKq z;2B;#7u|x=crexvBhIjV@x}$0)F=oZbCroDZvc6%*HEbvM({!#yYgNUerO9GhnhnN z0e5)1UDkjjwmz4t+ov6oRHe_Vh%F8ckgGzca}&gp9lAOBKLbg)d7h{_GiW@Nh<`ig zj6_dn_|0p7M)d;z*S>-cr1M^7S*a_8`>qEUg#@GEwxd2lKF>$z@=VFZ9v6d_TES64 zs%+F263F^gG6zOj)>hvW{b7S~(uv3a?xT%%7L(sV_)x5Vdi=UI9dNf-qWlL#;LUc% z(5PQEQXe^TK{*a6RqD#Gs{~K^X~nS0_nv0h{2=qpLAoF6BMe-A z-T3*R`Fcpd>Z?)`SfG&#*;Q z?La|*U`VVVBmP3U*{1Bw5URWz$)vKgf~d#%Shfo$5t&P=-f6L7)EB7`Uy@AlK|j9n zZc^$+yp{Ymk*OV^U?5#@QdtcptPkGHo@2pVs2z`2ON^lJ?nMrt{OGWzK*MW3B$L94PM3@mkx zNLcsfHG*i5LYaS@-A)}st_vdR z@z{4WoW2R9So1B0_1mx4!L=|z%|m_xOg|ex-j_)5Rk-bi%-UG-?x!lZj;o5{*WDSf z{Cm<4w=|#KbBG&+@1Ax9fGr&vU!`MTm0v)7KV{Xg{u@DOEw{O1W2T|^VLw;ir6!c! zF0S&lvmFi@omccG=GqLd%FUAWJ;+zh&8F&W4|vvDX-iEZJnB57covHYE_Z;LhUJtH z-g_s&tL8KVzPQXLT|u@17cHKS1nTqRMnj{Yc;(ljhB3D;hph!=Ucb0{{2(PhW0dhE zjhE0H4`EyISnq~Zy~n})=ZYaQPxrV;`xqFWn?Iwb*AJo-ET(j(B>z{BIEo%RcEzd| z-SS)gydm58pYdHgb|lYBunTR8y!x*fZB>*I*W*Fr0ktRJ-PVx5d%w7~GvQBQOIKGf=+ceVUg58Crp zQ?zhdM6`SV1oJO$g70C65b=TxAekRH`l# z7xRkYoXtq8)`4p2gBI9{yYxsrrN__An1}mr&Y{RM%7a3VF-U@WP6)6u7}Uuy`8>#n zKgf@JB*4=LZstADN0geO^YFldqJRbHSgfV<40zPYjYQP2`?6O-3d0`HPZ zwi%NGj{4t(%N0K%j_QM~Zvr#nk&H_j|Md`*VHGSKA{mB4Iz=?5n$zH+mte}PPru++ zRF#*xGY;|(bxTuXYY=V1^PROnDNs%W&uG>2VV!()h(Vahi-Vd)Go*JAT}_Z%U3(84 z4DD;393Fx{pZS}k34NJN^SgfAANAu;Je z@byH4-BHP(P`g=rJ(s>24zS))3Jkajd4s_h1lr1AUB5OyqOo8X5)6YJ7R}gdGJ8Z#eX7C}<(jZ?gmZ)=i?bt^S@7ZN;1#gqYg`>jt5YwwG zB|JEQTpgXX$P|6Raa{o48OfQcWOeV|6g+3Y6Lp$p2VF{#Eja46ib82F2yegKfU6_ls=Z$i67!t6(P644 z5QuBCE1KuSjUJQ9?we@e7B)p>P!lHk@>pcR(KXMynp}RKWGOA)?(`n zYU@DvQTX^dGFptwQF7&2N-uo;x}TROi5H{dZ?Mjb?E-$27gb+}7C@oO?6?4-$0a#Y zXwAmkhsfSCM2gvr!4V=Av`n>yjwJX7z zc#QgnO+fQ(fSSjc2IDxJxKGkA5gJ79*7rSN!L(^f^Zo5wAb_gNB2xA-!PnfKac61( z>u9GB{<|dDh&BNfKR|(}t^O13Fc?6l^=GUPtscOh-kM7bIYNUg z2^>v}vA(2q{vfK-j!bKRwh0kMqgGcbi8(%{To5zY462JzP&gBe1Nql`R#Ezm=#3=f$^2pLt-wS zm1^oAqD_t`7m&$&4pyNi%EQv-H~+!a1{E)tIoS4Ax)74qjoY=F_ z-&+#FB$z2u<+`}JgOW%~>2_Q>Fg@`iCM%tJ)R27hr#=OssIwM21_b~1$u+%i4~NJw z=~)}SLd^lfZ&s!Gt5h)honQPnhj=ay`$SZse;8@@{noJV*!{majxKz1_J=JA=H6Uf z>GNjl|E~YP`pBP43QAH(R^j|x+1u12e7L_~l}|%NJTTDVL0uM%cyusNz)`7HsO7#@ zEBJf^O~@3zFC~11>#i-o>UP>jn&I4kPcRVkuDP(9^aKj5DzIR$L)U0CkMGA@t8B0>X7ncl6g$} z6725VXP{s^g9J9?>swR@5RGJX&%=gkpwTus=Qz!WTjhywWt|>Dnu3K~Re#ISj!`#n z{oD|0cqd+v|F8+n&u0C4sL=f)|he z5wY2q$Beh|p3s%OJc-zt6?nYzYmuZ2g}-$VGX}a#_J*Nja7Ro-@c0)l?72_~JsbBh zDz6WaGa`I*$;dU&FNToe+=9A2bIhbz*E^EEP1i9(-&HaswYmxY#XIp2nyk1|fxb~g zyEuM3cx5iGJ0D3${ENHkfy0r1C;ll?mZDF3N%t8gS#hVdkM*}Edf=$<=}pr8ttfl( znTo97JeaZJG86Z{IkilQgN`>(8li97evt8wcr@Xc zpf3?ip-+qdG2>7U+cyJ|tRmckrw5_AB=Z>+R|~2&4ZY9POOJmn?#*0LpMw(0??0Kl z_u)@(wv(E-kAOoJ{m-W|Whk5e#+XUtI-ELg6S3{jj*r`Bj7Za7z#4*@yRNPXV{GEG z5ii2eVCw&}e#?@vV2|I#-%76I#-cks1U&{6uxTyjpy~%xgb(=a?^XhD^=4u6hI_+d zERpuD+^)tsEJ1YG%07e{_YuzVli#Aiaz5_A*~ZL_%~(BH?K;7O+1QOMO(b8!GW~_` z=<*~0$*+n$aYG*Xf5r3vu2*wvI^6u2jiwwv=-3?bN8G8gDROrzP|n3AQufqqsLwS} zsHW>avh==WNAd6ra=)$X@uwvYel%(EOB3`gOEY%$W~a|++CJ&$XFpGr`Yc`ePIx+$ zo;;s?g{KtMjypW&JzWi+D>v_zB zAkA={*7!5a4IosE4 z!_XyTQ%V0xVP z*ylvV%XZjG^I#%KyzmKDC=Z6Si`hr`Z2aMLz@sq1Ktfl;KBN4wOf`CvzXHvd^WdTA z)~N`=dF0=zU*&SN4@~jY`9F*$aK!6l=b~;2{Olfn!uhBS8MO&hoRRH@uqx9RcMgo8 zK(^$u2%i>otT??kfqN9j_brOZ9!iD3`Hn9in$*GcY4VLZ6BlUyJv+u!O6+Hqls2F5 zt)ZaA1LvB?XtC!*HRe{JH$Ar@^gYQ8ley+y587KD+5#eys>K^KcE&{9?z3#*K$}y9vJUmzw3X zirjc*qWIC1zUfG`0V;!bA6h2tLntpwfM=Sje+m zAbEPY2O_>_`M18qfdN}~qov)3!N@Swr9{*TYyOfgf@z>9#^*_uGlQs`$=n+4S+UJ~ zZ}M(gIv^*t`OEf;#2jSZq;HL98u=%lWYTS!MM0fx!jBjmk>Di_x!%zt^lm-;#uMdz zILp5Ao7y=H_+}x8?c0VjU_2jTvz)t)OnWU`w5Zz<9n&|#$FnT>S9_grO)SI6oND^t zwHwPYd{2vPREg-v85_&;A}8S!?tbrubr+n`%UD3KiGB<$qF!?EKu6sH(j-v^OzLM% zSj1aytWcr*n&gK+AZUJ)q{Vg<`9{Y+Q+2Nf;eP_h>o!K9+smrxOm;icvA=Ng*U15h zNSAn*z*GXL9}_)fl8tJHuBC|nnS)XKqFF1^Y8X1$67ZyB9i1gD?JC{Af*IIVxcxLa ziCsmgS<6cXi!YXW-pR8MRmvJHmA8^H0;Roa@1#CKAQ;l;^~F7%>%W>YNw z0G6k^WpGA)2z_@dr)_TUL#K~7kLtJYfNdDn2M5Md#C-SD{(C{hJm9PRcZJ?>kmBVN z)7ig;Hdg!3{T!sm+7=oQ)tdFdk!pXMs3Ua*?tuJ;+Eo%v=K%vR?tBz0{@W5=;olEo z7YEt)JugQ5SKQYIZg+t4+)epr1rqEI1!_Hgsu?}p(UsH37g0cVhBAZkJaU*(NF?8D zK(&7Ho2rI~FcP0FYZgCF?17<6QG`@HkZMTlpW|yn;?xE$yt#GII8|E^Dh_0ne%liNSIve3Rr%zg9y# zoZjcUkB8v1nf!X2HY!*KHs?gQHIC(=kPnK&@ropPp?_gRiT^4}$-YwI9?y!)iSB)4 z_dSds$S|kRq2B7IRJd(Leb2?#r<`u}KJ4mq@tsY8Gac zQVu_K$%9v&)8z|syC`Jdj`Zwq4HEus_xx(dJpActe;L5C0%2SmTp`AL&?=IpWU;G= zKY1-pqRJQ{<56kf5!Ev1)r(vr+#Qf=f=i8Iie4~NE()WtQj(THB(+6 z(11ffqg=_=T*2DPo00Y4Hv%WiukrMo7L=3Nt!?thBEx&tLkSkfP~0nNp_26uB-!2F zj-^K;J?I;%`fZi%RH}6NOiSyV~)~BBtyK# zwU*gPe0Dm4zo`;6B*n{Eqz5D0wFgO$DPF5qo!Q&mK^GI$I3y6vd{F@%%>RPi&_5 z31$PfmCX`5@d}pCoKJU1C-}Vg{!s^XHo%9Z&w8X0uIP9$!$QIBbaeQ{ij$FO3hZ>9 z;@|ctMprIDdhXy?_~z1m)_@Si`|@VZGGf6C4$Ms6Tju`@zke3A4Cq*+TQ0qY`|giJ z8uwCzZrOL_ufJlqCNu`V7SpB=b*m8j=q<$}s{(kk#{8TyVgz{FIXy>ZeL-jMOMt&f zBx3&V9cY&5i)?o`9pWR)!CXdkef6I;a#nTSi~i;V9Ru?7v>OTN^EZoAZ-hU?`{Qq% z61Rx{p4CG$zF+;*U9tg%kap7 z(XFP-s)Vo1?XBBp0_{2I=X~I6?$jiZZ#jQKov|PG5_M)Xn2X?h@`Iw1;3n7z-X}33 z-;6ZQ9U`@OmWR5^nT!9P{sAQyoU-Xo48hOH)EyG0N_6{$Mew!;;cHf$>DuI6h4y#6 zKcr^T09SH8+yssxh|oKbB=@}sbg18a>-y9WG$S941J=JI@|at{n0HBVdpw-yolhJ* z`}4hMSUwx+1ZcT5OANtH4mWqE^B=(mV=~??N`y@sd+%x8zu+4C_hw#92HGAT6}m^% zSp`-`llZY@R78;zd$*zxCU<%n7xw;w@t}I9Fxvz~*YB}hn9m0DLvjMAs~6zq5@vSI za|ND;PuYGE4IuoFytBP{x`B07g8u6A1iXKy?ht0*h}w8=lN?b8;7_+JOlmAgbB0L< z8gvx+mj|zp_R%iGIZ1`}h8usOF4?dnEWQ~9T|XtYD{TR6{JELi;)E|)1Iv(a)(A=$ z`kHd>Y6r-6gzPnrtiTj3NGK3>gKX6JQK1_vFdbNW2>(3>D#?0HbbeESDRH?t<_AJN zuj}UzOhd>`asM{Q$yzw*Z}Id|HNlhd9sM9M9s(S8djHO10g!RCo6FXt2oA@Hka)zD zgVw*{C+&viVC4~+C~+kp>8~1?W8tmvH!|@5JN+;D^ zg6B{{%z3k%0ZJ_Y$LBQn#!>h+DpRU|d>rYm2ss9ZkYm?bHBXPp5coJM_V5CqBDCy8 ze*3fhAey@#M=yvkpxne5zq^-kXfumHIAD{4uDmjJ-HXgeQw((E8GJ1M!TqK4fUA+fAJKbX|IIxPW z;|N;;iy3qh{KTJ(kD%ACtm8@N2tJv!q3tU*63k_kYTJ6M1hr*YsSePSVYattuDvJp zB06i;wAe_y&|v1=qCrUp`u6#&H=efywnurlaAK}&T`s}Y@v0a(rS2y1$Oa3s5^0#@kP}A{)(*?hQ}Ik;L8~`UjhXsG`*BrL$26DsjG{uFIE>%$!uYQNt!W z|CToM{$)zcbN2{!$_Y|TV)yZwTS+&Xr+@gbDXtq)2cEgDiM zb(EN@i}>U34=d64P4^R{)=h|>{`BX%`2kew-5w&M*$H+x2Fu;2D$(HFedWm0J*e_K zsn3@2G-8&y$#Pm<3@%w{akqPsa_E~KvT#W*B_bdH{ zQgVr_iB;2R$!lH6H-7=HGUk6}o}7Yt_ly1w4!vOZwQK$J9}-NKjUkt1jRrR(Js+$0 zdI3)4=l^owU4~RKs!e^bMM7U+ETYq&41YzjCR!-B4%qy86*pqv8ZPaAs?(PQUod;8 z#yQc3X3itQx4JZ#>qf1mO79fhXwqn~h$Z$|@|%qIEL&)jQ`?;?g&h}7AoEHT6~#%0 zSNszLnDJYXjtgar;3U)Q9BlrSICdy8lY7PB-+2t5T+fXOf4u>$O&6E6#Mj`yvDH_Xn-utyv-wXKSDEqU>pE;_ zlg{9;(yX7aOf;kThB2(eGW!4G{eN-)|2;caQxD!AivYv+t9g7J-yto@OzPO53Mk(v zwndVri}J3DXs8ZYL9xgwQyKFh7#lsmWO>dB(NJf^Dc*Vrybo$;k9vJViH?i5H339D za9hyk3d3E*I~%wu8y5`G^c%Bf6Oll1LFPSuO&KySE3+?aae{BkQX`>TiBNOXF3bFS z0^zQGyZUxqC_<6P3LY}> zTR`T?{5OWDexfh3rR(ihk!Z-sMo`DB1m)2jzVp;98J#&PCVa_x0DYP{z8>J7gLIWX za+E)b0-+)PSGhXAh~Gq7?L1#Np|`tzN%4ytjPk7abiD~9_R%@#Q!L}5nMu)5^<6pC z`!ggx9BxGE6wg@lWX2$!lkcbpNj*xFO*y6bs}M;tU*@l~{)Qwy7#)YK5(c#*UH3Aufh{v=k?^u zH<03^mybAVyA$u(k{gQoMG9sS`TB@O4}nDEiNO#D#48VdFb;JmzxF)$*i9q_B8f=kp~-+_*UH z!86ezcs}v|ilj8LcbS*SD<0c~wQzN+0BeBBnsp7;(jjR5RPm<1aRwAJjMuLFj>GV9 z+iqIS7@|~&WcMo|!L`#DudN^LfIu}Bk&`_%n8o~%p0-sF40O?d>%d5kd+Jzg8`AnLFRW_!FHsIrvx)dMG>V87m|DMs)C>U*Dc8ZV(;DaN}6 zOm&DkJiKkRVi4W)`r;r?(Ffj7WihqoIWTMUa!6xb2kDHk!-m~U=(2~FfTL+96puBw zE8DYSo0;OZ0}h9Mr*`KoQMRaQF-+|vceL!;KK{PcL4aUq>`edVA z6g%HL_WOlDKgLw1eZFFl==a_oeH9qVkG)WR8|+lN2Y1rQUFp;Waf^Ig(w3uSn4HIV z9%Uj=@u1_(FJH!@AqCNR#>ZrMFl~<#-;+%g-9+JOl|BNQbcGXFDrS(YQJc9sv?BhW z)%(v};lTfwkBk3aRV3HgM&8%N&7Iep|1)nBI1Ktvq{U!bVoBSDtwDLaopNXv!52T( z)SVhni|5qa8m9MlL35vWU5(H`7{C7|O!!haXiJ+!DsL=+PQ#sB?g4!ecQBGZcVGzO z3q9Aj$QO|Fnp)ht%o0!+UmTBOp9Y;sUY+JW5*+LQ&Jz>S2~oO#za8Fc2Nl{X`OgGj z@lkTVr48|Zl;5qj+ue~G* z=v_Yy!c04XOAX9;ewKx6m}oCdaQt@C;#mbM2ValZXda}lxE!hJSwp!7iof<)2;T6*4Kb;R&+2I90ZsK=iAU`NXjT64*7Y_z ze0H1py3Fn@63m{w#MjP?XQ(Q=ybCIUTnDc_ErxQ4)G{{YJ=Y2HpN>`QX)eNv%SB!? zB!q99S&L4@-z{`baZ31b{5o#gSZgBRyjsY$o%{Mj_P$-cy6S~{*4*8zP78Q z(tRE~7(MU*Y*Z2xFR97c+jkg~Nmt*nsuIM0Y7AIhRNp}4WlYl+*BP*E^yf2H z(8RvIN+Ta`JS|A)(G+havZ-z^Fm1~G&$y=JwsIH!QHA{2IgiUQ#-M2dp(2#uh-?>5 zOGZ9>iKwdb_}4;h&?Vn3yRbpwtVs* zR6j`;^%Ju}p{}YqEC=dQNDxC}@a1J>k`Y1v*yR^w{yt2pV&w-D23(YjLZzU^?D6Tq z4KnO>nvB5(yHT*y&zFoH`VGNMJXTdLmFPjPicV}|2eQekm1`#YZ4L8enfh0)ppPE9 zWW0z+5h5Ff^jHnjc03-K>Wc$=?bcLKT_X&*c5YjUeg;aecB_kb3Q+QL^rC$7TTqL* zy?#_;0fHNZ$d+tt(Muz5=a`f}xF32_sLa9!k+5i(CA2OhDc!bimYz>=S8#AK>~K1K zziz7fw)Ybn*k56OImi{RB`#~emD3JpLWo38#RBe&^gA!7a2-v8z*PQLyV4SLE2As1 zfIbz~wcHq-93b|ix4vgE_Sb-F%j-G0ec#aR52thaSKVYoyG&oLK{eZY1j%2W1W#y;@7A zW%L7FDAnZgWuJqf}fB2x5~K@u-)ss{)ecmx}|UC-C7?6D#3`27cbh8Q0&1suheHy z&?TG8W&BGB9LDgs2N>|qR?iW6$vX6&zAsL-cMDF9-0mM2o&v6k8U6(Vw<=aJ!lXJn zjWn}`UskYo!Ih;5<7>0@*oFJg`8*9~(Twm2aE>uyA-CuGy`Hs$==u6vS0;v${G^d* z=MWQ4c4N2lR5dRiKV<5#L_Ugm!}1fg&UeFRZz>x-MK%0LZCy8*?to=!i@)=z0_i;Z zMy*;th>E434f!S$ILPNqO@-`P=zS2YNZS4d2sE|z7BTEWLKe}>f(C2EzWBJT|*@dQrd+ z?YzW*E-8G%?ypO4(FQs^*C<4RH>2_R!GYAbqafVY<#CPRDc@0Rrygk^LQU`14;JXP zz_u8t&D!%F^whIqG5k$EOo-oE9sWs*51$(e{v${5-G8`J2Ygxstl&n64Gk-9mg4L) zs6^-mA9$w}cXbttqGetQrfq@y6O;Tkoo&SBS)>^4NsFiMKS`~6p$Cp_iILwg?S{y& zeGlChSn#1jwuGijoS1>>*rXdVuT01+arB4?1*5Z0SnuE_IxSu|8LfE~pNuDCh;M1%$L+m|NLhtSN|aH#pIN1pNQw|8Nh+g|B70W0 zBzu=^S>g7uXZGHE@4e#t`2F#I{qZ@D-|_U%d7O{)AIEXt&)ehnxZSST%k>Z;gD)!Y zo5N3ZCY@nnOqdkwS}?{coyo8xBwU z>3SCj;iIx2sT$D~x~XL({ub7d+4kKxVnw*0m)7ix0OM86|5ebWMxzuaBEK|q&3^@D z(I+QGHb`Qbi+Q`!-0TFO=Ces^czyqo&-Uz1hbUHN%t8N!n}zU8BCTHJ)(Uw3@fi!M zr6iyaLZ?rjJcHHS*8jEWr6QQ7Z#z##9YB`U$!WRkRM>7-{P+t+F~YeVoA}JM3JABU zyPC36`k&|e(rUl(kJTXbmP$_Pr+X>Hvj4DsFV+nAxog_2>sNM?j)% zE;O%Z`VkeoUA_rNAW)LF$4>b2SJb{-QvB^WuK9eAKimf22U75-nA8 z{7`8tMQW|;mgh8MKtI8KPgBGk=MKyhW&LtT#J`QVmbaL(sXw~P~nwsIuu4?}0!+#L( z1sTa6n__fRP*OtuU=t<=f6%C(3`K2vKMEADkzzbcUw>}|&~8i4q6)76jt?t8Oio9Qg=z2mD8-UvLv)Q_9`E)+ch*iy z<9;h#>;Ao`ad!-r4ov)_bzDMs<0B~?2$b04J@M0hmPD9ud;|Gf{W4gXe2}CJ=mQ3$ zopbm8jv=ry_g;BRMsQP6Do-D$#d?h@zB-UB0VP2trtAhcL8!|3-Sm<$LGMJ95r^E^<<)sFMDG7m0 zyPmWC>{tVX&=M@}z|AkTKiJ9!z_a3Igz+8`#zhdiNG0Eim~3MQYlUzh+rQMqsW?|$ zT!!%ixzsky?W9=?c(kEGnnUX1_}renjQ{+{);Z|oA#P5y?fqYUuKj$Lfw6KDxJQ-_ zt$Y9XK2orf^IF%tCitqfL@6b-gXrl;{f(3-z^|g2Zo7mg735W06}M*JL7gQ z!%1WXr0bYu`W>d==;!GlVVtW-G{V4^)eq;g1gd--vR?!7e~)H==1;+e59e>0v6ErZ z=UM2Fd#pn4$Bt!ATt(-n_Z5jC07J=!Mw18~|zO&8$DOv#=&fE@mTE zfo!fN5pUn2z!-n`k7ysl_Zmd?-)6qCVu|Lp4|-m7p`5p8jUPVc!}Nk;7B=5AU<|SH zw`7|)p#P1W;?>jJs9t4}YI~a*yJsLkUr|(pT-#)hHr(LCs=ipIkX@LE3_P}b?)))A zUzj(i-eX)xeuA7t(q;wdQp~j0!}_3}@k6_HI1Ay?cPV;h`+UT|{n@QRZ5Zj#yi(XD znn8i1g=!4v7ST;xc4ggBDy%@2x>BI=5J7u1eQu2p=Ps81x}bWI0%Pu3Z>--OhG(D7 zm>tw^Lf4s!mSIUEf?6Oki&+*8VZ47|$Ru?ah4m<%v_CWk6PyQPk>i_?vpO_u2$WcU zn0VWdy5FEU(jUzh%Sb3`r#btPYy+BU_sc0${voGQt~qrbCajozEB~z@F+qQbkf-W) z1p8Kf!R7v+BZOt$su=<$EB0=@z)!T34?Cz)T^Y_{A|z|gQdi%m#ID&%bf3lZet2@@ zScLxwVE4;jPkk`rB5-g@hU-yNVqv1c4~cNG5{g{?@2+W=qKH%re~$-}7}gLM^i-!B zNyWD88I}G1&$?}X;gI|MLIyOe=6pXdRtZ!eGyfURHo_$bW~_aL)Wdgj+JM29&X2WH6)4m==V> z{+jGD_T@lOOCLq8%m5<2N0;%DD+7vZ{tSL;E&*+G#r`n=92DRCYCpawM*+rK4UTToSNFakvIwVKa)R8(fx&EX{$P4 z;!|OkglOFDS{Zl*r1O;N{RO3qnte|fY)}gK7vF8V47l9rxTa8=3m47AUq~LudEMbR zXK!s}1C~>E<$})}AlW-n*S(kxOs^ZI70c>SaLZllX|p#l``PBVNnk>`I(ssb-ygF6KS^^S=!LRSxG{fy0&C%L2Tl)pLZ&T zKv?*AG?#D%s^BHI%Q477p&z_WQaIZ|`|U8F0Tw{A^|q{{7&o0z5%wNOXJ6GnBLwjPkrQ ztB;4G;fswm?^*NUdFpZQD6r&~oN=r_M?`yuA1fEU8 z`7a_mPS@`DEhw;$_?w0(l|twC31o*D+L;gRgYkJp3sbLJHdiJ2k|$5%NAN~1=gHH zMc%6at@qO(e*gA~_8@TU>At_Oyo5xuukR({IV*P8?>%;^u0&yr@iq(bonWT4z+#z8 zMChY=ReH5O8+BA(D=QvaM>K)Y3&ys4p|3u))cev9#G7vIeh%nG5Aw!ED`5-lh{d>mwNB1h#`QI|T{lm&5-tSDCr3-p z0TEaAvrgPcb>G@jd&ioA5Lllv@>qt5;F}Y<`**$@NiC_`ujFQ-iL)W6Y!kYXQ?bD@ zE4>bsw|a+E_ZtOa`;7g__s&r{t_~1E$V_RN3wOcThJM;VuhcAen zr5L~3-hoOUhLuD;nFDs_!YeM5gUI5Q(k9KhM&LR(dHV+27-%JGt<;-SVrlWc=~QR8 z@jT-0x^(kl2*W-Z+tPIbHK`s65ltH!5-Xy&6dHu2Wpl~6!9I{-c~Ekqw-uJJru{xY zPK`-NyI-Pm#P2U=zNy#^Dy&ECouK=`Ff`PjF%Z>QfzK~Ao-N~f$rML}iVpi8prRXc zTU(JB=#0l6B7eV%s-*fqlnQmCZ$!^apD}cz2X+Z>^K~a-pk(>%;6N7ytAErD_Z)(R zD}m-Fa|wuFE4n4AZw%Svt;ppgZSW{V)6NvnD>US?%{R%F$5!}5zvS8oV%gg6+?tu^ zu{*43PPUzaI0u10+q;bcd-ye|IVV;W`{+P_=W2a4Du~WC-FuDu_#Vh|;e=7Fru^jD z>y<26WthdiKkefv=h<|B5&-81J$ z+>s)IKiuqb+yDBM|NH#^eWmHxY|1~$w+ z@skp<<1mtU@RWYr*#ooD8zL2DM3_O~2QkW`E@Xf0`StPhljv`Fw~!E@Gn9N*Rz1wO zioD;Qh^^0BM6)^rUFWhE!LZEk?eBv@FdBB*Yw;OF2R`90Cb~UfZj_DvEm(#zxxW$Y zIPX&R1{BpQFbn zM_oJi@f@g^5!-B}VXN>>%*^PI{Q&wE7uvLf@P2=0ws!kWHw;JWUFP0mC=*IodWT*TAHqWV1k+?CKRJjsDSHA+$>Ju_v z$EU%)g0UtD&-bSM(5vZkx)n9XCwVBTRH4VCWa=LYn}}8LwmvIGH=2+Abo$Ta1{mcu zvYpLthSoHFXVcOpICj(XLZZYHVkU08OR`vr9uC&YC#8=dao;z?mvTo@+;i-~hwf4I z9r(VuN=FGo2{XF2(BKNn)(u^>Qu$_;Dhfg~ZU(-`jF!a$$Dt~$ z{1A1LA1Lq3*FR10g2(&&19utU!;t{1Lqyyz$b9QMn^mnXsPlYy&(&uH)-)VOv2)(Y z!Myj9^Hvl-ztvjFxDkswO>5q9ZN-51CAPgc@fIj_hxgermQaWZiea2`j)m>F`f+m} zau79R-NLs#2*lP!Ce$(ukf_Yvxz1{a=TGZuIZ~=4QTM4P7efc6^?_#tyMpIBe?7FV z^*su-N&a+2f7U@SpD6p>XDtVd@5Ae}+qFWn+z-)hl^es{6GoAU7ZR=2@s~e zA#&ZP6qIz1YZmV61DTGu290JMWYk#{v-Sr;GcR#^0aFsFzuY{;N`Vkv;8{T{(*&4r zRZtBw{R6MG55EYJO$6(xN!vS@odBzvuW@Y0`2rjccC0yBP^#>A?y1ggq~k4_dF{wE zST(%c9ko&pu{qLi$A3Aar2Jin?hC<4!+^B3>Rk-X@|aT$J;?_x%W>wydMEUp)qgc1 zKOA{(EZ4n$>5lpj(R}604gnS+yYa$`L^#2h^4Qfs8e-HPyxhWaAXu#!XQ{J!@W-D=u85Bcka5c;P&n!3`KgiMY*%4H%m)cHu)IypE7R3nBAjIRH z6YG=+A}`lR<^?ba+LTQ^W0?R?Z)v*m{;h+}-4lA;fAo>5FYC`A7dFvxf5()m&-k1; z+0I4Ixf}i6zT#b}SB^UF(~Y-3$wy4N2WOcNqVVTZ>9i3xU*vV~!cg2C&R=!g=qG*= z2rsyw-KQ#y2C~AF+=gOL(U8umThWH}$dgM`^w!}ZG!WPI@@&>St<{OC?p;$ z8Az-~{a=0DXAD~ZvtBPA91#e!8wdI=ebS9goCovRcbq7u2kPA%k!)54`XJp$|Lj~7 zqUUAjuN>_M-KDQ;wmW$Kq-?71nM1YkK(Ao@xnCaqlT;iJC~Af>X0PCu3ron>Pld<_dp0`Jlt(jl0IsjqZ)<2;U}}RCD_;JyQ>(!C z@7JVW%MdK;P-aCMg@X)_bn%5Z%iwjasQc>AcF0>`?71)e8S-VFX?*kFAT^gdCB2lN zKqSm{;Wf_fi3(|GJ=mXzO0hpLqwMZDQx3CUhf4xjixq|;J8adiT&IPL@?d( zFqOkc2L%hh9P^_PyDG52iF30)Y0LTaeH;L}Q9`~987bChYq|X^q7B_Xw)ecD?=v{w zQ5&Hl?M943`*)(wwxQo|c<8CG5fiAKgCg!dUc>Y0BNo#cSD2BqxDS@a^3qmP@8m{HrBNY)we|(HXOqJcEvs)U#7Ogjj7lO zmTTEap5vRINpUoi_{u8rFm@O=l2U|B{94f~diJ1KE#t5icbOcwN)fzodu$}`F%kaC zW!^ETI7Ddaq1j#fJAvq^I9r~aokA*ahp2^~&=87kzn(H3tw17`6Itc)QK*glq3FQx zCFEAP`-(?n63x7H9Bk<*h3!wj{&C^@_xm>_vfsFNpv!lTx1N^9pU>22$MiOr|5u-< z*|LL^DStq7itMEwkIesF|9|_C|9c<{5JaJ+cZuAY=1>oN?GyXKkz0-@Ecrpeim%WD;utJ8pt z8t02#^>Ke}bMimBwrY6EX8$oqp&uFg_X&DR<9+R?su}mTF<5w0mVS?C3dv}H=4w~X zK@ARk5>BP_s7iQ-K8LpeG%0koOH6uEj4~LUu^6pkkmN*|bpvmtx5qA?r zx@T(oOlBeHnFc+k$RpUBWl6B_z;!p0`8)$niD2`&`?BWi3}o4tt<`dg2yosMN%2K>X4!dMtK+;F?Vjvd>I0{!JJ~A&lEJG9zq++F0%r(~hKsFo&-9 zfai;{M$e?n8g`+Yk$KKHcb8z5VkPd`Wg-F-W5>%gS#Bu$o8XwOdk4zZF_H?#bqaEk za~%Ju#!$k1=rMEuawz$FZZ)c56K>R=kbA^ML|6&wEG{P*g)q@=k>sn4Sf<#OIqd=# z?9QsW3(K=UxW6I8663Z7l_e_{#z$w-DY{jbzSl&AbKz-ru^Y_Ttmg~OEVPBtCkj9L zx2wo)Ola^3{T6uH@Vb||Q((F?a{uVhlM$+kSl-(DVdxdB?Jw=zF|;YULsd0Yi#mul zcx{U5F)osW%}U=~#O`UJEHoMYpXb^p_gY8Naw@Q-7?QpA4ulqIy0d!ml~8D{NqSml zPxi9BJhQ?#bu_O}{j<9;1Qe;d6No*`U}2&#UK!_G0ht+bu9-6o4Qvp7D?W?b_d_hH z1b(1$e(7^M%s&x@0D~@lauhncypt!TmjwZGplr-MIIkB-G(_~F=L z41M})0lG&E!S5;^Q^Z0r2rDH7Do{j0qmYHBeEC=4eG@eL!0IFLzN9c6$uWW{eKY-3 z*CBK>`+^aM^Jfn({75ZPYC>aPcEua^!pM!GJj~-~H{@Mnnj;-5N5R=L*Qm=~5!d5Q z+j3WT$ogSo0>{%=x5tT?lgV&XLiKcPi$qh-hmi!TvBux3OE9nJF`c=zxejxzu zJ!W&b*<*@4M85x)Z}^Bf#hCBU+j=2p6Itbt6L_Anw3U?US`Ip?Gj-aiX9NlaGTue~ zDFlzU*HcET+wev=in_+Q8Brw9Q$IMJ05ii;8BfAfU|-$!(%Jla@RwT3+_nFKSV??E zi7OX@f$7MLlZS`l$!p3FL9^vZDjsE>C&4)=ubTa~ul2xfuJlfK8dD^NV@NNqHz6DC zREfyAD)gX^hmw$0iuSC)kI(!ka)`@Gx#?mAF*W8SgJwhE^1xf_;ZZk~DMFc^ui=k! zCu(=DFxSIz9cFc+qBi*QgFz&BM->%cjP51!HbTC4URZC?hr!0X(=tTIQ$Z%2ZzJPY z14tQ@ntcxJhY+>+zDx4|%^gm@<=&Eal#K9j^ku{5ST5T44?Bf!5fj!^yZL{N*P)SH z&wf%r8AASzJv$$2aew1^tS~nq7BR=Z{GxZX30_DT^Q8QpK^slJdJdtj=z|nbk*ehq z+?hetHVNY>PtW7*ZtD_^kkg0Hwv%A5j7GEvi)%pNf=<1xy&d|fQfOT}y3qATRql_^ zA`re^yx;mE8^toZ2c{}kz{+Hhj3(U-I!aOCefCx-q^3V1_uk$^r##kATHtf8gy*we zr2T{F;6VO04_7Z5lK=C)^g=a?lPMjdy_t@xD}Ud~o5+T8t;`q8-PzzhA8%?&@(RVt zr=;d*6@fle*!RIV7&2DznzGC7geEc{&-O<{Xn9&Qq9q{`_hG(M{&#s0N#vM54>4?p zN7Z@n!whqPX~dta_D2?+dnct{-ByK)lOwI8lhz^SeA6Zo!vqq$)}~xaO-2ygE_f)_ zu?4>8^bO-#x`C{!MNYTO3w;b=klLOjBS`mtSydWcgB4Y&hKe)mki~B_$97=|$z8Qr zRdgss9`z4y$TNhZjqhJXZSJO{LtJ%I1~}xHEh4Z@mv{vZ*BQILt@{JSEo49QS5~1> zd1L(b*b-7>mno&|s0Jk>v1k?kNhDn|)kJHV1{>Lv{;!+T5krx^lw{K|t{)8h_DZA~ zDoTBR-|@&mlwEdT zSD&$1PY#Z54D!{!(O>=m|GWNw{m1|NdQyxw)8*M1C_7_~PR3+dZ@N0kiWw{6bOV96 z!gUx1R}WjM{>DI1Ir#hasvfYlbZzUA3`d&_UL1$EN6{p6O8imN8nkM1DMI7ZKZIC5 zEtoCQ5gKxosWq2lP;&YQHf}sux0Zs3FN}@_GY}x>Pk)#K0)&7Uts1xvp!%6w>HZ+P z;Pql*_HhR!>Ajj-#C16jjZ+^{Kb%3Lf?^66&WxjDN42L|-G{&~A-F2rk{VN|Z>G*= z?nFo2{tAri>>{lU{ppncapasaGRy3T*N4(!S9d_K@bcSP{&MtBr~Y!#8WSP@B)^7?$^xj( zSKU4u+XoAyLOl7;XOMZK*F#CN5 z$(xux3t%Q8(Az(ZH+?{Yt%p~Bk_{+Ck9K&wR`#1w%Ql(Kuf7H#v-LJ-UORy89r4^R z)&o#}j+%~}ViH+$KF!i_8N&C|hbG=rHzDcP={Vh%DfA)wE-;u3z=;QMbMnW?2woCr zZr@)fCLBx~RTJ=>suahVuwzrW?y2CtWKGmM(v5Z9_)Im27V?WpsSQc6n+=~o-;F;& zQQ2-<{;e4xw5f6L{lpGZlxA0wZN`0amO)c%SMhxE#S@LYGk_j4w`Dlgtb^{rRS{1O zAwry+hVcDc9E3(w%Hy2IhY0sO?Tw?T_R+Ypzt##bF=6A-8KRS$ECj=I`*nRL^GFPP z_%yv_6MczXv-O{vL0f0jt2BM+30ZReAyHpepybi$*68{!u7fyYs*;copK1+guLjQn zOI<};2)i(WARSq&lU)UV;+v+G-@gCnxsEn`nN<*z2U|K@$1r+r7-I9k@ALivC>YI9 zX*6&k59-my$#^&9>8Eh9ek>Ed2!v$YZUw+w?|=Ls^OE3lHagv~>xZ_cpYa}Ze1?u~ z-23~;BNX~L{n|gt6r-&1hh3qEaNeAbr*T%=Z7B zeLGoD`uT|#iked#^|8zW;qjYkNh|H}J@!R4_vHv=b*qc&1z9i{i$06Ea4r=E3yo%8 zJU$9jI>|x;YmO&HL?JR=spS`aIcPl2 z=j8JjzHqAMeo-8*6P!5f$v$u<2WVV#o9UMFLB74NMIt2waMj7Kg;_dcdeWF3Hs=cb zQryB5cRLW(Kv7FkKpnWX%ubM);k>)sGD%u3?-2W5vm)UY?(2;EHgH3+4l)yDZ~dxt zLbX@XM8^YPv`O1-mX7nvNVSh7&C6~@B0b*i zhF7&&@WEBKpUVuN6P~yl<+p|VG*^9gc$=z_pw;el26ZXoerKEU^KSv3^EMf=COCvn zl(v)|AM8O1Im8{VkGl~=V@etSk$$AToFO$~;Enu;ew>pT1o);pA1-#p0mgYcX_nmB zFg9v3sq`m1ki@M~KBvA5vVsmRf&OifQFMq6{Bc$yWY7XIgb^A|3m#AWC2`hFi{JrT3 z;1fO76s)n1hDz!tZ-2%g2$YY`5Sa z`b{YQ_U;-UB87OWpT1o>vUiyZOLm0(Slo zv|YHHkko1BXMR*IKuCAWawX1(#badwSP3zqhMIxx<*8mE8!VLebD$yIoZpwQeNzEi zERJV0o|9nx*tM~OjCpjLS2zC0uU;f0!1VDj&e6OrDNdV(|KCiRl+SNc)WXHvAw-of zF_3eSX{i_Y-O6q8Wq6q+gOmJa*>KJ&@Y=sP^RZ+P1v^h$@Lu+T_cHCb;&pHiRIrhS zGIuX1)Q_C>zh;KmR(EDo;&LFli%wDBYYn|JB(3jJH~^Bw`(9?EBj}mB8Tqrsb>uKe zCjUFj9~oYHcx%(>H&PJ3YraD|glx(wmc^}-z>PeQX<&r}%OicW|Lyq_(ixq7CwVs; z+TGI@)+r_9j3hR-3)YdH?yZna9x+^ z%dRMr9F*iOc%$b=5wdf9R4k0|*9!^-y!UXOK$>GnT(aNbW>zJJ`d{GuPV5v~kThYrHR^ZpWZo;et+3N^8I89-4HjgCnXNhpFK>mH@t144-n zf4pC;{;xi>c*q)>yy^hYr{d-GbVKm}_8cmRK>OgT z&EY3aF!Z_eo4?9mL{(T6KJ45Cx_YEnC|>n|#KRbEALDj7)|H~SOVIDCXKy96Fe%nfFN|Dar1sQa%}A;eP(4fYG}fTw?BUYKJ&L~%d+A&Sql zug9cCx{V(I@1Lhm#7Dvrw~lAe90$IaOJ);i-B|;Xwd3DA=Z4W+7ZIK#y1ba(+rc2y z(rlF5zh1FN;Ke)z+4FNo*Ad&Th})c5gWxdPcTXi_7FxN<5}XqlFvAm;ov}xH(U@w` zc!uIQ?3^Im$oz%p8n#HTOT}i`XLa#E>4-b}I_)I(&@toGB3Oiiy z`mjLs*!{SU4Xs6B>0`Co;UFR$4Y&|d z`*#(lHo2(1H-{kGJ5x4AtOQBQew5V0pLdf;qRdqscH!pd4`c5Rjli0mUtHN^5^UjJ zz+Z($MvR+pf3x-ruKSujY`@+!42^E&*G9XDF@Civb?vE1*!40eKk zoS(S->uT+d>f;1ai@=ot!yx2+yFOxiE&4ytwMUPHst_8&d5O0~?GC!3vZX;F&t?|q zm}hCsUk^<4s}J*WF-5R zGtKEXE%tZvL9pURJ#=LAHT_%lhJ#l-hptkTcBbsOq7KlY+)awB97i}qD*VUqm zcO)Zlt_6PGvA)}b`!U@W^PLxQeaup1=c3zC5p+bnz7?WS3dUreXHQ?ZgY-4)gOqAn z^zT#dnMKnf)I=}BN0-960$z9Be^JP4IeRWGtAb1yk@{(Ehsb@eg*Btrx zkSh@XTjR<#=c_2f{2s$|;S6N`>*Lb83Lu`5$pR+NvnV8V;7i@nGIZfioUXo78IVjq z)iA2JLwXCeKU*gB(CxB%-t+uY$l1v?z+B83?n!^6$jnX!!M8$AUteUPv!^+Aj!5Ag zY_UL!l-GZNpZrZ6%6A`0p zF@zttP|IE8fHRl!fiE#pcxC821bggo6YiZuwt}{*6E-x+*qLoHuIUBZ6A9De{GNnF zBTx7&Y*(QH`G6Tet!!j-QeW)!XFPBAKmNXFhUNR+Sq0NHK0yW3e&iAVWQw+n8Pj`V z`F(jP9ux_7x7>9)fI*0?VYp=hQ8n@9T&3}Z2@p+Pyk zZtTqCBAtV&ED_-gDwW{Io%1v%c?+bx{EOa6kYF16e77~s`_L>`lwDkJ7vlbDa*RTH z2!*l4x|P0b0gqAr(9*tLsA|8y^~W|J_JWzD0{v$plUnfvB|c|1J*NM7wf7jt?VIcA z^0yr-23({i8i)ukM~J8FP%9V|To`IS>JPi#;;kYdr_t!abkohd3#duWj6m|E4q2rB zak#MJ1oK&yq|P+;=)CKijAYeMIR4}pvX&WwGrHe|`%Sk1<4g`#&wdC0s+SMH^CreB zG6H!I@3La|pI(15hUUFF=PZ?e4WQx5C@KDyow4Ty!ww z8`U4Nf!N7*zw@P05PIY9P>$#~p)V#RvW4CKP&6y~!TEDKP`g`o>yme($2_T~&+m;O zjm}yXJ)H#P{Mg~hqHZ2k+lecNnPN~8yyLwjHWU#yPlXTfrK2_ z6?%$^|DEIc^O-zNk#k^u!oWl7WXpfn?dF*IujRO&s{C*Hzz?ei#IO1J@O3ua=SKAH z)j0VWq^%bRtafxkTBnIDukI4KSqE4>h-!qo5E2`Inr$$k_kh~Ada(764q2<3hON1K zTk+kiz^7t==jD?Dn0YTJN3A*lQG1^%od0oPS@@#t?Q{iX@Z9-$;%OcjCNpRkOO&A_ z!XnHp4!yvCw#t@K4d7PuoW29j2fDaf`%Dh!)^%xfSUwcXMVh~Pa(k|iAyKYk!S;y( zxDuN3vuJ)0naY>w(oau=%Jwe}S%+@uQ0RHuRP+PvZ+$9@y8HwV*HRY!q|63hxt@3C zCQY~>Zv7a?#d7$#_oJ}Qqwd$%aDAy9yFshQg|=;FG;#j{Ce&~F_h zKfg+c)oK-Z@qb*#{ejmu0wqTw_h$g3nrsYk$9}Sai7hD0)LIgLFbbEy{N2?a*n>5i zS-BMRaj2w4d4>4%|Bq9o1h1qjxYWF4C_>wgNKaW9{1)$n_nr}!E_O5MBy&L1?CCC4 zx)XIIjCU2C(TcQ97ivZ~Ia{Q7YL`*mp}6=u6%tIx@#U+UU>d^AuUFwi?(;wsRd#7a z2+vU%;a2(^G7CYMw$K6YCNN!M37Zj|fe) zH{`+u?Dn#hhnJ54ht=l(ef;~#yGp8*ov@DVJyrjy`*)#HHI@5HY)c46UyL!b6BEua z`Bse1;kukH7qRArel*x_zV)Gpj9{gMO|aYS04dXA(vw4!gy_KHp;vteNW_e(V?cQW zUhi-l=-xd*ed-GTA_a!gx762(oiXGDg)a86#gZZTr0h^a`)D4O>5m8B)EPz2*1l$P zyW|)%w~ywL%5+4LNw8$)N&nw@|NmFMMK@N*Q>x10;-gMW zD;~|6i{U!2J%;|gKj>y)w{^Ee9-^^dHl{f52dDakA4FxwBQB|_%kg!E5K|EIRP-I* z*Qy6cUoLXzd4fl2odQiv71U=^JtFgLfs1KmYYJ^&fhEI}mnxtEg+2^@ z(4QXx0|n=tgYi7T`KCK0KdH@NHJ&*u**qCdM_H!|Ri!{rh9To!VPmx4ar;T7h5=lP zUrAIATSOaDl^pIS815q@*|p9dL;}et@~=)j0*gS(sv_?}kPzhQOSj1bhI7oFJold< z2FJCR6v^j6*+`GJXA8iT8Yxs`*k8r zM5f}>*R&zXd#kk5GKKqwgz|^{E55+V>4Joy$_z*veEfm5au~9s10S4VyALKeBnnP6 z$RP$ZH(5N03_gcSm=WXtYPo-i)#}nYs5fdem;8ASP0!O|RiA7?F^S&9;8rv={Tmw? zh`~T)XD#sgTooKYbEd<)x$HmdwZi4hN_aX4$A;qQ&y(Z+P(#TN{Ax^?UckX{I$0r5 zo^Cvt2pR?I%Rz*&%j@X!sXKKK`FW)lWDYZ5vUwy{Uc;&X0XRq2#5*T!8W%LJmG1I*QpkjpZxE;`x0Z zl0(!oR0Ka`!8__|b5Llrw%k5i0sFQm?;mF(B6KLTSe$X6LtTGUSZpTp5J{Rf^#@vS zM58Ea!Sb&Vap)_u`uSx8-|v@FyCI86K4y;~VX_O#*~3mkL*XdG?M{`yG&y!5d!C|y zogUkxiP2KciG~Mh6z5P$9oiJ&PF1DcfnnyIOXyb@0^`KF_e^uJdBN%Uf*=)^@j+m# zlWG;Jm#!3a2~DE6zYj%Rj?REYBicL5r%14OOPWMCls1s~XYv~Lk`~C}sO;|<9Ea0b zaTAeoK6rfVJi)U!1!GKCl>PbI;Yz>Ty`i;n++TcfG#2Oe-zblpQ}3;WXVeT^ay~fs zs-*gD-jh}IOOw&5?fV~yMKrHd5?>o_6WJ4(?S$)0?B8{4)AJUKztmR)JyEIYkT>GVy zY^PW;W8J7+m0}i*_ll#&u*MJ=br+qKimiqAj92OEfutBQtL3TxA4h{+bvb7IYCQ_N zmhW{~sTDpaSd|Z$EkRW)o08OxVvy3f_+II}7uf42S$SoIpaGWCT62%SL4s1E;7j~> z^?!BQAx6Wa=}ZoiW2Al^NS*t?>;L!p|NHv8vTx+(jajsiNNUL03~X21@yDMP(h2TBi97u3#MhosMIZ%Jgvz+kSLyu&d8^4-3jG-p^v z4vG~0%u!r~@@-%5_a(&GP1l=tXY-~JQ{=Z>Ixo4gnx%(T(dmI|@U6Jv9#R!}BFzn4rKx~PAhnGqi z3F{ahM$fwm!V6x<3NEeyVYI0395tRF&LymO?;;0*tv`IR%=!r7S^P^zHr+#*i3D3s z|6Mu)|Kkx4H+;TLdC?@a#-14q*Zy%e!Il;C$}rb=JJF0dE_$c#h8*|Fcg7xH?-7zq5F z#wMQH90cM_g^7dXlGxat>vd9NL5SjnZR3~f+W+iFWFKF%O8!v|CsWLQ0=q--e9%Jn zl%_oR8u_k^IA^3-zC-Xt-_2-rCwPVPk$nm9DbJ3O@P~u##W}e?s{#-gI6N5>Vvm01 zNnWfcVnzxb0{4%c$^v0)h6(nDBs8!=w_}g<{@Xr&xd;k;F1v0B$= zI3xZQmxy$Lu)x<#I=`-<+r7kEl`E}~>YVO!(sdB9(|3(ewP&FlR8vjbS}73!S)1^- zy$q2DpM6m2Jr3t}RGggXJ0bHgb?8_@CCt$n5I-KPh6V53>Pz3d!JK~7x%sL!dKZ(V zLpb^!zOKklT~7-|DxEz0BNuU=;Tub1yah88j#>N6H$||1W&SvehGI!L{q72{-v@RsO)0>EJVXW ze{jfRrqc@jnQHq;>Zyh_Er%W3#c`c6QR95bH42H2 znE>HMLrV_&2BG|WZ)mf_P~!ciJ7gL@5OYg)*<&ymjj{^LHu=S(zz;O1ths)nM!J0u zJG~0j^*&lfz%&dUSZV3v4G%gMEUUY421A_nukK%7`iL(UxV}Lc|bjzY=5fUsc-S^IEMP!N^Kkkvf z1TL9>w%uF$@E|fq=+zk?^hP9(-Bq*-1>gVZt!u6Ta<2nbj4vIA#b>wX18^Sj5=}ar zgFlL&%F*H3P^+dAsU2|Jx5KlECte3g3qs0Yj0Eayg=F8p?XhHHXNW zWuJ(1#G>JHT`Q%UQD75|R<#<;K>ZG<=UXX%qM2vYLN~AqRGqH)nC@#UX!DHHn_p}N z-_t&NyMlGdlRkdJ=E7B z-hxQh?(-e=HNv~iiIuhU9q_8Tk=utP8wwv$pMDiF4&B!Ap_zL=aCw>exoL10BtF(_ zjtK|o%3dv%@~lUw+UXN#{{S>}(_i67#Xw{j8DMZP0uFCQ0*yekAG2rk-q30}5FK@XD_?>0PUCO3P>3jlNK1C^A(d4) zAG2^S0JhPl@G;akNO=AR&Xw2zA0@~KAf7~?w;XpL6X;d!c@-T zTp-s+sb}l(e(aVL>ysx5h?w=0w3%fTvT_iV>2Sq!UMdGJ&1ufUmtVrl($07uP5()1 z>)(IS`GDsYV|s-!yIHQzWzd84m$P)fU&Q;hru@8zLY?qu?ER|&t#&Y5n@TFm&w(N(gyDgd2Rd#ik);rN4*j>q!K^L_u)I97ijdmnEDT7nAW&)`z!$yHCs!r zqmr}a`#k&>QQFU876Uxc{D*6@olVU1-`^w7&BDpf#Q-E z<*s`DsB_{9-J@Sk5KOAzBV9BJe57jJjdvO#P>^q%nlm4T{3E}qjOWe@ai5PN7pjR^R^u-kQB(bW#rAGYjXX?49_}|PG;F`Q$HzT zqA-6*_U;u`?MK`RPvR<}|~Fo9FjL z4RQVHW~9}n__u_3_!ubHW>#QjYF8SQ zm`0D(A6olG<2nxm?hdX&60DA{Up$c`9iAymFw#tqBIY~UHpaC>@LiwkWP;xgYMRz- z=5fkEk>nE}jHqUDUuloR`Z%taA{*};85l+CTG!Gj$#ziM9`!#aJa;PL^~ZIJn08c7 zNs+(ljQeToRip*&H(+V`!P@Wf4rF2c{ABeL{M?ZoY%w^DqkzJ?n(J!+A7Squ&E+5e z|JxxlLsmu#C5cF?$CXMYqZCOgAxSh4ie!|PP$(+!hXZ+BW;Rk!eFyulpY=Xf!mmp={OSJK;M6Bj`z>NCkq z2@}5FSf_B6xKB;DQ{sf{1KlKBIzN)cBwg4IE8nhKWtHI%V!w0l4VXx-&uuLLxU?E(QClC ztJOdvv;)r@QtHeP&VpF1QoOJ73dmeLS-ITw2lid_Q}bNihw&IwW)GG(1EbL96MdPO z|E%j>cb#|m_h{7l<#nsEp%s$VaXp`JQA9ldE{CyG?L!GazFck9xDLVzm+rG3c0_rc z-kUzXzUYX#^H)7*JG4he(WKk#O8Bl03SCUqMh*-+A;H$pfIs`P|66_(oS+q7ZC48d zb01Bzy8CIUj5yM0$vHxgdgD?N88Lr0b$WgOOg(DVKln_e{5IMWW2g9~{0->6oUev3qenOkRE{NPI+eWe&IqGE$RlThgfbdFb+;_<)l1n>MV zjY57R8hYG)+5I%3%bk1fa{in@V&PbhAah9sJ`wSF)MG{Pwr=0rp+{)n>q7e1cHt;$ zc;f68RDwh{!*5Yz_DJ--GDFbeSR}&dv7w>=6iI(PV8%q`@HE+cS0kG)MniM2<#q~j zL}GA}DfQV=)S@owT%$jXTIY6Ij}XdNc>pJI1LC=dk%)sSJS& z)92}4JWfIk_-Fq4*i^)5TVg4u9E^CD-sFT3&p*m!bF0$4bj19nHZ;V&2xYm5zd27@ zj%ssWnLc-F>sk!zU;o5`QHlxPX~X_ilE zXxD&0TcQ&0p%xgvj6PGl4?{&^`Ovb>Pq-4{Cmkd41^8yWat0g=L7%U(#>tM*{Tj!< zaA!1zD(fz38Io&2PaAfkGBE@;Ut5IZiG-w{FYVIi=_=6I{iJbO3?V)Ragh$^+W)L; zmC=NNo#}1peXV<|V;~6`OEBH|Xt@GV>bN{Vl7_bEV*h?-vqQnVH~9q)&7q&lmp)TI z`T=$aH(P7dn^5(YhZ(%jE8%AuUAgvR8LYXl9(+PoiJoXGRR#r2qtc^4w{=t+(88zg zH(nO2NXl!U5UEEGnmTDS)NrE_J=~*mKh;%*zbyOPZ6m1F5li^dkdmH9DKhy!r6Cf~d*THfRfzV29>n zO;L6lQjmDWYM#@94mt@=^4=kGSDu-?Gc6{;$ozfgWxkK0%I7X+tpxv*Zp?rplX4QG zSSQ}tUSzhrb zj}u6cEpaTPOdAZOQkuR26tDhLQ$C`_ z3_PB!@6WA<;ZT)Kt!N^*_D{xU(c%KwSdM<&ebI)@7sR+#Mn>Uy^YA0b@e!DI`cgjS zF$!_oKMd)15sFFRE!z<8gQY61V^T-zq0n$9YmcYyf9rTw{8j>Q&J6ND?O=DS;=g?e zS$Z8`dM}g#H^b4@2e1fPee>rWgnE#@x(V}%m{~aIxcqRHlh{*@g@vnK>xPaco{2#Q zBBwnq>48-A03@7O_bGD1kr#!-!`<-)SP^@DaQPP*R(0m5YyR0hz(^~~;!jS&Dj%5# zs|O7>Clzm=Nbs5hQqz(mqYA+M2?ghYHx=k#vv;b?uNshM6w|+0hG09J3R#5Kp&a+m z#`3P!$g(RVrl_U>w5o64GW=Hu)6d%fE(Mn&^A`%jzx9UDXZ}xRRK9-^myXBB?(}wO z-#ix>`f`royQCja%PD}IhlwvMDx$%j;b09ZG3O*1yEItSzXw*zi9>G`(?Ry8i}01* zQBb+DDsV143fbx(3Hoe02UH^7J%-p%WOgjKiJXlJW8S#lH}gClrHU)@^qRO+&B*_~tMvgrF6<9SX>aQq33j1V z%VKzA9FbUlpjDFhMuxA)dX3I7V%#zHdN=B*urvBMBm;6sf&F%SfFnK%SwuU$`E?ub-!U<#>Y7uN^&+d|Y7y1bwXXjDPK3+yWogt>XSRiCQ#y06)oGdgfF*O{;Wh2DK>TE zf#-C`0Q`N*n`;x+h4!jB{OU!SFlHJ7)s|3tyt-haJWXH*U7S}wPWqI{J5Ho)xvf`> zm?u>uZ%TGTgJ_TcZV45hASQIyynPf_6GDwk2tOfe&@o$2CUQaxg-L}sh`EZ%`FFbN zYp{N;nbax2oY1LN*ib2Sfzw@D#Rth%sQ+c+W(mV8iWj-M-;6vADymkFOtX3ZZ@vHj z=Y9Y4_ZR;AFv$K1H8+dYa2kF>9Y!mq47B;^{NvE8Z!5{+)V!-fPns~`Qk9x?TJKQE zIWw~(WOsncBxbZYECPJY3fY+Q?2(0FA#IZGRj96%c_*h60UCYJ?XSfrg9Cf-(=n+8 z=xS)KI$xZQ?g<4yIn(6^Cc)y}r`DZOkCEa|lDR#8BT|eWjemO- zq*#h1Jh?Pzez-%(_t;Y`l5ba@7cuUFm&OrHrtk=54x@?$G_8^3qFj2kK}FDVbamd*Lm9?tvx0(QkE>x zMj=n%+2?PG`H-*iQy)uYez)nxiDz#h%GqYQ(n}G!|44kZb$SFITN(?V;|N1%WIxwb zskeaAWIF>X=_ynoNm25Y$oF8qePiQiXCWva3y+|W`vev$_YSbF+9Li4i|Q!5W-#FA zm6Yy`1WYx<6essU1CP#1rp6MS;vY|aL!KspJXxsZbxUvHcVeEFJNp_I_zQTgzG|b@ z(NE-AO0nSM-h2VIP4>y8SwsJeOqH%7r|HZbuQ{IL}7}2{(ntJk%*pCWyM+p zP%^NZnvzGMhX!+BsOO_ltX$2c4NWm}8D;Kzrd|qKs@Pq=@IjP4P#$&%FGm9o9Ph6i zR0A1%;|n9RFv8~~ocG~4vCmd1kor8T3!;~5T*qt{QD@YU?97=zNS}2^>5(Vlzn!)n zcJ|aj=T*&v9p+Qf>X!>;A8r344(ZhOPOTR(O`_zfdgmMb4vvhERBS?_*REvwh<2gI z+B;+q%LL&4VVh3*6f`gN<-uqqXsP5n~}haHz!N%{-CSTycY#d z{kJYEAa15ei@XX99>y}*pC5#Zy1PdF)EgjPXuzmX_?)9MY4?YYHiNqEUj7)#0^r|S z{7&spM0u>f=e*q7;YRkX&tQlpI%3#JeQpYr zJoh)ReLH|XXZh1R%v22T?OpObY`Q>H{^k>hZUo5zo7cHT8)56j?nO2l60CdX6BjYo|U%qGc zOyp?uG~6k1?WMl60`JCbpWJ2lhjp7d596r?$f!DdebJp33o*)gm*Pd#1B?IeBZ5n7 zraknpNpKVH9C>qML}L{K#Y*31@;5*`@53%D>lV~McI7_Q%z@oXk^EreJOr2fZz6Ky za~Rfr=(p)HyB!;|L*FMLN>7gBg7g%8I@(wHK%d~}9bP1;!(r&ujcx8_V&2Rt)}N5H z;EgzMIK%N5eGnkfcGY)(3hd<+4myf7!`1t$0a`COFpPmVc;LcOOq0Cx)ylp~VA!-h zHBZbnw#XD7(+OID*&UX9@9D$PxZ;dvuk;3p@}D@9(i}nfEWH=D&pX1^6CaOT5}Z4Z zkULq?W`oeush%JHECx+$I~}K&qr^yf$k!t!j^Ng-tU?q7A8bN{XY^IiKAihZ_sWQ3 zIx=W|S2ePQP;m6GlkEG~(05BLSTJS~{osB5@8@>}G1rt=`qO`-pqmd}{Y(eYL$Rzo zoeH&Rd{L{snL8I+GnzeL|MG&P26yXxnsbrct?#-=KNS3Le`d8E*SX|304dwm&c{ND z=k9-8>1~d`U+k+lcEe+G!0+b2}B^88DPN}o>7Y3m>QHg^0q{o8S*Zd`tTh;|ol zoDq-elJkXvJn17%EgL{T*wId^J`MWOt(VNlCXhj`e+S3qV#wLL?mDk9jF$8IoZb@o z!#6e#lK5fAFk2VNj^XWE)MfqSO^9kA$}cBBG4V76IRuND^YP81sL*o_B7Cc;?enrk za8(Tg%a!vS!$s(mx*oNE`z*5gqS-j@$AH^^-Mr27aRO9w&kSS|Ivd;Da*i}IyKqg1 zIpN{cRW$jo){*@1Aj-P&GeiphqV^sMxx5p7NPspX@uuP!k|S+6e{`7%r=G3&CX~31 z(t_XdJ@8?~LUgbBYP~5zQ@4&rAc7Zhp5Hbv&vyoyKQ`Bk_{@$uEW58rJQ@JGJsA#( z&TU{~PbfK?y^iQlybXJ`!-_pDpCwa%HVRW4L=-gJ2;m1lLo@Pd35Hpcg@lsHv6l=l z=|yosD-Z6reUQ`CeF2)fG`R$&=HOe0=K8srHmLe(DI34p z0^eN*W%=(bA%;yJ1mGPNe6w>2p zHNs=^pLI>bCKJnREDwDbTzH#;GT>~JWxX&zG0!rxp}6~yAKi9nza4k+8*sHX%}5xB zAUe*4)&*G~)XCq@EE1Q9#^Yt$W}Cd=R8NWjp5tlc67VhZY+5+dqzRa!7|w!-Ljo3G zo}@r&{_LMmTA5%XeCVK`?Q00=v6thoNkMp{Oe{r#4=Vjln$Ti>5AZ_)lAUh{LG9_- zlp|d`c(6o$Q3`Pc^@S^Hru&?cK3%dTWvMq@IVskcq*Vc-Vv%}hG)mE>8il&mn*qq0 z&2au_el%!s8RnN)79tkL$B+BFlc9gN?L?P!90XlbuF9(nh3pA$ADlW9y_|V=XPPG( zsU@GG)vixMbQT;cvnzh6Az5uj+U7Trqo)xzqGXAtOp{CvRSLi@*w|4ZCl{G`4zcI6 zrGawL5BFzT4!}&M7PjGtgTT)(Mh}!*(aTqLg5Q!IL3HKbzTg*LVEKN4!X>bDuSj$hBS+G_ z0B-wNXd#z+v+mb9B-m4VqCq|y4Ki-oDTJGV1G@NV#VZ{a-h7y=D$fK9p{+t$sQ=Hp zcE9SNoTaykZnBZ6(d-{XnsIAV8TB2=bE0r)f+c|P#ate!I@XUyACngfuB{;DEX|-l zr()5;(W=nMfDv@RFZh`Gtr=8&fHrR5QWbJOo_3f^c@b24V}i7wG=Vi|@{y9Id3b>R zaSfzqz(l0a9GCh&j-~~4HY@x`kygBhdEojeI?3z#Mf^(!{N$n6!!?#*)oZeB{B#nU zIdoTkVto!BuIS{yS=t6!gY*VDn^TbBtJp7ev>h2+`@L2b*oPl@DUf5ZU4cxJ7XxD^ zYS5GOcpydR9y-|QGTu12jNFU2ST6~6p@o&Y_(POlsBX{MYEHDn#g}A zw6@P7gDcXb>BixU%YVMt&!1IpG%}g0|B8%NG zmkse*xRXg@G^`SXYIgp3_7L}N;F@Kpc;YhBYwF?(l1f1l!7trBi0A&>;54aJsbD0a z=%yEeLV)w{;sf8xe3Vo0PN?LwA_eS14oy%$9C)<&SW|xnjmxv2L;lY-9v?%fp^=Y`YrDeHd1fxZ05c$*6o)`TGCXu~m)ztKXJ561A7@d`VC6 zWB%jf_t_wSSF!{1&I0C=D+e$>UFy&GyedKJ!kG`4>^5-9#iq7|RRdRZU*zgm9^&r} zp^M`xKnDi3MkZ4lft&P>(E~aM=>2djL4c_YqNILVQB~975$c<)ygtPKRpmQff?F-< zH&DnHh;Jj)L$3QzJC}gPtyB+gk1nvuym@PJF$nA)57vYZEWu0B%q0q)PMGnd**>D( z4)S*oFkT`2e^uPSRzve+kt6@}RYPhjERsGhs5Yq_E-Hv$FIdQf*Adk6;!cX3zjnY>7Pa^vDY$c zxzekzf%c@__b=ymBbOv464G1SsLm)_Ve48sI`PL-(exB0uBod${a$$!Wf(5j96IesTU@YidjTJWkDzW0k)9uQ&Z5AapSm-!ZOOZZSXJ1pAyTLEY(r^ zw+NA^j+3|eO+tfG4PVXWJ}?ja^)q047Q}lJ8~+H*fWGX3vhNDrMDE3hYrA?RSc$yx zt*OI=XhRs!?f%Gsy)?*QcDb>NTs}9aP7bhOlop>?q7BC2*ydqJ%dJr;q}*@1l+uO9 zZ?;q%@ua~>L`_8Qw-Fvb+*5jRmrni@Q`#YHNlbDzXhXf0r z6ksmt7|o3}mJ7go#6M)_WvRN)WfO(FZa-1u-vY^aF-;W_J{%vSZJD{34s>15s!G4P z{%^hiU*)}#hTV`L_S=7o*5_j{rJ%%Z*Q=d^_2_Nx!oXDLP1OE=|6j-7_Jj{|&%k&+ z0Zm2oQP%~1K+MtmUM}yC0FHQug4Up~C^K76c(TC?abEpb?HL&X`XYJDr+KQOPWIea zf7coa4lj2<{51_pr$3v!w?7!J<5!w^>rh*DiRyvD zSJ3Pym5+J(K$tj{$^pW^;_*mnz-S=~t!XQwekwymb6aiDTYDUk!1phNOOlYyTyP!@ArMDw>ubWoKs(z)IcVtBF(r6Yf#^Wl~z>3wd9 z*RkT@8_II^z_8TEZX>}8y&O`X?m0Pi+!z8%l0}>}^o;|dd zMZ&OL+lsbs<0UheuD@eU0Hp;rN*>t^XvKpP2aPc}3!)3l+-VS!c@ znT7w^uU~{I%Z%jx158L}PqtI@AkJ2K#kRC=J1NmEXg=niF6Vw0qZfXA|WGxeYzz zS%iSf%H%DTI5=@wx4!!L7`pjy?r$r@JUaF2P5Hy>X+*yk$Mc2Ycd0KtbxKrN0G3kK zmk-o>LAU##Po3HX91%ID^VlT?&URBj7dPX>N)r1=^4m+{D$O|GB#}G5O?6w9c4ZDe zoI2@bCQu0RqIwP9k7`l2Y{$LjjxF@|$|_%iUk9>9r4m=x+|UracA)={7Q{DGxpX|T z42@k|RTf*?Bl5FF_lt4TVv**z_{i_Xf{xQQ$I$O|76>&OveXCo&&Y z&LG;m=yx?!6MVBkmG3laVV|G({cByRP~?tLCwN`OUTmB(3XG7(+$>T_qpnRuuK(Ak zf+t0>RZW#3s`Yhrz@rr8@%!)H&*|X0c_R>8^2j2G+1()|^++`1 z*Y`GbG{vTEMT`nN(A33vglrJS-7Wi6bF=|?!^tItY_ie1GTN6!aQzN1wqFr`EQmQo zIccrE*+fO|O@VRl#gNg`9ee(9ElM>KOC987#zmR#Dg`?Xp}WcX8uuU45oQQ;I>nV4 zM6aeLrmp6Nw7Xmx(q8tU_`|>Ng&a$PSM0=0_jMXVq~Cr73Q}O&%G2FQsS0*DIynYn$T+Ki}WX*99WfF*Mc9xJF?q!SS@1w3xXEc z2Q`w$VYMdKrzfce+T-$vx#Y*ee4C{{@%jLIGUgQ1yg-MONj?!NXrsk3d$xs#CySxX zM}>VcegPdcv%ENWY#(0GJI7YM!GPb77hb#=zXVq``i_^4FCgc#jcz&8a!~#lH*iFi z(2oa54ClZycn!roR`R34N^5vF*|z_J*Mt-^y9zzVzUk>jm#B=>JP~cu-Z_JBdD5|# zrwHKh^B=EYNf*TRtL&~Cy%NOib7ZYCI&Qqb)l&VS3j>~ix~yC71T*${VoXE+*a6&J zcV>gOjT-MLV!qE4eE@sgdHiR}%rb;&Jm>8sxQUdZKYFzkR^jiT%wuZ0LYSMlaiG}{ zkv}d}Bdus>@t^0Bh0`mJs)8wK_>vCK^R+A>EsEv~w`hSkOyPGhe+>uwMy z>|+PC-;u#piqFS|U7^P$WAF|q4v!uP{0Qi`hY7x|71wB2G;=_NIhELpbSz7m6y!I< zsI^Dn-xb1_ATrn_8y5;U*UD+=lA@v3CH(5Va~OIqq`CPDO~6U&&dZB0RKX#(EPR4*#8nAC``vAg6tt?H5lb91w4_ZSz|}Wm^s<9_2+~U2KwI zx&0oxo64_$f9Qv9l%9=CH?Bc7EC*b7JY&G0`Wb2Dzb9Ze42oBiw!nD!41~23q`D|R*)EBLUtg&jx z2cto8!*79(9_Y}?@SzLEnXpn!mn6yL0|kFZ!xQ}8BR~1P%Ka2pz%Zv;(EjyuoWqCniBC)Ziq7f5)S44Y(=(CMcKKb&8T0ooa#P-NW* zANfhMAD(Ol{DtT7hv7!ZkkS9wmm`J9Bor&T7VQOOW#iBGfCGONl{A}NyM;hJEj=!8 z7tO7OCxvW8qX7RUrn>!QXu#-RaPmoF?)lvC_pR?SNVFnst})CO6+cpOQ_0Flz9lTp z=wuaonpRSz9P9&ZrkroD{~+=b&GX4ZPurpIv{h>!&m+M8TVTQKli6_D_5jw}Pzx91 z%lsuW2z};%TxYm|H_&+(+2EI$IBB||b;@7gQk4!b)D~rZRbCAaZe^?Py7`Fy%QYGe z!DaZohMVmZ_5d;ujGDcF0&%z6vEMk@fVfRnGh4rOAo^lA5^LpZ6mUvZAwhB*l2mx( zM&!4U)@D1M6Iz7HTd%d24I5CCJBikz`dQRpa$Y1Oau6cMX@buhcA?zMjRK-x9q7O< zHzSj^48*{+YuvZJh44W>x%p>lh~fzCFRxiv++r;5tpHg!?5nNz`zQ1lJZmGf&T);S z%82K2ACJ1Dyb{~>t{uX^RnC3=!<|0la7k*!)Ts~+(mrmCeq@K*_3fUjIQ54vxEelz%AbNH+mc|S1lh+fhRs~J(T=`1b=Yw z6^yh`gL@wBD~;3yAG#{Vb0{(yMatH2UC|hYR+a>jvl45Nv;MiJU6Kte8Qt9~5gUbb zF>5b9AJ4!C;eBhosvMYjoA$Eyrylsp=Jz7|?=niA)6>;|+=h%b&Qh=PjY76x4Ev3% zyqHn0x`!p%6q;igiNyyvFqJK{b^YEH=&vLh$-dNy=naA1`YEt`{xPh$I>i8VV2K4M%bmu4e8c4N?Eq}X3jYXTuYksKW!TC=3WO+676X6E~r zAn^TUjo~X{{E|FgFx^Fs7f%j8&OJ_nC0$>wk4rOhZEH<{|cJ@UW(nLK-XBjM^G zVBMXU+q(Z-&&nA-Zh3)`&@FxF3Y4)T$IF~F7EAm2F~*G@;kSX@xXulXld2^jy|EZ8 z_;HT7AL&W5c?=cMa{#|~(eWU*8dN@I1$#U|$UXOY$F z8+FHK;{Ukm5wlW14D@<)T2C)Fq9F#Y$vY)uXew&`wpI5O{A+qpODjo&|6tN3F(u}8 zma7(n5g0ipHn6fHzrG2d69#V@5_M$t^zz|@{IpnR|NT{!o=rIA9KHWc`aaA}TcX)2 zj~bKW6#HC4MsP4NzjwYtESP1+SL{2H_j5Wyoo3j*8zl=`>j(W~#nyio9(+Qan-)0p z#N_1G(WHw1tMBuFVS{#pgo*IOhRSUUYlRZ|wf4xJ?9vkYY4pAA+4Wu$dT2IuBg7j+DWP-w~oURl@!Q~iiH4s6Bf zZ`K#HNtIcssZHf~IYaCPPrq2>TOUFF-(HYYg#ATKH+HT?n9QJ;R9}9!{H;X+FFMq? zBnYn1Tat1)G>k$neWEb4puzukIJ$hTnMM!4*#snqY#^=+^>+_zUBMXE4!!N9I)gpa ziU~XZnib;|{!Q|U{WR9Iobl_tHyzFv)XFh@lLI^d!iuE+p)hurzS7nDF)QxS#z#p< z>`kwaG*X`Sqr&`-PNlHri(&pN0Y{XQiFvuS&$wVU74~DM^KX0`3pV@8&etgZD9$J& zN)rCB4=6=eEmDa6!GE-Ek~lw3g~{;>2)|4B+hwx^a^_CYNzk@}ojjjI)%Qn;My%56 zrOR(f`%0^sz#0NE4`&}U_5Vcs>3!GjThfuse_(Zv;nt2zgMN1CHO=g${kya|M=Av3++nqA00*06R* z7>By;LJP%vA7NZD_t>=uf8c6E8&_js=Et=%nSCXws#AwVP0<+rt6CXS?(Qe% z6#@db2@dyX~fIVhKM65Y)va>X*8|AgK3g{Rf2GgoQs z!GzO#wz0Vhy$s6Vb>|I)(_(z-*u zhPrbcxj9Tf>+xzK@+Q3;lS#u6+1HTFa@`E%N2~TpCnW*#v3OI{{(Ob{ujjj$iH@-|rNnT+5dExsEV!H1gHJ!kxhG=7p5Q z8DY>p81=Mw)g7${CiBXhIDu7HscPbW6SOEZBJ5KSbmk(;u*Oljw!z!OyBC#Cd-uSDE}*qzTyT-eSBja}B+b`Z4uV zCLDxotW?6e(^1q%y2S!#;&%&|kYL3va!i4pFH43b6j;l>HmZKoV6GbN^^WP&=%8uq z&gI8nz+bhUbnO%lm%Va@NVnF3W;1a7_KiK{uEzKAyt6xsyd*p_k+9jB$&k>kd_ zYq`~~W|HGtKgmxp8LuMtn0^aU%`QY8_EDF`mjX``P?J-z-iL|Hs^8W7wG0>d51lpr zwFs1i>g4g7ApWrS$$f#=9T0r>I{Lh{AkM|(mMhn?fj+h@@~4OpxnE-{Z*z}u;A3z6 zLfzkUg~-xH&f+HT02-TS#vr(nrr7 zr_N8K6Zii_SPxesdJk1c&zO3)@B6S3Ac1gCDlB}Ws z>CZ}xg7Q6b<*23IL4JGlzxg9a1=!n0mIh(G1k1QGM~Zo#cyfPzi5+u#-N|ea#)405 z+}1p;HUxIORbrlx*U)L|cCIPHmlADdB$Xn(j1=PTg|u)H`;GgK7ly0{QOTbSrBBjp z=qs-@hpf#mlD>{S$JYkX%iuJ@ogyB*c{~5~r=e*iKVB;)MersjdN!;ZQv%T4Hjj?P z8Y-M;)Rjs2`v&-nd6u|aw4uBCDmDK6l?Y|sd;6816mwI#MqARtiybN?D8?ki$Yr0S z>@z~A%p>ygbIIB;ns;rvKN!D@_}_Y;99zwTo_EzPc6pQVy(aC~6RAGPveioX?%4^N z?DPp+H8gn2sM%Cq(-4Ti&3SSxk^~Puj7xW?QQ`d?k_sA6$*@MJk5>0@4*}!kt3Z_~ zCj6OtT!YGEPW<_ZCAYG|B=Y^ZB3k%>0duLmD#CJ#=$FH`iW-gM=ngwt4iRL=W#ScI zo(P{puDyW{+Y78%o^K3Sp88)jyvFvzc9Rm5txEm$tA!D(P#I{bGbP8luU$;rrJ8^k$#OxG zcnVCAI$bH6o(cCi{rw<#f*g-`l;rRX*#XO+7dhJM$Z%njG$Ok_RO)?V7TsucZfZs!(I<&_hEAtOy!1A;Ovn%Y`o#G!Z$(KNG$vjmUTl{)s`=Tb6(PIISuOMs5Fzgv(l?1=mX?2OcK_?~I8h?MX7+ zPlfZ10agkWEiYtiR)T@!x|7C>)2%4sP9CX4=`hO3UaAt54@C#aZs>FhXTXwZy7}Fe zAYdgYc~0`X1t|}b>Gyd>gRUi?U$u)j{7Pd8W2Z<%ADO3AkyrJ zEla8jMRPxgJ9yJuVfR7%B@(SvMEa3UOUtz!H7>k z*BZUm+CVsB%x|^ftRU!OfK)%w4E{D1oS|Nm9-)CtA7AX-eod}02{au4`o`)dmFSKzr} z^Q%^$K`5gC-5NsL3oCJ%!g?_jn6%HUhqI4}b0)K2^~;P+*c;haWAK^+)qq~^SLr3F zJ;X<%X<`V4$Et>1su_po3q#KHTI1*)E1M8M8x6j{^6(is$wlB%D7kk)XA>y*CzX7; zxePONf3C$`Y(bobPi}uV%mE+v_heDJO^Ebb^3DR!7$gSKGE&)8p!On1k}St@Wcclo zi>F09;F&L0IFp$$drv=SW#~aqr!3nF*oz_eyI5+(CsORQ`AN|#Ei%j}H*t`I*rOat zK3ykV7y}mn?y{XqAB0CC${fc!2O!6h={LVzB%<_ot`%J&@?V!UyYxsy5c#QA{u>4} zNSs0@^1%8Y;;B}gI`YjI@sA709bsxj%o~TgGm00{$}YyqXf=ln6D4nn5IH524{zCD zBHM#u%OLADVxJ_b)N?&k%m+B^vdzS6yOF&xiPgI*8cazdW29zu73Da`b{&1W2R?K@ zm)SY9QO9stt9Q>Rybe7#yf#aYGegNeCaocO_rzX2F`o&is!!vhZz6I}xeU01nKr<% z`lRZyz(k}>-m7fy8j41u~5%SO*@XLm*P2Z*vv!EUO+J?;iH^W zi!5t$YJ+|$`F90k1uz##V(j#74M`uY^!h2Xi5OYuTlAeu;lwM2WeJUJC|Xqera^E` zhie~f94DS%|5LYmqI|n4g~NzP=XS^Eu}4;`Y!v)R?BYFm1M{Nwg#p*t;* z>y*LDSMQJZWoagpcr3!XL01-hq!Tf9G+pmD??fLC^C%`T)gaj)lV=BxE}@)>sXMJ+ zrQdBMO*LJJ8Ep2HgYR4HSC_j&D>juiI@vp^}x;Qr#e0HEv5f9?^~DTdfs8 z3pOKNv-2uswaaL2jOU?w>mh6>NsnJthlau zXk*>IDfIR@|JPAnPCV&Y`L_ABfACq#&Zm#71T9~V`CA#eh4_xn*L1loqn{!&$5m?c zVaYbKt*M?AbDUt;-y$6bzS26+qQ_KNI#p_Kj`});KRax(wLyGd(j^D3*Nsp=knM1G zg$BEe52#=4*aI3@^5tFoZD^T&behbb(1|2%M0uGvLdmtj(}=c<`47Q~H$EhkRZ8#}c`rW+BwUdfAMlW;eB`m3ts1 zyjrQPMuR`}tYq+C+=t5sHSq@8Euth@ftKF`1V`!j18UVQ8qCdujpr!O99+L3)}QUX z1sB;?ZyRV|z<<#grjD$bO`R5?5QprVD>FJ}`!!QI}M`P=8zP=vy>!xwuT;p<)9^TI22@YejFdU9+GbcptO zUiceb7f#=2+m!;RQ|ZEG=k1X7 z&vb+Fr5QN8^2Bfzw}Mfo6w^+_aab@V=lfJikO z5cAMaY`Ik?7h*vwV^98c?g!X^MB-~heHtW%{_v~|3l~ql!rP zOFf*Qp*@SVs)v0Y3c@84FLJ#DCG5tMyTLF#U%ka781&vWd`I7FQ~s>3(Y3Ppk}ckdcEgT^Nj!)uwv@bCdU=j$uxAg%hN zjL$R^kuYYTKQQ2go<#-N+1~4hnY%Nim5Q~XZD8r6^4STURrtudM0}t0njQDpq@w_r zNiFCMXTniE|Jk8?3&=~KYJ-c6$W}~jVYhD;kq49 z=2CzPkAbmYpI1Jo>Z$|M?RBuYT=>8FVla`56q{(&XlCxri+pf8cd- z3o*V`5aF$EMmaAn();Q=-~gAn0~4`tVA=o6Ycn(+9g2y{VfF2T4p%i5q0I(JFB{8C$zapxhi(@Xt58dFRfivwj*>WA#BG+Bin#xQU>O< zGmx2KT_<(icXVd^tk(F;DD>FEAWDjt;LX`7g)V20Aa^r*{rEd==+f2DS3~pPpxBz` zzOmyZqO-LXrmk5bc$t$Gx)+kbZDabKotMua28z z(aVJ2^J0BvJ)ysd9HMHrnE{VKq{@RSW2o)Inevc3Bj7b1Yj8Q+9d7qrV#7vT5JOgG zj<9SO`l#*pHW?KmTZ(@tE?+7|1#dWT80e>x6bhKyL~xEX_x5G&@B-XP&feD6PUW4bG4 ztDvAGP?zJn3Z|~R&msjHk)OoDld|!lKzl#V+3M^b*hpV#Y*TPVT6zBrKfZ5;+e^-t z&bcihts|I1vi$${HQoW`n}M4PuzPF8_E^gR{9kqbKkr|wv`H$nJZJg}$s6Ixx%R^z3&}F)XT_w0-RhMd&7V`+sQ=-br zc#m?FrgnTGsI>!4OV)^`)~zEkYssUmgq~O2?YpqqWG6D7dqhY5xD!bha_3Pj&%$ip zcUti)jMzkK(3eL4KPc|v7<<|jF^|!X%Cw4ILv|lQ-N9-eQ9E$Hd0()As+e5o?i2Hn zMCF<{HZqm)$M}YDy6Xhm|4!z0mhl1Hs{rXO2G|1Wi>P0u)sql&Db-{*a2@?I-V4Yc zpMW%>LNIjdgg(>9xXc?yjG<@n+mI9^z7j0#{2-jRnH)Pneq6@(p6xhQ#6#5Cc$j7#((Y?A^4{{1DQ+;8R*Bc z%lkbpZV^6wRcGJtB-m*m2KQbfhk^d?Y6K-aCAJR_O$oa}ikTErxNKES!eO7|cAs6w z!EH2_!B~j}tK}9}FJEp$RZH(NKhX^2xc>h2_wyTw!8r23%TZSB6qQBCW+6Rx{AqLK z{F@dCe%7GvP)mu?eR&xxdYH&_V2_|q_(z7%QzX7P#k&MPn!8LUlWUOH@RuZLd;>|2 zen{}f*TIOaXG%6p1Z(x;I;}k~fSoz|py_Y_9`ZCg6=WhHgdO{BclE{v7F_KJ^{YEN z#JOqnfl{5!VeD$#Q&X&n8aK`LKTXcC1G9hMHqf0~h5wJRzYNOq3)}W#x|9?|5l}!u z5iCH&U|nJ$pn!;q3MdUKDM*TdNQiVuH%cju^l{SN-QC?G@ju_0_r9N*XXcq7U#{We z3o|UvYprAL`?krNcG$~`ohDe{L`;FLR2YR_5cjN42C5aL=30xQC0x22)qaBeEcTA9 z_m$paF zkaHr69Qq~7Ka_>OKfGXH?&AsMjjcU_GrmY0dB1BrTn-F3Z$4WJaY21A9-EbCXn>?q ze!TRfS;QEBKIUA{0-BM!E}u>P1C6pLD8?q(Ld=S;Rz3Ve^NaPej`(?WuRLbm|9v^C zzkljs_!EB=tS4=L(zFbXMAi-0_~9ZYxIRgtp{?I`=Op2-~v6W zNjuxSxR0{a<#)ifNYpWH<|H*0iYmt~qkgKEfL4XhpX+x+PcKcMm3@>lU6kgDn=&HeMGuw6OmcoWBmrbKk%>xA9ucYKmq+i5xe5v=!ME+vQ~sI zqRU{`tMhn|#!G*%gj5)yfx##3LH~?Elj(H%SNc0Bj@qXsH^vN|JEc&O8Z4tj!)I_`*p1&pL^Cw2{JMwFPWxC;E8m5tAXVV98G+b*Q~w*k_`dEbS+izy~9^< zD5VT&TNOOtCdDAvy8HF_Pb|UJkDl@S$7}FDnF;e?@FwV~#IcOOn1L$hMt1!WW-Rrt zVVTq72<*K6PW(!x0i0zlg?0rM(HNE!9lbwwwA5~RL>6YE%oAjct?ecot&+3 zRsJE#^l%3pk^Up?{9zP*6P;l)ieG`J??OG^j#vTdnBPk&`(;Sh%$#nQ9YTkHt!fz4 zdc(fdfXL)@5gaMR>d&T6!}HPy?;&j#J&*_&C*!UM_J9}C`ES<1msVXt=N}Q_+dvz6 zaZW#62Z=u$WJ5^sp89I$L^gEabt8~Ot)oemhzn!*9Nm^{C@ZmI7&WkPlzr=7hEXqB zHwQa9LWfXUPPX+j+*;_mdvTnBuyXd0a;DWZ8nd)7Pav#;hWf_8-a!(=4MsQV!D4cP zXIucy)1iHotref6{&NOMK1P2x_g+9Ljm5M<)J-rUJ4Aa!vVZy4Ym&bG;b=(f3ka;FcIBJ@xJjE|gkSNq0 zAw%4R74CJV)9)@3zI)vdnJy+J=xE7ZB3JH5o7e9CmP2fW!!IshES2wqlZ#FO~ge(D(HZG#`#&$&tExH>wxV?i!;e zcU3Mt_CIp2U2*_6j|Akc&x{~e0~b>ps!i~DcXe>tI0xl1u$rHtTLY==R7_b0U zZ-JN_qv+7Z$s*gLTCgbaT$+Em2H87evtFWQ2nnvZz6@^$#z&#Wv9)-={n++5)21ZE z!NxN2VSN+SjS~OmDmO!kZ;nXgd@9)9I{wYz^fuU??Iz6#-3Q5%yl&nj1<Q;SgZ?9FRw zo*0;VCCB(YGZ4M``rb3}*f@B08`ocCUqkW7xvJZ^nXv4^PL=ZuGoT${6#R0U98-+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 zAIP6X4~Ozj7r6-vXQD3r6fH!QYPF3#oK48)z>CRo zY!yN(j#DqyP!M#l9h>Mc-vhaQBEKuvcpsQ4?q!zW8kkcH6_vfl^R|8?JlPWXJyRd3 zeaHLo+8Vw-^IZRj|Mx%p>i_#yCe8KX`462Ck!qMiZWs$^0|KNbh|7S1_?)zG$D`~IqSzstBv&bh_gtF9^y*V6qVmSo zzsIa_r@}3@(Dr(Ck=yamA)6T(`FZCv^VDyYC;Y22=IlqDLo885re27u`jUPWUEK#K z;h}4#Kf6$k+ch?-r_ zfSsdLPR!Dk;KcQ)%aJJ#u~$*F4s2B-!#`_c4ICLD;Vzi}z2GZgBI%tGt_DbkSwKkj z+6s!6Obl%vt$<6pS;xl@kDx350$N7j9l9pxz~ugUZ+)s=OUBG(2pn;4NDYR=*&}V?GUz zUZ_2T$*rKTGMr*JaUR@ZVGjG}_v%rb%A9!~&iAKy`%foSH4}7c@+FPVXCYha-UN#| zAEYC7{Qkm*Cp`EZ-aNdSjJd*({=rZ}D?vD3l1AmkswVwd-M@-tR9n+8;a^1$eB?pqDkBDUp{{_5_ z*G7Nq52U2sns>xGos05$BY$5xq8$+kof%3kmAQj&}0bIUG_Ev;<1tlkG(=5 zS?e`)H!cG^Qm^vLz5n*<5kyz*!F8&@4WrQ2v%YJh61;B5k9z8)a07R+bEw^Y^V7}Nc(A=vH_%7?DeI+ghavfW7 zlk{Z}b$qSsGuQ&*nUd=76_7BG!Nmup4mj#>}9nzXmSkXb`#4)FC96lCxThAqRr0&Br|0owG+=SOx%xi z#@MdOGxtKwt@`C#$LoM5u_@JOpbVWYHOSFqnuj8_Tg>T=T_Cur@!`963@F;@7hWW8 z1JTbHuMh+7ZEGpe9$lP5>-Hi+=D6>RL-@oUC)yZfDDG9{Z%u?<`B8W16E`V#^Pk-t zi`_I3k$7zJBo0GsC$4Cm^xA@+{fzw^mi4%o+2!%d#x$&KEQ$BrI)HAyLg@u6O2VeH z(?<$++{2;9{jFcV7A;JhYe(N-gp%t^P4E4P2(SI8MfN5ZkYiR(Xf}SH!%m891(`R& ztq_VmlKnquK2ALO!q9K{eN>9Ik#P>!o74COULhw0JvcwcW!42{+ZMOJx$dF;o8wor z@p-jHkKQjr*#gcL6Pp{O#QB=Je7~vQPb0e5TSI3A+JOIwp>L04A7n^cI+5YMVcxuV z`|KiZ0ME{x9`P+jO2UPSJ9ncH|FU4Y`K27V_qXm)fZ{$fm8jUJwC5sZjt@^#ww)yG z_iXL|CG5ck3Ww1Gd2T|EjO8^Ahb8n;**8#=9QR3{j7gox&#n5ghj>3rWv#fJ^EqfsakYQE8af|63SnboP*8|ipl5cgFw}WSzRkyLTp_3ZZDI~qub)5rzmr# zK=eYk^+VBVC>OWUlB3>*=i7F}5lan-k=s){(t!j^7j_W8+%P{fB25Ey&*I zeYbKJ^B-At3vQnS_mS&gkDncffR$qgDl_ZoiGD_u+r6V02X(>zuzof2;L+VXhm9hk zM^>YaI;~JOD)VCBfsIi8^jOzB!!cx1Z9g?}Z~*2R*)iE%f6!_e`KE+VaSI}bPYXt6!1z|oyM2e6kr|4RQ1-go;fBWa5Bb^g#s zZwzsgVE%9==9mx}_9)EJM$3YRP<=ftd<%aL1q$>#pK=>TQ}Wc&(ubJ{Au&WMzxFO- zA2>droReqA8t29$WV^|+6pOOhKOQug^6j)a`d>r@MbZsM`=%4v$dti$>es_q!}G0E z6E_!-N#i?wX6y8?^){H~lB{t|A4ZS<_^8Rm;Pd75 zpw+)U7+lJ%?DNPE1*0qaUF)Pj|8t-Hq3mhOE>$61_Sli<8qG%zm6l1`nepiTSXjQN z2S4&sCs*xB4MK#s`EgE<5~2Mfl74(V4qe#py|U_3jo3IxFF(5z0whs+W5!djkX1BG znW0q~vKw+Zp7N+2t=!&-%l7OjP=iv4ogL}oDsp!vG@S56`AF6uwIf|nhLlT0{0SmAX zrvzT~v#U4b9$IYW^I|k|7=E6n(Ub=l6dP>pGP^+DXI5#7bfJ~AN>iohY;UPIQPvR>#M37Z*vEa)?N}8*#O`<8tg7+mOUs4cycw*_5$2S+W zq&PS*@;n1kYaX!4-sK?ub3?AL~JjiK74RVPpjhcDr=#x}+w7)b`>Y*^_msURZC?^vVRLa8GHvx^y^C zJxW!QRspAD?g=NDwE)9XCTmFg2b4=-(9t~M4?f>2?s9uM!+fUU-_V6GAhJ@#bKsH% zHxnP#R|Hog9oy8i)O!Ejhcr>xd3`5f30{{JIvZ+tp^5|D@A3HkC%vhVMBIs9@l(|!^;}(i{xLyb?8{$g_3c=l5DiqfC{rU zo&7N$n+8MSUaS+_rSLHRrtwp?4se$KSSmF!0JQy8`-AxBY0N$tQr;fU z9LYo~Wd~D-WhgP`?Zf#E_yKGFX9i)9p(HMAdkI8-PfcCGc|^>b>fTo@w_(^f<5c7^|TyOb{&QTmGyWqbJXW1@)9Q2mQ-gS_a zxKiH4Xf#b{iym-e0*7_ebt1U12S@k?r5}+Hc(cS5SZtSBYjM5JpmU;o&x%`tC`;_;L1^>pD{@Ym+^M{uM-xc3S=ST$`<@hyTRcG34c;!0TdF26U5}gX1452~!c>!1|OH zD@L)3ZUhXTnXP(C4VNH~GU_K1TewI1)m`t#uY*AE5Lslu&2Zk?e$zgxBKt_d3C?qW1MtEZ)QMUiz~5jFO;|CYY>$trLXk zjNY1}Hpua#qD;5WfsH3{`d(lXbbGr7?vFOWjf@64v#CMkSmpjc{Bbp+;NC7c-#P&` zqj@fb32KbekA7mmdjyPBZG8Tg;@mt5j((=H6)1IdXfdkVKwL&ck#8>iLcN=RPI_wN z`@Rb{)|+Y!*yf6XK*G6BXfE_LH#J*Eg~5Y4ykq!2<6qdR!O2SSAkyV@M#Eqc6d=K2 zw1wDB@@ROEAHsOw|2(}qKLNE#C%0b_W)R!lnq2Vq5HKEIW03Hgf)g{w-_IEhL;s0{ zw+HHRsN6SeXr6HZx?VgEOK;vplQo|LVqBJiuE3D$?-w!xGg9O&6DPuw8zongj;tf< z>^rX~@cm-KapK}=r)}iyAS2wOISaBA>~nnh{fp-OkBD){7F1BZZftc4?=#V;I4hR5 zLmeKwI;)BS$kFS(cs>j)2Ah8>%~nzBj~dp`Hp->(Ra@(!Ay80nJhvur zVKqNaQhu~)MwAngCY5+z;D7eh|F2iCDXK}yYrV)Uxnj<0F9Y$i%G$Z&ey;Dg#!vUF zXaIx#{rL#-Kt%b7r=YsI1n)gWI>a4BK^C8BSiL+xcQaF&c9-);lX+OfW9A@GB(%xV z2joKSJpECY*HI|=$A?=>&54Mxu_lz?U5;kLjvUVMcR-{x^^;MBEl8i)c7HRl7Os-r zdDh0Kh%Ql9tD9&CqSaU#p1Fe+RAP3+EX4aOV&7*JwFx%^6OOLq&-Z?yF(xPRlZ_;V z7j}WyK;;jd3L8Jr&$ECB*HRo;h58Wh0sBvb+9~w=+VC*X*GTkUvU@3x2Gl z!+Sl(1r86?dr%dbWwzgOZ+M%D1h!bS@SZ``gxl>hyx%NTz(AZ2qoIz~ZyyG??FabZ>wsX^B@j>|K$Rdiipmz#3wZII(aur4;1l$DfTGtTVF=gH%mP;`?hW29j_4c({I(!8=+f_5+e8k^Pk0KSiFLP$3V zOiHRI54Yl+mBtyGsBAAZHE+dd?S}Ku&e@yrIi;e|6vd@T*9fTN^Ob2_9)L^a=%&W9 zAEJ3D=~C{$1~+$Jwpe;LqW6VQHSD|6z&=uJm01h#Ln$Z-de>uM_>#&$pe7GQl#LQ{ z#^zw>V7Q4Rt_8?qWkj9UNFGpO7+rkQrl^E*k!pL$Ap26=l!3uI!xiKt|c}4JB91 zP_k^OtNbaP*MB@lQL(1!KhKY!W)s+%BbMQDJN@4Ye6I1RwJ~8vh!V4^h_HCT)CIx< z#xfa^-LN)kcC+$66{cc&yJS@-74#j*{yo;1g8NTfUpL_X4C&YYGjzh8P+z_+@f91v z*WG8wS#lEWFk^6Ec2fxwT{*PqC$@kt|5giBQ*MPombseQtRWx|Ca?ESm;}jo|5%Uo zDj@YedF~NYCU`0{^JcR3BR!ecbsw1}P~;DxW*Wffa!PU0XX==+1}zqYEQTTo> z+L;a$%}Q&ll^+3_c#r3Y-Alpl*eRZ?m2(in-d{dQyaKL=R$Np+R)Xpp)iGds1JB3R zADEK^M0WRI+A=7H%GACQ%F{#ycVmtNDc=bYY_pHLSdZsKURabj$*q7~rZe>f^*(S? zU8y>H*BjN5SGqNRu0^lYN$$1dbLmY-=DlsJDbyh-U%Hr?jns>jNoOl7p=>@>DItZ0 zV07lm<)3Z%x%K{E2VOjfn;G3dA!@ve#;%9$FsawW{-lv%^*3R zrZWtqBJT0>mq`haNS>NVZC8OD(SSPbV+KO!7Hj9)7z5$oR8sPg!4h09iWa>sO-x{V z-axE+hJnylQz#mAkC=c3F`0==mE+u<>)&EOt)m{M6F*YLx9o6B4^r4?dDw~j zFPFUkxn0s7f^idljc2vvh=HMg$oc=MwA{uy1fdj=Y~I%#j#_nvHRa{39u6UwqJb6^jih& zz+Zd?@9*@T>l!$z{0~K?(~xESq#=~j*O+mw&4Q7hA{lFQFMw!l`X!lp^ufxQ)ZysA z|6Rw|?Owms_bfp-ZvPBcG5Bx(aD>T=?c+@?ka#}5IP}yUJY!D6F5aDjCc?;9Ri$}2 zSNS?Q=|?53n{eN!YWRYpn>xlj@O2?oM|P3NwI6QhBo9yKr=r`7+vny5W?}d9n~66^ zj$mYBP1iMR+aaK?D1afV4~f1jI$(30M5@@WYXYxw;8<$xH~Z8yc*D#xC*F;hYR_IL z(QIl5(Zh}}(s@czbX-qFhhr9SJy7|y55GY0@{r_%idr-#+w@I|FBB?!NJu1DRi;AcnNvD^hTVu%h^q(%)`QE4*}%jJ3M?ef-i5=v2?eCfK_dy4!y0!duJV!pew@zx-GN?BD~!TUc1ojukz z(N0Jul~n!mf{d_ovglCr&@hU-@#JnJ%M@D7bL?9h9R`<)<#$I8ucPg&LKC^cGlUP!HVGDXNZ}W!@dUDXpdG+_c@Whzx%sE~i~uEX&b2eA z$O)saO@7w-slZe7cOH@Z{O@}If9*$-F4M9IUCIFh1v36Zt_2n2JCxsZ@}X}ksXQ@a zU)*bnKI2W$MfkO*b`T-$3c|mv-IkmDfM`msHEb{V4`5b+pb;+J~V#;(B^(+?8gY_ygP=+iA%UH-SsD z-u9Py8kUN-r1A|XL7L(NMMFa%%Ajp%QWY?UdU-a+otk*G@5=j(s(%BT zWilIi@0LOnh03FpHCuS8&;NX1As2+}$zO(-;-2CxChoVUfxyn+-^@4n8$BFsimm>o ziX_gwvv`Z=Oot~fj2=jZgRAMn%X~ZsYiO=k5WDLPj;1OP|4w{C)oN6{K&u9VqfHqb zW*y+sqcyJdI0u|@P9WA%4grm|%7-f+LV4PgQSIVs_?UGsUh;Y;Qadc=orRg88S0xc z+YT`((y8OPGeZm_mwML4{v!x2MBXnCS2PCOvYhCh>V6cd5pewUP$4Lo*V}Dm$D@vK z9tN2iQNVlh#1ChSbd-EYe?Nw;6z%ZEIb}ahKqSMy`Cm??!G#b8qnhvK$c2|&o^mW1 zk<{z4GvNFyhhVkGXJ^asTm}^>-6YQSJgOhp*;)pn%P-b-aqq)sY2=yH6LrvF|KN&1 z(*$ChymC)$YzkrCtQB#^+F(m675`Ey6}A{@=d`c4B8j&)(>L?JKw0AJnCf6A!a+@~ za`wswGOePEzf-q|PWQOJea}~g*oabn0!tbZQRbOjLoI{oCrh2ht>cM^(){c@V{acM z(YWCBrYIdfw0hW{_&5vEcU%oDv~&R7)DBGOIe)G@RE`kWv!cF$H}K2tUe ziI^qyt8$NlFvl*7E}oOj&$PlH7++C__4J7me6BaaSKyHtFbnf94fE*4nt>^6OwaLj zJ5mB*@|4yL;^+?-sR=*oZ`i1Gk z(T&Ama&fmdpQsr)+{eNPkz%2bR*#0>SQlfSBShs^nYD_vJVB!Vd2WkU1-=l zGjDMN&yATdOJqrO!zpJ!ttLEYH0qWACoTfdhvw9HjOxxKIlwG2uUeEVuJt<_?}v5e z<9CmVbx17!M|;nkT*S3|qNy{w1AX#~eEN-j3z&G^`|O_J{j#d(4<0J5g57`!LErT| z^v}5Ps+79{AMZJ$i}~5;%njC0n(AvHN=rWBPBDVWw9-V((vuK{_BXDG@oZR-RgOqi zTn6FM9~Q-S6G+0%xKs4w2%2T=JYPV}Kq#esVOg%Ujaoh)7jQ`Lh2xW-){mUsfzQwR zNloGLpD&CThI2GV$r#`!PPkZ&yteyzpNR>@AF zEno2=_B%`Psrlr(o!bc>KRW9L4tXJNTI+xpo8CxSLvQKK`!>)ygq&F3Z6RmE*x|3Z zC$xjU^LEh<_QTc;Z91JsA1eH$n*d1 zo#~!N=lh!*@_dLfn*Qz*8}B+~vsioUK1DqwWyF7vHeUiKcD=rYtwB_@;xyx%^AjC! zN$L4TIt0x>3aACyYf<${N@@1f2}m!e_V{*o4Llca&Hj$(=0yP6J%OAKyu_wul(6fpWdyFanwLg?cy#KJIAm1BqipaH&T!;ty>R z`giU?@0NKK6dZ24+2$|;+EMZWiMx|1F;wjBo1$KH<7~LaW0G;$NNaR@eEJXEt#(@V zI6I5JB>0r%X7!_zvo_&cdqZgH7E7tPdpB5esVSwzk0Qf}f*~pQ5wQHLM0Z!V1p;l# zik>zuAlB$f^{%Z3q~!4Lvua2wu(|8kNFG{7j+DGN^uGXVjJ`%4QMHA>*!x#T%htll zKW+vkBrE9ru{+`MzZ>D~a)JB@#RXKEU&oPEJpr$|j{7*BT0}j5nPWT?HSqBVgSuec z8hWY}c5(Yr11e+FE~&cAhq-^VIFU}f32o+&QaA8(Tg|~2CpGsGeX@#PKIrOE~m)fHntYj=6ZMk$zC&}Zx|GCoE}D6)A76WEt~Mr;)!qahZRKj zX=UQkt2MNmVG$E_B?eM-Y!90&tRuJ4Y_SHsztYM7L1{y>1wu5YNq*uvoS=f!9lAPg zNLFORY4=|t+V*hFuitLLx$Ysd9*fl2UFP~=x-e4g2ycU;@Iw;9VBwS2>8EU%RRB$2 zq{0{yg*{!9H6p^+t;g>k)bD|QYk7!d*d}_<9M$qdfWe8*ByZePH}@CAlvDAK9B7uoSS`rNz|(bg%9b1B_e$j%Psch|Ga{?{o$C!%X7~1DR3e6+iU*jG`OL0u|)XxPcYT3pJ~4O9pcw`qZH=65NEj2Hpf9J zeB!#?UrTudiuZW~8LB#=A&zONF=hacqy%mVJ%=0czeZW~FMtOqI2XZ&UnzS1Lagt(} zOKUSB{N>My+od&VY9gYvAln^j(N@?-uK7a;*K45-_hKlbGz`on^F&9p_|x?>R*<6P zl{4)py3pH>%0TPjZp32gVdf;1f<8(;J87SghhkORt*|d~$ba4AA{*GFH+4rmL$11` zYZ(+G7hlG~QCCXx9}It>_vL}O`Pv=iQYZhr)lCO2Ttdxa|xTNPXS}@-q%M7xHq2bK!qcq3VgeHtxawxKzT6T zvZ-|wP;kyn9y>@zGK3Rj{0#HZQ@LtMj`wvB`8VEEP%nhGMd{>A{kZQHWz84!?gQMb zTps?A3GxwE_f3_%p!{T>(AT^`H2j$9`ca$*+2~ncKtkUF(^t&a+4|eS=Ei<$g#IWh z8P}NnquB@c&NK1eBl!96ao^Yr7iMhnxBA@g8X`={Wk&Q{Q3)hP%ps9SL&z-U)_rdM zesF&Dfo@H15v5Z$?w&BJL)^qPcJd>`h>?=dfS9BTv|~2iFWqlPK_2_}qVf9@QJZ}I zX$k>s%W3P1!`n{aylXuFWQZ05!t7BbA_65ajezg|dC zse?G2y$NcwACR%&`Kw7&<Hl$?3as1tUpa zc)xAUlIT7DIq|PWo8>J&Cko)NrXx(CRtmL;5{yeIuzF2vOG^dp?2?ux@Z3R(7Oj6{ zMJj6W^hz9}#QU0rvS&__WvFT8ayqB5Htec1-?eGR@0|q*drPNN5QjlS!qtlZf*=mL5zg1TE#nmAGVBzcVz^LbsV^7zp@3j7pxQ|KWX!81}d ztWb3w6_xPR?v75Nb3qb9)eK!oqP49hC@Ba3zc6VyDuD0nubISG_~Jc%OqVCFhlHT< zTYjQ3j+nr^JbgCeCNbeV$ z{P#j@`a^Up5UYnJ#9-u@zti~B-q{_5xGJ@SgGmVV3UAGFLdOv~&k2Vw^27x0u@0g< zZyxM@BVxIP&tGzRY0<(VsD@%c7mWSs8LZJ>^ade0p$%-8SMm!D`Kx%yct zkPP9^k0MdomxL9#YIOhl`u1_Gz|ZFLO*1CKJ&`Ggels#m^Wc0G%X19ReQ;;-rL7^2 z=PcZoqY* z(S$M`W^aO;s)fli{V?q1-{|hf`vF8z480ef&Y=Kwn)s`LI!X?!xKLqx8ySA24T+Mh zgjJ<$9M(i%pd}^gb#%`wV7)&zAhI3`O>3fNMvRf*xz+qQgg*=jIllg%bsXW%$-_(c zy1e1}f}WAUyPsgPlxk>@_X*{=SBuBr34mxr4p~d@H(+aSZSMLd3M7)-jDq&$(Mo)& zfHZ$LqG?FJz#|X|$~}ihXqtnOq*SCrM3N$GWEe1XKPrIDUJms#Jm>3JdtLUbfh+P^ z1-`?c9j7@^J!e>T;?4p|k)vh{|30pc4!X#+Qz}t{Wj{spaUApKhq2myx(v z&>L;pn{Iz#u7uy`eugPr{{_j9(mwhUywG7=Q<}$q0bobV{fezW2*%$T95U!i2i|QC z)`$0#Vdb-2j$uhAd?T_-8Tpik^P&_U^`G(pmrTnH8=GJxm-%wBhx0Ld={_8GNoxmms~5%cJ6ZtBo*ihJ$Dqy^`L?dNCjiO+%s%mA8%`hHm}ceNfb(2q1{{Xn zfS2n-If;AF!0uk)n?saXV5Ucz%2iU#=igj++1v=UTJ?vNxK6@7#S1N;9g5(iv(f`? z^>r8;IR9YA=MaXKSbmeW>;pad>l)di(%d+02nzgV^yu4q3^;%QLWTv z7wOJLV3BrH;gZMayI69C?qD5Q{#5WFcE-J8vQf&XNtQvvbJJ2bs~Mz7-0#6w9Pm*2 zaX%UD0CVL}-@D>#kTS*8S!4YU(1?-=Tj^%ReraC2XOam}q|(QfR&@fid41NR{|gWH zSq97PC9Z@DI}!Q5scuN5zJBBo2NR|dS5qGw*$<8f{3Eo3TX1zZ^y;e=7Hn^aesn~% z3-vWn_bKrV!=>Wcy>gvdXeVcO+#@-K=`F0RjnM8OvXf`X?_cc$OP@TY&CpTg`*t|4 zz-A0Ssaf|^9oj%UxtzjpeoUbv>ldNnoqMR6+ivD?-x?fNQ0YJNa2y%)^cbcQ?ZEcw z2_p@oQy7iqxfQ>JZt%!WYx&sF4{VE`gI?KRk1A1ZLzBmK>q>=iKdFI`;)l!l z++}A?tk$3%x(oR}taj9+?B~Jff0uV5j_T;5*pVi9D(0NK<+y|FHpp33N+(hFg?H4R zcUu5UZkte??L_g7DL_~Ee9V@Z2&B=OnHhNG{c-a-G>X|@hG5M$>HM??g#(> ze|0ba{vw{bfSBoS)!Ewj|L^<%^Yj1v^`_e$xOaC08J((BeRG?LAQ4h3({4TrbIi4W zmi_<1T0E89Qq44S)jRDN{C*Q6$FEAYi5J5$qEpNBRDE!dHl{w9z84mW3zLt<%|YPn znYe|Uj9Ar={*24^jYytKejp7$=a0Hs+;hkv!Up97ey$kTqpsmVtv^)w-%;AxPN1U% z8h%?3Cuh~c&dm`1YLX4KCQ#%uu~rXN`O%K9T2%mlq;?DNzVR;#YT^Dck}!lE5VM*j zN#*P)o5hTRr*x#=W)KJc-W=(A}Xa*q31 zl@dUWao(+|EXTPSQP=H%)4!Ym>w%aPC${!cj)`8Nx%WCqYar{|v0n7KUv+yYpAPfi zjuf-Z83Tu0fk4}{{m}5{3@N2?4XX3ofq6T84nFuy=T+VWTv~Qxs6V|6rxN2R!rf+I zE{E>z<*Yf-?C*INDlv;j7cjJLGJ{h5e2fwZJ78RRDpQl<0REUBx^%UB9<*`ggzO^< z%z9jHLAbdI?$@^qePjIxZ!KP>M29aT1-Z1bBZ8!aYsx%_t5(+$%f%y%H)WgA%-xUQ$`?lq4AIAA?pM)phv!N4M9UG9G=eN^V9|Ye<)w zc6D-T1En;nq2%@jAfc%}LVJmvkg?`|!)JN|_*mv^%0JCOAhE(@K|LzMpI`?LKgl&n z>ScT;L$!_S`pP0KKQFb9u#KkJ@FF`%11T4y(OTJ zJtoJ`LmZvNw)dZTJHoZ!qwG=VJRy>y!CX1R7Ja0hYWW~^4>bvJYG2d00FTCgpBKE| z=$Lc^r(lW?8gkXwpugmX0@c#YgSk@B)pBii1E+5&CT4nB$KMb4BeWC0!Z`l57%7-7Q*~OP|Didxm(W{;f>{r z|C`xtTtqKUJE`deXC7SfQ(*rCO1!V*Mq^n`9Zm0L?OkIEV#r<86kMW5d=nL#*?pS0ODC_D?cv{84*f-4pQxK z!VLA_`cn+I0+U!S9IF9={Seb;pNq(UVDav0Ej(u)G!ixOr5U}A(R@PX>4)ALP~7Iq z`-1Gy6oF|Z2zfEmj~oB{iGugY9y8*78qI!7qLi6V^wlzD;4JP>n5>bf^_z(VxyVj3 zSa3t9=>&TS`H86PjN^IPjUH)?UPau*lwzW{vPX$Sdr`zwxt5Dmu0p6Q$>|Im~svzQ!pG1`u;>4+Q0`#?P>)lxf);nWI|yH_7! zn=Z=MQqCi2NUBwjZ|xfrFt*N@luO0^H^gdOhh9Ofw;bV3m<8PNvz9a?93{|cI!3=P z+eMWorkJf?^|Ic>FWGh-s|FJR3 zd8r+C#;63To{dN>;H>)3=QTI2)lbK76a=16sFLt~J5gq7jL98RGQ!fY( zM{m|Fc7pC(>UR$eN|5LBx2P@LzpX^S<*X*XjIIREr9`|LMRl)+sZ*ne5trL1d8yz! zBxg`?Lz?tCh`tfJ=xu{R`i!$|O!E;;Fka3pbR zq*BRh1U>!0obl{VG{_x#FzZ@BgjS_;4qJ+?BTu@h{SOD}=*>@we22tZWbJsZkv=BK~pZcIy(7S@ip8>^T9pmc8e6tXh%n6{Uvf)Z6IsxxIH~ z)LTHFc20K1s|FQwg^M@~k3jTw#St_>gSBUq1XSm5!H~-h`vu7*sC=~F_BMSM_#Z@Z zcFYWdPRYI9vM*JT*7qe&seJ(Gz9ioC!}B&~oBbCY->yPL{M~obPb=a3J*5XHR8C>E z$`ho|HP2&xlYbIIWtw63Xk$>rg=Mr&6Z}1pItLWS{+YIpenraVZ@LyUS7A-|E)ipL zG#a6LE48eQ=OraV|4bbX12On-IVO?2zs~*f}uKj%WFdKaPGkLDmH=&}=GLlin z|HJh&Wlj|QH$Ms^rnl3zzv8~^|M(KFkL*&g9tW+7-or01uY;rGwehZ(bQtq3D{{OQ z1418_>;(8bpi@M%-#UB|iUwLmki=iGp$`|(o7;w5XAG+lX$K=^%PIGDGR!`MGV;d` zCpIRmkY}3L2SScig+qooH}n;wzsFF1$$3S?i|>v>hcL5}v; zXSYEJYP3GOcMbRYHbsq2CeOjp<6SQMv%}z>R#mrrwgX*1J!|@cdkw@&$hoCYP5`^l zkveLJW#B7UX%N$&!sni0>mN&}VB77Bo1Dll{+zR|b>PI%Q0|ihH6;wufCFQP=mEIL z*Tudh;2XT0!1m>+Vfcw8n_uQRqkwb&JZNppVRYv)H3>5-#y|WrywExWB`KF$<(#C% z(q8%Q+$1eS+PbZn63-xb#WLLMzLW>azh8@pNaKEo$S%K$q81ctx0P{BWd}_31?mTH zwxEj|YDyyc%mfME-r={VwJ4x{`StRLMp#(6@v)u>pM#`^9&O!h1xLYS((fi}q1CwI zb%W|6@KV@VDCX7!L$HSP?$0oQ8^HqYh2@Z$b-nsj)-F)UUC$P)YJ+&e@7E_vTVTQ4 zeN^&RJ0cWQQH4C5LLPhnLR_XJk)+#my;h-lq{t)Kiw6mi%#UxDoOm89`N!J%q0vqd z%~4(W+%g3h?e!ZUB#;pdHXgth&abO(?NZu(I*fbEo5vq!(Gs5LJ@WEPpdd&sauoFa zBqh}7i4+)$3?Xr+iUl8xh@iPkOnfr52bq{q{KRnnTajEkQQwIzBzCpZC!V7KIg<7W znycXa@g|w$g>Zm~uAFLmp%VhWel85p#j`;`!aewav>Cms4JuY5#_#=mr%&!>&=4N* zX(Z_N1VdX@D=GV)`+u(M5gu=m*Umn`I~?I8g?mPv3cYSo5tV|8L`)dDKM`1k7V_Uu zv4nJLX~TSQ0GFEq;S&m4N_=Hzu|M8V|bXr7c7{?-+$_FgeA|W7mo4-G^k^4 zwM^R%XuthR;a)GWvZU_%bvc92skh0;1JvN-oncGqrXL_D9c)(i{}J}4;Z%m*`#&

rwDP5iFJv#oDy(Byi^5m^E+~%e(JU@!~ysct}t9_Ovju2=SHt>R)D9L#YoRe5+*xJU3NTUk47anHBK%5 zxYIM>+Y_<@6v!E{_aCPuam9pm-mV;ifve_MekKhOJ~=y7*_{e*l$XwQj%32vwtJ7< zSxe#leI>_%AV)Z1t1Ur(Yzs9te|M)<1j6?y!y(DNp`d+fOz7aueRTQAaw(YqCH&wp zGSxhA8O*B1&p&82gBerR>vMF$(4`~huMlqx$@iif$K|vCXI)eBQQd5QN=tr`b6-b$ z&oD^pDDQZrMoZ>neHt05N=9?Ot6#5C5V__{H?AyvS%WdHg5oZIFBHH2kU_Y$7o<(s z-H*MSM04t-8}o`SnEF(D(L7)Tx=ps*-HAy-@gnjCjonocF%mwg`)oVug@s7Er(GM^ z{kncjgWz~y7;}yasc8klV9)L6s!Qw=#Iudhva-ipX~>I`M@*jEXw6OGZAA7`LtSJab{pgM2~?q=kro5CCG zF`f&xL>`pk?=-?;f&+YVCW*wn;QUt2%>dd+*vUfk$?jbdlwLVSFYDTeIXX-0!o+@F z2NNUy+%E5`cYku_ z0-Wq_hxeCieX0Q9Z4NuCqvUwZ=cZB@Bk7Q=Ea99~Le%9{DgLw<8z_2bahbYhNu%|P;09&x^j-Qgv8{l`ZQ z6TeoKB1_WfL%qix$Ta;&BsJhX9HUO{OX11DGjf20&PG3~*=kaU=?E~7iLA>~VabR<8 z9CsfPRA>}w!50bD(;aDf#N4jn)jPfdwASq9cc*E<;h~k7zR4Dl`TNiQq}mc*GF6N_ zb1jKDKVGoiCo_IKEzMqV=xA&62oonKy3LZn38V7IZ-UKuf98^xRi^i&n z?b*b1N}k)7b?P=VF&|R;_fX{Y42sLI*pApRlHYv4E_BqP84k6^%=&nZ z;#oPhhfQA0JB!h@0y;u$#KHv|Rg#+L7 zK7gC(=Jw+JH%RW`W5~TDf^wM$7-Noog|}9DG`2haaOL?kkE**NSV)$oyY3Q%`ZXqv zg|v^L&(`Y8+jqk<$+34*=B^>STY3o2SCa_Nu*91}oep&EIm{nI?5Pdh?w+lD@C4|4 zHUEqaT_bYYDppFQ`H z;JTAouPFNx+|x5Vrr+41O=7%u?DkLiv0j;$)%^j+Xnfdh>E?lf26D@Ge%V-6!6!;m zkio4ct;bBdKFE@`{c-9o5|+K8iA!aOMZK>^YHa)TAZo7dME8$Sln*xXcmAz_F_~Yw zLz$jZ{Bf6uD%!!?F)rCm!c+D7-A1|o$Gp!1$^O}>zJRj#5XL@kH4wv7J|FW{21rN z;*j;))>}EZI6Qksl}4AIIB$Ahu!^mcv1a%8LcOLKuoXTy&B~jKjLn)uJ^Mm%Q7N43 z)>r@vR#Ny((-2dh+VFq$jVNOg6aqb?x@zxnLSOak zL6Rz=dso$Z@toJ_8|Y5ZvD-5EgQ)RE&cY@iuyr?h*xL9F>fV~~9CR@TGYz{@?&o)b zMMLHBNku)-fvD7cA%B=M%`l{m`wa_Dl^dcLi|}ZqhNXP%5BP8A^#47-`{3sF={-~= z^%!-oRL4mOj$*&%qfSqH;{A51sh|q$9N#9_di28X&O5ZX8OGsVJzsb_e+Z5Q?Nun= z=zzd;r=`;P27t=Z;^`CB24I+`Yw_`EghZEfn|~iI;0GSb#nTx*;2Q91pu(#P7H^e^ z(1&z8_+Zu>mY4d-IgNu+qKYw`5u@5w^S5?>&_jg*U zv*L+o2{19!q{K(0k!Xf>CG=mK>v`tfHiy@ zsjit`e`RbI^5KBwCpm(PE7l}2sTB@qJ_gMn7pw)R^v1tR*Dc`$+jFY79+afGEomx4 zf}g__pvP4DBo7>%oXT%dEW-n8E4pjPDM+tmw0FF@p9pi8Q)5Ze4RGDApsslPJc!eY z@vSvhgMBl5q;fOyzIC9E`tp4$(qYw}8J;XklHS1du^>G{w^}jK`I{vH#+aV1i)(Gb z_J32RqnWcfQu8S+?+~G@^ZPF088Cz%(tMwiMMfcHku{(~Gac&6jwo8~Nrygp?ykEA zekflr)34dI3a@EqTpyppgeo!TShRg< z6zFcn&j?V0LELSZI)TH#a*lSh(KkM7`%+sIZ z-90#-RbPGW-T-oyd^5X8xsCio<e)(!A6#*_BqH{NBC@8+0K%N2;cjc88Hn?O41p{w)Gt;!!Wp_ znBz~(%f-G1++GMD!I%lDs(NA%svWaV=XIeGq(Z2C%_6pwc7;jMTp;otSbE=yWlOM; zWKtwjFZ&amMhD+^m5*DP_b+2B@O1|cY{U&e`p!z?QBvefo!dp?USGbS=|e$UonyQ7 zScihVZN;6${+yZg%8WDQt3xt0p3*S4qGls;@>AHa)sH|HosMjc2Mzf_Sk!IRgLC+P zxl=2K(5Wse(Aqv)?}T!BXZLPp3Ucn@J!XBubNKYlhYzRZ*KtwUanKZgOTT{E>U(xM{xxzQ0r-e9RsM(`=3F_Zx;$>)H#m ziv-8#gNeS4HZv_ba&4k>qqi5%_qyLyu4sh`i^f-WH2xs2rbMke%1F9mV0j=cpdC24 zX)4GGe^B`StE0!GW?{O?ePZI$FmCq93g`>%CU2IkXz4Aw*)WFU;1Zr&S@4^C;V zqsV7W4tz)&atlNYr>E!If`c(*S8A#KJ9W5pDW_zT-vd3p3V0eD zc^>eU@S_`zYwqcGg9j{YAqQ1+P$HA@+>=v3@rcSh1-kD~a7ppR{C=NscvkB#-1Kb{ z*|%lZ6fk%IpMKar6_rOglh$}-=41$DDIOH|lKqR?&~V7fD+o_Mi)1L{b^;5QaHZqY zRrt`w)+FLa8|u*rJ+@Ht#g>Lc8!VimKy5fUkjoj0e*EEHV{@gb`^fpxtL}@iJzia# zh1m~QQkjMF(h~5lesB83R4QbLUah05)5J2hxO+SNe&XtwyzomxNjvwBjkOGXVam*Z zK`!PUdYW@x%wwC!tSb`F?h$+xrt+3Wg`v;jPopK2n-B+L8fRpRe|rFx`q4bC!XRK& ze>im2DiG$L1f}%-Yl5#v90EN%BhXgsviU%NIyekAYoA??LG^C$Q-Z-l5zo(w)%TCU_Vt-q{wjO?U*tHkUHsRd)1NRQ!&jYI*vZ>dn z2x zJK;kx@V)Z%SjjAY{}2!|d0`NL7T#cyC}_ZSY98Lfhp(_U+1AkZGvOO)eR9Q&q7$WF zJ+7=ZBZ8dS;*pZ=+ga}8G`pvvd{W#EZz)Rx7O~D zN4+r9h1>rY@P{hP&o%2=4E{35)_AuE>(*@L54iutLmpBz>OcE2^@&1^{b(BG{cXMQ z$$ka79h`Q0J?}tPO+Cu##%%0)QQqS)GK$HjFGu&hrXdR!PKMuPwm{K}v5bQ))i@Fx z{$pdk1g$KrKK|?^xEd2S+D7Vq=wBOl&r0M-xLx8&%cUkgjbqI0E1)M$Es)xUS zSDf0RG?k!8{ugL#w~gdVPm@c_(S|LYS}w~X*`UwJD3|OUfp>=KsO8_x!YrfOd#$KN z>^S#cL;7naEc}=wxgSYGJ?71N`;QfP{i_bUBG>$X>R2o)Tu$QH94a5??_DUU`p@(K zR^JL10xu7W*C6-zr*wB{r%_t*_1SxGxk)!Ti)n6h^dnR54URtlV#rJmx+BCngP!ka z>F7?@5c#Ab@0uwaL56KtOn74xepDLtPj{y#m9H-wa3489QXVckcU86ohWKaeweAmL z6?cyDjTAm|=0>%(s&NSv{?S?#ew+*YylAr|3WlLQt0_C{LIkq&q{Q)FYe0vurKfBN z4y_v7<2T*XgYbp#(7}^zH?UE3`XOsg57u+4oz(7XNB;NUyJE|zNZ)0Z4l5J9Yl@r6 z%4zP^IIDhCQsNE;>Eit&k-@$3a6=?Ke1I_zQeRw^5&lO@8dQ9l(4w}C$EqD{b`U<$ z1B+vkTeam6K-K7l(bQ@5`90`!Xiq;zI*8iYrKaGg$g32)RsKNiK6bM{);Rdt zB<^kTcM`@JPOa}gxd3Ia=&-hY7GA|K|D-!Q4`&~ny;wY53vqsYgKS=_Sf*Px9FSNJ zAzUkEK{8|TZQ<8}lGIgrODo+YGQNu}b^XR$Yx)LQkw{JvxI763IU`zQa)05ZdOP!t zv|Z#~$;%HY-6=`=_b#$s9$kjiDE*M;SPt^b+V@7^>2{M|?G#{#Q}iTybrB~K;Zd;q zYc!YPxTw>JnRzs!htdK4tTPBZntAHrd#y1=AB z?tgQKGe-8k*i`xniSDi$^2ZIZVyEjs^@kFaYIteAlTQ~^$C3oBOdrGJe#S|j@Nh_@ zp}Zoas}3Q&Z<0(md~u=O(IqX(7maQTmfAgX1D+It!12~k*wB3?vDzpCt)OM&*xnSJ z2>4K3u~CfA`fNP?$=}iUZt2mW8)?vD;hY$?BMRIvDwywdRg)gPsLNPsPoKMp^L6qv`O!L z;*1A)0@VY-f)c2@**imG2t$MQ6zSsa$=J0nw{$7(Gk6T=sh969f|Zm1qS;Rd;<}Yh zG{3hIc1{g(D>FyJ=cgPuJ_{zngU5ZnQnmLmY`?+tMS>5i>ecW>dm#_VO_`r`34guy zfkOokZtR60l)t!At?Tf|7v&$~&0ffm9XDPv?S`bR@~FWP4cvaA{#eL~PeA?WRGXKG z5v1uKq5Zt_5jyxPTC%5p;c2bsHzUvnQj6bevdL$H&n0#$gEhi0bbvmg$KV?tieT42 zHC+Qj($-R&k38_fpE5s%$8MO$sA{MD56)ll{%$us>@G$eNarFZ-G6RyY|`A%bC zfrnmXO%96NV6$khs(7y-)ct&M&7(ygjrOp4O}3M;-uUB)f5s=6)=f%%9ps3~M~%!Q zooLPj`(Ksh|L(Kr zw!)v$uhxSJ;~P)rRX=zEWho|SXh=W8$4b5u z^K&!pwH}cI*xOPe7pNTwnJ#}LIeD@P{nD~!V0j5t?6MkqT0MZ2%DG)C7JcBg^D5KG zzyi#U?QNDP?itO)6M;kKRq%4m+h^+x8AGI$56a%mhwH8qhoW>xp^E;MzCcX@Kxo&! z@9zkXjeu{H!kbjE?A>vknuDE0larsKp_&P|%DB@cRhPkJR8jYyVHs>5@sh4E^@3iz zCm-(4&Ovg1t-Ac4EQs3PDSlBY2kAQ%i`^<-gQF0wez18u^6yLa2y1i&Dfq`> z^nyU5)c6=kFh#r-KJEh(fk|)N+vh zO~Ll53U1NHddQ&9O;u7T1F81e{a!WyRn0j6mQK+`Bifr*5);+b?!|7JvUWH zbs-HYvfs}`x%W3bzN{bHC__U^6ToX%$_Txol;k_M;yPfQlD*2TF$*zP^LbH%#c-QD zlT}Bn8CbgYFJ2ubd<0(}{%d#W0^=I}RDIwiIV(NcQKleBvJFn0KAn|>-tF$?-Rzra z^K;ec&dxeKJiKpL;^z)nc{KNIzw;9OLp9O)?rw1EEgkt}7YeH*Z&C^jOTdw$mNWKd zF}OH4A8;BC!_yymE6EAlNY{77DUM&2TXmDkc!h6<*X=kBS(poCSsru)&jfp4 z{rO68{Ke18yOV-kncsh}c3%~U_bf?T*_OcG!!km9RO|51e3HW<|2_;BJKWi^y&rb^ zT4&AQZb4#WpzvDhC$_Payy$<_1d$3V*+Om;_<#LIPQ1SPn=6(0Kqrk{C-J{?$IL=D z-^}L>LjUnorQN;@a8Dz7f49dz5)ld+wseb<^m_MQ#|H-{LG%kf>;1Sc*dFjOK<-c@ zwC^|}AIL~es)x9hHDaDW9V8pNp2tW^_#{k6iJYYHj%x?Odm2`o94<1oq`=~ET4v`x zcJlE$GYgwzC9vTWyf$(&3S?UqUSImt58uQVbeS54q2ysKnNPM8U6O`Dx?&lG103J= zmdwEMHup0ZLfi36Yj|OLYCX0Ndw=A7Md&-pv>G=As7NA<^B==2|3duZdA1sYtC#G| zwC}`T8q&^iOAVTU5_Fx)&|O%J#>FP7&V6Ncq{cDAqgh8y>NLE>pM7hT&^5TUeq3oo zm&og{EySmRVdllI*~8qVweo1e2#PL3-xv1mC}k($;BmI`k_}+3FQa|p-vGPJ6#qWo z-G>c*E0t6ROYq9)zL?zFB5Gcpr|)7X{NLts%#2a_{jH8W51nq2l(D<=8|5lf{OS~HtG{2c&){5J%qU*MS9L(nIv*^ za#D`e(xz=dGUKz753>|xpN#H<480wgu*^4ix?>A^rk+Oo3+y1>h_2tDNuVOXhLb{a zjQ=qF>?HF9M-Ln!j0$s06y(sWRaqYTRpXON|qNqfmi5!eqCg~gCQG^70k7yW7Dz?f_u@ij0QVZ9J5jzK z)T^WGflS`JLh+O(j6_ZOoR zfkFI5`sUUrxHoTkrmQ{!dv9172Aq2iuDJm^VvdDCS6Kg&HPj!T+gOCzMH9L;$I;uz zUY^5~AG3@Kcq>4FVZV7>fICpsv`#pF^8j9+>qX|e;Yd}>5w?4+2#h8<*Ouj7aqbYa z)>Png_@Z#>N$IV8{MUJ6eO@aR%$K9)qPG$AChM8Gjp5hC9NdiS+4WFd*>~A*At4{n zk{oWGp@=|JwnMJxPuas$69It(+Qm>GEizMfKM)S6FFtpi?8R#aq9M7Wg?Kr0Hq)yn z2j(QJd4oQCLC5ZCv7NW#f%fr{b#0?Spoowd{qa5l*4`9qHy1ac3YERk^^r)NtFSET z%y|ob5ghU1-^bzKAu}r(1`g6n1*?npvnn*v`Luc}aUKk~Zf$5Pw1W$ks_q^iKg{2B zf80gvSz=a9GzNCA!jr0+P8<0#Xm8{`@BFLXI0l&@0pr`h|UZZbv9Bfk+gp4NNG5We0f8@`)ww8!B{pk}Jqcn1j3y?8x* z^&h0M(NI2ln2sJ)QOn&Ndr2`Kav8U@i8(>~!>-uzzi=q0|Db8+6704y_+@BNMQ{SX zv)|vg4xb+jS?@eM1rIOJQzW+MKr=_Bf;USrNF6oZqM$ATUuOF&U+9xD=4;s%4&GJZ zvbpS48A?NX@7)s=kd_WwjKu;fMGU0UUyZbxLw_M_ZCE5TEfIVyjPe=J)`N9g-SF!r zDv}nL;T^%nVeCn#e!aVW6h72kzL$1u8) zl;_Vs_LDzRhU(LokwFSl*iDWd3w?!n>eTf4866gKoXRuLr_;=2Da*N_%RWs&#Z;mr zsxg9ZfaXD!4dxpcg_o)aP0^3c-qtTEE4r7D5Ou))C)XOzwNF4sd5F3BC0=z6Eq%;GD@v>o`!c%O=F9<8(Gz@@iS=Bn1a|5@Jw z)lNfEv3*!Z#o}-TXvwJ*(*^W}+sIvl4cm+CQ`V$-3Dk8`V)JxOu8sKF0Ges%76B z_!PE-T(0N-Xky224DhsiU3DTK-FxEbI%KnO?)dK}8{Ayhvlx3Q2tV~m;GZcSmQ&Hguwy9V*uyx`Z$nkfvqp%bG> z*@%`3Yn>MS3+T?>Hfu`wzHdn$_!UT;k8(mJPfi~?vg(I3KeK1ou&Y8Z@ewg^6kLuy z;+#Q2Hn}LwQZbPa`GxUZIL1z%WYg`?VDBUTKPTON_c_TNE2RDVDdr*KEG>r_k;~2K zmCK+rIEmYO!qrMs=*jP$r#p(90+A(~*Fcq+^CkR@|FygO|A>?O3t>TXf})dK7p%UnR~r35))Q@787} zfal#^(9q=*}~x>+~!@mqv?S*0f>DeWfR53xtWq={yM_hz@*NO_)b|86}#K+>}R zuJR?5k|dgIeCV$Z6-he(_>OlSyGhz?2W)L)C`jvv9G|E6_d!BcDbIjMANnb)?@1-? zB57M)d&WPxOyt6woz0z_gV4$<-Zi#moZ@@0xi(V+c5Po8xLXgB>eB4?#=W?8DxeYlgm&iCEDIrDues^<*O3^K z&tklGzX7Kbd1Tw1UJ!lFn`%X6HgMW2E`6WYg5c(5-Y%Tz!x$URS+SrDj)l z{}6hq(ZHy}stGB$I^i;rVB3g4ntlr>E_vdfdt~{y(r=N&dyK*FbP#@C*;?OsD-%RR zyLEYXcmi2danXERIG$Ej@iTovB540uI(dl8S#~f;Lt_!l--P?S>*z_9dz4Z*lc!)#Dxoyt+cI1` zdFZv<{&JvG7H~+kZ-ajp&-ysH7T{R2R@9+;&wwJ$`1o-@Wfb0fcGt>MBOKuOJDR-G z3VcQ#6-_6zf#1-@%_%ANK=Du72eu{4o*WBKkMA`TI)LD=k->@Uj8Q1o_`*3q}qC=>fJ zD)Ubp{@Jh5o@|i;cU@P{e%@P*%B>gpjAI$euV;dU%8C1I^_Z_!M=mw_oGIIa`r9g$ z=~43Ex@ii18s3=;=~QHgJr6P-Js83P7DGO2jxTufkb#0iOBlMJeHHUrB@sVIUenjx znU7`GUQ3M06l8&G50AS&oJYGz&WiEf=~(b5`RtJ29G>uw%6NBo8~Ld??}eV1sVMJt z&9?Dp8FIRuWA(f-k6Z1N>R%=&@OE02+3)< z+;r0AT_tw)UK}?6z6i&ac86T&t%W-8tuqf_7r>ZLA7=qm1&Chyy1DB24Na?xgUEtJ z9&)aI^2YNzG#L-dO*Nas<1&{kO{q)pd|xhY(L^06DeE=a7IuK(OZqE@W*gvL&Pv%BYFATKCCMM$^fj;wF;fG0@YOj|ker`dr*+}JT8V{)> z{+8I_k7W#7q>}$vya-b72Ilmw_mUDOk6fJSh=-s3B?H^j%5m>Sk=CPoi2RO$#7UYX zo6s5hW`J~_$Qw4vEz7#q0L@ud4Mu(maN|J%8JSW=4eMe7s}boF%Y;aMU4fW|B{tj(}>^cv~qR6R-t3A4_WC84&4 z%FKuNbfhCo+by5$_XoMmb2`ZhG~y+ zNgrY_`b~v~rtR?-xO|Ptxn@3Lv3BZQu3 zbL}dvYyqgwYfKL4%wmcA#m7AF|ABhn{oJ;k5iBq3)G`fg!_G;IhTBr~q{MVq&I4Op zNF>WfCHdDwn4|_!7tX`#vl^3-dx;(orjclx0_auq6rhuW_s%h@sUJA#@|fP zt$>-cjO-}KG@#aoyujH}d}+7#@Za$ja5cPhZIQkkeNq;EW3nko^jnwhcM-W62~w|a zo17g0T^kAR!-U_;@^W4474ad6@JeUiZd{7&yh-`5d*+b5*+;>t77Otg-qIzL3GO#8 ztBg3dAeFz-@dV)_Tv<^QtsrtE`35hWDJZsKhF9SJzm|XSTj1pRs~7uWs^?$EM*lNl z8=l#U49Ek?N%y1YMn;JF=E^79^*n-0NgcSbeFA&5N}4`XETEv@Zk{TSa~Y%XY}kM&Ntwu{dO6auFKY)`)M1P@H?a?@wJ&_W5!wJD z(#_dw*){0Vv`daDeFynO{*ex$LlY1%s9?vNHi4}>R>YcS=dtSxed@)t+emTi3C~(A z!_jx=iMXT6|GOVC(8>K&l_m>)dcrQxr_|tu5^dVM1wW8_@{yXy?3bgmN{c;nlbK*91PiMKQs)FMDGZfz~jNqE8u=8dv zd-576c;W`}eld%=W zbm?Z_!O>&d616QhP^@yMz4qceH2G?xDz@znc)j#?-rge$`eF1vlG~f`q~9UVuz(~Y zr>thXNNORvHa|J~B}E*f1P^P7oFzi-!dR;KC9N^&`s^;c96&k4R?#Fj02aQp&aQJu;zD9Vv5IOCqEHTe@^Z$e)ijmvc{_ahYWezF z+INieN#2{#;Q^!l209yDKjE#tWNUWVJMfH9mwQl{g7;awZy(*201oO$ncE+hqUb_D zJxx#;s(P#c*;-43YYi7Aiur@#R!rlbje#h9#OFZq^=uqoirf2e@MQ_+n0=M~XBvtW z<)V@=@-G0bZ zL@XIBmjC|SHGT~Te4L$5TzyLTLFqRpyKO*{)22h+$rj2^o|bOOa>cVcO9pTEH9?xP z7k!@{k*oVZK4RsvKRdSOFwm!LU^%b?(`*Efl>PeyhV89XlBVhKmpQc|*s2hU$gMOp zOI4tGY!Bo6FE)@qEYo;ds1Jl5XujU@DjOAsTptRXjeyEKhxc3|`4E*o%3btu0Q@yx z?H3{~fPO{snlA$bDP4x$(0sHGxZ+Q%QyKL^xZXP{uP0Ub+qRD8Es-x?IUE*s%xMm8 z#q}0nx|Rz8AHLtu*rIEdru(2xqcJt%&F1{5-VB)t969F zr;4gXnR^!BS33RTGuTCDGo1GqF5Lhn)ySZUus&4gKB7ZOa3-}3l@*_t(30$i((=-d z1Y)C$>#dLCBcS!0-*Y~q2os+&$=wx9#O502a@`C4V551ryGyhi?w@DxikZ#@jhpT_ z4Ez((MR0=G>02F$x*la$pCa@e0#0Ac!dD>hHiJ3UDQ;3r!KT3I$wf#mP%peAOG_H3 zi?vAS*hI3{Cp8CiTkN{Zb+0VD3l!+p?AurxaGCbneS>H1P$5#PQ>YUO25YVq-9*mG z2|rOI1-%Az+-y}m;F|{peoZ1;d8K$@Dq%?c$ z6$gTU{Xaf7Rq0LRTOIH-G3r?A9!iqPk+ebn6MdMs*5eeGv>71Y;fd2=M;FNn5j*Q!jYPIuB3K+-NQY-+;Ys z?$V>g?~@>A@sNq^ksdL3nJyIv92DZ3+|y80P(2|#=O-H2OdpA#EC=gb8~eU6r-2h4 zy?>H$EL4;{YM<=3gSV~2`@iIw;gI5?Wkr!S_{**Ecqk|zCX5fOC@TFxiWa}^%De25 zY?E6$@T?i;;sbSVNaf@85jm^e9Z{HZk(w@IEd)i)DjM?jS5Z|e@7_foT2f`fW0mc< zrr~z+V5Up@2+C72Z#F4<1DoPZY@NwYvhFR=QgDyNI;GJ|>MXm-E`v1p8Dg7&`)n04 z|Ez)wB;)9&<0X(3?;n5ZSzgk+RHiP zRaox)mqk#P&~=NHe3arKbiR809f98)p&`ZC>}T{ikf-AY6*isW{wKdp`Mbq<)IO=b zjH@2bByy$cM{|-gc8PZdIW@tzguw47+2%kdGk8VtIS2Vb;cyJ+mkw-nq-U|x+eL2N z_s^{9CgF4YyfgC%xgVcheZnBE&PiS!SYMO4vk6U7m0YFo`jNZlYYk@*9XUmF=eKZm zdh!p>36~-o8qz|ajki6K19`t-S;U*Pi8pu-u9x2Ffr&#yLEj9y$gWt;QWaZ)MK7CY zgN@z)XI-s7c7Sw-Dl?`QjOcH`G=#{az;Nfm@KN#?$wfxb&uqWA}Am zsFDnl`X!eQTV3Z{g1ukjHw)|CER4VL5IslF=1B$keK^`cMl%JPu5h_~nAjqPjA`}W z_s)Jn%f4wdZ~P1nmEOQhPUKkAu2f+dZG=!_e}H zKilIIutUkHRnjyR-tUbz{UcrqRAX9+t7}1Uq5MPT>qD2}X6m|x%Ah^WTxWmOmhO(J zme($MXL`Y9*~;6~1%Bw&^*}*Z%nn2t+z!rt2*Zo73f4|XhT#<#^%LS{MG&nVwkhD8 z1WjRiKM(H<1PMD!?U&Y%G3tTeOm3hnG{_p#%J26_N%gAt#V=!^SjZ@p`&8jv z?i~jQCC^(6**XG^X)o)6)*PJpNclyS#{qWYL5awd)99D+Ls~|;0^f2e7~Gs5!mZx; z%jO*gK*cF*ny%7>_kEeSc-*FO#$2!Wm%2Ifo}xK_dDIcrZ&q*j=14%*rH0br4+MAW zbw|#f<6jBx)JB3G-#6^zwTzpMwgjzMD#pNqa3pzLA1wOOhEbs=(v6AnuwKV9c=K28 z|E%kyMMZukX3O|{VE?5|ogQ3zKvQuckI1XMYM{EKF%8+4_@)-@t zoHo37af#quMx94VJ4yz99UoH&k0Up{*$(2^RadCF>g6Q zC_WSqIN$&1zPk>2{{-oG5Wd6PZzd1vIZyl#Fcupl96tQ zfOX!!Hb{+7qGi@!!YxDX(J;+ORN8xQWJGxh6UGuh&&n{8HyO+?g`^Qa%;3{@Z=>bG zU@rE_M)Ev1ebq0VD?8w8Ay`)O1sDfz=O zZ{~v0RWOdGRxhXt#^m>>vTtj8;O7e6*zV)~xJNf7u4ttT)>QM{X(PXYq>--bY*83C zMOrpf#l-@}o(IDPhuu)LeEtj<`3F3`W5M{^Y6nS1QD9s6(NWwxmvTEUjPTXG_c~zk z{4Y{ePf6>z&Y;7q-0>SR0~mJY_nG$iOnh&qC7H<;j+cV=9C7(mf@juuhteD=$3xB2 zsnXdIc*`i-+>48h!B?L%Z5kC~z!yi^0Dm8_;%J?xsGa^#9W#_kHg!tOLRvQE7HkSG*Q?x~vI))am#2 z8?~ThZmG~6pdh^@ZTrUbsUCczSO!D)41j7_pNW=ACw!xz=uAI}O+Qc#xe;o&eXCcXt#m0W&9fI2H6=HBi?Z>^Daz5q0rkkJ5M6$PW)QA0 z-TP;zM+nb z(rOdRl5#ThvkOtU*S?j*xB^)diz;&i7YQza+tvQc0Rn^Nbj$H#A4<^0uf81q1dek= zYz$W=^lcyA`!g;ISZWgD{ZIV>(Pl>7hn-WH(YP3xUfGD6HK&(l|JC98%!lth-EF|Z zF88CSs2x|_C$~jBEr-1AmYlNZ27smHJ?9)>6S{4v1PjO5zz;dY2I0p;$V;g@^|Yb{ zBvksD@7x_i!<}u4-Gsk_W$$e7ljQ-Nj-zpo{d|CQnT>npXzFg#kMqZ67in2Y=5f0+ z`9H9e4CVL&qvm=bV*g}8jxphz!~EwFPqvc`E00*`+-bvrGmgf#L@urk9~C8i5fdqN z>!hbBD+4Kx@%+{EAz9!=M8xnP%!J~9Re!~94MBW;LhH-c0M;)zQ{M2Y&W0P4?pTGkog!g2S^ZRa1m z;^n$XkV^2uUsl6{ZLE>_V*G-tVy`}WYg_JqarrsMv^7+H-10$I`M(~zzkeakh*OGD zTQctaIOMd<7J;hKtUp8?-eJ|^FGFRiK>T{bz*~B=8#i{=QdgQC#3Hr}(r({M@!Xx& zNKdmqtcqzHG#4;NBRy4Va{UWD$&%-i*Z2|hPX>~9P$6@{O2KL;=eRO3xv`=v8cj;K0Adu4~jZ~P`jI##@7i9O4;y#)xFU6-D?iuKV06B)-=O5IH^!zc3fSeuz^A)p<)_0bc-raVVE3tE z)MC??RHm;**V;Rmnk213l$6(%_%;NKdL**Egkv$&P*&t&oeO$%HEi10hhc@qiHRVo zEEKA^Kgp|AhtWBsLMQLlfM23-5*>Ca5h9QL4g+&;-2mFuXnZ&v+JW|IS-aOBen+3iZNKU@o+3q;Vd%bOJ9OzT zuKZx*3T0k_PJIcir12){m3pNWIPR84ju56GT~(aAIZxzi+5P=+W!irP!ZuqPXS}yy z_l7aozo#$YWL5P7<#9iFS!91zjW{nXLDXj}J!0blMED5Fk^EN9*`}Z1 z#FM*z?%D>R&5Pf$4XJp?N~z#*zBjgAfbU8zWUM?=oTHyf=x8ZB{PZWMU?e%uoY5=? zSA=CO558yt(rw1Rp1%L|}u?$G~x zVG@{59GBUb@Er`I&8>5{cY=|F{$HE=HmHr*zO=QO47ujUA!Cmgz<51PkSV?bHjhlb zsYqlZJ-NRBRAx>m2I-x#;*I@+UPi7ai~9yaP`u{g{cbLwLYI%P8T$$qd_Gk#!=6FW?jx_#VCSVG ziiq_tU>*K=am<$BvUE#ZI}>xJEARO4FALLx3@j#moS;SytSTg{sw7V+%kpV6OrZ0VCB?*+0~IHGY5Cj#KQDgi^PipyqbXqdbx^8QxAK41w}#}|l}E&!PK!1bPi8Mc zaDPq3&x{$I32glLF}4i^mb;Qf%znb@-Pd;Nz$QL+|G<4f(ic)obXBBH>Bz68tao0B z8ph01c4t`Bsmab~PecUd?ILSMnncpH zdhs*?Rf&y-&t7l*G`;tgCy_f5l~w-ynp!v9m+hzLez$~!yq|e4HVmO>Q$781Sgrqbhv$!rxt~s3l8n1TgE7<-&!FDs=##M$NnerqiC(d=ff`8 z4MC4(-d9k!!Pa!P&!0OKJCW82B{N<|>~}fH^KnN6>)Bg@S2t{f!*Usywv2`mC!sF<3g7Dw4CH$M z2wBs%7U*A@mwh-kh?CLtbn-q!uW3>D5y$>wXsn~ZOHLgxuC5B4}$v3j7|BOfx~ z@m7?yvM(*onSkuH_hVtMsC3Xs5XS7Z!5V zX}U>2;(pi8?AbhvRx7keVek#X72J4Xd$j#8Gx^kj`Hu5yb66`O#nWi31?7ABd-aL^ z_5=vc$7RKbW~&e>E?5= z5a-quc0dU`c`r%X`fCvR=7IHW^KY^I2g4<$@8KB5!|~YtzBib3oNFs`VJPpG!ke2?({s#t_x;|SUP|DhoQQEvX;b*4{UtT?K$x-74jw8-d}4xjqcm_*27&N zj4b1d?KYH#t6_rszCK9Bslwe3sb=9=+&Rg@)fkOdzaIS2cRT?lLQBzo|DM3o>@HtB z!jB>A*u7X*uK~;-Pb(SRcSqVS=M$=9IS_Gdc5>Y8BL-je2s^qb7RH`v>ADq_!MTqM z7DZ@(%da>Q>j9W3pWM4R2 za`zUnbadVAs2+m0;8>M4nOY!AA071M@PfMxw=}I^<-ymiVI{S#N*tY%_g8ak$3L0v zS`0r;Az>e#Swycl+P^(6!+AUr+rq z9pyhy6Z#lSj?ezD>QLq2_L)haXz+Z*UsmGszw>>iPe0lbl{AN)ug>iFtI>*u^U*A; zCY{LbH1*ZwSUz^#z&bUpa}T1cHvnI zq;NCe7xEkcjuc6y$M;v!Vh@8Vx8XRhJf_Tzmw$~at|byz&lAL>HO}Emnx9DbJ)u>4 zq!cfG2vuHRj)Nm(YL~XIWg&%Wf`I*#2w>(cjc%0x1>x)8ekEn~BDIpBkTi8Z@Mec+ z)4v$P%O8D=`i^ITi1-F)V23;2kQcMe>S-o;nE5P*EIl|}(KhC@D-iLK|Ia$a`yLIWE?cLEw%k`*qzP z5Sah@UR+rf`eto&eruBs^m+^BE@Mj|lfRHvB9sqRgQwMds^?+-_>Zj*e+kZJ)0OHC zVm}YP%|8=}V`$6`*Povw^pJ1Q26D#KA;;@IT30h>kyVjX=XO&JO6X3=UbH0RL5p#x zKV2Po+-XSsOHCFYBD*A-*_FWGveGK4EFxd}_J^#X+F)31r2p%n8-_f;)t*169D|B- zE$Q=g!lZYmThtnojHK2Ap&c1k|G@FOvU{!VD2O-Cni~s@Vf7E~n%KkC@>$ir#4# z;ge@S+7(~CH;zRe>4u1q z^;49`5nC@EleUPO0R@R+(YC-={M~)lG((~gg63B|A60$_ig!wKrVZj?Y$d{&@wWzK zUFt$33H~9c-%kBC{Sk0_l9|I|JcpN6o;?nWi$*5XzaM+_+6f)6-7kOJ6tp|D?T(My z0*vH_So$0p2ihs_y1n;^`GD&YxIHL{@L6ARV}J^qJ3v&#)F+;eClS z2d_P+&bmdWA*n{Vd8Zm|Cw06&E+hDK9e<^LxxG({iX^@(FG}V2GWH+N=n3@wi#+i& zX=4R6q(I%ItD@@*$n^ZnW{gfR9^3pQaN^b|3Z7Pp+Hl)W+R?E^(V(`5s=no!c|n6H zbeJW=;QB0B6b|?5RcZKOt6I=I;Ng_y4Qo|9+-@*!L&iE*OrF*ZA&o zz5{pf7riuV41(Ip*6i!lY`9hwc9r=v2_7mOI;k?|2n8*qcm{7@i0)BO5Vv^)?Zy0l zA)?pd$hpE3F48wqu8jYuXqG$7-(R|LQ#&0fV$9w&3}%Awd-KHWQ{ix%jY~O7+ZO&@ z8g0nW^MU5bXCH@GTfnYtl|NU76Fe>0MrMp&fLhUlp0VLqc&pedTp@oSXipH74LKuF z^m`Zd&F2Y>3%4v@Pw0j?$z^HP;ue_G_5Seeuro9pDv_K*g5l6{%>$}gc|;yW)IK_? z8=!JIVNKdT3s~fQ<*(V_2CL4HMYYTe7z^yx9J64l@Cb`>Q7P24b#x1nC7@+M_#K5{J$w%Q zMrl6&5i`rXch_m(1v*>p2W!e#hf^W~q zzlDRJGRMp>qyzIQ!?01!60Gm$>x{cV_%}Q`j}|7^fjgTR)nBzF^lvQ=3yKNEw1?t} zH+0kB*O8Bs^O>K)#Ob%AmRKX)FT1tMPgxFSHm7q>*i`_hXaesY5eL|KB$Ik_M-jS| z2~x;>bOhD4UNhNWl;n-CisW#rQM|n8^BvQ3OBlT4UXff#B1oPx$$f0xg(6=yMou4I zMv7aGP7yB7*nDB8-r(3vq-Q&jolS6~bW%cd=CZp{TV+m@FW(7Vn@Y^zuzF!jr)F1Y zkRvAA_v9Lp^Kfm*pk@6-AC4@?>mOn&fk>17KZ=Bp>c8vwzu(<#@q?kK{|!O0?IUYfkqVG~RlD>-yaQ-os`o|6mSfT} zukV_=t-yXXGFRk40noV$bF!I~fTm~?^R&$n{G7w^iEGv18NeLi_r4b%edPF(O8DTE z3-|<|Nzsx{U!#r|x14~+KTp&}H5TD8$6)ffZ#77K-{-e*G7ZAvMW7My0wg4F?O!I= z{Y^^eo=%YrwA(2kmF}JhL>%YFka7Z2Xr*oF$G1Qwvq@o=E>4}3UI3#F!7{BA znK1A>i(8J+E3$lbboT7JY<}q*x5_949@e3cR^3J#9y;!n7tsxGk~pXvXIosC6!{YwRlFOFu8gDNj@Akt?FuYX&!qSf^&(f3g>|PluRk4uo|1oN&BlMHMHXYK|h}?P`QHs)@{S@Rj z`u);w4z+Ob(8Ve6D8rv3{ECjT)!3{v%yPbmpnuJnu2Gki!kydSP1byxke4c^`Av2e z(lMoEy_Eh8$*<|kO6Gq3XMOe!+$-e!p$Q^Nd`suQ|8ISin$?@5@#JxAmgSBMsQ!hs zaWUPzE(^GL;>qo-BfaqXnyS6N_$(T(^2LRnT7~OR*bOAD-r?@sKNm9(ZUDoqgNu6D zC|tiZz`l>ra~h7BKD@Yd1ypLcWTtOdxB9fdv=Ji|HA5< zlL1dz>Bw%@DZEEn7h#*a@V;ZzmH6vba<$Omei*nk{JbLO0S@d>SG~Jj01|EPqCv6a zg#Id^f5K~&;7{9Z+~Qq=$nCaP*1ByVx6~yBmzHrK1K+bl;#**BO`{g6^#KF9WjZ~5 zN?f_A7GSWdo_G72Pm zx&+5J#5$AUKY8&R!u3B|*;ygqfPOes)?nI-UL%${B{pMyc^zXiqw@5#qKX;ffr5cW{o=La3n!x`GX9Qr*! z!L9AsYm=4{yn6GAL2zC>q@{Hg&byR>)xq6PAtKcf^5bRa8?)b#l=xz+tac94IAGPt zzXl%PRdV|+#X{l^G1>N+(3xg`v|f3#lZ7Oqbhj|b{~!F_d-K-l95u;u^C|r=Rl+yN zoVwn~u?DA6UOt9l0Fm0z&h@rZ7PC!urrA3uDK>ys~EXk$3VLgcc8C-9+N z*-(Tc?mo+Plj?vhRe9P-J1&7yUdalm=z6JEOm4x4b3RLzJ04>4 z5gv=hb5C$amSR=ynkzE5$d|GgJO&p%$AH$6m*BU&plef+izLlU5-ZILU@K_XvhWk_L*}VOgZ4nM0xR;&PG{&%&&KKm(>U^7N2WvF02B@47J+r7Pa@eAy3z1;ag<_gR)yj-%F@_<0P_mR7ad96bhVz8;>!70WRCdqK$q(UIB#8354#Ww+RFi_4t_VnTZx~U=^huL z4s~m9fU79fiMSl_GA~A+tIRD+w(r4_2waJw|!G0yaMM z0|BY1a|17l%%Y5s)c;B&a9Hwb*w-Y4MuV5P9wo-(mum?cim5*M)iOyq_Et2!$SgVW zTIm7Mz9zB2=T~sL!TWB%t_PN-(m$Zu{vLJjom;v0%L1QF7PpQ+PR4z$ckGfoT%jxQ zzGA0p6t3EMYyM@vfz>7&_e}2QW6oXg5I%_n%GX1-qYPOHP!ET1Z_bwvid8^zo2aI~K^k69vhS-tN#wJ&8pYnp zvP8eF^}0DdAJop<@!8fq73u;qf_U^(FyX7Pmlj7bWJRXWX73Ng)hAcwsM3wa+fS!}JBr7ulJWV_N=aKT=rwbe+b33~zY7dYn5;===LUsijzJ zaG*6y*qsD^~ZNli06!8ctr4<$*Q;DjnQ10;UjpCF@#>zsQ_2%%Ad0D z&xhpwZVWCTYT%(hoANHjS?I7l{X~Y~a2XCgKc+3Y2;P=f-iw!~vG3R&s?=cAz{`XxtdG2;{p0{7be)8Tt_`d7tco?zp$h$^-Q_* z53JsAz>=fs4tlJavhiU($a#o#p{Ju5yaGKQCUPvJ2;)n!Frxu@w`|5@Ipc~fIss2g zJsKd*N9eFm{unT{zWd4iD}-{MBxV=o?AM);`Sa_+q16G-?C z^ldu+YFC0wSd+G|R5YBFagOL^s{@@zAv1@4{dmXs{_v@T9q4pa;oadUKfql}nKVtz zv8wN}QQytzf+S&HOMjg)*lx#F`%C=?dLP+ZP$SO4150U_-({r&D=%wS!f+kl1@<>qJ8d=oejU14ht7E(jYOM1Jv*&iACRfHF5zl#A()m)Dkuq;ph3gV`32h+@C|6T zxhH*qlr->idx6LjL>ro>^0sl1ICOY|19|_U%Fz{ZV}U&M>6_q|on;|$D$SL@YxRdB zy?tV#Twn0XEx$UoUxSc9{g|cNZUH*VY;+_STTu1H@Z}kbIw(9GcJYaJ3BFizc3s?C zg=|`~{8w)*{ilv4yRCs`*EsOFwR=Zsb^qu4|7-a+6sx8Y-MI{Zxb~&%sr-iBOHSLz zMf+eS_u!rDyi>p)QZuOPKS1zCnAw9~|AOJQe8$TQb~v5#tVYgc4V1rbD!C?A!WaKO zIhMK=aPSPEekaLKvUV-5I?+%8!wj;slg-m$8XLhMn!-a8tvhQJc#&1t?rA(*5pNGSbQ{z3Q-^fT?0;<$H1) z#2m-i*ZEv2xOAK`h%c@JSJ@mv7wS1ENtcM^@SK7pwAO6=Uq|4@d97H99Yes{@MCI4 zvkM9sdd^Lpnu0CIqq|ftFMz{3bwerjGEfi!GARBR8Y?gTK4ktGXz$d^F7vXHtorqO zQ(jEMk*oR~W8V8o6b`>*g~Enm)mC;eIPM$R5E(-?Ay2NxSBMXOP z&2`vStBL#Y78N1;Unm|gn{BI4a5~mL2edF10O{Pc@wo3D=*S;&2)|X0-A8QC=JB$V zzh1v6Au944$DXT{ZN2VA^?aH?lC)(Q6MbWv*)v?GoD>F4pj#66nIblS-2KGb&+=UF%UhTf&G&UdMG;)_!c zj2#8mQGt4QaKlg!*ysou^xHaMbK5>PywU^*GRJmUP3|NgH_82Aww=(Kami;kJ|prx zPZ^2z>>L8S*2c<;q84;jGB6d$B>w*GQx~zrzi`9Q{_M=pGN@7xvws}9g|wGG8NQAA zi#C+}*+R;r@HQb)Z-U4_c(9h*e(%aQvWIw1;%?0?EPTRl7P0du=!&>0jxp!rz*7m8 z$l(R_Wl`DiV)%=z5BrC>Onh*PQN`%kL7V^CkE~R9>P08tM_966w)^P^pN$Slc;8J0 zZ#f4>uDAQKlqx+ctY`d^;{Ei74xl;^!PgsF*`3aSm zcch_u|86CUi(k;%dfZ0PA`y#tg9QxQGI9QR00${Z1Jas~y1sBrL%aFBh1qa-w6db! z+CKRNOEp(TSQN!cq7Y^QaVIPmCKLWbMd+~;5P8j>t zIE(3`1MZ6CS#+d&kDI^QInUOIV&|VKuHRv=V9Q`z+8JJAzR`Up&%XQtyjd5d3ppQ% zCfCD-mWa7=zu=*>hg>VMB`;Nesr@m2Dw^^Sb>FI2$_OnLC#SDkN~$PHS`Oi&toV47 zmti)<$W1vOqR<1+&l?xCiz&!QeXk2L1$sfpoL+d`fl1u5d2eB(TZqp|(c;hc{=jdO zj?FXd!T2xB&M4qPE3k0RoYHtdj88fAL6v?U6s^Q;kL?*pG0I=rkxkP?K8S1>h4w5y zI)8pxU!WUD=tIKjSSo?*mefFZaVrk&rtS}s8bi)Y85VQVL9k&aBx&E3h7rR?n}Krm zm^eg5@^51$|05C&^fM-rQh;wW-`f|rxChT?L{XFPjifKv8E+srbv$W~+=)l@^>o;- z$KlGb_e^F%H!5yEx92?f0-L^09%H#ShD)YYmIHCUXp>&?V;55%-rRaj^)h1t7n=6Y zl%MGX9g3#~Y6MTO?jgnH=Jr~27`%0m`eY}1Mkn{56wd<`G@bf!FCD*{ussp`G=-#G z>6M*nHW)H{NukPn5Crx*e){;S5IE4(`FYwl^6!CDs+<;iFjTy?KOm?Q<(V{$g|GJ_ zU1|?!vD!P3yhlHuQZWHpOZ@Bxlk?c7yZ3zGn+5C?$oyH|I*uA%ox-<16hRPQozhj+ z6%1L?y=KS4MwT68QF~%Ci!`+owQ2KRNSBwZbnV$AkRh)#Fj}-B$Y02_JyVAk?J)*> zo`<8+gXIqEo2C%MP!e_Tp&xSI9lgn1l?^6?RBE1{mFU<0ljqK#7BG7+?sxbMkn}A0 zSxsP9=|2US1ZOeiCJ8x}UmCVN7*R^6YuBD)&!&Yp1 zK*oRScxB|C@w;1@;+O(8?v&p?wf_aZFh`H+ zV;m$m^|s4*;;WIjap#lcd81H2L8;YU!$KNxC2>v28$hi{Pt4ZI9I$*Sv-NW-32D=B zeCBRwMry~@zaBYJa|f)SBf=gZBo+jkjzhb^V1CO<|96O1^`btLLrR#SILO ztRzT=?QlM~Jp7jc6J(bZGTF#I{fWO0>h0hUBXSllZg*w;-3F$NIY$}Xzro>0ys_;Q-(U}S1XaQ4C^VAH zXmsmF(bLcUxTby&{v2yhc3$fPt^BhwDone`+PC>bdOk1UltZwkI`mK`u()-LTn0 zsGs?a0_r}RtXX2x1l6b84cN}x;7euGk{&7>xST!2{%+4rc-J$!r;5uC#VYd}Uassz8!zm`2^{0z@UK6bvJ zo&cQ}BL9rLh-1vQbMGG?`~V{Trz1PbabTjXR>t~3m{`}}3%(e+3}V5Xn~YRqpl*Ld z>|S;lXx{v}68!HgJR4mK(r+~d@1_eO2j?FVbEE{GV}A%ftnv)M{x);af2eO`d)yH+ zkKO0uV>plBW^brAUQI$Bev_8xVgWFf%I~&)S28f|c{3dDYEImqN15%LDMNvMocI3u zi$mJZ`24;UGWt=>TWl((AXUR-dxxE5v}ogQaA`aVx@T{mA1?|=8#k=>@lAsJS{GTQ z3@jj1NS5IePb3Cf+U}i6P+&t@uH|foQ|}tN12f`K{P6A_-Ps;c6vMysvi}F1YqDRGQhE#*z%u-Ce>T3S zR=4@Z^8mDB2kxA(*Po&m%S*R*uyMd`k{MED4>DVIX|Q z_3Sk<%~>c$$GBf)Jrn@@Az4^ozPt;_7~ zf&AOQCM0&%fSbq1(g)Ph*gjBly5LbAJjngg+G0|S!{@3Fz4sw}Hn|KF(L4?q$(mNA zc-0%@l@J}YIid_am@7yN8xJn!K59kP8i3%PHtLCB?ns`vJF zkiy(yz`z`XC)}&48~p!*VAsX`^V+XrIm9vd5c3e2&@qah-(3Xx`_s#0ccg*Ya;5Zx zc*&`40WEom+N$vhaJg47>l&PPj)mZI#YA2<`r_3U4|LLR9e$ zwM&;Bv1yNAbN!i0nAlcR^HswOcdPI5VEy<5UM{D+oxNR%ZQ7>EV_LK%L8n%A0m9eJ zYojZj@P(4Z>U`EVUOFF2UzMG_dodj19i=H5{?5a#9f2kLMF_uRZnSl)WG&Q*8SFYC z9u8K~@;$F?h`c_*q>Oa)DlmB4@nub@6Hkxo7#{N;23sFX8y=PjkPwY^ntMA7Q*kys z57+*J9!+Tt?Z9}#S2C*+pYj@>nrIzl@aYGJ-617`b$LkDDe#i^6dC_MNwC>N_}=fk zpAk^89f8B+e;<45_JMlIzjJyA>oIBPNV4sXT)g+^Ug^N4AiRJId#sF>py+|(=b_qM zNW3JMQ+K2s;{3_~94O}SME35uP4NnJ?POwdLu3O9OyM#+#%SZxbk3fXJJ|swC&pH*YXI(ukJ6aN?Xam7W^+*O0gR&*!kGk zoy(!}(2l5hiMOaO@oweb6F=DT;8hO})Ig_O_#PdxBut(2dU2kvj_A`gzYYBqCwnQG zbqq>#k-6)4yUn%kCa=A3b`Cb&PL`tZ=&K4|LX|_@Hf-u?sBaa*Ze~)6LnpVF>uYAf zu7FMD&5yn4w)*NV_4aRIJj zarnP=d10rir-}oSd%WfK{yA^vf4=|U@BjPh;h+%PE7%2x=1n(oc_)eKbb@6bDIKp( z(a?+=u7Q1XO6Q5$c<_1iUAtd$3_Y$mc;C61ghJsooqNtL5)-hEtqk*<_q4u0@*VYK&eCM@}HCW3%|mvapTg=!)?HO-tAm>(HQLQE4@D;H3|C` zA20v>F$ftI@?$>l7GU*(Z$3-$5Crowf2~UHfc0|>i5k(Aq@&iRyU+ZiAw@Gv9T6Zn zgduWv!>suOFx4tSHmdFh)!p3@J1bV8(Dv3I&W7J`x~*t89m71Zi51>vFKmJ3NwaX* z$t94BrP&oi@SQk)uP@xDov_h0@r2;7EOQ$sB(V4y9F z`g@=tIoZ-^o5kr>T(Jv^dt|eZ$nTsly5X<@noYw3f{u$QYNlNsLMuRK)OCA1erX5} zdDqEFl?@Vk>w2yuNn0o`LQ0$J<{>u;#ne71CVX%wmjYrWqM%o}+|GQX8Uj=;z2b6L zQ9|6YS38=Y{IY-j-~p9vw7E3M|7YjT|Jje+XN?Vd?JovJh8juE0T1AV9KFI<=5R2} zimz!3cqkXN@#NCJ$-@ws=_vjF!AWE&X?ks{bpvlcsrS2PV~MrvIZ%6_rk$d1%AoiuYKvI|O(s%h6Cn*6<4?^*c-@iL{r4LE&+E95MQ3{Si7_g#(&dm zQ5Lhj5qEP3kvpdrdi+Y72PP@REN-XHL<DYC9QJ72a9h|yA z|L{`ME%?E15l*7Kjx>EYCdaF;fYwF;^_`2SA>DRYQTpt2F!Q)4d%XH37GC9HyCs?c z7f&qeFvvcDVwXT^A&X#)Q|cep(F;b+++U{Ikq*$%H>2)A=sPN&x4mYoegQ#Uz8gBG zS&(osyXw)+P{{Ueiq>U%f;Jx{CKMW9LiM?dbeWfd(4@A_wyz`s*e3(t=|86@=212= z)(XuaNx5Vy$&~>*gSBb;u7o}^C&Na<;2iERqh)vM*MDK;@D4( zECKejV3m4MBFQfXstM7WXGAnCc%8}XJHJpyNB42hI1d-_SX4(H;u8SjbFD`iERUgN zeV%ea>=_Wq zsJiz)4qh1Dp>VhgeBLr2;hCl&ZFu-POnB-b(Af!bcYgxib!mFKfCbm0|aW&dZ`asHRc(=&V|O$iq^ z$BZcm4VQiM+K7eJ^O0`gVb>ZwRaQB8G13PE{Cqt-|8fpT5kd)Fgre&D^#-7S`m?hzkla zlGHU;@3*>ekeV-tw;UD!2tY|A=9W_lq4hK`&T$a;$QS!23YW$pmv4W!rNJC-=!oYw z&~cDoYmDm0o?60?&9plWoQ+MeM&K^B>kiH*q}T zMdITfpTK-Xyn%~2*L@N5j#cZN0eS1^Q?uN|_`aS!kTqO9I z#T*K+?r-cP3rU|ElHoZ?4$||g_?uCUmuJer^o&4ey-Q@MCvXGA>OB*!2<|+5hf8{`-CF@4NHo*;jFFpPi-lPkQo^ zfp+`a_BQyOecrwO><0FC*%jSAI*gk6M=!K74imnv)zqa{bNG3v!8>%VAJ*Kv>io%M z$oGF5_uiYxRc!KGrE#PrJ?}g3B67G7FW+{#*-2Ri4fb9`>%6PjKWEFOQP_%)#<_Rw z?-;~r&xYM!E=a;vL%Pgk0@G-8{Rm&l^(FLS&9>C4n*#3XZ;9RYKcH?yWHB>t2KTsK zqs`Q&A{UjM-SHx15TvXX>`0R#up{zb7^n6RT%h@-tY1s;J#ESN8^86!{w4l@<7dY4 z1hvan|MOm4+&mJ(r!)&U49?%*kYphrpF3#AacK^Beke4r|8`eeGFTBnifS%^yYfgmT&_eSYZ(`C4mOo{wqQ5tc56^Z5 zyp?UhLjl=5X$|FAGf~6yM6L(+${+KVWn&?WDMfC0)VJb{k19jV^Y0LS?q}MKf5Aka z_JX`eGz6-?t#uXtxQofO9MUImLJo>?(z|%4g_Mb0Aw;$jk z(Z#9Wt)neR%GUvz$)e?uJR7<5g8XlwUst%`K+Qq=8xfAL%a)J<8r)76FM$7rX={&_ zPMkm8*mLXmS({70PV)5#!Mg*Mrz{hWV$Oq0=PBMw;bD=_o;@np z(N0$Vb=U2cGJ%t0zxNiqm)W|Bt1k*@V{-}J+59~rcp}obetcU93g0UDb*`U;|18Qw zFO{CgnSalQM`O=o`U+PWH_r!DcR9-cR>rf;=S9a!!G>gLAh(ZPE{KK7rRs{Mlc({o zkX~8E^g`M9kIfFtCzWyUO1uaS!M_o@c-Lui+7&*D3NP-e;sC1y>^pSqY+yB`+2HeQ zZw%JsDOvbx33iimD?QgjF;Rf$BwsiZD9#?vPxmNGDGBn>w48* zl@vtRIF8zu+aKg!QOe&;pB^ZC`2NN08|f1CO}l(bSlEJ#0`t8)NFevS;{c@$|8Jt}g|Ev(@ z1rygU?sC$Ng{fT~J5}t-Wfv_LA78erhhusNvp-pUgj>vI{l70~!nx3tqpc;s%P3BI zHo0)vAX6Ge=1f}*P^s++VzVAAa~qG{Y*79!S8UGn)NnWy&e-1{{ahLZt}h1HUQ?Ks zW%B=ecgU|*&It~Qem^lN=eWzL%w6#&Zhx-K@`d&((or!zEFg3XslQ#Xc(DC%{m7YJ z)w!8K@CVe?*~`xrA%B4CI{S`aaCO~&DIqTt!u}~78rtx}EGa?Rj*V$Fi+Wo9WXlWQ z7972vd8Qh8=%v>)USt7((}f6Y_HlTrOs>!Rn+G#eDdw?r?a&b4^!j@B0Ei3l_Xn&` z;-YnLcr&s8ZIf6w-lLcR6pW>J!fD=Mo#E6X`NtUa^5$PId-Mep>?#jDUm*C=#icj? zo*n=RNk!hW3$}QLVQ;b*#_sQ9@K;m>2epJxwwflQ)d^3DtdonCX6%;+p^9f=Q*5&MJI zf~sHruW!LKZHZM1ZBH;SklEOtK}mYy!JqEqJOZSpQK7@!rqF01b-w7PA9gV)((c{8 z3DOhOd3vXu;3>DsxBUd3^%IrHar?-1oKoP6d7U>0Wiecak?T|Nagj2~Ea)rhe->S= zD&-{isL@(-dDkITckAuh!9@`I{P5&e`j5cRMtkf}R}nbeIP+dou@AQ`6RggYJrEl< z>n@No0NHZ4HmCh2fJL?F%_kJcyaJPeHG4VW@U;?$(v4Ut?1^}QqpX4T181W$tG{CwD{ zX&FokPM_Vo#YifSm3yPbJ3w$;Y}#^F8^LKNT43vHFN9>Zs{B2+41yl588Zgs=&&QM z{mZc)=z3?GM@`H@^<)Dy)oL2C)8o$f(_yRs={r=mCYo+E5dL;C$+o@DjsN-nf9v#r zKR338$i*xEz^K-)Tze}Da>G%3c&k-`rykY@E$ZgL^N*Byr&S33!POViRbKy~>Vyk} z@XuH{_*A)G>+v>{q44XEWXfKG4^!(~PfbIzb8BEIa^6FF)Hfe_?Qk{f_LgbCD4=|BliY@phsukdRNx)9)iUt%j2*1hZ7YYtkMB0R38!R=BOGWw&;<8W;FV7jG zPj)|Rs_s7snt!^-$*Vsw!Yts9mLNSjh`qUioY8}sx^T~tar|(_Xh`E`GFH44) z5E-d^JC8Ed55U+|%W2v4Z^(JVSGc#N7E7o`*mYdCk({Tz*)7KA@N<%u(kaOWJlX73 z)NHW|KXUZwB-xsQx~oO%Mq{_;=E1FDf5?{reX4It&Kq8>tzt;>Y`)v1JLo1KJY)PDl1+W3F^&W#j&Dc;Thm1{eJo;NN6u{w&*xH(Q+)j$F%w z8~0~#GncTEz56{=?1H{S*4slN0uz+v9TJ_{76ccFEGj2w%g0Jir0P-iV&)}j7bb5c zq;ZmYVz_okK4c{Q+j@4)ZJe7Fy5981Z;^)l?!&=T2N% zb-Xxe6--MWow88-*|P>MK|4o$L|gF#nERKm4kI&Nmcq>$K9bR1ik(Ta*Wiup&z2sG z6aTXxF$u~pGVwZ$md_6HUF^9JD{*W&Il|r$D4Mde`sJ~l^1hHmPir}WPt~U#ANH47 z{b^70JW232NMd&*G_PR6xg*vh7ZlLsuz{$5$GF@M!Rpowc1he`_;Ret$d=H_$BW3m zu!R-tG2N##0oXQf!tC{MH}XXu_$E6zQWpCB#BSL{Yy5Y!W{XCoz3kDf`*BC+1Yo5t z)}%fd0y39^-7H0RqxKzF%l2pGWiXaW_7W9F^329+WRpH#%s0Eif7={Y9~pE~9ifNk z(I*6V61sz=i5-1BM=!(tXVx6xUME8I}8Yf|Q2^bJ^g-&AzC^E~bnzNxYlErEZXJ`b+`@j@es z2os?)5?q`bx*AffNN@rFy|O%@f!lP`SB=*GKla`{8mssF8z-~K6hb6JNhwK6seP!> zB#Mv>MM$DTlp-Z1DoTdPJU5WcVIQ+hndh0zWS)oL{m1Y9dDi-_^!ytX=U}eIR7f^8v`CT`73`Z1X9^Le_f)leP zT+e>Khs|-E96nq4aDvxR^PW=}W&ZQ1T>8}$5U)H|DYn@gUMWPBR4<&tF2m=+O}m9) z=Y}LkznDkB98zbzSMLzU|9mPY)2j?e)_TnP_St~X-S5>t>uR8LL8kbR;AGB?f+8K8 z_o8t2&8WDpEX^r{nvagx68^PrlkSp z$FxI>I0tZhVlua@(gb+f*hLR}|AbAQ7w<&5e}~)EeLJN7j^XQj?@0^qcW{||mGicF z8}?lrXjI-EizR1SPAM68fEBaBnn&6g^ja7C4O;vG136aax|S(WyDHVe(Yge84%w%y zRmWk8Wzdd`yZiAg&-V=lTYqC*-I@2~fgWJ0@uoKy`vdZ=O9M7l6zPM+`Ox68U!b9Q z(T&Nf1eEQbQa20I5WacY%GVwL;@1M>4E2k&2Po=<3nOnBhoW{`u3xmnmBAV z?U|V}0iK+z^v_0eKz6HW0>e@X1&`2Mc;zF-2ZLFNX6qp)BKQnn6aAfRh}vz^7w$F) zfvPKqGBFEyT1&t1lrs{i{;pl>d(wyJ@~vuQQ^r7O*G-wI>@}#c|31i0!8<-+9XTD^ z!9bjTl$#f`fr>CNXUIJAJr~^rw*Q`A`3v)22d-&4ufnG_D_)tI5fH7qbe%VVgp9QG zhco)cctI~tSUzJI+=ix z-~U+Wj7)+$`%7V!%&pM=$HcmD(@ydOZ{5D0Kf>e-iP7xGfoufk9Q>s;#ZA8c+3-Xw zgNg_lxEa-^#YOaAIC$;7IxQJp5;wQodjPZ#Wm+(AX@ag_imo51#=tpa|Bp{x3z)_m zk=VYw6R55qmAJYb2|{n~_CzIB;)%t=q@kNs#6NY0v6v`dPIf=8Gw^ueyFdS$x8JJC zH+YM!LWtvw)Nf53LzWpDUigUCv-rno zJd$tH^?e>ERkKsK9R7oixyE*{l{zupwse7NX&NoGKJ1`1X#vg6ofow>kKnGsV`J+( zc*up~))#6CRg}Eo_9kMu3!eN;aNlHVh8N!(IegkU3h%Zaf)@(2P+n(vsUxTbPs-Zd zi7zX~1GODJd#+6Yr;L-Vg&_xV%2fU2r`iz=y`C;c42Gf{)6PYSv}NpKyGN}vF-!R! zhu+4|1E@Z^J>IEd5V!)|4WFK%@QoXW17s=u=G}!}ho?0-iASA}E%+|4!7lUkDn@-; zvWK-eFo=yp#O-@SdOelrYaVsqY2;m1{eoZWC?x*LtRwlPqZ zb;HNaLlW&BwV?Yt+@;~gXG~I0fB3yD0ZzuG8NvNuaNXAz0{H8&PU+VfZ=*blb6LJLPo|JM!LHiMuL^BYiME|@H+g?4cMHYGn!KAazU{u>PLh8`(LiLV6da2f z4O!>b(Z^MOcF0|VoH51n!?v}^_aglrylsc>%Y*OOe$$b&DMF;qhMlA^uPejvo_v)5 zy@zFJ;}*-hd9rnI6L&APNDuoy;rs!QG48Wkb^~y@tFrlVc;P9j#wMm|N6Pz!BCqwz zAh;elOv`df#E$+KOjQF&knYHpC{F)WhhZx&ijCdHC_-x%{_-)%c6{ z*ptafJ<9u^xiTH4KWZD;cL(>E!N;-7F+-R0U?*(x&Gb=)XvryWrj|Siv_DTAy%qsS zCYDZ5@9qWm`E73J_&dNoPBPl(z732Q-f?*GqX>)>9OwiDsxYR`4_ykr?Q_Wg~&dJBPAACrKIZd;hw!E##&ws|jzNZ(T zNHPd-pEH8P?Wyhtb}4w);^9kO%_2;iig6jpi^0n$f-l~7>i|V0EL5kkoBM-+r zSZ@EkKt=8m{Q1BjScFuu(rJ1U9txW$UzJzf{RU5ViOkUm-G{j;Ln@ZUpV*#rVySTL z7k03VT%YTk#+32h22GW{C=^ohF6v4SY_7EPG~=WuOKPb8tfx(*r*dMn1ZNCHe>d!U zEIf%kK27OQ3~KR!98Jhf+B{Z!xGNO>N`+>hE>|c>0C&3BG9Fz9(k;c*?snrkdYGP# zYf~G+7Kg@lB?Tt(k>UBT=S|}PHP#HL7=%a~nq8i;K@`0uJE}mx2no`%;YrRf?N&(g z=`>^Vp!g*EsMMX}=tlN%8^I^59OPK9RE5}h9)1oBU3Y#q2`7)8DL*AT1?%G}r~U{^ z6F*+u8Q@^7L+e(3J)QYlD0SO8pEi{UVqT?pj-^Tv&&p}HYjiUa%D!qi;zCOZvhj>* zJu1e(u9t=%@Fk)ht)j?`=_Ig3vNuWe3KJ$lH(X9l4?#A29+zqL6o`I|HljV2jV%U@ znbx-^!Q{uDCw(`gu>9t(@YB7S(4Z}+ax+-}HiqQpXWA?YHxqTEON&?vABv zT*RBOe52~gVWidAQ*s+8pv0io_GdW}6MgOZBmS_!I=36OvvGFU1 zT@JGnn?h9vOw~s*xh7t~^j#n9z3#{;w_c4tX%kuwJ8Iz6Y}X^+VqW5Zi{JlV|L+d` z-@F4^F&4t@YkAn_{(R}EY{kFkYvnE%x2+Ui(N%lLk5?&kZ!w2CZSQ-WWYrE2dBe_d z=s6$ZrUQA%ZI^IgLc0;$Z&4o`{qY2p`lZh&R+HW(Z(vPxDTi6SvINB zG$P$ayY$hHGU)fyJ8-&S32zNVdPh6ZlYO6C4@<12;SUsdw%Xi-Z5k;Sw`9Tq<#qgM z&Qo~D*0gs*<|py#<)76fLzFr3#l1hLg=er?)w_saClz=38VJ|E6D2iOLK~ap>hQy_ z^2lB_3f@!v@370j3_57rIzB3NhGdyj^*?h)u{(5Q@%e=|yy0~8d;CBYn)P2#J53*h zy@r2(+P_Z6-PMsh8FnROU0^ny&)yL%Il?D?evq2%;i7@!tr@s{i*A*{f`z21DlS-& z<|D7uw5;XnMWR7=sBq4+Y7DY(ih1^!hCF9L!|Bq{jeCYJ^ULY{0_hEUf!s&eAV8-| zwBLe?@O^J~GgrJ3&S_2dX6`4EF4Xs7o(%^fX&~Dsc)W^&+x1ad9h-squ5F?+(p@ma zXvloHu@-J72)3L(*?|TL7q;kdcEZ>8;*wgeY1r#gv9p_42AK!jGb))VJm5-A1OAH} z2-&xBOVp~u#CKGg4^170y!F7U8;k?6p19a#!BP!pX3y{Y;PM?b*Qon;P4&R&ps;=S z?|clh90=CEoP|BEsuRncp;%pddZ#YucNl9samiCH30kU;nJg=I;XC&Wi5W4pMCbvl zJk@=lfjxN8y)TBExF1u~_Iq0wrk-1T*0-q{#y*F(D^qYoaZwDvis`%Y#rj8euP};^ z4_R{H%4`{A^SEBND6WS}nu>cZ*L!i>HAViat99_vlu6`f-d8vv6{2lp@f(Zh=vA97 z`r)55xs(;_c%`!jMxsyKb?vVI&-H)q|Ial+r1PGI`VtPglNFu;Oyn!`i6BkZ3Uq#; zam&(m67_k5N66MOjJ>TC`A%jUnFDr?7$5S42Ft^&-PlTIt$(j)WA8#n)1PM*5`G{blYuvF+dMW^?OnSZT0!x zL2Lr5ztf)Wv+zLplW@qEDIGd_h6cPXrqR;$Zk+AjDSWkyB%{-ZaH8SG-5;IZc#&Ui zGK<1n7at|lgbnFQ`V@7)lZ*5CrSP%jMWGP5wcp;yVmu8ZZk){7s>VtRem=xcl}o_| z$+QIP?&ToglxFX*w&;Z%Gf_#}s~w=FDYHlA{3`C?SrJQkJc4`7pCI1t2~?T zeS@Fat-`0j?Q9ROC59Cxf7(GfRGCnPjI)yAMl1D=d@RJU{tc$?q$M;o<|q4tHko4ewB@-I;D=^Ygmf&PMU| z`ZzXq!loHjJIuvp*xFFttt>j!x*bnFW${sz=t9G1-%dQqOvc?dFS~?{M{tMd+SF&` z7|heqSE1RxnWPglX3FAE!#Cm2buKba;+s!_12+~&@ZzOujWZW5(NNZ%&%3%GU+UXl zuJ@+&y|*iVU`?&Z!wv7A+c!VO-4QIz52zY(uY}m?(_9}xNo5o5vREVXQJppQN?*YI zXD)0uT)}Ae!s~JYEe-jD!rRo)q$l-r1^ufe0?H*$(za zO&>Vd`!RAqn~QnD46>G&Q@1p9fI=bT!<$+iKhslK1@lVCjG2xR&6ZdFefa;YFt;%_x1Pe><}ij@%E}jVsVj z*iK9Un2CtsKGS z6qbTia}06597VW|oA0BwsUKW7epOU_qY`O2oJLOi7h+SekMVFz6>aH9Wm1reROPUyE~(mSCSOx9StK zOgwtZDv=?EhIE`MoS~uMPvKDPi#_dY$aZa6HDy;9-g`v#MAdN^a-M8di#=V9t|CcS z&IrswRK!uI@}GGy8u@j4f5cy`T`EnZZWuyV?kg`l4=+L0*;U%RnH0TnQ_nqz?TUf= zN{(XzYXelf?9GLO%Gad^ z$N$1H)5O~xtd+3p^mJ=rWD|bfRQfHTjDou#N>)?9(1pCbU1!#Oo8jK^ttI=yHj)FU zYME+UGJu`qB};7K2ymSDu;$#gi!@w0*sdSQOm5umt7s}EOty^DkJz0X!(ZlCB%Zrh z)9;+5U$=%-a5u_*w{aSSK|_# z^(na7v*DEnoCY;um|*@PpNEFjWMV5lJF}gn(+zr#_TgYp$B|KH*})Y|sJ zjc8k}Oz8|R7Eyx)gM6wd+M#$+BgQc8Kaq(NDybhS@ zaYWOu`X1hT5mclsZjL&i7Y6vd8jcg!-rdiV)`F0>C;2};!eBt|Cv}%%7??`Lybyi$ z759DDI$L>34PM?-xtM&L6PP!oEoa&}!?-8S>8_w{m>;uJ*}LNbdfcg4riskJ5&tHM zw-y?Zog8(rVv7t)zcnnUx_u4QJha-&TS_qLfl;53Q5@cX6mV4fv=Rn5E*gK-yoO>l zU*sQp8^c7mcY}b(Tu$FUgXmYX;c)Q&p%^D?BixeuP09Gseel0@@jQ1G#l(b=jSOF4K06D|N=FcdC~oD@Go zPUIxVhjhjZkyt9Ru;=%;7;vw;AVDGcV6^>Z!zij7DDtsoW|R9<7`3@H=C132Li@CP z#w~2{S@<>C`(!+POv%U-fa#q`t_7$_?LJRDBP(_68qr4i1Y(S!^O(-?{Llf=S#TdBI~I@S>?Db&K0e zta@Bqx-s)9SUmWAzwMq4?$%tiGnVp0RSo65hq_@PWJC3L_wyjgt-r~2E!+l6UPl#8 zX<0$K)TbeO)o`#WE7TQbK7hOBJG)O=XTVbL(TcW(Pq0DOChg*x6gWv;BJ<|*ZG^Je zCBLFj@NL`Zw$U~ooSr#}hx%Tk=%>VcOgh;>9?hrc&l!z?%oUNcWYR_TQ=iVC7^gwI zi4W_C_NqX0B*z1esLQ}uH*Zy_X9Tp$)4~!_uOa%9e?>NH0UEu$&9-Ln@A@Ne4pAo? z(~g2{r~gxaABsO!RnCOO=`G|#Z3`EMou7aXg}&WxM3iv2RqCC%27grCb~oXD2>m8p zV{xS$Oz3&)XZ!P^FM{4qoZ9(swrzPQ<-xhssF|l-kgfo%R6|zS#!s zVPhf+j>_K&(&&a3CHe0vgQ-aAy7(Tu^#x`g%~zc}7Kxt|c%@P)^W}kZ={1S3G{naf ze;a9VPIuDr{z*GC?HKh+>Eu`4&cNPQio^+ z33*~(u|4P~3`;zhGk*OGT>peG$o=tw_547?jTFD=t*>@|&wqUjRP#d%mWL_2@>~-v zSB(SEE;w_CYgY~!gc(S``Z9ui>MT<2v(@nZT7-SSZw!pMNvkeM4TDgI?c?n33@}I+ zSL31Rr?4qZM%FkLfQRXCp)BX`5cjr7z};XP)!ihVFenA4>}swiFh+w!Ab4=8am}&9LLxuOw5&k zs%TpUzx$u&eOCO9C+;uHWR5YCdX)q#tJyr7D<3)`{%{I!dB{}tp6Wo)lX3}s4#~JJ zFY5f^3l(6f8(06HlZNc>RP}j2G7bl?_(zw=%|c%6u(s2IG8nfH9_-~Nf$8(@V-kVY z&{EI4dvjPcD)1&KKh~twl{2g@n>RIL-*6@Gh=MDA3jK1X)};>^>+=j(1hR2S#5wcF zZe}v1fM538(<)G^-Mjki>;PWAdOqXA5n;lYBj3L-oSGPQIx@7(!Aaa_cp?0*v?8W*Uia+_;TF>@(w8X%tys7Zy zSv1P<3x66r1vQ_a84thn#C>kLdMV*UC^DDSIo8NU;7X2=nAvlb5_51rJHz*{b+(R& z?UFAZgucRvRs}_64CNRbdmMfbnNuIUUrT$P!|W+@UU_vg=ggw#T~hdOj_2{mzaLzp z2dcl{=s2qwkaIMH@xs|X(4}&&71?r+yC?q~QE}(Nld%)i(=z7xX8)N-(|^sdPN45C zOVmAh`P=+bvOW{4dmhPHcuj*Thxf{D%y&lH$DuR@qn*b+w{;$*o%KL6LT&91qZL;2 zQ<)oSv!IrZW&D%N1IK6dQ_Wpfx1wpF^=-fI2hiQIsA>>v1X*`44)9e|gV54xU9S&E zkfvi%scPLEQ;QP^kXI2GbWVvr9Wlp?6=}VeA2xx!SBBN?W4Ey1?sZ$4I~Q~=uD|B{ zaS60)YC8ixS8|3Lr6pRl4#Q(lp~TS6hU15Ib0?H3c3ASkzFb|f(5&BR_FNvDX{-zN zzn;c#@0VjNo~uE4Pgn%LR0o}m(rIePL%>;E+~!rH25h&^a>#hN;k6{|6%(7Q=xeZg zN+I+nux&9@>f^cvB?T`OguiOTO~bPZ$17d@|u{9ffo)ZMJcq`J7eNGe`@VQN1QP~^QCXm zjN*4*r#`UaCD4iAS{H?Pnz<)#-blx`1J_s{9`pIv zxcg4TZVjI!y6suJO22k0CO{^{+-|;A)wG#zJ-~ z7V-}sntV&?w?qeze5KR}><{$ckI}7wNAauS6sQ(oBprSMN_-f{&MW@AWNZ~nn?8x)`byK}qq@M5c_tNQkM2sZZ8 z6(CwE=gI!{d5RuKx!=)^J`cjNFH<=Dg?~4;7=O(+|GNMaRMq-d7m{Fs<*xTA*I69$ zd!^ChSp>R;<~s+J+9A{MeeJA6v6oL*;V`{E?j-cxcgt=CE1v>tG|+=jR{wqu^Uw90r1ZJ}|Bv@_-4A8CK3MPzym>~y z^iuR$A9|#a>2aCTE(q! z0ZISCQv-C|?k0N8mu$Rr0QY6=bPNPoxhbLhaK1bYTFTMoK6QA}V%TvJ1|8eE6 zN{X&sb*8YmQWqvVd+$5@Xc+8|f1ECQ%1qL)(SO(EnZu2@o~uW3rNB!tnpFDGnlcG%+ zUMu{q3u+#+qy>(;SQh4_QoLm&@%6yon0mK)$XNSC|Hg0~qW8V`6ptf8 zYa2uJyRihUG+Fq5mwE=vw@3cU+`>UH-grXIm)M7L)v`BsMb4r5y*c3<5zQE8kfvWL zxrUxDtSJXQa^TS6$rg}J#WK;DrIhMuJXl-BtZ=&rP3>w&sb>puUwn*i^JE2NHriEe z&!p(br5Vp=X)zN^wLy@4xfl0+?s#8qM@4iWmI#ejqb3E#iY){t*vUQHKW!cg7bLz^ zUwo6I#7COlJw3ajm~YRAf8H#04T z8E6Qky7o7ajnuL<67J!nBXpISf*t28&@0sarJVN~Rx{jJFewlrO1AVl@M>nm9f8lU zK9`vMC*J>w`~SI$G!L3*YdhnBl8?Hc*ds8%EzP#H*#Uj~N~N8}+jHb@(rSx|NkPDs zrt2-Ajv;Z$xH3({5}%mX8eekI#+J*vMHj2@Vq!JTN|B-@RutaT?d_rHq!m^6>mN^q zDfTNhDx!&SDU(j-(`Xt#f0kWPvr8KuS8xa&R98hF&CDBp%s=3kEI-!=IdP2svTb5@ zC>hSh>8wOj=D*V$W4A{h)CDSQ-ag@4X*9h{bjzK*33fh44r0vB=%kspW&Of?Ed8ao z=qPX!e{YYrk@L|9-4_RIdfUS>i}?XKjMzfZ`y_4V{6sJ~_Q;}B`UWyflLAYpLNS1G z>FUE|YcxJ}w&i>D3zYt$&bWtRKf2{#pf9^}7vFzu=}J}Ej#0;}Rr_oUf!(k7F^^Oj zz9NGsScj8g52YJ>EOq_(Mw*_2vvj}lXYp|4gCs9ZUO6}&PGf?9No#Vqex;eDb--n1l@6)nPr&0mv_w3}fl+>-&R*INU(TK5&4_ysv)+eyCe?YO>-kD0 zOUm=R{PasVjRSW0UYccugU$ubbPh-g=)MB}&zDv|EPVzRDYjq?RfaH);&6xN9~3Rv zLoB)_>2RIAUbEt<^JQw*weh7pMCqhC`LyrmcsQt{{#YCw%+RgE!B(Gd&I}#JI*^r!o>s zP`Tw8_2(LM)Jtos+GG)lGuxFbhT4AOac%zjy+t?B!egO&|zxU$e^5i@0_B$hX z=3F3}=hZSz!#;4JyFS}q!HpN!maH$?D?@UAea5!^3RtAH(eFTs3yilkSLwWoK+TAc zY$?2D1*CJ*;Rw?`5-}i*hNcY z0=ECHV=dr|h4G;h^~>AFpk#k^!Z*PbnEd)-Ae6oUH>CuQou>Ge-RQHBbZcz`zr7+= z6FQCfteYbtM2W&@P1U%*)oc{%4yd%ty&r~D!6}xc+kF%rGq&Vhn{pI=k)f)c-vOH! zRA-fDGH~kc>TSXCGWh@Ljk>T5 zk~G6%Ker8{xoC6KyWj2LYI8S$>Fzx45YB3lTKR>WCC@&u^s52(5dJS~OkotCgi*Nz z19d2)bVbdIp&xD$Lms~@>v8F~-Eqe5B485JYYc7ehnkOR$?U3apg9#(1oS`QSp>LUKF#-!DOfxrqh0`!y6D9=*-G`VNrfZ0Y>|kK*L<^Mlnw*N5Py zhAIvZZYGP~%I;+^EWUE>?$jbp8FK%R zB67Z2yS0+t1d1hGHH+m-Sa73Sv1fk+CYL5OiW|Akhx~%<$s5)_qRp_@F72IqZ3=t}KW|K!97OBW zJb`QzQ@9%NU`xD&+xVjGBMEnk7iy0)OdwxZ?Bao=oCLG4uhprI zy_gj6?X%JTQG9bgVuqMqhmGGdSYOpqlLjJYadB?t7+GZ&5J>sItLM1r7GDSv7x(2U zG+diR*XFPTf*&@JVU~N_g|^Q_6NCG{P!k$bdBgVNZ9@XY?^BN#OAESC;Le|{>uxmU zUHdb_%X3uZW@*`o*jrSD6nXN9Rn{=h=v@o&J-di)sdg(%PSj-7Ftg=K*9f{+bx(iv zVIlYUi8Jecq4-v7Z(6={n3k~MjF9Y(q9a6mBYi}UGLw&3gocw^{vbEXZJY|DC3QU7 zo&=@OK)CfsuP}8^^6@UZ7Ii)*vPs3fH0sL)G89ETti8!hZaJxXl+$|=Y-@BcWuFry z=30`CW$savCQbH9%tvyeBQbh~VUdYQIeqGK&mKCmVIvRgA+E#ZUPX4JTY3k`5O<3= z+;q#Z=DTYs%T4DuyyZ`?^9%>VgNqJ@p1?YQY#d02pC zuD5J0q30l!^nG;OpYJ2z*Bw-SpTt4x_zMls4VZkmjBRtTqEe(!Jc^ z&`d+7L%sZG<&tqcmpN;wD-nAPQXjk-_r=Po2gYC$ghnURPH@QPV?di=_4ev(kipAw z=BjivsNdAzlxWfldi z5mZmB?B`^&##A-YgL>INFx6vwgPZdUyy(2f!PM{$ETGt6dgU;RS!|T1S10j@*Dc1@ z^mwq7^%HnS(Ov)aYC_P)(GqSk#~A-I`US+;TW-Fe&(V{Wd0AQa69#>1sCU2V4py82 zejVphz=f$LDfsbEXu3=K)*AVsZNEWQL|PB>YqQ_7iHgLwO8Kw*PDH_zOOC{*MIW%_ zo=8-P{f62#;j!n;Q^ER>huX#+L8#-g|E;zAGaS7p(Liju!PAE@y~&N71$yeVb+Ju#K)ri= zYE=3Ncz#v6_58CQaHlk--Up?cvkQ$*YU)wBrO zEZDaxhSfl5%V=1Z`7S80Bm|u9>SLXa$eu;_NbDC^F%xu2%G~aV;tt9a{MOFR;4raM-Lo2PPRm>GrD+gYWJAn`LU7U_?eTh`)Lqi1^UR z>oi;hYx-xApCWPacuR!cIL#z%UGlW46B>ipkLhfkX9{rT!=|d^8Q)OgpslXp$VOrZ zS$BbTAr}+uej3s8&49sd`Le{mJ}_VUbbaDk7t97#4v21AfV8wj>9%RV(dg6*|LL(w zph)@s?9-&^O8xL>x#2ks7W#3S_0wVCs9J3i#82_(nwWX35M77k@-KqqIJOXpcZ<^I zm%8w4*{1nUO5fC&?ufk$MW>YctITM)6*bY5IR8~Mw;oCy*n7>M+y`{rJG4g8ndVzR zwsihx0s5tk~H{Q1TvQgo0h;_D;>sZi}=r&8X9Tw7`< zx(w@)Hh+_2*sWz;KHoGP++KzGp(`+Vn2YqaWw>{hdkVvh?j3c>;2^tXh{wE-c*(zP zvHb4l1t7eB{p5Ma9#Ee2I(=bhJy_gc6}ayH8`!8hj(vgXsqa zSZ)7C^2vq~{H@8y7UoM!i0t#F5+_>leQU@!=W04~yWI4!Fr}=*0%jeqSZR_=b;I?H z3zWI~c|J}duN~y;4TrbosIwB2bw;VSNesk|*E{oPce0b06dT?fZKNkQ&yz`8ed)+U zPcPbjGoU4>?{qawj5Ctmslp}`@2QBX!op9S=8HJ)dnQM-kBThQOW&9vElB+Hen{lK z=RTFxMDb_l3@YXOcYKs))b@zWZ);HPQS8=3&)G?Pwg_sQ85&}b!G$U(erh7!HJ?r{ zEEiv0{JU)~wGXT*?IFFTS}@7?S&Ss8h?9*KcP$l2IOkA$So;J$p}VN0xA~eNvH0oS zBjJ@%_~e+WE6-X5A>YIfXbw!l^8Pbl6Lo9A^OCqSeMS{Li#o{Z&|L$$#}apMqwu{h zo=~2NKR<;MFK;+1xD0`v6rr@@&<(%m&hAJO??MeB?4a7Zon#2x|2cJU6TI8+fdQ6( zA?{w$K}pU&c>HD0m%Ocmup>e(;K8Ojke2_}A*_M@qI4673 zzoD6p;JSC5MqeTd@4CEOoN%Tl^Gpv42%4{g#enZY&-Q7wnH&J24sN34V$Xm;MIUBA z_;k43U<$)?9Ce=QE~1o282u3K2#hC84D~lo85rK_q9jM5Baqz0n6nd&mEzmLy!HQCC z-J3cdLi?8~+fI%t)Kb}!v!t?w#lx?!%l0jR!<7YRtFT!#-6U}!d5($PxU_5{?Xiti zR?S~f&-}r4fjkR zIJpQf%UpiPo!})5c5}=3UlS%>JriAP>$!>JG8)`e6#VvsGuBOm&dlWWvnj)})?)StE1Lu7L7n}t&L2p%= z@r=YZV7o0MtL*v_G|oGH{PV*LZ@!b{Ix`xB6GthM`VXI>b*+V$_xejHza5tUC-NP> zJDL|}cq0up3v$xVmF1vZ?FEV3StLfr)ck6#e1{aAdZc$}JZxz<7Z!fpgwNC7ZfmPi z#^6@Nu8v-c57+E<>1XV{U^4gN^~Je2_}%aR$z)$UOsG4dNVhcND|$+VLmdl5Os=VTK`JfTA{ zJJV{S9QGVOyjU(CgHPiQ2T{@HW4?g+DW0i7h(NW-`xKs4O*|IAU*|qL=sx{|A*RAM?zqd=V zFU$F>UsDM>JpCD|%Nc@HN>ww38{SdsJRdtZ-9S(lmV9W^5rDhDJLlEe(-EFO4evZH z?}9xk_6!TT^8j7)3{jWU5iMw+Z zM=En6uRrPNcIr-Oj>r+`X!XMtC1PsoWC;A`6r(my3PDwS0omH*uM~A1X=NXZZt(%r zRoldi(;%|zm|mdSzw1TaU^|_*bef7VZ=+k*avX-6H$H#=R>Vu#_BP4tn>3;L^Sszd ziZ0TeK-Nm`sT`;s9~xnKlZ6w59M^R^U!w4}GY@X^O~BOrg%<1X0Z@(V3Z>@Fg3jVA zt@~w~K(FPT+UE~5u*o^}puSfgYL#4=Q-AFQf0;~IX+=o%v+UXz*jI?lANAN(Bl=)y zQ%CWT;yA3HA=SOKGGmUhzC=t(oGsc7L#zdRNj4+`* zJaX5KN$TJXOdUMu#&f*_woE!{jj|78!O_GYyDt9%#VOaeLs9XV%boo**6JSU^l>S{?%|s@d#kEI zZDtdrz)~A*h^J=i=j=m`KR+76gcq>pyn(Dc_XuVd?@A6e96-_ZZL_;9U63Y8%RXvP z5yn%dftmMev9c{>z?J6@lDuH8rdtJX#{8_|;Rqc2a<5)IXc8~pPCH<{V;${dKtJ#s zGg;x7d1zL95HgR~j7Y`y!pNjWThrST0OQhkZ8L>nbX3OBOnwLl?;F%F$Tm@Y8^&(j z)-J}o>yCxwF;8^(E3X%9)&`xAPmuB5h>^@w634nG(daWTOLRUXL1c=2cu!x66h*hb z=s>D5<=8|7ejTuHx=!JLOx6!B<+QElU?uZ!b7wwD_ol%w#=pU3qcufsp}NV&eD zX=`H*%4Zcg)5kad=lVbQ|L2;fqkp_|#{~K@9#~zqDZvZV=U;8hoB$mrriX@in{Y8! zD@Vb&9s|Xf#@r7rfvKR+4doOsG{{?iJNbd4|8+F1e~N-XoRi6zwwhriit6KkJJE|1 zKYnhzEgjc{+J)1Hc(rK2$K7)P_$uGD`n`r6Pih zj`BtLQ09F!I{Wk3zu-Cct;wTezd?sLOHQx-2k!NmA@c-z3D@@F*injUXyNiJKEK>aV`jp#x>l^% zcM1~w9EbRuxd>sq<66V7((sp5$L8@zE%372|0c_L6X*o;Ez=xnqWD67crKw;1!p=% z9CsKuL7m>|VDbDCH2r8HGJ}=S$+COWk>Y!h(jIoSqIV2vEsiRD4VXm#S$XGDrZw0R zl&kKxWfDZrD6&~9&%kI&bdj&d3?}znKP`Ey8PzknG8vgW@$f^xwEUCb(bI30ULf8L zt(;eDDz42NuQIv}#P_M`-NlS^@U-*H!{@s@F#r9si4prZ$kI6H{&(L9I0-RI9iia& zyN=k$UuHOsTK8l3q|`kB*SKyG*kYkt{T8V*9PA1lyplfYc=+6U2s2&)eBei}Ns-xZsa}Gp6V%5>c2T$(ey!iXqx8u%Iq*H3mb8bg~ z(TA|R3wM4%^KW6;Je34$kNeMlGY-X%s%H$L`Y7Lyt!%-aLqZ16S>XwupL5LOdHEpWypo2xzqQj8HB`b$P90 zABXQ@XQf%QR-Xo{o>M)$?qY$f#9-FM=V-hq9Q)bh&J$?UpD1;m$b$CBuWHl+)?k6- z{OukAXe4`|Wxi4zpTwGMjXaD<*ehJxzwy$5DwWM_fe%qmjZ`(xSQrUh-+O-zo zPd?rLbs!X94jJy@u_%N6*?Gy1)Y>q5-*nqs!yN2&Gdd+?mIhhDr%y`#xCKw@R(fnz z-U3V8M&bRI-|_S2s-hDm5#Yu4VVy-^6MbskJSX%rQOm*m(Cze3hyo1q&nHab`hxhy zT@2p%{}J}4(NzB5AGgdQBvT<2rGb*7c^@jFWT;e%C?%0(CPk78At8mzoH0{o?aM6l zJkRqyPZ{s)$^Un+b+2`=uP4_74>)J-^Evyo_xt^NU%sfNda>*c*cm!*UT#jpsgjvE zAsGj-$_P`hla520rnRHpH}k++KlFa$cbrmddA-jo~VC zo<+@p=-jm4A%4Rh!kPZ0!}@pheEh;iBr+6qi$=T8EaoH6-O(SNPYW=a>SOE4vmcRy z8;?9bCV_m;ibxcLIhOx;P18wD<`^jb!8^Ro$RB_0%$=AX)Tle-&T}dSC3sC-&G#3B zf};WlhwCqhcz^5pGa)~`M&DS*N*4=P`A*vJxR{8H&Fn$fFF2!BgLfoE zSu*aPmRT^q%+l{|t0wbC_g@!H3hu#ZL+{M@@qaKtmvuYsfd-I}s10sOTSYz3q?5^s zWw0jlhtpHH6rk+yiMHF_U^4%4vTCdwZgu7AjhHo|yMW5^?H;vo+B)I(hUXX<8M92C zT=$(A4FM zfo(%0#tqFj9~hZ~Egwx~0v{E_$EQ1k1FklM?7c3#Vcj{*-!33md94_PyP}w1h*J|w z0XO1LHDsZY)-zk?mQgt8BWcA>H3E)jOjj?g)??dkqr&rk{pi~)=#G2Fp)Z<=OYOvW zIB(m(M~URGneZO*laGjjbN7q9{A>Oo2lr|FsNHrr+Vyer5Nj@2U8b^47s~`)x!Wui zY7r<#c-E>MEUmHx3pPEajEKlqc~2`i$I`E!Xcf4dcZq1udDw|DC5N`{A(T-|i)h z+ped!m*kA*%;qr`{1hN4osKGX9Rif8Yn^F%rmN`3zCGi8N+&2%38?+qmJhQu{SSlB zHRDnH`wI1z-Eg#MB2QbBkw{gQnC|$xpYWG_SUD9w3~Q9q{M~b7P_*Z(!BH0>$^-eo z%D=2XV~?7L$jJ0xY<6g@dUd!7=Od~mI6LRz0H6Qs-@ZFI$J^G}r47oM^yQ zudQq~qz~AWCv1e-VK*_DEh6t=+5_jrZr!6&-N5U+f8F&Kr~%t9-EXFPQ=lxzKPodp zP0ZSbTxAO%#@Lzh^P2s=Wd7~O=DnPB#2s&Is-gozl;k6Z#>-NRSg3G4E>mnXMWJig z()KGepd?zH@gr4)_%qxoZ{He>9aqKJt_#x=MLwM0c0A;xJihxSYu<4YWWNT~w?#7$ zrWKA?cWSkQ#pX;VXSPw$d6C{L@oNiZq1_}QbAyH=5~COsKg>#DAHUK!q1l61PuDDe zbnAgKjknY;LF+JktGvU{ijG*db~v}-FpnQS1|J^Rrz0GPjgOh~Y$Xh;ulySDVJ2t` zt|u`V2co6E=zbb@dV=Zm)vG%rIEW~v^-p)2s3_h{Y5Yn!2d?tAzOu;-6n&RpVK0vJ z659sK_V?Wy%BceteAVR?;^pg(ee+>5M9sFZ$zM9RQj{d#g%xHT zAt?5{SJGW}P^Qw}MD>)c<0TJ)8xdQ@h)v(SOnmxyDbjsy^P@UD2!-q`%=^f`#wF>- z88g^R5C!*sCj8-{NEjU5d~%e7czo^MHTnHKghwDM+E!C2V`H+Ss;U*}q3+gwE|K_O zz5id`|9_wAW1Q@hd9kRgdC+-Bbr_j9I83WC_Y=x&E!y3b9%J!7%k9L3BY4_~KFz9# z!$X5iZ^&gxa?W%jQ?F z!qwB!FW=5tLag&_ug_UB2Q=gLcdttFyb(XT@I%rJOAIz2XQujucE6q+-|;XD()!e* zIjqCTeMwcOG1Y5m;;o2yTG)s!H?;0_UyjBKg-$=-@o-Sz^YQQsk2@6G*z>Wjhv4^o z35WBK3HVGX!~|Fd_-edvMSPg*$9vF1u-V)bX-0Y&RsCOow(bO^)L5PH5h+sdEY+Pj||yiA!@(YK(NXr z?>i9yuS~YzcV}!sw-1N*y`rAN1O5B!gX|F>-M)OEaxWjwY|}ZZEx8Wblp*b-3*|U) zLs$2q;2KPE@SEuQ)FRQXxxnb(hxzjt%K!Rw!rMzPJJa)Tf>kf`H@a)n*zc8KM&Hqk zbi$T79?A>IA7o?oMIjypcP#caEDICuzI#tPn0H~#!%>zC;%nflwW2ym`wPpqj8Q%M zQ-l}K1?YdV?naaIvS)W1BbocrZ>IS-2jle>l~1Pl;mGCH-^Z+rk)vdBjq!2-ZmBpAbUwI8LcKC?b#gbeITWuHVqrb4Yrcmp>dmTz1 z4%M<**{&gPq5K zw)sELZ9TcZG4*%-xa&)P)?Y!AzxuuJsAn%dv9xe^^>-2-CI7W)kvci&*knJ*beUL0 z!-9R0(!FsYPOr>C9mhcASB3XPDfFOfrEbPwYI;H`L5uO-oFMVQXV>A|->O0NEw9Y+ zO=B3Y(Lzx;FpY_?4joA7NrV)kl1)WdQ{eZ-7b2IIve4P;UyU*sOD%+{;TQ=T7h1M6ghpV-n9T!D0*$vQxGA zdn`L6i<{J^{=GPnHQxIV0HX0vknPRr~NB zn<+fJ{EFClITx;!s$D;7vw=U4|8Z@d$b;Y$9^N!UU2x%PsLtj3RVbp>PjA~eOv#LN zQZcA0#MM#f+PBF)uw}AyyhxkOt9w?(#?j10(bnLNIH5KG4Uf$3=sZe;&D(ANY}a8X zT8omL#h+3U!7{={TOFIwDr|`1Zzw%ww12zxOHx1bL-JBQo}#7D%F^s^S8Ri?!J_rQ zt!OD0I*j*>$lu3a+0eE-zkyY=*C=k=NL^}9o9!oR4x;Vy{*ObQVR%52?xyapKKM8; zaZhoIky7?{yDf$dg1Mx~p zIQ+(sGfU19RR?Z=qf(4RXH`Q7zmuOq|2c!{^-y3K z;#_39m1H{n?md1O@^&*C4#vRAI+xFP&2S;PiCc@M9yw;W9a1qe1nb44XN35xAYb)e zeWO0bge){mzYIrYKq8`T_cN!4iMBw6;vivnzx zy(}+ye}m!6U%p%V3t`~>iV;K6SIANKnLI;srQ`UDX&%sdfUh5~-9w9Pa5A5`Hb3zh zKYTHq$@WUb)m3labsqy10&& zOpf2Xmv%!LLKt>$4c%D>MB*6|Es+8AcXWl9624=%x3s~fo58SC`;pIFZYDSnYaa5~ zEP^Vg)hs7*bu?x15kILLk1KU%=Un|Fu%4~OBT^>_xMv?vXc5qcF7SJ&VFZMZ!`sc^`o(Q>WNr)S4^zOD;H#31s>aW=72-mnNUcHZRVoq@mIDI)BOk@2H%Onq^FmPo+@=AJyEBXH1 z-S<1aw>B7!uL#CQ@{)RviVu!w3Y{^xZcI>g6E)??+vm!|YK?G*>Ydi+)oIY5`AWFH zBYlhpd)5kc(qX}Fqx&<-_i6qW)xJM17)~ALzsBm~iwehl{KQTt!7<~F{(sMF!Ejfu zoS}n1PQFPOPy^GyTzC~ct|{T1_{ zb*<3%>{M|I6)|*CO;^{r9*gPMtJd4ui7QP{1HY^Hk$Wc1n}zy4_}1>;=&iYV*s-m) zx6wZrIJVsxKh8T0^xpf<%Dx#u>JA1T*32H<+PB9|Xmc4R|GM5Ykw-;|58YaCp*Dj5 zo^rJXaSy^v+5>#|1&3kgS~^c%cMC+kNvXGE8HfAJdzDJ`y3v=t`5pB1V^6wq$sOKF zY(-vcnUOh^&lL(%c>Eh5^PO}0qO+a2{_Ly87q1aimy!~R$su!PCb$Su(oehVrAMlq zegV4jaeG&_E#WbpY7XY%DUkas$a$-<9S-^yEpn=Pqk3U_&26b#Fz)QK3eup#-p-cI~0`Wz-9;C!_t(t)_d_pJ`yr3sSCfS^%SP8tOHaWEASuft1 zyf(0JVH0tux?$L0PbzvETq>gfn*}38n9UH$Z?BfPD|wxRiAX&^?Qr!_7YOgEoKpNs z?rmI5Jw@rcDHjJ^AKbe?15vSu?@27RqHniniFVO4Rz2amB$-9P>+exl-rZQn*f&Of zr3yn}y6JF~Nkcl$2QpD&PBIeocBfo8BZmR`O`lC@^HJVA^G6K5afECWIXLyj=wZs zs9j;FCY~LR^sYJa4_>q83G*H$bwTlJ|^Ur*hJR#c|*+_x7vTO-zDSn9?5@jTrdCY8&W^=SlCxYkgFRlUyAPwE6j&M z?*4yy4+24q%ZjFCJqAxoSzjFtDFVv?^$kfT9E@jt7+G@_ab=+9+yB(w-h&fIoRh)e;8rF>bv)^ganQz+WIJPS@(ejx%3 zTCgIV`tD)ONBU&e`2@#mT<}Q}{-OF&1DX1L^?{`nz{;P(> zL$C7l^GSbwtO-*_2l#77@*XkHDd z0pei`=V+4|;vnrTa=yy0P)| z@xuh#1{EqT?C!xgI<*F^zsc`I$KUw^f|I}*?cdQiGy!LaeqN3hZG&8{h|8);#d!Dd z=}N|=aiC5ho)uD>A^RQa+={72mUFJ>HWb>hD?=!8l%3RBXkI}>p+E4MG4t+Exh3?S zP+1dGXQWhh2vkaa$woGgCtp3%m+-D^@1VHMF{1iR0iL zB`(;#x?-P6Lpix4{D%nXPZHg8K)Qn)+V z`t8i&qu}RzH*%AKlb4fX8ihqi@=O3M63l@y6y`B=$g# zqq0kP*#;N=nPles0|4Xn8871{Bu2`Z}(** z>lMz-Xud#ji+GmeeuSIkF8!KpZHa+0b@pU~JtRl+R$BFAv3GE-BYfMD$y2D5dNBF~ zmmjIS7Fl;~bijxVL;YV-=3uEL%Gjh?0%waoY7UsF;E4me_Hz5Yfj2mf!AAJ}EzFYHe1nazEe@TE`ihL7j zN|k+*Ha-d59-mHKbdgmo zeL%k8?$4s1evlEUsATyn7md~L_nCkAf=ZJLgI+~CzR`sO_PnMm$wpV{~;}o zYsDPv1>+>=mknS?es-_h>G!BCG0Gkj@C;ry7HLOh2En#Az5{#OO0gkcM{t2u_x#_z z^8fF7YEN0J`|S(}+2*dbYbF!LPd#0z;9kU$nT*~0vVY)%PY2_7ksJm84l6-@qb`ts z`bE{fSQqw%dGmPaBPKD$*wBsm0%Mop2fLkZn4135xSu?S0ka(M6OT>-gOThkc*7@*kc9hJ}t<{q18owG=_~ zK>a+bGlV^Cx;6(6R=nP6*Bfwb@3-}>M{01{fVJK^)D(6Jk8ZFt*C4%+*8v{UZ(vTs zOFof*ms`uGY~{=xs_|F7D%7)sh%M#!-tXK%qXo6vvsAJMUw4iijXW7uLd&(>@DOj*LqK&!1-%#bZl+-#+37cZhixtd1V`RCa4EG8WX~W z6HL)X;NkJSD01JO{cLb#;2)||N7vBZFU3kVg7LB73M?kApSt*gpW;2;Z4;qRKyWih z%0yTd25$QnzxQGm=`*@}^@w%|C>FrrTe(VLE!B`q*8hY3&ReCb8RFsT!|-#v46X6z zCGof?N`JuaQmqh`aWW{KR=Ie#w;$Q1KD^jcAWk#{k4QFeWhV3=U0bxhEJVcZy5N9y z1EAY?3V(ZSpw6K4lEC+^M0DNkZxN$9cwx^-b2+aAIq$u-jN_fa*snM16pjyJalNhe zg~&?q7TRm#+h2{3?7y05sW+jgk#+}la3Cz6#M3_snV*y= zS)M9_4B^`Q)$0F1)@jD3;%5Q=;hlbwI=h*2?5B;!{%ax>Qw~u+8m&RNE~eZu@Tm_4 zw!S)J5X4C2+;FLSF+%PkgF-BGFIPcoSx~s!Mm;>DxmC~UHw*N#lVViE1;A;g!}ED` z6jI`D{*JTgg%_1EiuHaq&=lJcYe*wZXrH{rAFh=K^chpHsw<}9s!IG9FMlu4yBcCy z^1BbHsx5k$JC{N8xL8-IDVYo4{3*m!x&qFAh*SP*NJshl^FqyVAS1;jJU~lpR~?SK z#fNKDtl(77m%Rz3pPsKqe+R7#FD3f5(%J8GgV0)Zg!RV_7D{j7zhAD7f|QqHN}l3% z{YdKS>pkPfaeKIMDx+8@eiCy#C=^qVuSS&u>XgVFgag#J;yL%iLL0yUHlg$(_u?7FiyjgJnlmqo`Yxw5ey{Yl{n~3HOk zyTMB-ICA%L{PaN*4dll9mywe~Z(k^|9KVC`P&ut6xy(rnh%3@j`c6}Ndc5-Yc-Em) z$sg}pr?mgo`~Tm$eYUkC5G3Ov@-c@Whqe{$X7%uwnF<2$rn!d5f(xK}Z?lht=u^~Y zeATvX<0br*o#)+Y@)6C}cC9CJq~e5;f65geXNY+5JnnL=4IG+Zi)r9XK=pnO-cPML zxN@xM8i!LZUeWxZFihr2h<&hYtPKdm7Zzear{rBh=zuWGY28L-{hS}XJx2=^GwUJd zWi~iwIMl1q*TU$TNT~G;#o&Y(r=P4w7_j%oC+)0cJWS8xKNr&hw4r?##vzqB6;yE7 z+d>^2r~WN{c8&*Y%cN_%^#suI%z13heFu%1bag}0rD(;i+waC`3cR}~nwh^Q!c5`k zb)IBjJisF0JzS86Bm4u@VK2HRi|3Q9X9G3xEUjugG1Y-8_J%!1r<398 zaU-MkSEX3Y9g!DwUKNKmm!IAETM9wLZz8k4Bd$c0vmMd-juA>Je>=C>ft(1(%Qn+! zn4^`lyk|?mkzC?Wy4F|JcHNt+{;wUqW_`;tPK9C!U)B|c@(^e_U;8Us&J%`m$InRL z{D~TTd-p{vWkCDsfQ%QzZpeQsXC%}(9Ilt$iQ=)#MY&~j4O4??U@&qoVVx|;;@D3h* zO*wdwt^l9Op8qFi=Yc+c*M!?(r?cv5xbfYJ0c+)<%7uCVuop%d5m&yRYbu9jAu>8&DAkUq}x zy`>(4^){SXs_am9)^TxHz5_@Kv*e!?CUdm;!uQ6@qykl(53TREE_j3g{>U^nfXGi{ zruntB|Ln7`sLoALrIWc)GT#||owI@c%*}vL>I+z^&>O7nIsm!*Jek}Ax{-fdU5oH% z28u>VVi28H9$35yRt^*xfnx?d)?3KAyY0vI8`nkhfLSJJt>sG{me?dm?Mcz+dGNks&8M)d$|cosM~n}g?5H_lxwFMx7YfA5&21>||2 z((-}S_odNj6r)5QzUCQ;&FLlQa$mZ<7{F?EHBo>Ibr(6ZCq32 zeqUILr??4r9w)58ZVF94@1K+iU?);mTA6j~XMvT!*xO}r0cBn{GcPv?5T{NCF;?Fi zLLd5=K~I-{F#k|rRpFV6u3bljbJ+TEuRQ-Ow{`foYY`_#@O{{S|9i{vQ4>9~~pt(L|7B-KN z!}LZWf{FXMv!gu?#m3qC#@U{&lpCy1Mayn55IMgZ?aF&rfP2E*EIMNbPw9EE4$x2I zRu1kTjjw2k*2NWf<{e9*sptH-Y=!3jc4rSFEoa(eo|u z`zwJ%uy&I}YQGWDsegpV7A#rdIC^w=Jol5Uc7 zeBbD}LJl;JC*C`MAqOMziq)^F8MxJN-G5e9jm(M5_m|1J zwf2}GtD0sD@~S8Vju(Fdb$Q8)K5-w7cyr8#i={|iHHFJE^?`#C(C)xgs5 zcoV_rR2akx0GcYe4y4SzNISk^4*2-bShNAy%o#1@4@y=uBb6q!7d z%1ClUt{Y{UdwyNVE2?#?+8Y}<@~R-`*t0qi6fWR;N?FFCd@FY8$SDYWIV(K#m5T6W zc6eM;zKIaq^KaLgjUHIpWi)tb_Qr3y4|nX#zd%^9(k?4 zE=)nKH`T#mOho>pmF*V>{z1lh9hMC4JrvzBqaWING{nx(eSs{W9ckOV&x+-cb>7TINy%fy2T!RgQakg6xuA(o^zYySw zhkxH3H@?@jf+Nk&Zjnx7EHSM<@lgfe#JA4{*wVqyoT(BBf0~bZvur1QxsN=icyx79jMn{u_Q5g8=u$wNJfr586Z8RFO%kOKlHCElofTs7vnXUU%FtP0I!7|NC6kZTFoO$Smn{L%jW=02q2Zw{XvfDcx=ssHJ zu=5*qx*A;nni_!rCawRynRtZ~+^QGjwnma1Sq;I%=M^D&v<8G)Q$&@ zUX{M2kgrSErEMY956@**r{9|(d7(+0Dm|Ekk(R!tmDM>1+?Pa6oK*^Nb&H%?w@)#~ zGuyve5)Z>%aWs$E^%_l`4|z*n4guwnnYHV*{uq9up`o{Q8Pc9wDClcfLDlfLsq<4a zP;@Ylu7A1;***7`etS*&`CN{jo|Gdfo}XMcv?P(sSTF*cn{rcL9lE%nrZ8mhsCW&EW4ie z;C(5fkhy42c=zWG|I>tS6yO$r>&jAvX~n$J_RGn*zmws>ka{(w***$tFdc-%Zv{=^ z>-Es@mVEym?HcS?TIS(X?nNi7l&H$*gBT2_J$Ta)_x$v&4~_Q4x$OS!tanBsV>M<@ zZ?qlv$95!s$tgreHPd2ap(OChZf^d4dlJf=4VNG98bguogN2v&ts_s^87W!IKN#IK zc)@Nh9Mw}_IVrp%`3j}>u75&?@qU>HS)71CF<@|4Vr%29rzijW;bEFQ6 zv&Tbpbex8GM|JCG*`Wb+ZPg+k|ql z>eG#$1Vqc4KlgsT2-7DECb*m`QT2E1^~2};vGU}X6(@3D5xVZy>?O3BpdOPxn;O** z)gLsi9pk#;3r)z|blwsOBA3^KP`FA zrG@0H{ni|$jzSxKl>sBuA}AX;Cg{RMLvZPof4a~oN;x@pVb_E9O%yh{%q9g*K1!$2 z(Gx%DW-wKvJ=x^hJV8S0Zu`gi`X?MU$HKTILHKCGQ9 zbW%J1JKwkH`>eWQ`#8zX(PE3sr>2~bOIeTesDrGe6p6Cre~{F+$o1`I3p^__QYvfQzxA<=le_45$T3#gJC4xl|eUyKV&wGBjP)cJdL$R_v4q87;tm&%#YW zcMxS;{ZlZ07!TP&o~qpO;r< znMRPGg-krosYikJ{L@Bh>fWva8&}RU=PU4|soSpFZ@yQDlwj*S&e9j0T&{6KQPgzZo`p=si z?7Pe^jbg$N?~b4Hh0v|?)L)~1GqGqWa!;>r6b?&EI2v4IB~nW3*>W1XLF;bsLe=Ob zZvB$|l{RM@jxxS7uBxuUs;yr{>Q?ih>YS_S&cGFLKVi~ytE?4TzOlL%>onrafr-b`RvH9h*PHpHFg(M3kLkXeoPnc`W-xMj?Svr0)Af>MVvE$FsiJz(6it zvUz6=v`7ffJ={Ug5y!MWa&7(bCGS12tK{5_2r0c3VLJ>m!glxUyXv6K@JrV9qkUks zWcPx8q7M&TJQ}cngXHQ_9}eYTAHb8_%;nb`+^rs10o+R=cDN3}Xa|zwSFy z_THu^EF5cmg5_4wZ`7-?d6t`CQ}L76UR}luk5=fv*>~eIt@|A|HEKe;b9U_Jx2;5I zz7F&L$1})B_u^IXu?d{gOf1f4T)_%`1UPoh@4sjy27he3zn(3%0O^f}i^&>iu&IBi zIklk$I9^I=SZMPBl^FBokn4}|?*xZbcn>VB=iRpSWsQdNEPX14%|mkntjI||_7uD=Yf8Obm_ayqo~=`&E>e6>jN zZ3MVHGTZke1LcUiY4s-3ZPhz z>x2212XH4NCDunU66BaF)+$=6fL%ShY*F+9&?-=GI+srBa?GClmAwB0?)&PzY)eDo zt4fde0lV)IYrjwG%QNymQxJ_e-ThG8B69U?gE#PH?Ed@G#1_u`58ZLR@dmC+4$xV- ze#8uwr+WIIK44J5*w0JXBJl@4zWXESIqZtxp!Ax30mCzmRwX%pc(QVbXs$BJ39Y+) zsW%`QOZRiW`0D3}dhWNsH)PyK4!ip|Sgj(_fh*-YpNtDUl}<9`xcdY1c0AXeP02=@ z5JMX27FQhEW8@bY8-}N8H2N=in4^*U6RW?!7t#8mr#m%&J^nnb-z;0ygI}lLG#k0a zVTz~E;O;B$k!yRmzTf3)Eb*-JJM!f{{uVBdyVwy7eG-uxNZcp^BAxGeM#oMTzUO@pJ6umd)K!U`Xnz#YR4URw_cE1W_9^n z;7j_lzvb!t{RO<2LVsVrjo`fOm-Ni!H$JtOFtxBQf-VkaKX>H{*m7#C(Xw6+JPasg z@HcIQMHN-nOIzCD1J|LaQvS&>HY#3|`L+Sp7(-b0CM95*-RKRq*Xd~Z^SsrY(JIu; zHHg$WngmjRYWK~(O@zBt_H60TX7HZSB++?256XmvIkKH5Vf&Dqu<&9D9!;rC&E63X zK`CZ@UyH8_-X-qv7uny8m%e1uUG<5Djh_K0_iV4h{SEt~ z#HgF#%%b1&#V;gp;=v7%r)ne*=AZGdVp1=oAS>+>DERlvHa&&gnomcHJ zZc{jy89oE&oeu}zBlW&7g9^_FSyY4Ed0VqRD$A(+Y51tA$2tbooxGg2`8P09d;UE6 zz6N@DcSeetC4)DKYZEzJhPNBFLmt;M*?dy=<*hkfh$bTK7GN zoJ%`i@|atPgffo^1`Tpge!BZc(`Fh9wwZ}v*x;j3NmLJ3r4Etj`B#a?-U_(q9g_Yb zcnJh}V(+xA)sVS_LnkW^wBu!q)Ik31Y%t)WDt>xw4x5BjKfb=&fF`SU+BIjVAm8k! zSm=%(V9Gg8Yra8XUvQTm-2yem!qDImE$ax-MYd>qSq;Kc%>$;>{v?-Y?&4RsUGpf} z7-p=Mu>=XGjyv<~Yp`vzyF;i-4$?2aH|FR12WeJ}G6BaJh{F{2z^NCt_&x3On^vn{ zcx)nj?sNM9Qub>F@#}4)M28(#VE%PcbKAC3rV>TmUez-Yj2%te^uG0i>Ex7! z`;Ibbxby4v=V>a6=y1%@j~|Dj<=@zMZmTKCO=_joGc1Cw_nIJI10yBrrckD-bQfkf zh1jXzCAq@1T4h9KI+)3m7)XUFcrRhiw^ZE;n@YA@)GGW19@B#l9V+X=g{?_;-mDK) z!tL*v+#5i~c13ZX;xXt~cK`nRaRCM}M!&dzn2N%(d)tru_xj+lqM2c!=@gv)>5z^T@z)p1TrosPJdVJ168&ewD22j(GcHEYf={mw!O z*zawfN8JG;59V+E*yzApwzsNBniiq)y*y2fZ67*rX*8JwD$4QO*9PB^_qwpiYF=F- zMoLzj*2*&JEAmKF3yL0Cf$5r?DFv2f&gSxBiRI6&#H+c)OtJZV*ta>8%4Q+-fA#)< zefa^K5%r#s$xb)JU{%DO5izP>=0 zSEmKki`}t7Zuc)EGZXk#BbDht@eJvkH<#VWF^0g)LsExseFo#H%iP=dW`n>L`FCmt z2{1cFvze;V95aW1M)qCy0P!GaE|y|9{8m7$U)zX>eXp;dinwqRJ@st09I4)eiK@-J z?E#Ju@^r=4?~E^Omrv*qEqIUj3MuZbJmElCPd(IqY7Mtf(JW4UDnssw%inE0!tl?Q zEXOBJUvTmn)trd2JFpUBk?OziqQ0gXM=ZIwIDCJT{F{5X(D(ACl)BYWV0v&TBt)F# z9gjTX^`1{d?!=`r4%_Eg;8Zi$FcSbgL4`*WBy7-*s%JUqZv$wya~g2Dgg}Ydp~sbe z#W03dF)K4Wf$EIjBvamL5Z4mOznfiw?4^9)PL91sf9=f+7ua6IbuRAD?J>3J`P%Gi ziJmvQzjaQQVEBTrBhYl0za3lc_shl(1flWmC{`I|UA)*uJQ8qpfNWpJUZV6FT7Fk| zs5S_MfcqR{Hc#Hb>08nZlRJOl^9s{uouh>yZW~u>wY?l0JWrWPd|d`V-tE-Usd-q7 zoC3_$<>+H&O)YmM62o#>=T3EH!1oRxmV@(=I7Dx^`^u?7xGHgIR5G>)vTcbUp88FA z_15Fh99mv@eBhItN4q&x^Yoh(?Kj4kC)0x2WHu8k48eh$k51s+M3ckz;%=Ncf4?{7 z`5&y!&?{ai?`1hkn=_iDnjzM_Y46A5AJF8~N1DB|VX$5h$5s2K7)@zUHB-qvLSI4C z;@BoFyvUkWM3rd)OL?~*G*J8C*Tl;$ZUw3E)1~Lb99tLs_^R>2;BzoMSn}DTG+6wf zbv@tmK``sX9Bijl;vKIpsNA|mH(ZQ~GD&YE)oexTV=o>bmc3UE?YoGuo*(mI)ivjM zF*pSt{>oPKOPzu()6riSI2*xy?q-=UNj);(*4afW_i1YY z=!m)7UwStN?7S-FX%33W?!WJr3>_CG;Cyez!HhcCCA8h=^9LFVZPX-1Nw^n?aPJgr z_Gs{(*q_$;a{&~4#QEh(-kQ0b-NYW2I#`i?+Zo&950)=eM?ts>mRDL&xJdRO4Xj z*6!W)34^dNBPi^(P(H@zGA}Vo6~WP3nUju^U8r}WI+)MSe99;Da%M-914RtF zps7!r{lyg;3gdR_r-dJSQG`kDFlYQK2#4N`)FJPce(deb8h5)ug+}zoxOFdjJ?=Pj zpM&(Bddl}%UM__;=_6NjS5|@HVa%Bij*;+n>j|^z#myA{3qP_Z{P`(|4qpwPuV@A{ zI+h~KgnwB3PUY#Z$9WJRk#j!%Y&dezx;#6ZJ`9g_#3+2u1-M^EJ%IM(3pBWGc1tq0 z0MFbZcbC@HC_x`R>*iAdoUJ|a3GDrFdQfg5D{U7ccjtO)IX?^WOJ={mpgt|3|IX9S zEO-(J-wq0#?(M)7`{O4|yB9EYORKx6bvqWC{aq+ORe-8P0pfd3R3NSBkF_y%1g2x6pa| zzw>>^vNpCxy)S_HLuyZ@9sVI5@0RIt(SG=0a{AP9O9tZFX}{$=BzXQC`^ctq8E2vPhOevYw}^dQqqW|6Rt zDe$ATFgP)?Qh46qx7{sJhJCj0B+_f^vFw=BfUzRU(XJ?IDV_+MthpOMH&M)`$~Nf~*2CGWfrE1VWsq_xT;bNv83?;p*EpuRnNa`j zXyQ2Z7cHFxPrW`?jI#OBKBxX=fE^{Dvd4HEA&_VAfj4v+R}}njhmgLsiNqfq7R}9A zT_wBSL$M3)%czFdy)T5DH+;_@h+!tqbu&7^&=|<-mwQC*q^5Xn(mJ+0GY&04j5t4B zfb-|h@r?Tq!st}bM{bS<@czYTSfm=5nj-UB%E-wwV1jxfkco+YN2b-c4D&Yq$BV5j(}FHC=2>nw_GV zqs6;$aSLUeSU#J`rYY=u8Cwb2TIgu#}0$AI=slmuL>--SqF$9~Je`FF*U3=kIXL z{CJ*&pT`ra1MENV&xl6KyU+^DQ9ImM_Uc{L6Js2F+V5-Q6NcPVeJ0tLBQTtes_1;9d#&GsoX;4F)a1{h#_&zn{TCB)Z>-gL z4(~9Azp6j?%R?Q{JBz%^OMQuzRS)wokbE-FonDt!<`&WJ@vYwEV+A<*+1LGyP5tKV~)gM9j%n5)TbCvS6s$L&QWcS3vCU%S&OC;cW)I( zHDIuh?oUy^TUa&mo9o)^Ax`w5h%dUX3Wndg2xPxq|s(;Dn>uVOx0><^O#O;eBb z%JFM+zgpQ=7ig;Ze+YZ;aIE9E|KBR3P*$O&6b%Z67UzX1LM4#~WmQIIM#~IEG9pwW zdrMZ1Lf|%-j zw8HQwh?EHV_3f7y!fg?q>EULW>^zy7bEgwZIks(^O*8?q-A^68)>Sdw3d=`_l7O9Q zi)rj#CWv34GiqI|hrN;SzZ@fezs+uTK~$OlyL6!MZheB#DhMf2(WRS9fS{f(sWX#0_`%TE149vt;dWr7w8|5g;y3R6C z&;c)Rbg4>e{Q>)wpZeLh9>}t9S%cfW2L^FNwveY8(!_aLlrnzfRV#)kg&zpNjIgrT z+^zw= z!?$;;5xOiJAIrZV8Oh7Xp1vuYpM)<)2L&{E!tuCh_UrU1f)BuYtR!b^0+XbV{kv$H zh$eUTke&>B!_;Er?H;=+}S4t_Yn8-WPy#bqf(P zSLQ(UgHcoMty=uM71T9M24GvvQGBW2g532Q z$pKB{STTR*O$`MNsh5s^Mr<_}1<#6U4|>*OJzvAcsa9q(m9rYr|v*s+zFWBR@GdY3fzsGv#OgEB>nZ4zCD)B zIBN|Gigpa-J$<))KE%e)0(tlM?Osc7AeF_9@~iz8_}r{iv}GLu zm9YzXI|`f7L5XAW^yfiXcyi#-o2)T7`pHfsV5tS9t+zd$$*V#E{~X_Ij^z+)z~m-y zrVg5WghJRF`|yA6ha9PElt&lJ&`Z@#`1@Bq?V#uUa0+4(;Udy${SK! zu#@c+bTTHRH{r%=x8YJiXO=Iadr!$@=Hl%5hb*7p9lP=|6zxZH z_t$-!!$#A)Iddla$wlh2Q>8(zK>I<~%IwHqlw%Zj#3MGl>4 zQ&D*Mn>?|X-js~i+bV&%KLd}pUF%0dw{mW`xh5Eptz|I{$pR)WDzlZ;F^tYy9kLs3 zh8VfB@M5z{*!!*OZ#u&~iikaoPB2=)KxOi`Pv^psGJl_X`GYA8x0iUExH5n@7AgwV z3>q;&;N^ou&zJD!pTal!vs<8Yo|LlBa~96!7;dHtj$qTNzrpIH0bp3DWmz-jByV{O zyC2DHMlBMX*W3wKvS|tB2$$9dOs=dRSXxd8B_1g<1KkK7dCOY4c$bMRcE{e5n`saS zuh!)4yxE6}Iiu07*@UiTFfN*wa~?}e-?@CPF9ITS=&-tX5BMzKlArrV_;HK^^>!X1 z1IN-k$x4wHppHrOH#|}YihF!_HXdk3&DC>y{{;GQPAa)BB5W1rT%?bZeJDxIb|d$= z?yf+L(AstRn|;6w&_)Sl!2t8rSx%3m_ zoKNscD)htisbC)8ZI>YE=dFJgw;JF@>$~z-+HJ6F^bFaA=_XA5QI-7pMaOs}w%HOJ?T6isRP9XqX;uTKI z5q*DD_V~-9Pr<;#tJ0gXS^^%me_}!$3Lr@`-76CsVTwQYkrj6&`2Uf;R^uFlM`8vA zT9(}*m-FtM9sXTlx2X2v>#Jfo9%}K~$EAYMgT+@qY}NxKwZ^0T?lrK+9ygXvSqE_! zon~yVg#cSq!De>62$)!KU+w!;3+C3OqM)2Iq}I%SW*3+P|6+thpKZ*+d4sokc@zj2 z%;g*3b(q6pDdX-2htIH0^}wFJ(S$CH^`VirH<6b+8T5LVCJet8^q2hl{2gBYKK58N z@CU&O)85T|%?ktGPD)O1{e=cSrOHnahhgXU?62crpQH9E!7O#=0!*^_ts>AA3RY~S zrVlrB@$5jSZ1J522z?fGU*voX@REe}=7@WmQ@-G?agMKWxarr0qi;$ufV6YhxjQzX z#BzU+>wYS7lkU>|1YIAh#0)8>32x$%>K95u`+vjZ^LkJ39iKx(_N8g1*=^)yLFc8d z>ep~eEyZBgG8r?y1Y8pcUR$YjT(OYwC@$rlKwA&GQPNkB^b{qY1xJ@TW5Z(S0?_~el6~-)}$#rg|}XmmDv&*w6EU$sJ7H3 zI9Dev15J0;V8*_-yALiC`LWtBgAS|aqvA7_tJ>#&Vxp{l7SE{xJh|SiIo#ZhOBVgF z%teSjUU7B-^NS8NeEcxW?|vGDaFxBGFqlX2XEby5OcZ2E<13xI$C|MzrE=yi(SI(E z*U(UT^bzlir#}+Ae*k5G=A+ne|8P#BzSd&17_5)hoLIWJfQxEWsoOdtQBm@qh}5%# z75PkL7T_v-dO<4Z#;N;WyRfM19=`io{UKrZge`5R2Uf5XclnJL9 z1sW#x<9y0lSoe2R_`DezpVIw$5-Z#VXC;^e^$A~pLLIZ1&+H1!dT26uhA%)X-39+Y zS&dljv^Pg~brw9&%946Krr^7z2|R%@=-PSQ<7;~r9uDcIJtXT7bIhFa&FUUF!Zr|; zG1Lo*sf;Tt^d%t3L(3(*_6x_m_Et@(#NYvu`HQ2pgzxrA&+p=?A7FU7h7$RQ0J|IXL(o>qNsVN?tcJa1$kHhF`oD#C3}I1W|! zqtc2h7O}r8@)JWdk^7R_{gahE1A|iRnkLJiP`OuUzg*`UDC|k_k2*L6FDLx%vd(qm zs?hUToLO^}PeW><)O-yS7uwyc2XV#=vtt^=eX*1;?LSaLAWsNgFTYZ(qY^;_<2 zh(Yace_fw2GSbQYc6Qy?jCbz-d-Z&%4KdzwXXn-*Y)$fG`>EE9Rs8YHfw{A=H#Ybu zxvLv`%kJDR-{FWud0xr4L{`C8T;y#{X&!o50r}5q* zQv|ob2s=ApLDB@?F)R;rXQ_jwP&>L|={h)dk8#hL!g?@YQEoC5Iz;ea7!0;{%|Y+j zxnF98pTKPCera*M57!zo?K(# zn;FIR@>df+e!zW9`DrblX}+&aH97=Cr=@o9|Hnoa)BLEWtI-A*SFh;%4v)Y~#z39n zF?v$(iPp_$mfJ`a61G08ZC{Y1HLcW6aT_V$s(7<%y@k-zDi2)4a%dB+F-hAu3&#fQ zin!eg{dj7XRBZYhEO-{rRX4W7X};u7RzwKqp=(^1^}mjzk!`niWAZXoE^3}R?6LrN zPGkpD?V}^_eD&k=gG-gLd}OHcJ5Tt3?c34JnIc=~lTb})x3u#YQz+Cq^IAzI2%-m3 zctL{#j}sJIyZj@Nb;l(ndXGP5)l`Wm-t$AT=eq5(q_6loqtZr9%nGkrR=+j6b{;>L z*@edhxgf=@fYN+I*CBQ>K|e$@7QRFsx7|tai$kA2z3w_|5BoUlZXWE7z_6jna-M)} zd{-T+d8Ft9ZtpmJ|H-i*#9WJ}{Jjbp4@Fz-`Jwq1q^w^@biQ*&Hd>F}T@QnR%S)Me zG_VoH+SdCViMs#E@R8#6^-w(ji=#V;G6B=WUj5!q&cf!sSDMwY%i_cF6rMKeRB);c zEB#Onc;BYMHr^#1<8F-6_KAQ}Ge)#1pQHm+0eR@#MfWpDi)! zOJ?ETtA6k)PLeLYG7?+aWmazZI>5uI`&FX@yy$YacEtAAZxpDEnHcF|M6xR%h<#+4CJA3(=oEW#)*>o?J{HS_u6GWtw=%BQoY@9G(pM zqJ=5pKaOx+C82QaY(e?`ExM_+$z%zeHn*$ge@<8{`~>g1Iz6@zt&+` za98MunI;&#XzIsssRgJwMfZC3x8e5iKQ5vsp4gwksBgSr1NV1c&NQQWfUK2wrMx2h zuuWO=>%z?<6v+?IQ8`xyt*P`udZ#=fgHN~U_x(=LpYSg~P8tPW$AgtyP9kW$d%y8s z@oylTXfRC0_5xfr7#F>&OQFr?n%q!oV0Yb~27)J_6mV<`v0RsL^V;nha5H&wfw`_0 zO;zR7pIK}t$LXw=9Ny7|tIA0a`5rnVFMp+erZ(Xd2@U6YORPkvk=?)v>D~RXxX^WSD?d&6a8a`X`oxA4D-rN1)8Av?X1tzLEPPZ=hcWmSSef= z_&mM^?h;{K0*pV1bIgbMWOf7!n!AFDj8WL2R#Y`(Qi(qmtynB#6M;1%w_E?fBL0!D zdMLgx8oEF6+39Zlqw4;Cy~wN%dH{()xy+`Cg~ z8@BUM{d_ITnLlf>klcVEUV0<;@{f4vDTL_kTZ4;912qp=X7TvxhQAGUMc6+%d*ZBT z8+Oa|_}Yh1kv(o(ysCGq1J9xqdv?=B6yg_q!0B0vjkFg(j|%++(yGYNeeb7m)F~|? zxR%IcRXIF;@l65rn=Z=D3=-0@OMFQuz7s+vC;rXXqgz7vk}W+k0OI3sBoTIJ~9T zh-Qr^UuiMN2t)~h2D zq_O{;M@G9ObkmAv;9A*8!_<7$e?I?z?~niU_h!nM+O*kO$ge3NHDorS@b?97oyB&r z_)YUm*J%#LpA38|f4Bt4jNErH1urA((ljnj<)u$JzTe2e8)Fvs-~Y zgAY!AdZSAC^B)*h?byv!3Mu1Pf6rD;VCr{ShmNI1Okkwd)(WeJ@e4lJJce7q-%!_} ztRop3cdNP&&*p>Ej_2L_oJ6Z5Ltd&h^eFhx&G@YIDy6n3ADSf!kV$i(rFJ2OXM zQ#Pi#{tUsfA2d^Er=TNW{*b^|&%6v*QoimwDz}Qa^-mERE#m&lp_*#WodxQ;JZqQT zCgHXFQtfX-kL&d!^y7nt z+_J3fAH+Fd%SMq{nX0Br1mC#UfgBz^$+S1fnD|oM;@acC@KKgKUYx1{GS;WR)$4U( z+j8Eh!UtlG8r*x8{cs)5#N8xQbC2SgM;rp|p@n!zT!hA#@C^u-L>v=3JA|pdv(8 z!a0&jj$KMoJBZrk=|$4@*u=eo_0_?++y)T$H}f)~;p!U;Fk@(O0(vJH2qUtVG z8($6GE{vvCJzs)oPk{2YHBC>k9Xjh-US54>febEp=ZxXNB^Ox zc&@EYf;RFC{#iJ-zC$Y&wbUYp4_-{c43-z$KJ^e>XA>hadR;4Y4^mx)}Rd!o`m#RG`@ zS;3{ zkODR#(-@hgL43Ed=3v+xi{yMBuVkKP95)e<{rs38)(_ras^N%4F_$|lS8XbQ*G_f9 z>G4Z2RHpH$rGJg4PsCcthTmYx=!qB~M**(7P@2cSj|9D^Pw#rul>*(_pW+gKf8lV@ ztJB^|FEI5fqX3pZ$LgFkNAk}Y@ct4iz`6DoHU27T+CwHC>b5-HFmAk`Ee@)IP-xhNcn{kp`qvX`YNK48pGGx6p8 zR-|}2b#%1e2_M`H>GN1N#YSP~i$&QX(56GFvQ0GvfG&AVqbmjyUrzb`Tr~r8wZe08 z*LRQvcRgOZ{dESCc`_8GbjIQCC8-9->lKi2`#5bWp_`kst}ms2n+ojT+I7B;`vEOa zTTJoL7c?~B)0o>)4g2yL4TE)xK+lfalmCt}_%qKtR`A=RlFDnFz!{B;1YhZY`ttwve5dXBA||&SnPY-1EL!U@uI+b>fnJMDS4bR3naWeptqpzS9fZVgC4+=dZKPhu^?)*(j8Ex)65kI`97a zR1>l>3ss#XcVj4DjH3mi-*v(?5qtGo>>s@uFjhB)57L(TnerPUw5Qwc#jk3pJ=S}y zIj{}CzKR#{>~1G?s=@7Vd3(`y#p2GjS82dGpE#k|*8;fg85ZbN zy5#*c@s+~)cL%$v$tDgLrT!AW7|HDd4<@#U!jXfK8bOgW_`02&{g81!lC0AOmUWAu z*Vf3$ZqpfO&%gO_v9%bOxK*~<(?w#bOzcPL;x-`fY?YPUn#I>XuAYxi-hr&y`E!Zo zlXy|dGa;t53GW%`eRecYM3I6QAI~c~!fqor#v$%`JaLKH?p{zIw%l@iaO+qde(st2 zcCUiS`;BpR)THkKAC)h9GWQ7GU~y|+U_%Y^Z#SiCeY%Z&*t=o!O%54OJO174nplmF z%=ccO-Rgu<(?>7bSp5i&!y}(s%2`-*=zpQrPDVo>wfuC}CUDn!Y^&H`09rSw_OCHE zK~);WMg4({s&Q9TU(4!{@`w-p9lDED?YEJ9S`j>*4ddxo`|!UOY;v{}VTPKQxLG+y~}D zDk{;@Q>12EtIx{&I7xQCV!2ml=}DoS=KUq&G^FzFC6oDVd_s%Pg7D_uer0tz0eaf2nl+$?q6&I3u`4(yD;>?O{K(rHbLppYQ*Q z364;NR4d(sxiwr#=6UGjnhryn_uI1wUi|PWN2x8&U8LNI>Q{F%4Zu0tm*VwQB#K|& za;o%6fS-Tbv&%oY!X)L!_1T@lz>&6tqU&ofUbfHt;1FAdCKSe}Co(?*xjr<}L9-G) zt()@wK9G?jMeb~g#6`Tay!!hwb0ruB#0ylOs=#RO>1{8X2Jw%|uc}=~-0*-D<+Eh( zFvxAbC;4pD1`D%93V2Io8+^n9}po|;>ulr1|t~K_IyL57a+cBEDRBIM1 z*;~!t5x+wc`5^_@~JOa z`QHRm<=gVKR<=OvU17ben)%R1pG+MYKL(>g=Nb-t+QRzewQnT_o!I`<<-8Ex2&g@_ z(l)T9C;R@}n?jdLNhZ;pzcSgof^2a%b_M;6fuZ8Uqh+vm4Y* zmx0)X?7rt=n^JMmu>Y-(HPD-VTYjxVo@=S=vm_?KmHeCT1{VupGeUHrw!I8eG8Fv%o_m22*<2*L{vFs@x};hk&Vhi2 zZ{a+|zGg__H6tI59KQ(f)j)hG5RiIu)hzM0T*|L%>;f2zPN`r)My?-L;Hz;(JCyB;BfbjQQM z>yB_J=B+Zl{}4D*gjDhqIykD^j_b>>2)`$tvpu8e6S(%GdWFn405VNCkmqUz$4pl^o!jy2m?+6@wc;PQ=@cjDnwE5juZbn{a?)q@%! z`QM$ErOZMseDCo6!=4r3S&%9EZ8Qvj##^@qtl8oIf81>6=wk8G_jIu*eC1GfM~gY- zUIV<|)Ad2?+XTEk{F(ExNgtfMaFvl!c^G0dxyzEmKLU%<_4V4z*%;li>_Rnd0BXe_ znsXvq$Y)9H&1xeHC?NB_Ux-9ao+)kEy(cFGmqVuX0@|k0=JcCOedo53?O#zo*|*;n zZ@i?s@Tw&?odl9!{2ZhxtQuP;dhlg?OsoDDFZ%L&i8Q>94ES+T(m00-a32h1;_Wv zS~SYNWhBtk4ZkTQjM= zyLKhql6O09CS8Iyn&x>jYs4Nw=6>bz8-yO({pZ0Kl`}}6pw~E{T?m_^*6I#FHc?sV zY!uKA!99D`j_f<@MDETnHXZXG%-B0$u#4cp%{Ilx&$-M%Mk#;j`&-?Rwwdc^tS^G= zH}4-Xss9eHp6y!Nt+B}J^kkA}q8`{%X=Y+`>wzJ3An=n+5lXMB2YvPQK)-nw{%2<< z@eWIyb^FaONUyB947~B+F({R0!;}g9f>)oPd|v=EKGx^ogpWeM;}Z|fGaVS;_I){* zW)XWWQ=O|PdV#?$QQ&D%9p1h^dtvrwJ?33s{Lo>&olJ4RUC7FR987{HDcl98;ayrZ z@88sN=ubEA-6+feuWnoEFaDHdhKII&hZy?dq>!ptjwIoSJ5}+KE`J0Vqm0dg&;`(I z1ec^uj-o4TSQM}PF7kP@y)!3UD;OM6GD&{h4rNL7w<-74f;LBxYd=LcibOYAe4`ve z-7#&w<2PrK#%udbwla}--mj}Rk9^~NT(rx}g>%(tbiXxYeII=6Y% z&yRt+hMsXY2P^q{qf^@`e;>a5dWDWBbPkslY-Sy^=0V5m3c(`@kLvet}gQ&#&G%El~Z9POBD%H9rc?+b*rxdyxtus9+u2Qd(A=G z%4z#u-L*&}ax~-4Xu)cz?}GM@KR9{QBV|WME}R?_?4R@gi^kN3-4->>B;DgwS zu+pAQnG`jHOJaVfK6wAYh!4EgF;l(xE{ZAi%j7tE=a@a7dfA5wE0gD(2pv^@NV?NW%bTw?i8kls$!X@>$=#=G z3YcgZ$PV^>bUOySFwNl}d)&|6%4otk#@tm)R8ZPQcBo)f+MetJ zqfMG}^`c?0RNS{9-ZhSaH#TIeZMKuSj|fD$hxWnI2ECcS<6pSTb2 zj%X5-K4S^_Y{%Z=cmniCKFd;6dxyb`Yl4-ZtnmfC*k3mTLzucdq<*K@6F6A#ss1hv zRQnb9s*Uhha@5>=9FZLhrw6ZH?_?~7R1f}w3P}kln>piIp5q6*=y~|E8qKls4OdQ+ ziXLo#bz1BG)z>h}oo&JzVU069O2YfEr(@ag+!KX_?k4nfsYqOVBGd|d^F{iG!zHD^ z;=)!+ARE0~eLuYqi0;3h@}ct?T-dQB^i4k+R2|>Hq@?r1^*SNvUmH&F<+~00`m+o; zEfB>SRZh&euSUrvR;__NdE_b^p--#{C_bBDPe%5?C7elvY52!s?}>AtGa*>v>}b{S zM`V>q3Zu0i2BA0wZqAJXxc(?XSzag|Meje`JgoH)+nwL$O*Ld={rk;_EVOs=xJJsU zm~dJ$Z>17bW6=cmBneK&ocW9S$r@>5Uw`cS1VPN6V8IvtpIOy4|)i2c4Fpy7S-XBcJOdZ!hdy!leegg7=~s(5vt;?j4aga@|JB z-}+HKitJj_G-W3811d8I9Hd&Xo~xfS;lNK6ytIBg;$RcLWwTuelwJ>R|4QtyK7VU!`g0)_6mRJp z8kYtkmp)J4*Rgz%ywBVA{%bMn;@;I`1Xq~Cz%;$ZYZOz-d7>@TfuL7X?%j@~sN_0y zVNz)nN8hBm({ek)E%7(0UdLjwR4dVql~~&9Ur!V}VpRj%dW(vRWIORS2wUlkjU(N& zH~#0Qi_yN4Ioe}<8VY-L^?U?>;tfXc#L)mMGTlC-XL|^Jg36en)2V?poWZrLX{uxvko#?_yD7)0p5OwiwlGhhh)c^W`|F6FN)S{-0r=SlX6`vAeQ>7!Hm{@J@D4`{rt59fK5D^dY=?_w2|j@H@vHaR$*WlR&ed?1GY^Jm6;*UZsK|5X z+gXQSdl@;BFGt7gL(N*bK zNF_(wPBDxldkdD`iT5~Lr>D=i`yI$IQ!Tn_yO7V<@&PWnGnec$~ zN1m-=1kb`?MI{UQV9qgy?rXCcqjoFK0ji;FPF-X8S2^Ze@(H64J9+WL%Llg>`tVtN zzloL+1KA+IyhMm`4D}RpLv$z_34R4*eTQKOzRJDhJAHlgMI{lb>5AKwNJj?X3xB2BY=_uxncWJL>mN^H%e!-EB@HwNEO)%;_8rP4AARu*3p zo=60xLln`Ej0U0CO>J+k=MNB7tgURd?Ex35Tq&KXabR${u*_LI0$Hv+!G>J)WF7VJ z*}jrGNcOxM(IhvDGgi&NJ^b3xWZ3!AKiUPzRSMFI-rkR~->HV&_7L31*geu3m-$J- zX}bkV#u!QaK0SOrEU}-&S^1oIn0^(`g(ttw+#+&EV;sYq9`KS*iYIvo4vs>@jmjf? zuXdr6*E;W;OY|h^$P}KiJDen$Ys=AjuNGjGFMub;-xImDrC-N6_QLkM@BE)0uM#}+ z>+Z@XtfZs8d9LOKelY&xb(<3Vi~o8aFDcj9o^qxC-M+!n2P&GJTk<@o`6lNE$v7vf5f9*+Ip9 zeT|F0Hu#+>E%LcsEza?!eV6b1igEiD2UJqspx&;vNVA{d6gx-V{uD|^i!io-8P9AW zWFuq$drD`d=oO1SeN7!{R=q@z?umqXnI{JZrvlJM$e-~$G1t#-os}~xDnJKK5vJsz zOh_K6+uTOn@5kv+g|3i(BX4Ci6Jwh{Zh!pxylY`7ivA5fc!l7Oh;r2*HQQ*woD_v^ z%IALqTjo)|z~yQ%u0WhCTJDBd?1fI^`_w(o{pw3~dcIk-+DEL~FZx*{i z|H^CC)`}A7zg&N{z>M(Qc4YjLme7Gl3yzmv^z!hsDa2)C-**T*6*2ZvEgcR8=#Rb= zXasFaugL?{C17!m(b`Ai$A7JBDau0Me+xs{n_lAfg~&y#N#~81NuVH$o)xc5o6kp1 z)`TbbL#vTrCRu6U1U)%sW+BYpHvkg?zh%muoJYEZDQBkk3RDzzmOe&mMY>D*tmkj} zp;?EAPV4+d)7h`k1dnf&*$H&n=F())N#WD5E8OqVYV5~gMNe%t?j&;51AB@$ z4jBFgx-{zX<&+qp%IEobO>Y1%A9|zEqDW89bf0-NWz+ymh2}Ab1I9sdTVk}JbUucD z+K}kk9gB<9OoW?k0SlC*8q?%{fp1Sos)$h?UMwE*``bDRA2f^WNzo&OKg!U&!gv?i z%8HURik_FuReg_#O+NzCXAESFZ%x9+-0hzmWtGSwYfdJkh>hR0^bN?bjI; z7XPW^OUGnn54etEX;J&=NPiFhU+0kj`8+tUf4w+o8vLHHHKhbmlPnVVR;(6LlboJ^ z&e;s7Bn=!ExVS5i;LyH3-jQ&hg8XtHpu*-4(0csO_PEUwma(`zqM`0b)o%Z5RWaG9 zKaen}wQUyp6DR$IZghcV0^i%S1pi#Hnm_O*!(p;1tJ%_IYZ=^73U$4s*$AX?E$uf2 zd2qS0^T9jsVG#Ys_VDNE2=Im6`cg~ikR!*}+`GNA@%u`i%z1*>MZY9=-aCwf^hWQ) z;C13$&~VGT#8+b!B)mpD#;3>d%Jh$SSEI+lmQkQJRJ8}n4lucn2zP);SLAc*OAT;A znOyK)?>8Lknlr8Q*-jc^d@h}lu897|j)Vjv6J$dKasn&7pKOLBnIFr0P)iMhG~ z2sF&KI(mYGTztx%>9+9-tghST?dzFG7ZbS#!Hr1>k&~`m6J;VZ^PTb$p6s zd=vQjz@AlQmR^`stQvh=vW1apg3LpcJ+QdSqvV-Z06GDN8OB6@dMf9WD~4)BKFIn% z10OYlhg03foi#EA(rYV!M$C$lcXj;7K93%J{OaVzi03n)`Xxm%@oX!2m)yMSe0BmR zeRLFG`?dk&r@67H-c)=kGsm|*x*NI%zqU&!i~^Smebt38y-+}lJM!+%Al34&)B9tq z;MFV7+usWNAZDG=OKugx>9;{W@1HH=0;d-DcIOFDc^FgI-bkFw6+>PN1g+w)p{{Vd zYkXvHxyq-RqReF0drlr_=D5j`#;OZ$Ow{ByrUo9%*VN>DJ6KsupK*~}Ci%p#T8!iE z7u4+m#C?L}XXs4v4nBOUs_6le zA4VA`q$SXRRJ!xhUnR7q4Zg*f<^#gj{AVS_qhJ?ho`->h5;cCmudwo z98_7q@o>K_p4}&R!kHofKb{-$eZv_6+?3Ac7YP1Xs7naVeF}YiYZyK0^gN8nS@qmE z(a;FoHY#>!YA?bJSwTVZwIjyx*P3p8CFUUaf81+ASNy`MYMOD#2a2-oQmS+a-etfc zD({Ub@I0b$=8x4NEK<_me(#+Cb0Qj-162GWeol7j`Mz8r>%z;M5m(@4M1J?9MS`cw zCVuYbSyiBz+rgyPo(?mLw}q)Pcp5!OyCNly&@`LA^yaNIH?V15o}im!H^|{awL0#bB%TTOM zUk@%knhz>@TEMqkj46wl#hclyrx+b4I5=}A0VT~1kahn0lOF=TFb?JQKemd|`t)P$ z53E6+7aEH~bi^L`Wy#;zm2pg=QTA|Y{)g23)K?u>e?!LQBisI6s{?lRlY4GFtc1vL zgNnFPXl%Km98ZS**gf zZ*ENBtrXi&Y8kqy^JP+!ahDHX6#d1TVAugMW@~kH8?9K8HqQIGH4s}QEmG+xMo?_Q zFiyahhP3L7T*;@0iMbCc$%#4wmgCI)R3R?*Kck?v zwy*IJk(VG>s@Hr}cN&d8F5C?zxF}ye<>Yvd%t5CE?_K4+6eQ~R-)2}2cA}zSb;;qF zJSaZvt@ML$5L|BDOlJ=ogg=|+78?S?c>U?4xpbOxkmjkr_{;x0us%(-XY4G;y++KQ zHy;e*-7bl21FCXVer}^^Pe<(GcMC3Lh}59oHufKf{Rn-l`yV;;>{`6CZoKtOW-nR& zSBV0j1ReQ<@sGr@jZJ)SAv?i6MNRHiRX;3#cosvgKQ+HHox;KgtZ5yK6Bwz&ZaU&y z2&CtU1~is-AheW_iCIJVrDpZlDUM<6HSO(tdY}mS6Rt8g5nN8!o7-;5R@4z3Lh)QO zQ`CRz_?6g+1nILWXz+9Hu2OFu{Li`L|9UPAj2H_2nL;x*`-+u~6mYk2Xq~?{gvOPB zN#mC`QR&d5V+jH+*ve(Z|0aAD*wi0BiSc+1z0BS>HWQYC#cA&}bz41@ZdBhg99)Cq za30<9XN)AmC`VI%d;sN~KbL!OPeR@|^3Y%s6RGlD;4+Euci1W$DcpWOfake*Y%Lv< zki}xV+_du;S_ECt`{_1_-a!*3wc4|g8*}_bl@T%LDg3o(MsEV;b=Qxv>eG-6E6?6h zCr`kUo7;xzsT^slbuXrC-cKDSNdzXzA0`Re9b`tQ|9 z4l|8-#KJ@xOci}((zA#;y21QAh@8q)dYMs&zBb(F96CL6X9XfSz00&G2Y}SlJY=I# zh!OggN7(j{K>hKE%9agp1>Q0$ZlH26-T?O}-qesJy zgAp(Ofs$BnBjuq9NNv&ePuji!?XflIuL{+m_t6kmXVq@ho8)-1%3A?tZ*m=Xp6JIa zHLHMOjo+Z}tzQylJ%^7$O8>>lkKTfs(P znvMX`iaDT2?)E?ZjgCwX-1oafn2Pjc>XYH{BPw!pbLb~^!6gjgyA`;BSQGv=gWp}F61H@v;q(;ir4H_1WXrV-(n@cJ^*^JmPd$gxDr@Ch zp4>t57r#bltD{wra$?6VdeOlDTGw<8EUGb<9`JFS;&W}IU}u2Q+hc>dtt! z5L0s*k#?w zE>JNdLKQq73M^wyd?k;b;P55i4>fNCk#pw_8M@OCq3%Ue40n<}>TTzLclrPgo(VIR zG&q)nn!V-h3Lyco;J*6r^5H}*-q|fCyk8T}WrV!69?Asa&a`7DuL6KR{?6Eu!rPEl zPo{q`X^t`PyQ+tG_`$`?on65`aTxjL>%h8}3s$&s-KG}H#z%I$66D)sL8IJaRx;rx ze7F4bmbJnKwk0qOEzi3Ve74jT$GC7X_Ur$-m@$!Ld1-msT3yW5%}9)70j-TAk@19;O1H@vp-BJX#tYY9?k z;RuzMyJz`tP**WL%_;dCPJdk%dBk=Xyqc);R|_5@Nm+v$LjFlTIX$;^R>2$I&R_NC zPL777-Yc!w`A2a73!U!O_x1m^uE}rx%tYEMK;3V7x#4x&|3}z=hjaag|Npp65t7wV zl2KGBsVL{Oq=b~!5=tc@Nfc5tvW3Vd*_AD_&!TIN z@ZH8=_9UNLB|Oy^gDMV@Aj0^e(cJGfTq&a$3*q7*a~bJ9d_c?}O{{%UH0}9>#wY7F z3i>uN+M>RU>C_C;6$rZd?dylmNL62k;zg(qEi?K`xdCiZmS4U~m0*!%{61CHQV@Ae zPZQxzMLOEH?D{aQ0IW2^zHy2F1G!#_h96&RfnDDGZ0dL;$WZKzSRnWtccm^ZZ<`u~ zGyd(uhqJQK^;w^%x$zA2mTy*9KkS6T;X6w@r>RKGGLdGzo~)#$)3>&!gDO$T`S$A? zAUF$y1&`Q|dJsN8g*$9ZnrM3HLkC0rG`Rh=FwJ<~jUf+&ZC=)-CL~+js?$8(uqvLNLHk>g)}93;ijm=2629Mr#qJFo3oP~l=&{vXzvPa zed%rLtXoA6T7xWOwq4}b%6S>t@is{DG8Cp)tj7J)_pS<(+EILKYgZ%H92%P0Z|zp- zhSE^37nl5NkfN@Z_Ft$0kX|i>xJkanT#+kGBh{P#TaVoSs#*CxvIzFKjHj!=ZTQdi zO%Z#uWG(bMeEUH&T=bzGTa!hex1P!a29T`T&>4p4JJ&&=xDo918RsT6DM-d;DQ05p z`EdE2dxU)*70IO7gj3z47kG;qgl3K~k;;AUPT1btPttumCsq`g0Y68JPY&qL168qv znBLbZ@G@>_JZbY2Baise>unLfUVh9{<0ydLtw*vy940u#4p9bD&ixp=yklKFXBp0Q z%9(a{jY8^e<16+?%}6o8sO=P)jTwfAswUayLC=bLm$PLX?1`)?SQAQy1s?73^1apg z_X9`z?X-C~e8Dc(>{KJhSK6x^Yv!S4ZBMnC4K3-isO*}m_+LEdE?OV@`hrsJ1m-3xDW)jI`>dLWoT@dsWyK{?sCrM*mL{M#mf)tJ~WYn4_AojYX zE_tpAS$TGRVdd|G>PM85B`hPDDM!BGvCK#s8Du}}eBcvMooM0Lr(+|rQi=}$`|1Yl z3GuZjRp%hrJ*0Y}Gz$(>W$;qJY6bHr>;uCN&B(OErhGZ54cCh(gvi&baodpr^G3q^ z_wBS@;)SdZ$fl_8@n>1Z(w9ctvxR=cKrBn%9=1hbc65>`zdr+K%>|WLZxq0Aui(20 zf)8PWi7J+ak32rr%Ku&~(RXUyT{xVdN$`#a2ilJe0o#tW+Ydda;qqA5oG}u3DiTc+Xg#f`OnHPY0d#qX1jQ))N>JI zP4ctw=PEKtc8|D>Y=DTsJ)VKWfB3dH>biw$I8<6TX0+am!gw-61qo^~kP zX=M#+tR8}9M4mlDQugHTTjxNJ&F;zkx(wm{cGnyE^aV3MQ%|Y8l5x3~J9_;wqFGFm z&$XWpaL8NpU3uRpbojUT@cE?2Sa7U&bH=?072X6d38ePRWZddGhmCbu@QlH@>2Wt& zEQcD+9QDC?#d9HlwJw5+UFE)uB9S;;5Kv?OW(ddFSBs|Gi{ZHAvorkb7H~U7V3Tel z25I(Qa*(XeKn{DJ6oK7-cwXlqrNpyh)Gn5GyQ=4cJ=#9GAxD0qzT&A6t5i1#&gZUK zP)~#Gz#eKv-DkM^h*mjC#~E8Gdt%k*#6dE%vqyie3wa_}URV>pZ0!N1yLx%mcwVXb zo|>&LDp4y0Mja+N47zEVW6Q~)F}}H}<9ZR3eit^fh+c$3kGJ<1Mk1j0mnUY@`QjxJ z-nktW?r?Lsv?@pI8{uo94vWb0g)p-(d-9h6qj{2c0OWv>Its|o*$YVwTl1EXE-W#OemqX zAE`1KF81*>Kzw;ir;j%mX=Sf6cSI1;r?6Hn5>qIFh_yv-`;>MfPu<|tv=oSUN;Yoa zHSGsy;T4j6#XESAxsm%tW&y%4snG>w&B8Wz-Cs1jqjA>VBe+_88)>y8dE`5BAG_yI zj-L7QAf)wvTsic<5B~UNO0dNcT%T)vR42<8!H8%Z*qmGi`OG|-W%h9RrRQ)?{}Bbr znZig%l{oiY4^v3mkB3Pr)%?{FNkl$ruhFAj)DwUnBAv&CXh{8G!gakboPeUaM!w#< z5yT$E3jE$N28AL#+4;nM)|w_u*o9RuOf|4v_5alf-Wjw(ZyuJQFV_oWn%&hHyL~yq zNS2wjC+*nRj42z8wmKGhT8WDkWsvi;cpopx?E5<-6aO5D;|r0~I+FxC8H}9Y<5) zeI&QB@vZaAMW|~m&^+i@K%6u8ZDZ}}MbrEh$0r>1$gFXJdZ=a^C7PsS-Nk}1@!RYB z{8R%dcJr%V|41>!Elw3ttykj4R0#UAv6DFA+$ROYqogY{Iw9c#-7p;ctj3-u9xxW#lXD9R5U?tx^Iq zoihW*oMlK_yITD9Q5E#`q`%^ArXZ{T4GrdgHGp2dSg&4J3(S}D4>aD&fOA8D> zFLCgg#AJ6`D+k^!NQ+!O9*6pr-oG!Dr2cQ+@u)?(LSuvsyLb{C=Y@#;$$z{qRsO9M z3?0Q5N!^#TwA;yZ$xfv)jaz88FpzpoVF~=U4c58@4x`XYjis6=;dgkN|2at`9^O29 z$o%d)C0XgQ)Y;zLCVU15$0g0E$n^#Kg3a0c$pP<|FDls$fl%$!MvVH;^{01d=VwQ5D|qp92!q`V+UmAKJh*hT8rF?FH6}eMo?^#hw+j^ z8{VF3`{C9Ri_Km31?szZllg{idvwnZqok|U>ErJ^P@>H7`q+gTbZq&m_@E*hxNWGm z-E$+n2`lpwbv{9GZo)g(bL0gmMKEjfoL@yN-U?|ypDGmLcw%&sWeqQ0R44bzEn*|h z6sP+DF~4w2ZsOnRU1a6mvx{E!WXPd59Oh19BU{IWb3Qr5KoZ;UwUlf+h)jdRO=qHJ zk^FFf%J!5Eyy)E`bBb*Mh1!jiRbLgsfR=FropBRxe#kDRFd}m1-ybQ}-fhJC``!a) z1TS(%^DvCBXJB7e`vpU{bsQ9o7wexJ!3)E9>mg?&NO4Kq3lV++?N=sdPkrW**MqHJ zL3shDn0=3XUZNuz8-D-WA>W52+6~(qgCofMeqr(t?IhNlO}}n({R^-n#&_F#8lPUD z-s^vr;D6}uzVuvw0?KA0y7PBUWAepTIit^w@QFuo_LBW7oWQ6?N1~49j`}=WR~Upt zSI2K}IZVUn{WO`n#P=t4iTE+d_e0pU?0xMpI?$6D{5CfO(zXt#NzUGx=^B+^6 z*N~YdASm!$7nlXgMW@vWK4wvT#7^x&nZ|~=AAx5yQK>(wUgnDQ(fVYI%V9nI zmP?WNA^yXCxBR;puM>a!lb#f$?KZr4Bs&cIc|z8|jS(C~*%)KFj#3nqWg|i+kto*t zkx9eyGb(yr+*_FB2Q|mKd0wVAVe?i(sJuNZsze^KC>bjPc}^Y9_`CI>S<;gDX44n> z?WBczqLfi+Zq~D4D+kWRQ|W>8gQcKmOW?s=1&~2F6_!iuF@rYm4+!|N39Vw#h!r{zym%VnLACc8vQmD&|@Wr$a z&L|F4;=VIUWU_laS}W=8#J?{=^~duww_ZI41s2zXJuF@*E>#$J@NYO=KlJMzIN*{i{EgP%Y{5@VJ<$!08Y>JX& z03OYMd6sVZ8`^1!-swf6B>w#@&RH%E&nTKxHPilriTtC(KLV1lqEhfe!nL>PU?ySR zK=4Xigp{*?az4Sz4>79Gf*DBDS$T$dY7F`u&5sV!%|fZ4&X#u4YmE8G^>NY+LHO5N z;V;HPAX(IzD>BJJ zm#u82ksDBQZc1bIIMLr)&%8@T_#pmt%GOXHu7k9W=~7R>sQ=ur>2}At>Z*;S`ouB0 ztb{!5G!rR5&Cg6e-6G4&d!UNoQN(%ao-0822j8r0%KD+6>3zkI>~IJ}TLYFLTg-Mf zzf+l4f_EfuhgC?o;)SyVCyHgiL2bOcbg=LuXjN@4zEzmPR9}gEXU3=6cBZ7XEyyu#xbgp7FUz-+?O^ggC$H5`3|Mq6iJ91^jmW$0`GB zI^@4-wy4P3Lyq~$`>p6!KZ@VIOWVy*gzhZOAEzG?e!jL#GqxRs5BjE;YToPuIysGR z1D{y9XcE7CA=MJu#MW$vPJhO(RMYZd!Xvcl%1Eoo?1A~oQl_E>#GJ`=#Q|T1S$w%a zFIs*z71a%s_Xdbkl7GD)vAmMJo$N4ka{WeX2+%KNXTdp{1=o}flcVr#gd_YIGw2JfV z@ge*(TBqHg`1Zny1KghSK{cq7XFt4mISbiGckXS77=}TuyN+%T2B0nUp!m$KE$}^c zM_nY3;QJkaEnQ1V@Z)zKsQhF(g}a>=+?;MQk|qD}eQTQUgijXHyb6zpFt;_Wqi$y{ zH0tcC(^$>J{i221Ta4ovWZ`x;L$VEzHD##?V;n~RlhYJAQj6J%Eqg4sh&id2dHcsj zNx;hP_~>Iz9rW8(6f54@1bH7}lbsm^5589zgATKjCPjI#tu)h;^}dm1?K|e7$m)5c zB(jmh=bj(X`7(j~5A|LTd)*K3`B(LQiMhj`4d-KLyLC~je zT&?+ma8&kuw61<12KH8Y#5^RpRR6zMy`M&=>y-cb{QrH+U-wz0 ze0vdmkc*I`A?EVNIF$BqoTef(U+JlQyMuzPLNB#riNorw)fJ z+H=?Qlt(f3QF$gj>A=;H^K?}bYiQRHB`TCJ(~y#>CV>fwG5H?ZZioEaH>) z+TM#C2GkPan_X~W__CAPQ+kqVUd`TKrg3EK|0YLS(TB1f6qDcNoAL5pEB-_K8u5FS zLtDUsdEDs2)yyA_@PnRviF&IBQtJ19dAc}_Mk_DBUD9SC@Bg}T?9H8Nf(LiWf&FnD zaUb`AmEw6iq~ExIRDy<<{B-DiQZ?ZRijylgKBe#*if;-RbP#^t!$;Zjrqf5T^lW+B zv+QAT+n|iv=F|(!(LFw8Z@QrUWW=_V;ZUkK{5tpye~lQ2q| zTr2RXA7zRks$Tg=21&||(l7Vx!Nq7bx~y{n8pAVwz|Y^n`kRjAquYq-q9*6gr`4g@ zlWQ{GN4(&x^1|}%)CJUZ)4L$9KZ~4yHxHN)^I@xX??wk}Izg=cgoO2Hf3(v4E%a=z z58vI|GQE1H5}74he4Xp3;Ez~w{5Pr*bXMY>_KHf!8+_Lvsy|r9de(bRrs)(Uv8h&p zIj2(0ym6%NzTE-}&z);;-o6RkbPTSp+qp?R^K2x|eKe%3F53<2r!%0CV&XH*I}f}( z`Twdqmyo0%y*9aRJ88ej(^VevPT=PFT)d?=g?FFHv7Qp%1c~^kjT3ZRP`l+(c-nOV z4{^ru%jgauXUXndZ{=ASk=$Ad>n=lk5tS-0PhRq~r}Fn^%Ie`?#aH_k@z4LcuJ=EG z5WvLt02b}ruReGh3RBJAs?^y9aI)o4WdG5P{GF>KuU?Ej0ve^$KSDUPVW;iQsFh?( z@bcVuD8SGQ=Pe%3R&6~*v9#CeMXM(Xk066)o{&F2rTJ5sLgdb3Mx+Xy<_po~m#e4s zU@+F?bbIXCaKh$i0W#6n&mofD=9)A`E$-xDlXNi=#3y#HdlfAjKq)#}YACr1DC&ft zd1@1$Tjqwir|pu!#9$}ka4P`I4DQJLoD9poQe$IIhJi!ur+)ipQiT!ct=4`f66wnI&^r?YtD1Z|eXr z(#Ut+P8vXQX!@>mCv{P;F8p0EmjJ=3YkX&&(Th26?o%1Fg+oc;NOn>wk?(488ql{_ zgT|>#@lgxOpsvVvK(HtT>=;sQH!W|#l5(Wq&s;~;99?<;X~+!%1=hMu;xmwDt4q*I zz!$~tbv&mKE5xDB&D>?$NGN`68gpAl6?}|nJVz8i!;OToh#ZeMICjvg+w5NwBueqW z<+OIh?Iu~$W&u9v^?9@1`PK*2u$@`rZH_^{(!0O7TNhv!g{T6w$>>9E%$3D|C@oBcl>4#&WPe_OB| zT{K=6H?z;!+XrK$0l7t%53uR7r6Em&8(-z+>=$<6PUUQ)5_KKDpUTq-r23=ro}z)|=iM0dXt##jT)}_VBa6ArufqDq zk&o@l@e1WS;B#{}_o8MZEgaLEOyh1v-p?Vv0U58szveEZzt<=V%em#*SrK#Hw3iu2}gl7Z)CiAPAnYNe!N}wc`DZY=5$z$ zng_Z66wX=01n*iHJ|c<1H1VgbahzpSbqt%dCS%K2A&mWlc0 zbNdE$R=_}1FeRR?0?!w1ziYjF4!sVZGd*^YiPU?*YCdGB0EN^2ls_;OLiY~^ju!_h zNo-EKG()WK!O$dd+pOX`SRH;L+nt{TE9W_^GD+<)JY~Dvhhr2hV|?}W`hUVr$G8j5 zQ)4j7<|}!GkBan#9Pc`?QjPUbIaWQlSV;8p6lxD#4w4MiU%tvvu7!Bk?nTz}8MK|I z)H&8$hfN=J?cxq*KqAFZC1q{}WZrj_<;?5=n$dxO=XMbJm!y8qRe6GIuo^^+w)LX_ z@-7oHS1rhB*d+*EnuQQHvv{4R0o<6a`KMk+Nm>#ARma!2lf3PXhB)KfZ6vyul@r0P zOL#-&z{fYryU2gN?&O)>odZGtyg&y3ZX8@7DLG~l&mW6h#g949 z<0G;8k96HYMiOjmr|!4jX?5_12dkEc6PYKiQRuKZ2;s-aB(g5qXa0E5Up0 z`>HYSO>SbKb}t+WPz$4Rn}gWkXJnI~UC4DE#NKCALT_WWAYX$!vd@mpa=xqqKVRve zEKrBPBF@a$^L0SEM1#o5Z?(|iQX`swX$oohw4@8)*MPUy)$0j1#C=fNqg7C#FN|s*_Jllqj2@f@XMh?LH z#FHt_-+FK>D9+wHrv`bR((Klf`imoP==6((>d;mHa_yUyExh;fuBA$22hMr2B8GSMm$Oik+rFcMc4gy;=XQW7*TqMEAH_K=;lqI zNha=>R>b2O&o)e;`8x|Istb)E9Bbk0C}#aGvotOn8H)_A-&G4ExX zu*B53(uQpBIc)+Rrcw7{%$`>Q6<|UerdqNwh{tAYZLX{LqXk{zgVxXM$akdhhkJ7? zPW2}f52yiLk75>=8lxb~T%BA$)Y^c@6Am8!^0^D5RvDjLF>E2Deoi6P&wuF6;6RGo z{ukf3xD1z9hJ&1M`hg!Nh#u!BxRx{akj)xA6{L%U@ulaNyUY{T|GBR7|1lI@YWjo& zF862xE5BgHI`fWOrbQURp~yKnyq@nRzs+RwfgW}}PYn-qG{7|sTW#TY0dg~=dhLV; zIPx#@7v53_JEmVpyIBDpH|=_hb)4`b$FZuStXx!yd1O+0G6(&P&!*Gb`oWaVgB<>^ zuh4;fR)4P23UA997<6W4;mDE3zFFU$@bibjn?jcy**-qp0Rdc zsLNHLzfnc>al13pQ;H6VtPSD((*0cXZld4)E@w2>_!W`IFH^b68-=EmOj=fQzi?)^ zbpAN;-2a=$>h{Bt;2B9rUC}Lcz)1-(H$R+?MSEwT-y!nD%sigK8}S4u`@{jSg)LK5 z4&&MJiOU|(zB$68f0vk>346Tjn_@f8v}PPCmr2DvZq<>G2g~t7>{_o}lLme|^&$Px z8$Q09_aX{cD=B>1C37{zJ97R1gS<&&7Iqoh<^L&OARPDjHV!xwyZa}j-U>w69&-d4pJuqZPov!0G`I*KaHuR6nhvz0Wh z@L%{bf43GA9Jy^PU3GgtPr%na-9R38Vm~*(aUj$z2F_I|QRe3UfM4C$_LL|7#xAWh zu@OoNHYa~G_W?5W zcN?age1s{+OR}yHB5`}341I+v!5K~d$q_}0#G_nvcRJlm|8reymkX{Q8EirqrDJ7B zZ}#A-;A}a(BJ%d1no4MRv*1$6#(DF?GUVf$(N%64!R)zBl6ZzIsE;0d^?^N+m|tBb zn{p>ZHouw6FhvJeHt=^p9GyY2(}_WP`c3eP^6UvV%Pnko31uVK?5Fe6XQTmVn;$W+Qc)A8lK%;EbL}r!-y6j%wB^j# zh+N_Oxb8kdvK1b9pL}{EIRuVoz0C7bw1rL6h<_haa-lg~hc`)$;LNaW(_)(2L{sV) ze|4y1;B(l=+g)T@@~8Ay4)2n8lhqgE_Qhr75I#!QyXBi+P)*=;XE`Xz6aVH@&K_Ds z(G!L~F%oGQQ&DFhJTrxKV`q{%uhEh%ZWio#z0!z;_Uwn!k2YdH*HMyZurhOZ<}Bt+t}*ozB$QHmT4Iry^}qJ(^Svw;;IMXoK^4pOC9-8 zDf(37eq95GNNlISM${?OU;MT*+-fl9Qzu13^bZ`9yw+?t^%Zq4xgNN>qY(GL%>Bsu zG8y9whyECu{>A&kcL$vOIZ1P0q>e}mt%DOS)te5Y|Gy{XvqL}8f01gGXZrSp;LPSz z8K_bAqT6@h8wqxmP~YsZ%unRQ;Lym2^e~m$o zC)dnx7zN`?t4f_6V1`g=b#-@ge`vqR!t-z`Cu=Ha$ObG1M(j~~{$XVKp1>f5m8f4IhP zMe?^Sh5D8XgCo(c@TcjGwob=aoGA$8rDG<1+171N5;a7>;=?K7Cu@ z1KX+ZcOLN$Luu6S5rftqkmvfOA@Yyll=TH&(djLM3!G|x0ah)9CyKmlhKD#GFkO5i z6cP^~FX{NtR!+jl=UF?44vd2T!#iJv<_J%4B?o1F;2el4*sATWokcIX=9)sAaR}{q z{B-);2x4MTx|d}mv47e$oDg2cjgA6=@WcYNEmDzHlbysHTXuOHxr4YtqGG> zE`8T0d=6wQ$AoP}4(xmGtWja+1Wq#ugzP=t2O^UxKW|PA;CouyYU%1`JpTN;+_O`E zf#Jd78?rMjB+}B;L*@-LX!rFR>))bDJeK|8-GiM&sMp&XJ|*1`EHnK9ZKsEk$y4@v zkZCp)bgDjaF6)30NA7WrgQKX;s1~#BbRnF0A{_EXz6pO!YnilhcHpbI14jyyCP1bs zooUsn9V@hsojNczj&zKhn`s*5a54SeD(lcZMx4KCZq~s_YKwG<`))Of+11axhN=HT z^x~fJbyHT7^Se|ks@p3z^rkK}lKKRH+{inA$Y;X??V)c9k2doCv(f`3=hZ;S;7B;V&V6|E&AEp?U{eZ5dl80yl#j7}o@HjZ=7QVloDai20h`S88~ z6o0F^*^%dsm+zg_G^c+7p|PSD6sX!TOjhQ>uN?yDYF;29rc?#_iJY%)Y5#%q@4_pC zPI@Dw8U4jySt{s#K~a`j>?;n`w775f=0i>X^tXoG98}L(@&0+y1f6FxjV@k!3v2>D z2Ro-DAW3LWMMB658pE!7@x@mm?}JynvMTIgy=GHF_)#3N2^}hst#!nKQ!iWgUX91^ z<@YINY4qS+zi~3H%L8=WmSiL^auExXW-F3hhj3X@O1s@H0;2Xu)SU@w!h^FO@ir=%O-u`D4`5pI+TRgf= z=0@h`jG4MXZjl-weF7zdASLUWUTY_RVXrWP?km zqnYNhujrhA$1H6%0Q%oE3MdnNebjt{z z@8s+s^Q~MWFS=8kpZ_A^?^vI$s9+=U^mlC6IJpQe@5z}DVpc)mGXEYehd8+0Mz3Hn zUIIp&E%)@d&46vmco@rDXGraOte)9yi=txpC^-2WL5TLPzuV3ZX!(Bp6+Ndcgx~V4 z7uDB*%QuC*>V@6GTFXgEG&u!$r%o4?tq}bbe%*(ss?#94k2S~AE$=_~YvC9j<|-nG zB47GA=M%XPPD_6pc*s5jVfGs-<8c*`*t^4Z@MI)Re-KlD61V}U8oTMgPX@#IzoQ$; zos(cw&=n_!d{|LgT~nu6+tv!#!A5!kOwlpho6!-dXMWvx^+B<6zg)6q8?fzvA9N-xP9UOi+e3rZ(k zisjbz^v&y#x`*SYmT*5vdF(uUc)|>qC?2JA9qfbep_g|p#z%oeExU=pQA+arYrnm| z+#G=~MJ1+thxC(VI=k>B;-S!e$7LxXvc@N0L$N{GNSfWjjeP zu85pSxQ_1Pzwo-blFF_hWW3tDQX5Ll*Obpp zuk;bT<3$@yZIwsEXiGo!F~RE~`BLMjyJzj2bGVj+)*9e@zbPA)T#;GAl&Z&L*yt4r${vI!C(dk1`uB-YdRr|2j<57dj z_I_x!p`!X}mkxKoH{Sl?-h+>&Ir`oNQOSsER%?~xaAnuS; z{kO%xcvMJsy@a(2{USUSw!d1!y~2*UOe(Qi)Ai74B`^96<0v><&05$x)I6 zaz89Ad*4UNe`Y@Ct$gt(6|2#xua~~b{ zXe8>|?-AOd&5#RJwkePYX{n_*~k$+jGfAz8q+$sNY*@kQ*>v5!b`-H9IoX;VVuSEYQKss8BjrT9O zUda4;guV-nN%TdNw7>AKO@^P4)-1%U#7fI5c4LbF>-UE>X-V>`CfqM-2rmm&%ton9 zA6#5Eb$q;o=zFy*ecGP533fkc9@<=31;;qkl{Vt%OWufi)=iawy$e(yk53kZ^v2EM z8jV5NaD3u>Xg3G>S84MY&Gl4Zb!uzaQR)pd9^7-15`J4!dTpTK3E|<+`CEGCk0v)M!Qdb3oBVC0#64bJ5>ic&U?}lvnaGRBIL)0j ze7%BWp=N3fKUP8T_;JnQka@T-tg^{2H;MnKr=A-HQIRB)Gu-l+MnQk-o`YWS2plc+ zZm=Zfo4mf%GW&?XAG#!db&bc4{pX*vTeC6uy z#RtIVS@ZjHku%(Mb1V$o{{u`c4t~uxy^Xf7h+CBB%DVz zrOFd{LwudaYfgZKdD@QDsxKh*JHS-$Rv`$z2yAGdOvIDb1tGuwJwvgxIjisM-$RV? z{?32DZGqua(~$?Qufck($uPt{0hZSJ&vSQLfP3+YxZfEr@M-^{fY_QBs8n1pC^#F2 zQD=jCf^yB!L?p00@a|fE_niX~xix%1ap5;j63=to*a)7|MoW1A^6r^Osyf&|`*BD* zOcAc86$)>EmIBT@B7M>_lVI(Rt%0k^6_Bu&vl^kiMF9LwG7{7yK|bYYfy3ostf1pw z-aY*s``O56+o=h!7mHl>72aeBzOw9SJ$V)QOme($$Y{ZWrr&RR)u$+L+^l?lmY7pm z{CaNc#aCGPo_tWeU7V4(JR{*JhUVm$qO@jQN<(4sG-{Aa)935|= z8*p+S^=SN;2{LJvV(x?^B4m%gey~9ucs-+B36x8RFva5vK5IpA_TTfUt<$>jy0JE> zz$^^r&fcGsOe_c5wk^6*R~7g`8^u=U@(}Zwm|q?1Oo1bh+ui4H`~>n3R_R+cIWq6@ z{E^z=O_|!<8pDPbP8j;g6?g591#Ii{?>a0$IAa*?_F7zbV&YlU}r<`4E{Mgqox`digwqmem|*h1&^9Y zoA*a5k()Jir@dW1wkl087L*eG(EhMsv4&(6=Hl5%?`VZypWq<-8Zsybl@)wmh(*u3 z!6oA(S)jV{T;UbPHd07N)%QmPH+N%?apT;tCA_G(lWXKj6e&OL}1t_YEjkPw&o0W}UYbAz4A#>*B$k`;v^OdV^=4UL$;(5srGao@*dmQi zY}7v%(G0t8XQ}PWT!w$dvn(#Q7Y2W)3v)`@LaX^&`^PtnQ0BS?ndgZdPG_}*G_l_u z$vbsiZk?7CV=s`rB-D!=FLDk0gBVD=_K`)t%I_sP3a~cIXHG%bhtMoHy+tSp*cKN` zT?tQEShSlNi$R8K&LyyY5GbsVIqlTy1l1lVv2?>6)HlEF(q{b|w)S1!6|<2G@w>*R zb$tBMyN~_g$LEvaA<=(yw0|Gzi-&>yzzJs3$AfLhPrY5lS?cQ|%n3B4)xj;EQod!> z4p$IZ+Q~|Gse7<6u0{0i<-MQWPHw_BO*4OSvJKr=_hqSRyA-DbBz7ZefuOM`HWFq z5)Q;L(9TP@;gvm<#R5v}DDFpH_vLj1RH#2&DSSfYUCF$uWrnS&Z5`+J=X)CXo!pjr z)T9sfC0X3mFTBRufRql&B;x+&Y_&%%8y&eypqI<3R)u_Sb z(>G849!bN4g=yJLT$OlS*z}zEWF4v{u}0ku&coUtmy_>07U10t3Cow;i2XUv@JGva zg71ZVVqBkmU?!&PrpiAV{1|3=pR%wQwKFuEMJ4-@^Iob2Q(QM#zY+{I>8pnIV_xQQ zn{}}7;on~`Iw{G!`$GGflG`C_NYtr-sSOokk{bRt&q4fbND$Y06moY(o?D>J#v8sn zZWt&L+?q=h(@&Js;atYo*7eYN5ENj$#XmBMTAN|}vsDOdYFz?#+4ur7-F|mr>O~no zPJS3$Xx;@9C$ErJ^4p=(fj5LIq#t*z%6N9(>4R3Qquw81q#(6VX5qn%VdTqR5_F+n zf|wSSD@!3ubv*5qY`@Um-7(cngJB#C`vNIgNu_vy@%Jv5ecKbTL`%L`wqTKRzX81-e(qApn}b=pptLc9*Ib$Ux+b`anaq$}_?AjO z4Q}0F54MZ!gMhWnhS;jHkq!I zL+eWfDkP)?Xtt+d;e27N)ZZFBM#{0Z`EHZXKqg|3NQ_Bkn3DNJ>B3U)@HhXuM9j&sfHVyGA)ZN@UyW&<9~fx~9~r->Rh(xb z324smKM^_%l6=EMrd`Z`I(WJVP0xAUpEVpr8}S6- zZH&SAaO&NY@5BinF0I`D#tby;RW4)iCFXi=IeoERE+BXxXZ=Pk?Lc;Y&mLQqRJ`%! zJ(+rkD-Jt|`V><}V2!M{&g!K`BJi4S@ zu34r&7qiMrpjCyH5W5{ve*9W>hk?m_R?D$_J~`0g$S=)iv~{6EBs&{1dEc zhGPYf1O_`=ar^DkhH3iGC=)OAL?>$}c1!RZNgt;MG4>M&iHl}@GF!HhCm)CsGCwFc z|6YcJ&(dep^(s*Aa4SDkdn#D=9U?9lcOYN+CdC~yb_~kDqnnEt2%opCC}r41yvx`& z?z@Cw((bVo@{3-(2nM{bGw^<_GkCXc0Ug7h&b(Ohgmgh@D~WK9DSP z;Q zXq}^N`UmH)N1BPeV*>k>&XQwHTcABHK4r(&4ST1^hf1nC!9M_4^lsk)kDQOkT9#5V ziqE+!sv`h?7ua5a^<6N+tN;Ay6cft175T<0WI&@!{D~2TMELpg%kSgbn=;*W|7ZvH zY)84ElZ*R|r9n5Mv|nS=3n_gvly_c9!J$>3z86FBM2^3Tb%mJM|G(?_|GwX_qxXf% z9TGGm%t^o8?ON%S5CNQ@3 z5JWU>qOy>{Au%R zCpjqrQut#Np(VFfAwQ3TeBbo+*L9~bG^-YznYJp2`j7jSPkft$r{$Tpw&4?)Z~uU5 z&*3oO>M6Oor)U$CzQ@_731;AXFI9GJT}raxW;ea9&mMAJA1*rawc*Pfv*u0u9mv8N zK;j7aP0T0rJiWTsfuhmxHLr3m;G<7o1{Vo#;FL=W{1eRwm8zd+O%xPB`T83^sH$eQLoC?@*lTME5Y31_>1vw-9*3D@Xbl7UU+GDX2b1m5B{cm z$KmZ>0CLk|cZ5%e!}EYHHLB5k{8E~5Cc*UopA-8nRFGjUTZH2!S_M2g|IKH0W@Zt* zGqH-zn{+!XpE8l3YVP{gwl#~}kGq~|wqAidKQ!+-6aHyo@4PGdnq?^UDjr8@l3?&< zaI>CpGa9JMYiWM01j^(~LF&_l$4aq3w6K|moUzPyLa@ajn7-WzXLchKT(=$DRP!fL z&`djMIi?0*Q3~HFFY3dAYYPLt+vA9O!>P&ado3KV=YrUCl;rQCobR*qyrJ8${tEr= zkEpzw$?)CfA6~FyG8g^DL-so`=vAgceEmH?-Z8~u2=bS=2?!MJgY0b z)p36aQdSHtMVmMAAog>eKfHpqkpjH8=r-_(fQoo;^@e^(`y#03+Fv zu1bqil<*1eH#Es3a$XJrCOvtVC`en3G25^36P!B{kDMD^%WzpV%}_+66`Q9z9_ zX(U|E(FmX=J-2^v%1O-8lyMPxtf^J}^UK)yDe?c<{UlP?$cvgpfAC?88XGN{>ZDZi z_=QCfiqRIit+9&~U~_$x;?^2gw)5>4AnFiX~^yq zzn1xEC`oCN+`k7E7LX!HlITQeoIP(T>lzeF6i7dolXBnea&zPfCkmcpK#f4C6Iwh7=bq^`NJ&nI7ca*5t zhbM-Qeuf#b4|A%S%*b8x%WW|BA|7gWzMM*1j;(nH44RLN;1xw?MJRnXT3ik?`_3wX zAGcIAu16CbyWMxgrCygKx6a2C{^N?UGqGsq?4l0-KE1Q8;7>LlxyJdZJIM~F-JTgu zs=P+i)$XC;>>9KS=6&maEfOCsDmO5CsQ_o*w#Dv+hY)XYK!4Kk1-4GHMsv-(g5M4S zem{}V$SNJBXzLjZz6)Yy`$*+D8rNp5bLb;}T)pyr!L1wZcAqgnUqC!x{*@I<918{v zbXmTZX_*R!yh%&1p$@2wi_}S9Jw)dPH zvRjm>KDJCjri^o?7QCnM=Nt2o)`1!5Y(8hBd9fZ^uU>ihthNr!+(g#aT@0YtMo-Pa z+yvO4er@Vj4~6-k(loD^Zo~FXezosc^|5^4xHi*kQ@H<;wvX0S4k<#L9Q9At%7ho~ zf6?Wz8!Bau6FOgrga2nu6)t`~6lXbp+y0&%ZVp+cBpTJima$xt?TM!UJU=R(VEi01 zOY|Ru_Z$wsT!YLE$svp~+sS5z*C*U#?eRASgM1c$I+j$^b2j=mqM);|euK9vc7{3G zdj|C3>TX|d{P_pPU)?3;?hQnR7sp>4ANYek9v+9Ij}Ag2W!CXAry=wXmF_oEF9o`f z#%}8K!$|SN^K5a#Fxs$I(lJ;xW2<+Bz1+?q49qWDVg5UW1I}Tzn*K@HZpd~^CSeG- z*q3J4P5sbH`q}F!N_MiOEbV1|({@x%RQQs6e*qJjuXA`Ng<@FOW5ZD=Uo>V^_;Ijx zk?=E~Q(OEnfeMj)=Aj$SSWUwx!RG7q{}J}5(Nw-~+&^xflTai?5ve34O&mLoC^S$Z zp$w&xAybA3m7+|^P?<@Y=keI)%=0|Y^E^iQUH4l5`}^Qt>%Ttx$zHAp*4lfY*KwWa zalGHJH;%v4IQ~1b1rvcukJ1c4dI;)o+8`lqL8){v0j$S~A{JW&69hy%i5q|2n=* z^!vxi7n)@Vp62TYt4#BnR{Z|iz&KLw4~`#tUtcsgfESD2_W+8@LS9kD^tc-XL-xb0(xlK2@Tb z6hv_`MuB1Y!JTuK#W2jDp;=GV1%H#LRu8hu@urXO*}B96SS`GGIl|ToFDw;jtP*@v z4#p#FKdx8eL32YJzH7g`&j`cW9sWHj=gwV)~fy_Z7bXo*h$?;K?be6{QN6{^>{*V zqea8|-~ZMzJ=d67u|qZ-S)?Gf{U46+f4nN+6=jt=jX>g4uGqJSvqAfy)JW9VR`}CL zB_v_=54J=XSfpC(fOTV_B$r|U1G%~6rRMX%nm+tuvQZCavdK!?%XHu#$#Y>Ahvsq2 zsnv6@$^yhXE!$9}4};x-)%=MTf@hLOA;v$?Mp8U3_waLLJ4mbS&5~aphLC)FUyq?Q zxLJBnzno9pYOskB!cFgH3yBf&F`*(|5{BAaU9JA-+2^eZaT%*R6xqJL-b;-^b?zcmS6 z@>xz{DjkAjdqd{5*f7CQm>hMG;6c?|W_VJ12;yF#vOWXV} zV8mIz*8w*yaPN3B?QYj^AkQzdOPJLOs%kiA&FkDzr9gN|qx2@apFI3B!tOO5WNhzN z<_gB3gDN^x6yET~@4$?4$ahfPp?Y3AE)kW|m|l1sa6(=;MO9AgSTIxG&^OZ0g}e0R zT5U!iP#~9*s8otjAv7U(%c=-?TlyMvt~z6m*3Xy+YIotxwbUnz1ZT~}iL;v`q#I_x z5$Us572xAb6=1*32>gR6s+OJx0pHDGLrcL5Nbj+s_$*a5g^*> z0qzEJM{g&U09_Ad(sqK^^6qT=Kl3p?{&B6u{)tG2%KK>q@rDiBR z2u@h%zU7Ohl69ak_%X57+#jsu;x79=i--E|QpfGS-B2+5XOT%N0%ir?{(G?F8!%0d zr3}@Wg4nmAqPdF^FrC?2B?=BPs`@&Uja!xkmx|cwd&s;Wa zzk4@F{B{}YJlHE({`3#H3g!klJ4QiGh_j!8t`{-aEO=YdnunZ5Gn8KbfgsAYSIt|4 z;D1)voPP5(5)SZni&PPOG>b1;=Dq5VvEGmFOMPc3_H93LYi zVAn(BT)W#HKM-GtYR{cdddU-dH#Ua)>HahvRbHAupU{im#}Xu538GI&wfdfYjWv^BPWl$~y6htj*&BubS+8Gm?b$B(d<7R~AJ30nA@Uhn^E6p>X7NO#&c4=d_OR#t z$JrRIG-#Ws)6`F{2kj3OF2xxa;GT==y|t@_AeH-fxwNDSE06UIzo{R=2$Oqnh255+ zd&gFqbxt?DdHO|6l{E|JJVIqCPVOQ(>V%R#f{46S!=@cuE|K_7Eyu^=L}y9ht`J6r>~HtV4tvi1YN7{Fa=c4I+1)TUC8KF-K=ExE&kSj}J1aKQ&5pp#+yV z)3u*jFuHNA?a$d2ylQ(nNv9Bv!&F^!_@NH&Y)q zXA6{+%nh1dt1v(ob)p<~?VlEHV$%>vYW&eUgwVJQ4 z?J`P?J}!?t>4*Iv`W7h#M=eD&GZ>YPgK1y^?7bN`taF!~q8w)c~vu9Tl92C*_ zUo|A-Ppc`i-kTMIqa^=!^z}!Sx+mErXt{{FtsRF&=;v|YD2d~vMJEagy>|*!T}A8j zF|?XKROIW4H!|yJ=TPmg-`Bc+deW=P-MV?qM83v@iMOv6`$2+jA>q{bUOe=j?{r1N zJjO{A?LO8v3`qT$Xd~H;{HIp=9wn3EVrbq`^P_R-C-jd=hyg|fF<^8W+TNx@&L zQvLXjVSBs$VMbDkn9Jr+`#)^1oE#)8FT;bQ@^k&#J4u5%VfTf_$5BP zR(^~wLY&T|rN(j-X!CWx$|9a8yBj^@1h4l2lk$1{h3OuMW4gkaLvF@5iVK_;{!9Pc zkK{0oQ(aXbLE(Rf=5iLb|GB>Tj3Nvz3Py=@QS^j4)$JdL)-x4r8ss7P)} zx0}-c5PgxprPEiu5fQIWB(|{50ltjd=M&Y8M;4h$>!}3p=I~!+uLHmBY{>Ty?neynA>%nJp zI5m~W~o)p#kRlEZ*_%l!Y`oag?cle*XgV+d>lOZ#BO5-ogZR3CV@#HL=D?LeH zMDTBzLSw!)h&RGJIe#%t0>qSJTCrjDY#n(1gg+5*rXk6bqy|JEtUyuB{M(0SlSpqV zur_Ag0v&z4KCgC=k^0ejK99HssCd?wpLQ__OH#tVxfkRCWyzWPf;)Xc%aiiBUUd%4 z2ESS#{Y^oZh#A-|)S3x_CNH+s_YnK5d*_4~1D0^tUe#s}jcN$DRNu?7B0)YM^VGt- zK!AKJqu>5DhX8qM*T>9X=XR1g40dNEZV~$^hm-oE*?Y-*q7HG+JfkBEXdO!E)onnH z`@9XG3+c&h3_LUs#&(m9@0W+Q$h)TlFgs+3yD+#i5V~skSjVsB&5}T|x|c z_R=`rh&Dv>@AbSx!OpNa5|ygU=>$37QuyC61wcAGV@PoS8*pwCZfO&G4rY&vHz$jH zAcy~2oAj3`ICO#c`^`7eAnN;ECqFs^ycH_LALki@W5Ok_lO5h*@vr0Z>GSoF`4*Q` zzF!57-nZJ>US(+eYW3UPiB!pTj25U ziPF)aM7Ye#$$sIL1sv*5bG*Fe0ygBl;<%YCQ2pl5m1AX!)u+GTmtanS3x&J)90+`i zg0t^69ls_*n)T?Psy{BEWGE5#xg!Bw57UkuDtS%lCtup1;z@w*E-qj1Ys$m8Yxj|$ zZN1Q|z8 zDbvLFn1(TM*U!m_?>AmODFnrCGtH`JXU7EDV>5zr<~`^t1Lh`b)Z*9 zx*WA+F6}P!O~ncp(`aqC4|x2ssQ>YA{vdqq*yhvFa#Ry=^Kntr#-qM$Rz;#a$X_(i z9=h{-30VU??rfi5L6r-eBM}6TTm9$Aa&~krCKxX9)vmN+O}>+((6LagHtS~XSp1AK z=G06z%<-6792}PDQWGSmNOAvYB#zQ!Ke8Af{95gthJLj4zcOQSEc8#}RTc zcCPP{m~~&m9kb?7-YYl#=eoAAYtx(|`iXDnyvpw8_G5*iTF(uiWz1BtUuPq}Hv=_i zKSAR8q>>-;;1$IP(g?}bemm(61H1S9E*>L%g+jOS>h@6-)G!U%wp@jlJ%>89^>X03 zP()k$wK&kQ{VXEAtpIxLJhQ@|t^svO??6p1k#l3HzujzM8uM;xmMM?s;CrJDK_*c$ z?p~AIGz;yneyPipjE9i7K=`%XH2w^F1!viXGH_zRA_yXe7( zmH4A=e_sSe7W^}QN~;{+j1|(_Ho9&-==kH)&y%zX_-0O*Z|}D*JQ?Me+Cw=4PG+5) zLk=-$a&|^%cWetPeY83-be33GW7B+pXxrdGchMvN=msb*Uy~OzoQ0TF^R9C}&9MAt zyVAB>OXxWE>B_f_cH9+QaH3X-f;E~(BJOkwu_@3zhxiaU|=G+oVQtecipT9(vyy$#Gl=uuUJMiwa7x^>-eR8E@!Z}fyb4kON##Aex%l} z`+eQRc4YeNQ?Ebq-#oOB$}$GZ?G|9mD`9)uDHQA3FP-uZ4~7bjJM27y6eMpByTv)N zVia{rjve9}glKEwwGEDBOr{Dd+=^|4FvfCw#rNKLB5FqZ-19D&(=&-<@|y#e(Vq+z zQojg4)|S^@zE1Gp6zAEg&;W%o-|MaF6X2^sVvVI{Ie2}EY8SL7)Z-ZOFz$ig>jO9Htn$I#zcfy=TkB_LqEZS97-~Sgd zho%dW)4Xa87^?Ze#O&WBL<;0^2RHqNqd&ugp%?|}XVS{x>eMV&ru_))?xG`q`*3hmER>bxq))ln z;@F8k!AUklg9-mxw*}M~>l~MZAv~7xl(dL1YNd0{S%!vULdg!_4~kcDOi5qz_J}sp zZl}$$n)ZfUJ*8*2$X}4nB+fHaJ{v8pimiQ29YE9}sJxrm77w4-kC#?Y$MlKxb7w27 zFx_OWK_s^dE2)^y#uj8ianNzM?9<_B&p4sZ`a29N6|GDPG6!%=$MN#l021u#V*BEi zRE$?tbgJ6SQ;@q@@~wSZ7(O+4aOsVWKDvc4yclsw#+=Gkw~rlfV7?@b(x1pPVTP$B zlY=(+xX!VlX<)CwML{)Q)rAybHSnu2IIM(Z^54G6VrFs#OeAAH@5Q;bH*bw26S`Y zaJFZ1(ELa*R!@F7ujwd{n!JxI`DK4W8e6@*P)j_FZo52qsmuywUS1SX@A-;5YkrZE z{?(vR!58`SdKY1}eY$k}&)6$BDEl7jTTJ%$(^C!6Cnx(Rp4cC>d6Q z!<>W;wg!|XTGKFQNB_QZxer*;{^d{*pU&ZpEG)MtO~m5y<;9*KDN2c8ttFi+L-@p4?p^3u81KNl z5}rdNJlZIb;QH6^jxXV(Kbx<$kcnk|@0Qjz9pFmxMQ)2_0g|j&)}Mm!G$fDnx5djg z=}1u*)=XYXGy!Baaep0Y0TniZx{JF9;l`=HPfy<_fPvKeSG+`DNTlZJ?!cgA2-+~a z!TX^I#-GpbNTgQ7r8m_rB3z!p+^19f!^HxQ%^f3sq0|5Yi6x;L|15CsG&ixg=*Q-J zFOQ6VDE`lNO`}n5=dzdJPnzvGd7+N*y*|CKt@&gL==u~H$phK&S?pza-Hl2VuGuAc z=H~*O47%2Vjzq6USBNULzX!g4?oGJ=y$R*T!fvIzrhve)j~YH~v+&K{!GdXP23nfN z)Na+z0Ilp=p8u0IP8Pv?z$S%I3lO=XsUT5&4qSSo3jk$fpDA*|vj zkw5=e!e*#819JA)Jz4Zk!&ZYp!o5M{)BDhApy(IX#7H-vh(xg$;36VWNBVYEha4(e+bzA3DfKvB!d z4}!Agm~=+!LB#Sfir%ZMWEZZ3)|1}~R{aa%(DCEX1m1VTkLqSuzSv$uC&|K35nG8z z^Z4}KY`hWtQtCTK`yuJ*Xddm|Qf$+`bhk-w4r;3l_6t&rk^_dSHSP@WCc|f?f8TCX zks~kBGQW4;L3US+UUIrIhr>2X_VIpgxIa?o)CZak{CndoWtU1hcwCV891$+X37aA) z4;sfs*9<$m9m^QGqt7%ozY&D+|4lV_BXeN|0hI6@e#;)D)Q&)7nItR zrKoUbXL;_HDMSbFkP*~jC#NQ8(0Gu`u~;7b4Cs?rwZP zhY5rCZ$!p#A=x%w+IZI(QhUAIxor%g-K+jdbKop!ZHAil{Fy>)bAf$E9?az4pn1M~ z@v~5%InZ)Tv;!iJcKAMCrX)u_mAK`cn}d`Ja-`(yQB*mmrkQYl3zEc}+}=xpK>5xJ4o2SYR4o(A3~a-~^Be!hOTh2uO7lOJvoIXf}A;%6h(Q6TU`8`lpqWA_R2gl|v3Q8QO$^`%N}p+2k=X|@PO?#5mKvt zPJ~Gf;>8(8{j{17|5>+(hAO0FX@v&_1H|Q zre!?zvoUT|6(#^Bv0;&92m&)<<5S5KkAOjUexc9L4~R*VT2?|12z@1==(-^WwT<2f zo>de1W0zG*m0m>V#4GUuGKX zG^l3zYGXE^3Y*N^)^(EaqrTC0nbX=?kiO8s!=PFUDpURL7B{S5Qh_Jqvxx_6Xxo*4 z&8z{BG)33t1PkEt%rPWX_Vq zF^ocf(8HZOuxBF_hF>aO7GCgyr%~U=!iFN@qH+w=%B%*=M^jwoVO_u*EvW)gbIR2!PXs{@I!LsTI7 zRAe1-AFdqqcO1p;cPho>LPb!sn@P}P+!nh}adBOntA<>~os1OE*HA-hraQ$U9$AjG zypiyBfB^c;v{{;uNXPn;i}Y~_M{l3X$)qRra(r3#d!mx}eZaK(e%<7(cnzU-Jy8 zz>G}>)s5Rj@P6b?icP};d?6gqlJPCTNXJtP_cBl?$xrJp{Q#2FdGg)Y$Iv-!X2u|Q z7^o%VYsRTkU@vTI6m#!@97{Gi#d*Ls7nOJ9VE+NA+cD{O3^5zRwYGuG{& z;tFu!h^dogd>9<%Z%L)=Du%Xv;~eLgaHMxE zN`>;j^&^uZ6*}kWh|hJ(O0G?^A62t|on(92i%*)bJnfmD#CRvG$4<6?VD$8lwC%Yg zM6Q)5X)U0EhR+pga7Uswi92Xs~97QTU z!lxV*Gj(c`mE@@;oZT0ih?MaTuUK6(adtYz9@{xP!F!5*Ta7PbN=OU zacMRxJ!Tm){!vK}e$7UT`O89qwjFRG-Cq2sTPARXAMd}hNJGlw)O^>eM)=Q}^E%Ru zD&STeuZPgvHlT>x>RGH_gMz(fR&zUR!A#DD`MhC09-h&fK1}FC-})ar_mJr8#k5Tx zP!An}(K{4!)iGoEwYu<8d}bfYXWsmE@hUC(UwujNTkRfv@TA^luAZ1{};1bDrYC3yLvma7*R3GP^H!PBhL zIrQx)v}4*akD{(LJ1y-;Q0ubG@^aaCfa=3rx-yMm)p{@W_0$|5ZMWO{aIGGmRWdIP z1t9%sr@mT?g;<%{tMby2f}F0>)Bxv0h}^g*cjGkQ z{O5ke=ir2Ie$`hH-(A`__|zHyEFMoyb@uGYrqTvcK5Y@HCKWKh_G(@JoH6{e*=xnR)lTFfwhr8)jfXVmBXPoeM0 zQyD|z{~G#6b(Feg0AJQydgEku(7x^ve_-$%cu9NfJi2X(ZhjmRJNgsggrMk!#VfBt zFF=Zh$|?$2#TfO3rk$XFr?9+s(+^nWAxITWPzNh7R9V!TeBdGXl`OM@H^^dmr14tl8}RbKqFlV`1i{xv zg}huZ!YpUb9bu&))LJeLFZr8A^x5f-W>6NP+gZt{{tU0td8Rt6(#jis8VZ)pbbdjr zG3$`IMLHyf-Ayn2;RS+?4$`Z7KT)SNnPy{9!-E1-U%IIE+R4QrYYlI4L+O^~5k91)q*_ zZW3J2eaGovZVT@P!^Fq*4`0s0XpO7jAJ=|Ryd}!l5%LKPcz=l-v)7?OgLTVsg9;lqR35e1|~tH)TVZ)FQMrmmV_i$pd9C9?t6&G(sqb=YVYP&ED(>U#3%&na$M-XYPmTmO<5FMO+bQvp z|6TvT`<4Iqy|IZx?rYXGq`s8ec0F|+hC6lY!`W5=RCXthg^z=6IdA-u;{Y@>i#^(R zYaMd~?o*7fMOfc%;MneV7*$kp*Vk*Y6(3BS?Y zwT0{z9QSl$6e-?D?k^pq<@Q6kO6&yNlJ`We; z*e{%S>BBdw1vi?A+@#G!pIux*b0BvkIz?ZHmZak0s~D1I z@b~W@?aB_Vpf{`D$91y+YFlm_w5bh)Xt8IBbYm}gJ>XLyotVWu&l9@-%40C!72a)H} za8D+!wP*-$Yp{|yCE8)-i$^Z=N-uisxX+PD^gC*`%B>cSR^Zqmtzf3tCOox2f5Yx^ z8n6U98p&wH;3_Sb^z@ztpbM<5lXv7NxrL^#!OoTk&@1Obwji+IsK{DP1HOdidDy zbOLFz@XM*phY!ASlPXQQK5Z$_5;<$B``H}nNsm^%X-d!1lV`QA>L~OtV)S#bzh%s9 z{!h*qgRXA8mf<}9o7^&O4;jNTjsqIy zMs(!lPPGYjnMvGYyU3-_JAiav8Lp_It2YzS;lXFnQ+N8b6=h~FjS?Xt<^ z-$L`S&s|GA?MyK2_{_E?;rto*Vm^$Y{0*EV>tZR^^|*e)Aa!r-X$aJEwQo}=^2#qB zm(Xi?1kd%G2qU~FYHJC9HtqtbYM1DqC=ABmhpupl#5I8X<2!pi`23-@HBoKj;B`pW zzM666v=4NJ#`1Xv6oX5i+SB)pu4t7jcS+_8qQu(j>SA>9By zNMn&HUnucG!J~;XhxYqJp7x?qS4;v@mO3&_{G>ze(B{BkxdH4J>-kiZln>V8s`CFw z50=F&zViUJ0UB;&Lm{taqfB2?axj^^LjdKQEAd)hLH9?E_2{1wN3q{{=Uu zI8ExZLSXWTykMS!H|A4NWIuBC#|hzImNQgMsBlcA{G3ZR@I5IRE&n=GEz}#j7Cp`oq5p z-X>7^_MY!i6dCYWsNl*}B(cB#w=xtT0evnMYY&e5!3S+B^8Lr2FtZYQByICOJpDrZ zO`FCFijMwNXkK~-A&zYA&OBx?6&F@Dv~U+#IAL&gzYbQ)(kawc^ z_ZYHQoW)w;Hh6sO;O}%0bW}YpF2YP!iwoMt%-RSymk(` zl1S{2jn6D$k?lZ9*kBgkGYPHk`%XbF39vNWXT6JjV#nD{9;+POGds><`?3_hJxn-WU}nIb~vXRp1!2?;{DwYe@#z2i}~b1iILC-t7#+t4Bm=){-zre z4)0xVJ3??xbeIz(i03Kql{SS_G#z+c<$t}G>WKxbVe$N7teFxc=_FC~2dzKBs7KODD%YzG@VlUBlSn8TMmCJ~5h8MO+( zxKr`mcQY?8$#VGTM8*E|y%5PMAEXvVPlnKNtCkyQ^TUaY;MT&mbGs9>C3Q)bx`GNgkF}fUZOB6Ud zkFjrzgZh8eLOJJ0M@j{E+^zOt@!t@k=aJL6oO6IUpa1_}^8;G=%AgKP2K{#q zs+WpGB2Cx?c1gWc(mC-Dr*s2Mzuo62|2eu`czlk6#7K&7u*v8|958KC`96StF>EdS z57)xjfqhOcZp8dQ-qU#PT@y~`Pj1U2o-5^g-_wQ8?Itr&SDI;!^}tWQ-S33hr!XP& zchSn|2EN#7*paRp1{Mm>$VRaxDEe;Ln=7RYtBS+dHf9EaqxRP-8|5&zUmicY?=Tti z9?iX?`(BI<4vq;IeFiab&A+glw1ezZ&0i(4Hv%(ARJ!sD8`xq#Mfv6?1v%yIyeAl^ zLjL~vcMnegMf3Wg;2+SA+^X~M_5S_ANjv%8Kdtk4cO$OPlhlDV(nCYl zXXa4i?12#7J#(P>h<9gSGB)uAOEi6bMtI1b=NI;baA3dTZz!mZQEe<6v>7k-Z?zGiQHuEZBE<;d5hTg^UEn~ z7do=r9=f*T9|h2HaG%G=HO{|*CBVGo zQ1jk3OvxDzVU=JeUn^-^t;=K}W!;YC<}>cc`Ag);Bl!&&{>|X(^!ZMFcGrtgA5)Nm zVxBsDS z*36rG$i558FQfRFNjcndduhwpaiQVx1*6|gWZ7oE58l;>NnZ!!b|>$B58mw>_Mg<# z{evBCWgvY9v%-go)@Gkut}YRlUYtbv{qO4A=}O|V8iayZW^3ATGy zFq-!{;QlKPb-B%L(A9NuSL?Gb;8>$IeZlJhmn<#Kt|f;+oGVr14*GtGr*)o_%_90j zyaRzd#xr0pp!AOlDug;dYoV!-xUAg6km5z@Gs`F4Je1M4nz{z~vCgtRPF|MU^}6`j7``$eRZ-Fd8ZoD8mK zS@WiwTJY}9v^^0-AM)+Cxxdx?ud%WHoPCPCJD%C2)JS#500_7Ma3G%XAT6|6~@pn^pS1I{ts_ z`TzSK*OsyCslqDu94d^GdQN=aL*C{$k+IwMFFl{`|6(RvGxX|5lx` zjl$T$y7ZO6dE_wJCVLNBa59E1pspqb_KkAywYmNatxkPiO_vFSgS1DsA39fsxb1&CbHA*npS{ZwT2^7dbD&RNL0ZH%J$K^ZD< z|527MJAz`(CnQ#Uhta}m+)?>+8vGvnPQ{o#2Ns9ptH!+=K=oSQSKELVY^Hddm}gKA zx9*+{`Qb1NIVtK_#66n9#iFY&il4|UG!QY)CRf6w$hR}2e+b_ADa&6x`k&1LmU;4)=ir~`%M|k|7euxXXzr@B@j}qq+a|&FD0@A1QDUIBSl`TGZ z!mVpCX~2q7kkF^Dc+R=Y#g;*qYW`1y(gEO(J^GkO-VsOCOj=T;{yZyoD%T{#=*w1z@%?{u7Z=Kk;c z|GTdL@85lr>h`M&)A+>MFU!__0@o}zMTTF~kf_B;+avaDLA~p~YaLe;Q2Z#FsfM~5 zmL#V(!xw5n$uaHuS*J8e^y|%I)@y2ZngV5%_xxRMRQmk(!a z>X_<;PcQ1uQhId2&AKON?dd0wN9J{|JE*Oz6S6Z++afTY{rud&gC=9~-0>vwyi0zrTP`#Tdcgs9iGb9&IM(fv>yz%^iM# z)v{H8f@_@JaZ0OWikp7Za&JOGCj=c^H?n)_?GG_Q39B=3t2gI#Thxc*ksD zEx}7IJO9gm4bLi+__m#>K;A!|Jq)oaaF=d#;H`WQns}Uax+FUXho+5k24AhinUhum zuQEfxe}_Q+-=7s&fbPGkV{>6u`Q_7S#=mgo(O=FzW6SWoF=n^t&2Y5(bY3l*;F=ca zm~?6EoWfJlW_Hs)sd#fhgENL@2_tff+)TJC@IL=S(DBGTyz+qcUz2(xR;#OJuV%FX z9(zd@@M8w?bXn@CVktff7@dCiY7PUfj{0@j)xvUx^0Tez5wx)PHQZOVNSsfoobTt% zfzM;T)yo-u5d3ZM9shhg@a{Onn6F7eI@T3~GI#frO=y}%KF)HHTi$GAe|w3ROe^d2 z&(329`94w+Ub!VqYM_a|=i2~-TH0s3s~E^%{ZEbSOO8U*31)G&AN1tyPq@y>-KHZ= z-?;jTqMVDopJJ?#ErgErZB2xo(wvg4Bb)qlR*IP{Z?VWx`F=ksLx4mMAOvJekEsk; zl)wDve#FURLfK2qAMDJowK89gL7ygyk?N=<{KB?_MfABkZ1J-UQuf&)IWaKo0F4Yh zy<;F(Y#9d7$Z>O}z7X!$cyhh`9SC{H4qRs1@`k`7S%nevd{~XsP)ZKW2l4Ba+3dmj z@Kd?cnWv=?svY)+`mlzACX?}t)^qnz@$~ew(i zaM*U?^4vqr*w4$ne_JKERqWF~<}?H+Vjl(nRQ1Ko?D4C+7JtGoQn0+^C1QOiTs*;g zC>U*b)_-L2`;0nSiZ?7y^}(F=SE(D)Um*1xbJ$!ekt-9%BOdiz3IEwQPoJsv0RzfO zh7s#%)D-cS)lSL9pA_RpUyjs*L%+q^#$*+0ii-Twd=ZSQlbgpf2tDM*kh~{cnh98T zWzWYhifXvWENU4ol?GXC57YallhLber9zuO9=HNKSIvJVLS&l9x$Mz=P_)%6uyISm z$COhiv#km4{meb3@DnYV^L0-&JINOL?(k1hZ;Fr?<4(0cYiA{=1(xSMQeh*DE?Y~^ z5&FVnH%g|spI(K%8CSdlB6sd1Dz4~UOF3Nl)To4Ph9 z&z&Xu*(@VgRJX}6CF1s{xUUbE!gZ5aWC)JwbEiK~_&xC4UGc}8e-iN6y<@XRY{YZc zIg#Q3p=Y3AGaOMOd=ZHqH?kTsOJHDD@hHvdWLRhA@6f!`0N1@w{z%y}9E7k9UgB^F0p4|QYi*a`+D27Ph9h{>hjkK33TR$f_?xzI2a)v~AA7IQ?ua%&d2np7@S_|n1Jx*lk27?uxOt21 zrS|zAymK<|%T8))a^_KW)`#v35Lle_{}J})!CbxJ|G(_AuMv@@gi0YKxsQ@kNRcR& zy}e{hNJx~W2$6kXqU>9i>)7{Qw(R@9X5W72H}m^^zBAvM-@N_vn&BVwI`=u}y080s zJ|0(@Cd-L=*da9!^L?1b#H>%S5G&>!uemKv@X(|hk%?&j3@m4+k8V{}BZ?dK_Q$X+ zh)%2!uXs3v-e*k?u#85c!_!wIa})|-lC(*|tWb9me@V?nq-f5AJkRNB(u&2E6_tbN^`0BJ_S85IP({gWu40 z;d)~-LDa9B>62|0;Fi+7!%g^OMZC10- zRy(FEO^zFFWIlP`Pl}bby;3&#+65Wjzpik~ETCquFdwV+E;PxZm*rvHjsBGF`$8wy zgdR%?{1!a7f)3F7a<)WKVch#govso5|DiXvZH-0^$jr(#by~m))okANzf&3pqV!is z2AX=IX_i0E{Z=W6lv+g{=5I$@hWbaUsy4vukC(oz(;yPh-2Wo!b~XB0K24%|cM}Hv zt7I&1v*FYGJ?mPrVI-I&X7{Xc0Q|}WY)&5^g$kGBk|oZq5GcN*7$M$-h>H?ZK2Frp z0xls0hZKg79PHd5N%%QEXdX|Mb)&gN{?H_19b7ytUG(}!9-gKr%;W*@+@v zn(ylo9YEoNQXOi=gvWBI_|MefEb?Z!*u|9Ch61l8^Ip_wCip1b9R~69;QLQ&fuU;` zNq-d~Ka!VZsWRXjqP%qQgtFueQ*b?Zck%sL*(GP++yw zTa#&>l(^J+b@R*Zw3u=-=94W+gHyy*1+CUmVlyMXUrrGW*~3@8%gnRcurU>7r&kyE zfPCpgm1Y$y?(+Lhm*u(Bm?>CkTxu9&OdR910chF5VF?t%15@ zZ2KOFdm@noiq!W*JzzWE@GwhT6}VmsGULA9Mw}~<8V9SiL5Zzt&SYo;lF-|qve1zO zR;^PrLt}}Eq3B>NPYbag%```8m2aUCS=;%PyYWcR$LS)PNrt^=&+FNga==`!W90jH z8@L}e+%L#l2~FDJp|omcaI^W-Yn6<82y>9N(wlV$e%kL>-IS8hsm2H9yqPBGG%J(( zw~rpECg_v**`9vjFNkvz4|WHQLG|20;(Z-)FN#KIJ_L-^X0`*%^1=VQUjzSQAX--F zOr)CrjDkKheap#t0VD54tTVWmz=&qPk&h}GOk4k$_Vx}!ILBs<_=p5xW*!d&t|dbq zQ*6=S;7p`X{!iVs?F20B*IwXgiv(@np)+PgghP+i^o{f-7x*q*<(n3j0px?=pBniW zoOxGPxxM{h^RUk9#mMi#6Vbq9dfxyJ>u<{Z_#Ka$+1?&xpe=}Z&s&i1D(iUiAEd5+=Zj%Q<6*}1x=uO`9Xq{?l(|VG8gbGtpdBN zbA7*aZHReziGSYGg4oQ!;JV%`Dr|kjg6kOVe$1{{ZQO{r5Q(qTcVcG?et>O@J$tpy)+=dNCn zRj>t$U)5dTb=5~|%oFwPw{sB2ANDY@rwNsxbFv|i`fnbZ--)WT=3f^;(na<4n|6RR zbV6G@X7iBjDrkE?N(Vx+;t#7y7Nhz{etAyd=(l7sHeM zX(!<3x9_KJ68k9oTIyqF+7Zz9(TeH@Zy-F$`Y_-T^9nTH?0<8vKL{)u*ZeZY!a$`k z=l{JTpk5{l$?Dz6VdZFlgvtoIlHyN684w9RI@!l>pN>J>VdHdsN21}cbyW%X@HALm ze_|M*)&VEgj*G5MIwF~EvyZYwzo3q6KHlP6E*MRg;!3~9pdrX+Hix4NPW`+UWO*wN z2}u-KAo4!IZn051+z&&~N+&-qKet485AH5Ua^;}Pln$}jf>v_~Jcc)SRz>t#=O$+Fpt!-JOUqCMFCv!9&4nmIV z{@1ye+MtHZ@P3hso z(u0=he4Y$+^5N&6b5ko4d<91L^Zjd06DU4Y{Jm7oLELE{)SW!P0Bwzdy}?iS(A#1& z^z|bp&f8%;X`bDQL>50@Q?hMCr&@NS9W2JdK37GAE}je@4$mWr_8moE*ZjDxi$kI7 z7^{Qtqe-Zli6~2W`G4kFMN#x*Kx@CDkpBXVpaXd?GI2EQ&p%v z7$SJX((341DGXeEc=W?n!doYFLWY6JsnISU z-q*;6?Umh{NTw@8qFpgUJ3ciKGL*Ts{bT`hf&-TeKCgmZQ&0ZQ;Q^?0ir0HQ)&p0j zxTU__uLVw06NcF7Stz~Q^Zj%m6MoQ``EdkSJKCR}8=gx1{u;$lGfCA1u<#lv>l*KY zM%>@j_=`lJmgAAcu@-i`vagA?o|Xj**?b?E-RjGB<32)sVofRt5mY1}p=HZg@ocqNeSxDWLDr{gM!A~ToJt;(0MsVCh zKE3q%gIta&k8X<8qV?M5ez|u;D6MO^(&IJp{G-ThpbOhXVpCW-r#mGcxsk@t5lMns zDnI-8U9AnVGSl5?q$a#oPKD>iZGIucm-%MWRKv*jY{qdo`wx{?D_p&Hh!m5aczVw1 z=rCFmThu)HF9ubeNoF@)+<;poLesx`Nbo>rD0q;WfqdgCbQ_Xa(0z6eCV_|n2;nwm zu8-*A>4VU&2{`nC0i zhoo4q#UyEFIpO#2JYi$wbqdERBRkx5YtWS&$}yIs8UMMir^tK9KGH=1Q~G7A{JlhQ z4LzY}WKaaEUrm@NbajFBB5TIu8#Z9B)49<+_70h^D7T~*2Z4XkJ299Fg1O%}^MeYM z&@eex+WXrJgs!JqZPI;)NADy!xY}G0URtF2So16TDR`JaQ?>}v#@d{U>hwl}4L?s? zzwt)7j<&~}WoyCvyi{OZF$O6e_p|$o+JW@0w@N`)F?_@8cwL2k32*(T_4j%kI5vCx z!L6legfE@V_#~8x3~oBpcm7L) zOtI0nlM7fb+iAEz2P!w4KgrZsBC30mt8+C4 zU>~b#$13y^_-437g6-NtS*s!WsAdu}D2*G_{#6f|HC(P?kDq`P?TM+dlX+j)_%Qe}l~8yE?U|43N-5q5%osgikfJH}y~kT=gbf zUeU~j`<6F)o=V1m+Lo)L*VjnoJ7FHRU;ihn_uPBfWFG}8g1#A%tFh>jdVsE81mU}# zYm4k>ekmv7XdKU;Dd$PW@rnYo5GAQwV zA#=+e-TYL3R6oN5#oQV_Z}Jt8x5PP@-6NmiYF?M^lcsM-;)c&m>hsTl{e0}L!ybVk zCH2pdgQ3Xfz|KSctRFxwZRlh2pcu9|-j_vcrvK-8aYsU-K=%IQK!X zOSN41pWGeRBkA8pTprdk)}ug97RxJZ}#U%YV8{zXWRPtPvA12#OPN zU(Cme?=|znnx_Jh&zW-gJf*@yoVVuqws3brOp><7<7N_EOJ?)uN#hZ4JyS;i;qM5D z4$+MkrIO(4wkhv2Hvy=q%Da`UwjuRR0DHuv5hQ8Mn|yM295za=dqm0efcb;N5A~s= z_yK=$EQP2qmNPpWNhuaW5?A$JTWo;aW-oQ;Jo^3d)MA~0Q%;Hc_SHB&> zJHdwctP=f)2(XS%b3Mq}0`hlzuXRiJ0QthA>SLS%<6M&Y{*sauCx53T7pb3){Bq=Y z_I)G6SH%5x6F9i>(+An@?{*fz-#o92xv^y^DRg#KfY^6;WUD_OENcc|+jG5{SS38m z-XHxurVX3~72|%QJ=E`&vrLCGpVPzws_t~eCQ*^ z~lwf^4|r1%<~ZS-+QO`%Vh;0^_=AtNwD`&O$yrarJNz&I-=Si~EwmkTr+@Ss;cd)&%`NY=i(D92bJ*Qq zz_l0uW_A@Rv6qqJhF%3nvD&irs!i`{!hrCp zdEIrXZW!W@vvR-E9YU+80$4s=8;7i99ZFKi78pwo^$k~Eg5wKWZ=B1A&?n~~_16Qd z;Kms|c4njyXjDsBZSB_3v#dd}pH2tyrn|!yeB6CtdYTG$-%g=>;xjaPV|5TI8Jo#P zWdqTllmc46i1TJu{s^JN89VT8-0?o6mb}eP9`?!-@lcQf$D4OkvEc zQNp8ii8OG|W0mlZ4pU@`lVBE$_?EZ9F3LEra#=r?;1eaO+7J*AU_}?%FL6FPRVrSZ1iu#bEx8}pIm@WNf`lm{S{cBW?hf1FMyj#w?B^=EW*3P zx3Y(gm~pq0WA{RDC}E*{GM1{|5?G?2^o6bje(co41wV_mV_04w&!E^iJ6@FNR?7Wd z0DH0TZQUWmJRQYmo zd~T$e=AYk8~r>cw^VpY{I#_gNS~-dn|-hhz_K zGH7euMYcyoRo{6hq6KQ%WcSS@uwU7Q;;g#@&jhJ_38EFLmS!P=dQy3XQ2s7{4Sf}G(-Z({C78fYdP9`_fp{F z=L8U$b8A$J@J9#VA09}g>jfja8=pPS8zBb#>f;dhbWoimNid`sMA{s(>C_Kzi|suiLZ zTN0)dIbKM2ZNizkwjECRsI$avzDMHhKjoKZf>2f;cV!-{HzK!Fu=zt7h*)}GO>-ap zfO-}~CjRYaqOpD{tt@VOV~47COH0MGOoMKvgoRo zjXxt}4C=_}tV@xNK^L}p0+{T60{0=ELgtiIq$}!{xGHH0{!yA2E%q{jLwU+CAvhX_ zWb1iFWHL~p!G@gAYl71d^7VGyr+E0$cXW( zFM>br5p9EBeTDCCbW-#CsIes{ha(@Vhf(;I?)rLy-_U{6?pFVZfxktVbw6t=6fNm2 zysqd+SnUj!3+fL79zRG5?oZ&MEDZ?27i<(2X8J-?^HQPiI? zu5l1fIEFDlYpX%c2lst>(N=;iZOb;a=|>^(eNv1lT1P`y9-o|hvX0j6Y<04D2Y}h% z{&chH1Qaz-m-Nuj0-XRYQ^|9JFVcF3`!7+iWpkiN?#N`cRJDgr zrE#es=EIoBo4aZK8I_O|ttn`)&w&@|yuW=XZV)9HHp%%c5ZuPPQ;1QH0-x`F^mZ*^ z158f&Juw$+h7->Zh)`3z!5D=m<14>LD7c+fw{|2Q?%JKW&|unv?o&RM(`Fe!YnXzR z6yFE*beLqJa&`wTKhNA;<7LIn&Zp@twWPtBHS5u!@C0z!6Ly~R8b*=tHrpQZ%AXas!(gfrAA`~m zqWMspNH?&DZbyIVud?2URs3PX?d~iiiNSaG`kPmfiT!C+d9{4R=HhI@&_#l!t4Lch zkP%3OG2=~og129J{CbYP(*`=$%4n@E+6?R}^%Hk0N6~4KH0Oq`VW1FW6{S>a1s0b| zsV~lB;7WF+((c6^Qhy$`q(z*|4CxpxC~=P?y|mu<(fyS$$*a|1_;VK8Z_YkpQ6E4h z+y=^&TRUj{$x(|RWhz*r^z}b}?b6se*IR`Z<2=~zd!a9xegfEs_>?2kl~njwn@^m# zny9e6Z?-OEGQ^yTJl!0x0SO*3HX{F4u0LdsmVk^sA18;EA!_FC=WZM8!6Donj5N3OdF6-z3AfMyE;RPL+daROhvn zx@DA~Z=BlBHh>}{ErahL_=k3H9lF+DyNEQH72SoX7a*~;X(OR_73tW-=hT#KA$yT_ z*1@zk*nA*;^kr=ycwKcfX%#0t_pQylS}aTO(ItPIF8T{n%Ko%#Dm#uy1Uv&av1)XQ z`=`Mj`)+t+uxk7u`T&M!esFo`uz-{+ez%ilPr_A(;^vQG<%pM>GNePB=;KjFs+0Yz zL}7)Cr6bWj!0+ahrtRJWAFb)QUad8uGJ)S2uk9%C%+TR27RNETDwMHz{sb8|HNcop zKfemsDtVs=`B$NfhPUo|hINDRLqjKxs#P?4WnR$u;vxLr=Za6Y`YTAN-%8PNcM^%V zHB;T?9YFSV*W&-Y+(17xCX2*$kLU9SEl z6+SY(np}ID;PJi=nLkSOFQRlfCU3WFpiEB_uJF4PV0dNpNEdHAYSu}wS0JB48rD`j z$#*6o3FlJf@@2*Q7#5XId+iZ91!|saS4lD7%RV%(h`f7A;k*2*{%yn?yLP8`Yy?sy z#oCPx7vPP#O@fO29!lVlFz59m!Iq+grxXcZYLZ`LTqO-No_h5C^dRGY>~30MRvE`G z$jFj3*3u54@-*4|_I7L-uF-j7|2IMGF@I-7+cPoDE?usdOOFeeOzu&txFm_u@pfAI z-f;(Sp#3c3jB5H z4@0l2t$KgIGepLLw^}s0Qjs}>|L|Yq5~wudF_r!F7n#P(_?wP?L!HSx51Ut_VC6PH z0kkecxvr6A4D;XM(91U`wj}G&@#`&ac!=&6Ddqq8?w6<=1+2tFHlBw%zxzyhLy>1YZ2+ z4$4E0c|4-u&J*)V3*Ee|;{I@yhGr}(;w?<%EgA2Un*h1DnMsc0BVbWAFg}u;2k&pB z&R%#EgqrNGIqRRVMpv#p_+lGdfL1?FGq`zYL9j)Z(NcR4IM_-IKhY=h^R;w0)elu5 zi8zy2Ev$(|UU~Gw{%#wXIU&eD?hG(no9Z`VoeKN^&dpF2H-e2D<8`|q#YjE)-~+d; z?`Ze=o!$o<8At(J`4kxLg=iA{@XVPkzA6rGMh%G$E+bTC>#pL>-(v5|Y|A6pYLY zWTx9`qv7q+<@-MIz9^!xv#Z1K3nIB2b@uX!2B`08CHpbfPVh!q`!iFT{&WA>$G8?$ zk+KFH0WwcZc=OOt|3o^8eT}GkP$wwRy&WiaRxSJW2VwmlTVwmq2K+3Y(C)gO0mBu2 zZqGD2;pitf?mLU4Fdcl@>gM-9=%c4iyoLP~I;m`(vP-!S@2fg^=G2LGgqf5_q(y2o3n`FtF|sJkFn@z)kR_&4sbl>m&hC8@HAAWTzY@{Ak#hnL30b zIBC@92tP@x{FgR`FB8c0_K5>;lBlsZgWJ@WF$~z&3S~j72`#R1oaz^c`XbWRe-m}y zL=3yBua!fqxrjEdymhFYW5eu|Jvw54FklU_SeNYD22yIjXH8YO4qWb2KMeWzVKvIE z9&gij;Bq%nA~(@tzT#KOV{TAk9+!U$2{)d=1fNzs{qLvd^vaeh-i^Wyu7>{WE+LQ`aC z5)Ransq4eUe*CHV>7(6MfZhx9&`-Xj#Dd4ZFp7@yU|~MFjFwr`;MEYAdC_eFogJVu zQF5q2En9mqs+{1PI3v=jyMYlA zc6Ve=fnpr>hBS$vODjh?24iwx<*Se>XWBu_M`T!Ex?%$ibK+Nr7oByb22dD?4=NKr zsoz~6O(x71puwQH_(%XV*5RvJbw%N^JJ6VH~wCW#`lhz zA3C&)Xw07JssEcs9E|A-7wFA?2ZWURfJ=7bM*^Tcf!4d`^SsbN+-qm3W5V=I-t(M$vy4*gbdus-*I}=1;4tSd!Ds3C zDJ#^o4?BIC!!u=O7|crZ-Zgw5L%JM{d(@5>vFv0o9(fyCY+dt!$_SCe&t;TrGkSgo zqjdTwl68d*Pn9^?c7mw8cciYEyofrE-Dhn)NJ7JoOFc2Cd}Tt0iFq@hxvs>9HL<5| zXkIvh73OIC-Mqnpf8={}L2DF8EXEI)DJ(d#(j-;U(lau6caOUK9!Cw4haz_E&AAR^f@t*1-skst`#7bk&-MnoK-r9kEPp4i2^=1JT#h^c8JMZ4; zA|3(_6kDs#w>t~=N5qoepey~Ps@`D<=t|YfSfPUs>bTvq zxMY+KGrW-^!G^x5u5T%*c(e$-FAjyg`EVO}9^Vd?Y#0aihN9{ZtUu98Syt2ZkH4U? zW&Zc<+-)dwsES@0>_duce*Yx)qQHUjqLKJ5U-)&R-PrGBGIW-aU1$CG3kKUU1dw7M{BQpMmZc$_S}tex_+c&;wlKK75l_jYgMPCRic%E=)3|zPIwPl))hH&rg5A1`5|GTgJ zpXd4i{YieQed3Nh85VxLR9W?UHUx04T~nYqfGIfoNT=WF1?>Utd|Lg#C_(OcQ|%>E ze5_1C%Vi)J_T5U?O;qiG9n+p@cZDHT5c$$}y0HcoQTyA)@BfQ_%?p+-MC`y6r&{{z z#5k%J5Myz;nu?C~_uDp*b%Zo3ux2ullK%;xv@e={vcwr`ac`0^=mTfdPEIr26{ zdFJ@R(v$hf`Cjx>jkOk7H+1Vc-aQTm-t*pGo`io{v^Cvu&J{VYUV2?~Ck-CmTgy8j zS_xcn_XMx)kYFSYSE(FF_hC_AmPrnU5Oc8>Ps<(=byR5Ys8@kD3pQEa_w}%OHmZqD zQtNGPL2BMbfBK3^utVIE^P#iNNN?>)&p!HbB-7@8lUk7+laxwbQ7&h}7*Z>yTFuFD zh6%;SGw%w~8;14>hX=kyKOpp(m--wefAw5fZRi2BMghKzi%i&gWo`1fxH_OZZ2ghS zej9yKHw%|+ngveTh(k|FR?+>&C+QE2I55u_QlUpJm*6Qir@P4%1Af=|md#fIZu}LK zbI|#7YiMX-YO}Oz8acgtEL8V!3}p`#NjaTpMvl=6{L8$9h_HztVf?#;Sm&>8x)A-E zDJt8-nYBe^b&<(oVk`q9SylyaM7DwM^G=GIj9qB^jM=>9K8ppJWL)n+$FO%CR_*%< z4_on%hMOwXd{{xp3r}kQO(?1E*xl%7!Y|yuk*%CSa4OG}GCa{cTI|-D-w|N=-nDB?+Vi?zlci_1jO##-*h9BoR?WA};29BzD z98jlThk+?o)*GU&VBUZK`J?DJCG4!H!<^0E>9kszs?)+@`%T$tUn@+9G3 z{8FN+WU~oHHEegTrcD$1li}AZxh-%v*0$&S;FjEAS#ltonCjla*fQy3B)_ z|2)g5`%V;lI4Srp@Ao3X?>#(J{E`}vTYP>?u!K05wQ@`Kon*&UH{P3f`^FYi>hi-S{Yc$LR(+BKiqlIm;(p>&=b*+L0 zU%%i9Y|o^teo>?&Cg1gIOhjIn`=o-_N^%&wlb&^`hT!Q%F#9vN@?|1iIBVfKe+(3` z8_RkHhXeIA14T|`Dol3%HWZR}1rzrB^PwtbXx+d1vYR0XTnidLHDtX4jd@@CvASXi z?^rYcH9G{~wcP5rbd%QVHpZ=g?p@~l{FFMfTYAoGpzaQu<{rj7DNWVhO{u|!} z?0b=Fbezvgu7@a{A%IeWKNURgz2|zwUx9wbr&x>$6Zx04Rgs;i7VxGq{&#=0FFGNR z{95i?A_&Nqb!2~xKtUo-HO~Y>z>x(1IC1|a+KLqa5&f+MC{5oUvhPes`zpV)_HdOz z=z93i$-HV1fAahNuYh#a_wY$X`0W%ThucbfA;ljOa)gRH-sGa2lF`Dy%u8VAsI9Y! zs0T!NAJJG&ua)aPkGcWO{!w%H29vp6auV7}Gx=XmU(P2RM49eiQR;6U~;60Yo2a zE<{(RQtmJM&}DXqLnRa}*%@{+I--!Yn>U%p`*0{NJWg5F)g$M}k3C2V zYtZVrvCI&6?SIxIb`DQ__OwSJ{lswDq#6#c=f7W*5Sv2hE52;^m;Oan6tlT$lX-BG zn(t#YB@Rt}dQW{AbI}faOWv!qb12-)pp1psKnCb`Ym^#SgT+lzU3Fs_@L#AueLr>r zT`^BG^&$9`gY$v3F8V~jJ1~q@+hqpvD(LE@wof6w%VF|wCPq-tkL5I5sDR4`6>`*1 z+7JsPlYsk158QrK;IL%WiH3H+@Txw42Zj#gJi20}m_g~vnf~Plxb=H(^S0Ik^gnsy zRIb<#`BqeRa|aR$9#o>)-svUaJI`jn6TXDHrS>acA?6wFe~8zgDY=E3j+5{l4eUa8 z9ARhg?Y1Go$HrrEjQ?PI?Wl7L^%U3|EEl{p$bkn=#mYCG8bEV3Lm>F>HVUxn+6|xx zg&PleA5clPgZ!D})GmzUAT(|7#F&wT{PUcHzB*>1rIVL?_Pu|G*q9*d{k{dWi!7p&?plE@)7Kw^=Jd&APM5j$IBtE+)hMhh^C8?rAilwFM zSBqrxV03G`4!hJecw7M6MDWQyRKX;bC!x=VW$mk18XqCSRb$5bB!Xs9e`s(0^FqSc zvk`fASGoypC^APr(j>)`@|16S@-CpAwQiGiwr-SUvzaOLY79JMXA0rWU;bzerp7hm74eSZ+on9O!4 zIn##ZNdkV-52S;1lHZ{u)n@o|uUz|={0wSTi&r`GH~?sEeJkZEmXHWjF*(%?6*jR? zRLY&G51KEXe*YMbG|aqB+{)}ur{ld(6^z(?~3gva<)c1srTY*m4pP$l6f?c5f$`NsF05}$3^Jg^of%Z~k zyvoso_$8zo6RDbtYShY^1?iX2Vo1$h?!PPWd;KX#qS!E)vRoZ?q~DKwq!t^+In&^8 z3GM%%`U<wX@?n@u{R#~{*Cd|;jizP zd>-~%gH1+7*|=0PJfmCGQ1=}x7E2Nqd5xVKGaoqrSXO!v?$M;bo#Ud#p6NeSDe|2` z&Vj2-EFae3;v41qz-N^Bm>>y{Si~k+AK1M`j5wl;eqskRo^#_*Qh#kGmC9o~saLA} zugPEqUw>Ix8FAxkjx-ta#%HnAhdw#co{$M zJ=U&<93Kt^HMSAn??{6)*YxgyXP$49_MuEzzRz9foct0liN+lL`z`DH{0YEA9W1gBf7p)&sNuwWXBKAAWr*Em> zgucTK7KaI+5YN9S)YAmN#P!75V}bf$IB$^>d$-sMg`7<~<9&zd`v;M&`;Ye^ys(qX zq`CtQFkKLNy%CKb?`Jw|D(6l3HtSQml?XpXw|9S*n?HE|Yv+t?2mn(47xxU59wUe1 z2ZeWtIgd5YNkiwcUx9`j0d^Pp0QL0CeCGK18J-?-YGN-V{6Tb4 zwMjyEQ6S^d`L~(osB5)rSvRQyFi!7N*WNfI|Nf-|%YQ3TZkJkR@Npb%Z0(MG-^hpe zjDmmeY7pm?1Jk;<)T-f2^h5pc5=rbpKvFY(8=uJUbGC5}4C?q+7gTRj~G$z0)1!m(004K1qpR2s(Z9 zGtC?n-zlt44_SsQ%Nd3=L9s|*U^}*6s1JHn^7w_-Cg4u7r%tVbFRV)lOIN>4f)~eC zsee69MT(?88w@lhu;#xZ@p$bsN|`UdtkDqy*1zlm{(N#mJS#VXrI+6#ZZiFlZ~nCq z9yBdw8P*Ou&)r`$@ihKtJ)-C!%Nm+QhN*^~P$&p3Lk^Xx3cAZSkRb zz4x>QT`FNKBt1!rqZq+sYovu>`nhR;VMRHtIy^QrvK~R71eQ(-64&!r!rh-7U&nyc zt+`<}iwftP*&bM-Sb}HWJpxqkm~oY8S~ks-e_m#Ycz>UGd3LE5UF~NTJao1Y$j;#714avwd&loumvd#PZ(OMS^%sS;=rs%Y+^4@$O{xnwZ8fC`@@|9z> za;BMqclff}D$y?%8-~@CB$c%gqJXqd2|a z&H1M9()h&Z3pDpxCy?vTcr!X%4}236=KR$|#J>Kh+3E)= z;f$i}m>C;{Is1F_o_Z^Yoo~JPfIQLH405>JIxz~9$Fm;1H(^8~Wa^2g+Tr+LSxf?<)=$LaC7f%xjroJRle8!&X zfBPeI54&_%yvEVluL1sZ=X3vaeQ*D}^>Ec<5xHnzH{r`#M$HdZsu_qmbE(9OetDk{ z5j-$%<`m&Jv{hkbXeF`&SN7YG4xJr@b8;VMf8jgu?vtCx{4Ij(Q~yXPrezHzUwgN) z&amK1?iM%hC#*r(38Qx2>^e~C+NJ;YoD)Bo>g?#^QVqjZ-PG^;icyDKVpFVHJEFNh z@OUR`6>KZ*uKx*~LvwB4C(|hhfm(@;!trbls72&joF)Fx6%I$^>XZCf!^y7NUCSY$ za%;MF_sBBpION6Z^1K;(Iji;J?Z<#a@9V`7(LD5gqg9J0Wf2TSmn>@b zI^n0Y4hPwLPCQ{!BOvBQ7)VJuia8$Gg37qplrFCOaNbq3OpVk!;H6uG1)!||IDp7F%&K?CeQT~VJki;x(43{Uh_>VxvQ>lV^2?~57 zjHT9$r;^~L&e*!%=D^EYey2AtQ{X?7d8RkI_mJlk#mDEwSKwrR5KUq{H7;@ZVS&kY zTAVZ0-1P;?E?CaAf2GnQ#Y9q>k`-%cv7a%C_mvp;*q=En~s}@AMqw2fx+V+uB8$8@0msRm+Ta{?BTzR_37=% z?&#Ph^~X)1fpuq(ohHRo{9Qj^w`0NoZq9|>PhN(5?^8Eshju}tqeBusA?B~M`fQK% zVc4@<>#7IrWwBHXni0D_7F@F1k<0V^IZT1UBEUcI5T3yq7gd(Sk8@hS6mis*#Dd(X z`ZN9s;6j7h3TJwVbJy0#6|U}o5y|8oTAt){nEQ9Bem7%byfULK==IpiFTl=$Ev|LPPy?oHax10}e2(%*c+={1VkJAw43@0Ds=QN-WmR{%{ z%7=-#9tL%y683r`z3b~f39r1C*@A6`zRSx>P*efbEEE{2b`;RvJO1JOl^ zz+!OACkEsTKe;_?1~`STA&`ZQ1&(O{lIl%K2?cik?ikp_%d(P64*`TP0rDh z>0U1YnZT$p4dNWZlGd5TSm-xcwhn!Na2SUg@*Bqz39qH=!FV%0woK&ePhMOeF2mk&Lx&AvDqGc;khO?$ZTAD9=g-ex`@jv_k`=(AqwfCG=+1aim9(6jM*Ke`ZWlp3#2 zJ0)HL3M>{^Vr<7?{i55}Bk5{j_gu5{Szd!a4mlp3q5=@wy--)0QUe?;4k>eaMX=nk zk5$CO7kGr+c&-eDBa;3@SzU{-p}tOC;_N^%DrP+&_mSKm+7m6R@(q>|g=xK(e@6$( zd;!a|^1C4HUh%G)`76x5Rj6rv5Q?xGdq1V?b-+$>rG_SL81jUzDp==ZV7u!kulop* zqrLuQ>J8g3_)7VOH2ZD~5|k%`<05Nl%TwT!FgfA%`b0L&V`v4b3zLBfJ7s9+BV&X1 z~~|r4nhHykloM(}K8o`|rwkyF+j@Q%L)Z8I)DqXG+RThs`CMjy^it1MfaJI0%2? zz~v{|e(iG;!k6a+Jcd5bAdL&*_tNTzk-B|e?-b$bUDkRfsPVcHG3vOws1&V2Ld@^n zNAE{aaL!5GRwNf_eST+$jdmg@k#LS3!c!s>>-Aw=gWw&S9FRzFCc{^g&xXtvox#4g zOCE@D6~xAK->H>|&ZE7`2C$VmdcFfTmmiAHv==nyWYJ5zmXBK<-h7)u*RMGiK6UJrSoTMm`mv-RN%hy)Z`^d0>eIRAUi;H=?d0R46qZG( zkGZ-3`^-;h+gUg3YC`7Xeh?HdPU;1ZqXP0mv2$=$xHV{t`%YrG-tOiBl|F3O=oVkU zJ_8)n=fy0U8^Crc!mW`b2Z`G7ES~i~-0N`0YV345T$xUgSbq2w*Jj;{Px_H_lhTsy zUjwUPl9&E?{d5I%yZH4uGt6Ui7#b^?P*Xbof?tPnAM9n8&TA_hg5C3d0r#W(AvjSe zOlxi#&uU*}JnS(Ae@$DzZhbm|^nY?kK9LI-C9qVkDwHpB5!w{0(L50W3Z{ zCg3b{zX%iUA2iYac4==J$-4>Os-b7Hi1KyCF5$fNM2l3@%p>LBXh2`Zr+<~7cyr4V zKm8j4HwLzpC)?L?r-g)s%!LKao4r$iZJ3YHE4^s{OJ^&wPMgj!KC}c`ZO4Bazh8h` zyJRB2`m{q+tjndy)ir#iXLtR@mcQ^Qljhro%vORw%lxW7{}4zrY_)$bI)S?13der` zoku&u^Sd^wxB45+c_c=W%)#SsS-Yf5=H9P`X}Rt#1^L+Tnwy`K|DOuke+ktzgtY#b zNPYQQ$T?-8+O55V*s3@F_XZ~m!9DkA|1zmtDf?MYFE)RYP%xssy){IJ;CAes*|kH6 zxc7A1-c9j>#L$k}tI|%pNkL^Ex1_ry={L)nnc&+(Fi1`p>t9*KJYK0`&NObKtNEb| zee@1uveGT`+$1lhF4W|=^%MsYaM4=UHh2|W8`KNv3b`o4TbVaIJQXEU5@yHs+|%*S z@*JUF?)$&>{y+DE|M%VA+qCPT+)w!KbYc39JedQ#*;8|FQx5*D;o1Hm*8pX`&gdnj zgdwlr=k`y2_koUXHqH1GUUcB zy0aFoSVLCIxXLlb$iU3|a4-Chi+B8KpN7*nf@LITKLJr}0@toLqjWKs&@FF&*qK`6 z<;FXVlGc|mTw@;vp94ekY!w+8olxR?Y&sAoR|_?xf=jSRD25@BJZDJD3Wa$@m4S*? zba>p0Pe5JpJ~8B8BOI=Xr<2ZYhrGqJ+7=B-ptE1@pJdBVJY+V+Qccd+qfd@(5t8@A zQ=LWI`B>7SrG(+7DODaMs3CJM$6N4X%a-K7iJB<>Zr8r8wy~@ONVu1*n`d z>C4jm;XwVL<*?vdeAm_;M8lAR>bv%f*l$O8STnF*=#q>+CT0&@((>@f51qaC-ejFB zp7ANPi-n})%4^5F!ePv)zaYmX22aq^y(*~4g7L=!37nOsBsW!EV(euuCY*fyo4K|d z?Vfj@OIokM4aTO@d-;B#Mx~QA_h1CipT5X+#mNKD7cCoDDgJ}#M3!WkfOaSwj@EN- z?F9!1=EtwLXG6?S&v&bnKd`F&aok`}2yjU@M}z1~@RuoUG$;8i7g+7go<)?x;o}y( zrHWa=a?d%YBFY|>c|yAdTnfG_m?>9M?v-j3?CIPe1YQu z8%K50{=3hnHB{%iCrnKUhnGAqEbBwFlQiP=5?n-Rr};#W@DO&TU1I!lU=-F94{qCY zavSA%%2~fnTT1ZW)9aBMG%=6wyS)p{E=rPK7@O}C zavdz5QS{=k0`i7E`%VeTQ|0P;@4ZG%sgJK0odFzJFCA?A$3zj#E40?xIg9Dj!U1vyAJH8IK)5QZXv#(vb#pt z^}ya`u)p41sawzi3OUghTkniOZMp8D4Xq9c+AaJ``q?sSk9kSeq;9|``Bu?a+M^hA z_Be5%ZXQhBoFD)DQ3-amt<#Jy!?>=$gSl~tfnt~+V!q+6PB3Xqt)0 zAeeNerPE*SBSJQpg!6XNP&_c_o;az;y!Z4=L+W)d;tR`{-&dnHQCK_QM`Ye!fkewo zuMSGn5ghK1eF`FJh^tu|hGmkoc<1uDVQG?M?;w7+@j>!Dyv^S6aH|*9|K5+pENW9L ziqFH+FNr%MEaZ3pACDIu!xKBUb$ECu@DuI#ZN#Q2?wej&OoWC;(6=09qbN15G&tK1 zLRU3+6Qp%w^U?7q;#d2yGhi<~Cv_*cS(bn6_*7%Hbcx>H-XuIx6qWj8jGh?WLrjH5 z451P0T_R(o2A%XUKK>s)h0^%;k-c;>uAKOlxO%@GCW=$OUY$l5YkOv#b$Sd%k9N%n z`7Fb2Ifp1$w>F%8ayo6~2?dXE{G(Z&odw13T^H&Y`3b>4r&SKQ_n^$}CYnEQhM}@1 z#cAJ#2K>d_sn)ceO~WbxTPJ6rIy(z`GN8 zMXVWqk?Z%{@mTZjo_XwKXjW%+{f8f0F8d{(WhBxWJv*qa$b4(bF#hHC2Y5QmxpIP= zpEBFax?q2t21U9UAKvvtYuxx~`w zR0%hcWXrChwb2bC#rk)C=`s*yj?N+QFeeei>_j%`n+O)Z6MYlW)I@NI z#_#6RErein&ll6*Y(!Mzc0oaj1^6|$Y`*Ul2cfaoX{`QVKSVyVxbPXNDIpEaamm%x z6rSldiJbab++LnCB3npB&}c91ni1h3qI(^796n!+-F9_(4P_g!R9d&&PH-Ju*&^S& zx^1RBaavGYTAPI1;k^w~`P+$#FSh(QsQ%!@&;ib#-SotcrwZzC2LEBT7Nf4-6+xot zU+4ojjlGl$HD60)T%`%uM^k2u-Xo~?_B6fnx)dd$o`2K1z=K3V-^efFFFPnEYOM1% z?>AF)`5J2cn^y3fxlW$P@)2S*RbcINzX(NLtn&1X;;H1uhP2Gpv1ipNOTTTpuMndTzXKEd-z}<|-{qLi0*6X37M!Nl^>?mAqe78RK zv<8k!&TGb;`wqt5Z;W|rjd4O#IpO(w4E!ZqI` zc0aZ|z`oDYrrh=hU~5!e_>J}djWsvATw)mr31PkJHzqPLsqW}5>x=J^k>{&YaL7Yw z+*iPv=azt*FW(J0OWuFCtdv^M*to$9775ZNK#S%z5Nr zR8JRtLq$2VAkX!yst(H65^$BC%t2NAT6?H$5xqlLDxOb%#4^)ze`{t(tUpl_$q{xR zA072m&AZc#U6)&)ZtnX4UEdGeyiQC)nuag&dgT0&&2UGn$=gUcWHrceA%f(A+xuyI zyZpq1**sQu{QrGFGS_Si8DviOTiq({Lw$o-!fBrV@XjWJ=Dz3^;jhIQXQoE)n^*x) z_a3m&5~rhRo(vE^X?Y8Z_+(acHHR@abz8)d_dj9zzVPbZyi!d0siv>~I0LV2qA4Y* z#VE?}c%A)ZHM)I$;mdS#5k;%Sww)(A9hH91>Q*=RqX?~0M`LX-u1+ufqdcla%0T*L zvUUd;+}hC4c}zi@BvmS(iTI)$Po5cwc3s6FjGnw zWhvw2oXUX9S#d-t0d{bEAAWm%6;BHN5@8~JfNzuf-5&o}&>?)zdh<`1k=c6xc$Ig^M9&@j%ht--96cbj9wH z(_;uV)?EHrQ;!v+qDKq43Ss%i0|U06TGVhkHkYQ53Kx{OnZ(GIf)?Yppa*vv(J9$T zR%;8%&-$F1a9_F@%^b6P*FOKlnr{9$<*;!)oNW2#4E;KORu%87tta(`trGS%HM2M| z!Ac*@P4-tq=1M($3s^$c={M&;jJ?+?tj?SNg4%1AkFOtEz_HL{LB{6WD27bDvnA#` zDJyH*`Bhzw@ZzQ8P?yOMJVvG9KY6GfOu{5z-UuoOT-STHHq?tVAtM{5fiqALeR}d4 zxxf0^C@MuUO+i;1$jG*QN3#qSUx%^*JQYgY#MQfs=eZ)Tb;lehsyOwN=#yoLsHbq2 zft8iGR2#+IMCx0etRsY&NWX%f2!F&Ki$0L*7Z^Fq#znLZm4r#@ui_~s`_5<7^AKMl zpyKz5nrNbx5wv~5NQfJIG(M;Kh1#a85%lK%Zj}^YlOak(1SPYLge2F#mRLq8cPdAG>Qz0Sy-KZ~$3#IZH38dt7E;F`y2G9EZ7&v^-Db0CD?`>c z$)gH~+{t{q4x25mv-rrYS9;Ib4~&p$lE1`{aqLGxIL%iu3&~GY;roLJDLRb-zH_LiB=$WfZv$N?WQslr zO@fW$xdJzye&h{ndqZ*ggF8R`REYUIjB}jX+g>}hqu1NIvnHifL|{i|n1uEk_fS-jTveo5-ns!7U%s~ui6?pX z0kS7j$$6m9VW$TsdP%51FGwC|lWymMi>kRJ_;V+t5%!qt9mI!I#2Q1dtMtNXSvw7M)sq)zC zY3@$lXNKT8HBNup^eh&YHr@%}&;p015{_8nHrRPp&fS@j$1)wm!q~^c@U3ESnC7Vo zXtGs1tQ&igzPEIOP1PGbf6u0FEIdZX$kbrfS#m$teJ&xUafO_R>^{oPbRXWch8cAU zbQW#?di+X@#SfC}pj|mEUI8e%Eq)H4Qtrcch4=okBfMB?#I^c{)(ZMYsBR8(@W6l)oY4zC-ns+ zWlw+WuJ}N;&zQEBYB=hDUT-@(5r|^W-}WA1e1JO*fB5B)Toh*r&@?D|kAcTl?#%P1 z!`Sw_&NSS%5Z1gV%^(<$Os6WJ{VXuSH*WWL2>eS0I5*z#T;M#u7xd;idZ+|GyZHQ3 zUI>AMU99q*^CX`qd44@ilAD~f$jZ`x^TDwJrR?6^I8tw%7?4zF4RImfy6Xy$@ZhPR zw~vSUfth)@e9GEu;8GV(zO;S{vt!eqzuj{lqKlq?o(vMh+jI&3O6LgRpo~pCHuEFr zRSIvfoErw+#B+&V-~apkD4@kH8m%4=7fcOrx}xFUN_5NrqJV*D_ zEH@bq6ih1P=%^@5E(-@m&Yee(Qx{YPoO>}KKmMXtk3Srw>Nui$rVGcYN@>_Mexb?U zKTY?a^uq&_+3Pmpb7*I0ttMu-i8A-6pu~i}9&4Ih{?=v>qnEE(Ntw|AE(~y8zkaX} z)wef)qvM-Lql(mV3T+m7UXxJ0GhTzvb=Dv0%_&%`cFH-eg@YpHZY|%vWga&>_ix&+ z$WCE=+3@=DiAgLt-NmZrbsp8J!`o)=Fj0KH|5O@!&!YA8U+rlgW$s&2Ldr8n-=&<`0=dfFh2OS(i=ufG;>4P zJu;8H*GkUu)0+-Z5|a4&z@!+}#RHT&3%MyOyz3Vd_NBl%@yNraQtimNeBsT>OXa}B z%uRVgQw&FM9V)x%M&^q&$?*usjo^>R=#ef=&f{aO#P-hz!!@~riL=pUZfI;q$dN31 z3XlKwp6g;lls$4`kGl=q(M+m(L7ZV3PgiS7Mk=0%_HltWC$jI(npUTKcVPwFS6%2r zX20V4t4}|V2$dk+xPqIceh8jC9>SJNpAOFp?wmc#^BU&{{UsH6Dd21Au}$EIGNI{o zltLf5n^?Jh;6g;-0fJRl z{ijkHuish)h7j!@-;0cd-{adI(svv2=IW1cIbJou^(N&|@Zo1T7Te-`a=H<$H1~v< zb1)G9vo233OzlgYPs9cvafM%Z|C_IK=w7U4XzU!`v(!wO$p3|t$z%8LW)9;X`K|mr zETd38_T~AV`ec71+a=?zw+6b?c^d-1!cb&-M%zB%4>*1==X14ag}dXQ48k&Kh!%Q5%nneump`Ff_s&fhM{o_zMuLsjZCTT`ck%k@!nUThwFp0 zz`J*I^XdFN%vG`Y%eR&RDpkf6>9JGT6DDb5Niz>DRCQ;WJty!)S5~H)TQ4TkjXz<| z`VAX0W3)MAAK>DVTuKk`G&)6&MZcmRhTyx(57nHKF@|QXvUPqPtWNHrxk@{WJ<7qa z?>-~XC0P!^BT0F9CbhoZS!E2~ZYsH{W4(kfPlU9ZYJ2eKv)K4avsj4zkUgWz){T%^ z9{fTG;q#0}`|=-p%0<12kJ+Bxm?IP*zHL)1o~nEGgbYCdzGAt{R9Xxa?}NeK_sHDf zV>GsbkDwo4`$S**AlCv@7dqg5cm>d1%J_4yX$Wad_PdyUsf8PHajcCz<9MQiXY}yE z9Gbkk=5bZE36mXTA}nf}apFFQwQj>03i~Vx-s4Kc#u}gZ4>fyWdGmmV4EHZcOFoY! zJ$=aef+BvdDhua5x#!d^N}y%D<&C!vHKpM#<&M_&K_Dr`l%0LESWxfzUP^KZ?vF|)J&CFokcXgmbZ`yr?b0_c3z#iqY%n3-DNuy;MMg2O9Vah8f=*YQwgsDj)Z^Tlm%uEx?1jRV70BxD$>a|e011<}2TW}jaBb?&>$Glq09F2rUjqwa z|EJJMq`eP0{U`QZI++ZF zY4Fh@1op_sqO=_KXzrNrUIexjF5J zrPr$XwW!5}&?aH73Tz>r32K-Q7Z{_$??LUe+$*P^`eD>Ufb1teGi2ScTx|8<3$cyI z#YU2IP>fQsN_rTL6ROYD~y9J{U+%X`3xbc(=MYx2=5)K@E(A=kNStK#KXm>v$lp3(WD-D4{46=T&vS4QwuP1wOgZ%+CBT&z^eGTxoMpZ* z1~!0dQu8~(R#)g1I8-*W{Rc!Q?SB-wYaF8ewwz}$i~_~aPg8dZZz68pjPCt-X#pyj z^PJeS{js?$`& znbCX8r>_sAw?AW!+ej|z>sK6mWh_kbwYB1nxRH%1FBETGFKhx9ExF^3=aQk0g*sJT zs|!Et9J~8?a07;RweNiGI0G-l9o$RGX$g2O&#=F)6H3@WdQk}u!S7W)5!!WLO6VQq z<|Yw2inC7|zrW%r@CAEJUDPLYN2WXql-#~RAn`t#wYwH{MAg;J)Tk*#xh%0dm9>x} z=(#)M`vY7T&D2n}eh*!HK2!*6`~Zi$i+`7BQ(@QY7pL~NaV$O-(*33A2<1{{!t4bt zUdlzKsi|rmVahJq&71f{!8jf z|G($o5Amb7a)#l<%e#-xJ68W^eRC;EbR3=?!Z)H9BuhlLP!5d8Yg^{cqepmcgu(S? z9CDB}dztqMuDm;L-%;L2q1`>_pR2&H=$AIp{nYc4@-D3aJ(LKHPrD8m|p~ zO35GX!Elp0V|yGz&$(>nb;Upw2e(}+YMv=lpU|VF;pP$AK`c5_ zU!_&ROt~*BddAF@b2)SP(d_cdp8fr}+e)IMN@D_I z@AId~bmstVY1xg(4CK6qzubJ5?9cAFd>%YFK8W;kd8pCw17uTn(&o$8qHA%>-`3rv zPx(TC*0;!EFi+05d@(c)ToEbCI!Edu#a}<}C+!?s6q;&OU!x%&bSAQ?6^RkASw?${ zfR+%v=*Ae&%S-Gzczf^q7b?n&&Vu0(|9mVLqxK*6-bGxpvfo|zZJoSVZt~ShY=fii z2SPQ@QxSXM=Rc**?8Kj!xmD~++bEsMm#9AZE`UkQz0i5VYHYX>eJpLH4Y?9eTPkPo zCR8fw9fae9z`?-G@UZZi|E>4`sr&!?jx6c8cUt=R9Q2g*j%JTz(__fQ{%Q|Kc7Uugs2@Dp8XC^zN_KK(D zdk=?g#`B{^M&=B$T3Ll)UiM7-SWXeR#`7mUq~}IPDzzy(Z#v8|67-wKefW@%rC91K zLWgCdv{_LIinUCz4_I=5L)CcCPj?^S3Vo?|i2Wv>p^AWu(jIVaoMrjww+Iwr>2WlX zz5trDH?<>|E$|ipI^V%Xk}o1JzN+Wyh>t83V?6%JgS3`b^Tb~_5EFvy5{ZjNF(1FD zri&D!VfRQspO`&PFM4en6#0Z(vQKd**&hUnpo_XSpGl6q>6nJXqE zZJ;sjd83(REcPkd%fGZVhurPgRc^lwg?~OhPFrKl;YTKmN93l*5JDxII{4WSio)vt zc0RZU+|iSNj>>uA+ULMnMdeV~%36KwgMc+89Dr}`r0=4CXMXPS@M~xlT$L}c-VMV! zX1x@_Y!E+Hz0t~80rw_W{M=n_@b2S2JoqUX4Y;|^i<_iF!fxg4fBT$arhQb##O^6x zzQ>FMl0k5lQ9TQ4OTv^xPleNMbf3p_t5vzwQD-w zH^EkVdhUJQBqa54x;#Je-~7tBrtQfFCx7C_oy_#&BRRnJ?ZB+)hhJz=C0$hVA{PR6 zzj(hcN<~#>seDJ$zev^g+U=m-GZ?1(+IW?=9>1m;AK|$fj-T@BSoIhh@cv}O_K?{b zG*WL;P^oGJmvqM8B~i1;b!_(m3|e#J5iIX_iA9b%9K#Qz2A%#dDN%N1$c= zyTY}-nJ{NpxFy^*5+XevzB=YE;rh^Lm5(HUtgrCopRt|kcp|#)prGk0?(x}V@S1iJ zUpkw6(z+I5n@%*{@ckAX-nSaQRc{sfj~u$56gZ0_u^<11+Eigz){5&Q$x*5IDo(W3 z;2^dcTU0o|_zh=GN2iPZIZIetyrOqHopH;85ORPhy z+tjHcyHhde2d~O9S0OU@@)W)2Y=Z^&3%eeq{(xDP2_Ay39=1(&hSD4pAej06uk*)k zBAD(PwlrR5BP6AoK|5>)V_v+Uxc~Mq6i*9WdaA-nTukZyc{!*7hfEYz)V?P`nM?(9 zQgH+LhMHAxj$DClG3<2)GhMjRJIj^nPzhzLt^+QmUolCUPH&5OFj&66Vr4=4tp8^{ z?yX_x*_fMy3mlcM*J%Iye&p`b+dLZnV)7hms_%G^jdDkR@88>(5yN!ssJ;@LDcbK^ zJWkxP#?kCrRu7U3QD#C(y&h_d=?90UPBt(QPZC~pmA|Ni`uDEq8<*(`O2s~@b}A8K zUn5h{8ha+rdt1i&zMlh*LboSBxdey`)}X<;)l$%9*S@2r-V74i5ux($USgn>H|IOX zFA&M*Px&-n4NLq<*@EN4pryJ*wf|xZbkJ#tXT)_v>Ep`7Dc##BQsymrC^!fvZpSKY z2l6nM^3hRya%R7k5eT2h^F=?A^a@1L`-( zvGnYAimuo=*Qo0nmK{GdyZCks;k2*hoWO%byyPNvMX-dEIQup5O}$t>+)-(6Z}k@< zs?C-T*i3$dyXjOEBO~&={NR%D>vtn0*!ZOLwXqUwlT9>-a>-op@3EO5(w9)%u9sn> zWeyW}v%gwe=AkffGl{T_w85FLR}OHfmY`7|$Ng-P4tymuouN$fUam79eDLep0(RWH z&%AHn5+)h>zZH${#<%&3HC|iufWf3}Hh=yX_OXl|{zK-?neCKQIli|QyW%~L8=Ppt z*++7s2Kf#6h)MI8o%jHD*QmZ-Dk}o1bo28CPs-sX>kM@ZeI-=%NAC-#{f$YKZPW?+ zBxhyA&TqzX1xp2EN2je?KwGkJe7uyMQhu;_JmJ|q${#zS0;(J6mw&gq?7|^J;E71`*uVuZa$&(^FHsY1O2F}Au%Zg6Gu|Pb1 zT;|4R7IvbMk8VtZvY+U?npAvPB^fpOlIp+fkAV_nH9PbDZ;w3U#Dp90@tpMllm*wb2&#WYfu$gP0^L6xyFAJo80*u7)?`#0=bzrFME z&z7Ru*&t#RY4ZN(1)%DiYRSCC91JW2c=XPY9wasNgu0% zdfWGW6uTZj%8_{%oqr}XF?^xbL-Q7=9X-$0+86`v zsA2w`BAIi)i9cHGf(L4MG_OB={t=@ynmQ%;PeM}zr_QEd?l89NT(PsfC|072V@J(BP3sis*{Yf@Vq5@GL+>K{nQYK1QoZwj z3((?In9X*#{!l>tV<@rlP>{gB&x zhvo-2gk@S0ANRnom?*UoA*S>OUw7S>Jfk0q;*A@zjSO)>f9>WRHXQrH#|h+GW_R>3Gpi;|a3*Wm*=T(7}IaBSt0iuApU1HXV}O5esWdtOjQ@ zm}Xum*ds6m^Ni)fDdSIol9kSu(q9T*lBJ6+1^qC2_K8#n^;2Ld4qDCibwlE}Nq$bo zSNKw)5f&>`32zK8DTnO3fjXv|rJuWOz+^%Bk>iphOrN`uAW{|&ANsuWoL#G-b=Rj% zrM#cec;Hsa^}O8wUB~}tJ^#P&PqarLJI4*e{Q)DcMe6~4D-p~ZXTw3{B_6Q;OX^{% zlddt}5o#v&{nBz0yJzsPlSXDP(w7Xx#HMRU)!vf1Z3hLKyNh~}+m1?#*{~QI=&P1* zzZ`(!L^jcZNB^KhRP4@l{TN=7J1Bl-b`kiTD@ralRDkr|0CgipA>xaZT3XzXWt{$e zs6LX1hVoXXufSPq28!3_7tW4)Lz(62T{pkdQ##_jCB`=zQB$VM#&|IU=tgrwUWb1~ zH>#Xm*#{4SOV#{Xj#e6mN!~D%(BDQ8T4ra+7o;Y>oqS4Nu2F=FSLw;KI0He=rOm+9 z%|mp2qRps+T+n!R-dnMgoJ)5cwHS)pMBEhnY|uqB17%B`!>R2<(0g8Soh^@!c*S$L zPb7B@)GMf8?05PErdH>4W!~h1=~Wle5UQQTCgr}Hd~F{=|NLBy&;AX_7Q2)8xV#zW z?=71&&DP_1la0)Yvt39p@=nZuei3}EKcwoZ41%?x+v{pl_a~-wyhf632oCTa;o?eR zC+;kK`e+ojkJx%dyN`LH61tcgOs=Z0LCDblVF8j)^zea~m1)N>sN<>NGrhh7{UZuO zk9`|Zm8q$9jk5u}2%TN;EJI;nZS0lg?w|14_z26ZL-FuK`EvbK@&JgRel%sd^$;;* zpyc%WEGNPG`Ob{ZX3C%w7kCoW;aPa1(Rxu(Zi>0;DG7Nb3OA5;w ze1jb<&T(!-E1+*uCma5mmDpl)|HIR}^~nF2x>(k$0VbbiCvN>1j=a5AL3^5ep#EC; zaqk{B;(zLPZgvp%zC*Sm#T6})SP6^4r_i4=?|Lqoym@g&1 zU*4;i>`&jCDc#M*Pkw)>Lp5k9yU%KfYRx=GSqZn}LACT0>b%fj36bO2aIMt$-xX>~ zXZ97{C6Y&x_~374+zB@nWtE$3$)KjtR=>Nn$Sy)LP4dt>docsl;rF`AjZz?(r3y~5 zYhc59w`(+UH8^OjH2+(%7&d#QNRLQN;O3ynQZd;MG<2ZRV17{!KP{KVN@vMjc%^(} z=SvHC{q_~6WYYgn>voSuU~Cz)x5ux29WKGZ`WewRwmxjU?D{@&r3~B#14DV-NS%E3 z>ac6z8uGu{EqHhznN!_-X^dvk8EEx#@rZZlBbD5{Sg$v$*z>0;WPKqXYy{U9Pk-Q|+>T9ebxjX}=i7QK z_Q#gOcUPCvI}cZZqMjl(WUvlyez!`yd#8|@H4u4d6^d@hPTKT#gG%e+QT1QV5OI5{XJ^VhuqniPrEcdV)~gw~7c-{G zIcLhBW42^}+}LEIp-)qQ8OUu+GJz*;;rzzVmRD zEEQ4z@=V(;GGBSN!^iF%>6w0W)Ehci9Cvj>|pkba@sm&M*rHezeup?j+ z?9cPE+P@vdS-YF^MqE^snmt}GPfo2Pz3Sns73Lct^6K`21WaLxRk5&Q@f03;QrT8e zngn0UV|95f=qPFNx?T7GC7{~<-qI`m+W%SCEZ+R*4U|rz#X#((<3V@PI_=-w&KiGg zkdM4sQHGe8Z))V9n!4c>XshExLw8k&(w)4Mvyf9p{_w3#B+n68avNl-~ z1A)6Qrwrd*EE?HR)V8mGf*pnm-TwV{5GC`9Pq*|9nb&fLDOXAcv$)RP?6r5tX9nC- z&&|2vl+=%`OuI6eWvgVObbDaeu?I!E#+eZKETZ_|LslHlW7aUTeviS1`S^Ma{|+K{tv** z*D0At>>7TW+&-$ybqC+aOjKoz*#dV~NWFxE21f0Adm-()Q~zTlg$|QQCniO*_;DjRXl_N^s=36kpuyW^{PdCo3D`1hH<<+hPM#aQCB1TSb|Aq)kazR_1rc zv1*Qgr)OM2(=_e+9;5dd#%K3fWFZS#LsUs6rU8&qCtNRkP4T;diC*|_Z4lXNuGa4v zhypaHgl0)@s^zUFs$$&)c*A$&@3Wx#|E%lZPuyh1hg;#ar~$=Uw;r5NQH8b?lQ~%8 z>GPUToyA_ zh=vM<_{Pq9GKbOQN^r%<0+yftZo2z>9k9yS3$Bk2;T@h=-TDn5@sEP_U#B7lO0c{@ zRmFuS*x9iZb!R^nAvN;jV!7-vil^sq%X|_EMhZH++^Cnx+>5U)cTSCg*YeJW2W0M| zki+a@uhlo8erIXE_Tpza6HOzb=@1T#_V#nHE^D7JO-JrQ~NfgHJ+tObM*^;$N2D!E1rt zn9b6o`jef89CJ4VV=Xh~4YqP$a&3mReHq*3n`@C{qgo<(vH_IlYtLLYu0;o`y#?yk zfuQ$9Kc7vr6pry2mFNh%qv+ZtRTY6;IOIVIsto&vjuJnEI2Ydm<#f$ls>*M)<7F`p z+`Es`qA09?WG55F-Ra@w`vV-59L2kOl{4f%k&%0de|!$p1u8R~Xc;Kt2TWfNtAB@S zZ=HLiz2)f5j+%`pX7Q(CL@V$P;-VtWnOl!~;m5<~SMTY5qR*>yrJ_9@=<#BKewRTB z1dKTEG;|;P-#S(cX*8<5I|lI^(;cl6egFIW|MV;W_x%k=BlF;yV5m}609_5;;^hMv5k%Sc!n{IIyq(+s7{nbI6S zgRtl6KW?wl$Jpj#Dg8jT6{rGa%x?C)2E#li)wt zb^9XsARIV5Xrf2vS$qsB4DYx9jWJO#Zp_>m03n6qvy019kg>;??UXS>^tK(*GA3cr z^0oK&jkrnZa*gD=szBx@)flARt|a}MsdJRxI|DfPHK#jAcL8V_ZTAI5F2WK!b;N{1 z9C8U(XtFVmf-vEp+dEcdE4~S-e&1}e z%QQo49_sSo*FW%NdB6I+Rv&7d%6KoYlZ_)ebffl9OVMxVaDsM31DWUe>~zfF7)GQW zcHh4~N9yNytkKO6!L~lQT-X_g^_M&I5>}h>qBhgy^N&4X-X!`+b7vn~*?<01w51Cs z0@4l+ONL^Lu2^Q356SP&L2C#9HlUJf%lPd*1d+W1RJ#_YFw6Wyd{Z^ai`Eiq+LAL5 zp$fezDfBc%SF*6*qx3FVoULPSGp&J@ZKq{DgMQ;0|1WlW!C8!}fBH@m#+xCh0_LuJ?Ax8={0@!ghxCth(RqiL7#w#B&^n(j9hSqDvBWS ziY)~RF>9usiE?;PSfewRIv?@km`<3U2V6O)wh=R$2HhQ3r~h)^z>kx1gPX6ugJX|w z%spY104k%#YAt~@Ol+4bpVP|6gyRf}oWX$@zk6*T2fq+}I9{$%>RyGkGfbUa7V#v9 z=Qz8u=ySL&{-ej{JE^a^Jl^IYR0aaoncZqFF+jV+?bulrd&q9-$}{nAgu0NogwnA* zpd4z_m>9Q%>+=S)Iz10DUZi~Wntu>J7#UXGeET8zp0cq=pz@>)_YeK%wTZl=einV`l0-1n*BjcuAAJVaH}nJ^vOmP- zew8(`*k%;?TpIT8b`_r5r*`oDU<0!45m)o%OTkU_=w(Uzb!0P+kiB^AGi;$+YOTFj z3;OgQsAs$}xCW(-JkU+(q^$ z9%DMmuc1P8X=r|D7dYuMZ=7Aqf;p?cUCySBP-Ss6pq}JfF9$kkhPk`~n$D(7^X3)U zxh?2Sl^!+m;GoSHzmOcz2$*&3yY&SIe~O0O)SUra+mORAevJUFiRwbgvsg5h`ANC$ zJ%{sL0FMF_3J!->-7J1WM-*2aI*7ptI;8~x_^}QbH zFGY|1cohmOQf!<*_C>>jxe;p|ZxQxe^qA(veMAfEF0)FKqiPa5@WNid8t#=eJaO5z zmr&Ca=oiQ${gE0b^#<*m3Bs#k_ggVzD1Y3Yc3Q6o=U&m%c|0w{)Q`t3ZC@7SP^pae z{)s}I&Yn|xu}}!#)orybNu5#U>{UVaW7YV1rT;t~+QLiDbC;VYDcD-GtbFxYIY#=o z@W-r^``Q2ZytA8>d>qpY9HuQ>Ifd%}bKMT)ar>i9<~5pF4e!dm1Y43_^5ISI%xVa(}G; ztlVvC=(^+rjM^EIWC|3&Gsf|AuigLd}(GO zdBr6uJlG{IRs56Vv6`XU13;n*I(Hw4dJH5Ju{cH4+bd zNFBWumyP!hoUTK5AwTY$?d7Oj(x@{hS_vl_WiEO!l%qu~ljn(u51?VSN1vs-7R~C| z-Q!3-=5^caQogM8;q^TqcLWP`;8$g?a}Cd8K(J6mS!t*rBxAXaK8WUl=z!R{`kZ-? z;W`i}^Wp_~e)amm`t1wOWi~qDx_a0gZ@qydZw3UHOdK0*Ti~~-eL-YIKj`fIw1=@G z4nnRLuJrFH2b<@#mRk&d;GQ=^XKtURA+Ta)V;NBlR`-SnnOVmHR}P%t1q~2&Dzvb^bT~F558b^r9d~=t!di#E%80$aZ~mJNdClVCW|3hFOpwdoZkfkn^npwga|>yCM^&iwSlN%qC1o=!%Nin zZe`Hur6UIXc?vZ5tim(q;{o3n_z9I5!8<$OEyKA2k9AJ&B+j;cN@Q`{5-hT;FOG2D zPDn8NYaR%nh9`ap^DPw8;pmlh*A5wc!?8mXH`bh>BQ9J`{nFYlN^~=%T2$}NL!nx( z=-jM-=GR>C<)&tia)CQ;YHN2(y@80z1$pJzfAbfLy(mvqi%lU+>+AQDT0mlCj^{Dky?Tp8z|J9x*8m-}S zS?_o2Px)WhuY%`wr?#DDtAUZLzot}trJW2XNEuxxPvD z7Kx8f?ORLYP@M$Eue9C>2IqrrqK9%9m5!agNIK8F1S#)o7l~j~i2LyPftl)ku)jP)L7j9uXZi~aXT`8d$j7G{`_^_1|?VK#g{a_w;;cYwmmk`1^>!lfWMxP z_P_d*2d+k?Mz7b#{W<^d`DPQt$2|dW{h{(rbJuRGOMl9V$X^?Gis+(A!%eXdQ$F~2 z{r{Gp{8Zz2=s_shH{MpQ-2VbKbd7pMq$r@b#Mx?GBoBTS#sgf;QLsU0r!bAvJDj6E z^U;CL4~;W(<$V3E@!*nMgp(8L+jHQlZ0x>JjN==$bzaGY%cN@8R<`F*_Tr=Ck>Xe+ zPV+7-bY8|K>W~|^Lcjd!ukCCh%jY5woSylg)EsRtyka@`^v<7tE2Ny@(_k@22SZco z!ohzZ|NDN}2W(y6-QdN^*#)ZIWm136`@8(_RNcWP?Til(s{L=eAD4xsEgD@L;p6!| zNuitmJwE@g|DUP#>fL#_Csp|DhKyRt&N^(%?QWE4BYiV&7{A;_p9=Z%nfW3{Wq4S^ z)$8E<8VLT?2C|nl!Cr9Pa3kk;bafUnFs`Fu=A+jS_tHHE>Vh99bv3>~u7_O7pydE; z@VY9)xgiMIB>b;T?yVn~=cVJ=d@AsC$mH6_85N)DD47Sn7q|OGdqF1)|Et}CXq`F={n!r+o56n_i zZ8k^1MTfA`Gv}UT1GnITHrF}Sch$TlcC#3__Do+M{FsetdwBNUUM2l716#e-Z|7mk z+TQXlG8s5W$nTtDXP{^VNQK1TsldGr%=8aQ-F~$hnmer|kN91kRrqVo3EX^y!I4%h z47X6&Xd>>{;o)dg_so@Aq#}0KDR!QK4UEg8MMlX`@#k6fF6h7}RA z=buVWpgV`y@~lBUb_I$=bjP&g8k(pK)1Ya1YZq|wThJKF@0to4JUjqTh0}gJDU897 zmV+88A&u}V%Ju9SvY+NFA^XQ%Z{ihBi*QE8cr+HaU?_~Of|S8`Dy3Q9fH2SzNDqub zvD@D-*Qy)gmb(dz@|h%lN0Fhhg^|P$8oOt>oF;t+KYHA|Keld|nbv-|=`2@%Om3aobw< zbZ!8|T7!aj2xR^Fz5QMOpJ`yJyT6k53UG1mE{#xSCWhoPmD?@qFt(es>J}XxL5e`} z^?Ub&^jUf1eZRUut ztfxu%c`tO8@m6aa_JHbSyyz20K4R6+-ec~>2>8o_qIf?jBUvSstRdTJuDIyu}*vko_P7yihr z2*Y->(6>y+Jy74jb^4s>$!ka;A(Vd!-o$m_Pe(6xVpf>q&4 zxAiv=JqdJ*22xWnTd`CpMB=*Vauv1N1*1_;T<6Qp3oG!eVr3$94XMx2`t?8uH8*k5 z+EuFNK>-vie{T$qbjAmVO*vYY=b%;Tr3{lWGtqJD?XHEcFmUGEsdJ%v84od4T?kO3 zqQv#~D?J-;fZThvnVyf+asBtB0l!}4pcIqih`o3rc+rV-he!9Keom8gPkjfPb{|h! zuQZ7FUK#ht50=B&I=-pp?+BvTnI|k}GJv~(my*fr-{?A+duXTg66&Pw)Abaip*$N` zy3gcRgTK=C^*1pzk-9j&-;UAd!SZiq|3?B9QpX_H zY(ZjDY!;7D*EL;`w!rJ}JbOhFX7QqN+Bmm+2P!x!%g&s652^#_x2HFYQZ&Ezhh<4K zP)rOJPN%=!O3|7Z?jGhS0lCs!vC39M_)>DK0!J+`MbnXvD_WovwsF5MNnfpjoRKF6 zJ9?-ocQRy3=QOz~u{>gQqEthmU^M^QkUbh7G`PC8rT@gK@`RR5&nZlERr%c9z(Mhq zoi=^`=`%hW{=Lgo$?Ct(_kWLX+EM*vT93;x6rNSFCd(Pz8&kKIsYL$yJq$T0S>D;J z4&#__TW2JQ58rI-rD8b*rwo1w7P_7LQ}6Hge4nc(7C7mG;^JnXOPl@SZJ_3(Y(f7& z^(5=4)9O5q{;NG1q}xl?CwwsMPx)WhPl3Ww?hk>BsbIwRBulYC1B700V%;Xg_^$>ww8ozDrlx9Ce zF~{bq)^jHKS3VT}dOiyO>d$+qoir8`6ZZRa{@>4KoZ&IIanvPjJAds(X^r-u@(;27 zcZPx-f$FE$L!mYH_;>yPmL8un{gr#?A*4=`zCw*2_}=1vPqS4xTpL!E-Yy`7@``2B zi&b$Lx34Qkf3pkrXuOV8PkVw7-rqml!C{2ab;op0^FIdqUAjitHinX=J$SV%b-)(nqGqQx(~e$ zZ^#C&x3RNSbruj3|LK!B`G4GgqFc~=*bDsW(VbPI5ACayO7|G~L$H&#PM=mYF21KO z4>it2Ssl}aqbF)XN9WA#Lg4|-8U5L?JFOY?Z!UU%?x{z=+#vovTZeFudRgymRuz`c zc{r(7wc?v&+oB7e=fTID8i8i=?O5z_wwH~y2U``)o?OUH#2D^l49Q+KC=ff#Z^GY) zeLug_*8ZfW#3vXq%>@qQBf9cEQu!{xAIG11`YRQMb10*BpU4FEpK0Ex`>Oy2p3doP zvx&r`HyWCC=gW{qc`f~nkv%4^u#_jsETPv8J8#Vc9oRW_YwwGb>1eGMNFVMni5ug2 zBbH7kLBMWykIW6B7(4&+JfBtrIvKVJ8C7(k&6<7obaRMuyv*;Pb_Ie)hSui0p*7%8 zb(hEZDhp-n-j>Dpbakkc+l@u3nfOA;RNrV~81qDgSt?(D#r^T(1zQ#ADC@pRf4}XO zg*%hSoK!;6@N-ahYH0!$<-`s_0iB{nJR|XO=Uz`n3T&3UQ7t!)h0+-Cmp%+bwCCMe1r!92k-oFXSdHxR}*m&ZXi#3u&qn z&oulQ+R!ApqXrCBH_4?allmijb?ey$bp+?3;!8gpZ^P}1%|>X!LYNF3eeIVt0d(m#YnL~Y z{?rKx5p@|n#3?Cz?n_Lcap`SX9IKgazc7*U^{Hq|EjlGf zr*w$SgPo*7Nnqk@Jm0#^uJv*iOnBeUj4Q;zlu2uoZ*woS9{>I2Y+W}dzEV5MnB0nu zr`I33T)hmm4e=veiYCA(p-{YFZlW>4JJ|wZXMe67u1>|33DYvK4^t33b@}MN7B-4P zG9LcoJ%ii6itWzdz(A>X<>Ip!9+{cFY7ea2rx!tsZJ-8s6xBKI8 z8&ZoNpZBXOz=wPK)h0)Pu%72PO*eZ=>zEYUhE&owR`b+{;%C<;M;`+=ewlNNQ=G1j=4EB@)=aWrE`J(dO|@f zZ%%<%*`92#t!Bumv^!)tM+R=LHyqx2_a1!t@^GotRTKYe=MK`e8GN^xk^Xc4e_eMe zd(S1GnsGJ<^j&K&O?A)-{>oe8U(bgI{_0OO6bf9WDfs{Jn#7*zp5O8DH0kfyCocVp z^-ufe)pyQ5V6;J{c!ORxXRANQ|JyvI=x^)8`Nb5}ybg^Qgy_JKD7zzTv^(5B5V%eD z%U%$t3CO)x{s!3`ii*uOOpz;N-#xuS6VMD{uH3zR3f|C6a~)N%h7pH^Bg%LWl4c)# zRDY<0H>oe~oO6L z6hvQg|5N_LuAja#^)B2OzBBUb@Y6rX|Gppdth#E&h3yc$(qU!YtN4G)|E^aZyisT4 zoD}@{-}EF|5*y{M;Pve6>s9bd=kfgS#pn1f*+e6bZWZ(MZg2TyH;-b4Yx^zLT2YVr zR+>^Ykw@}-I>7@jP9}45J z<@Bpnlhj#Q-OIp+PB{!gH6w!5JC zbsCH@J>z((ypB>*pc7l-@gC0&M=7c;d&1cjs*z(P&Ua($!~533v2Y?_+njxNuW>$w6=}rLU)W^zNA%%u;yBq9a#~ zPS=)Z=f-IW4|kmtLW-p7>HcF9H@R$opfH2&6&`!K;f`c_3zUX% z>4?tlC5*-PvNzt|LJ(Qug>v`!h>CO5o9-N$fG4ZfbyrB;ceW+v;m0q2gNKCUi5lrf zXnKEbS6e|7wx-$`6h7z&=BF#q_fbtlNcZs0hrHjQC}#C+IjP70F++J#@o5AG7*l7M zJShhL1W}`>Hvit|qdy*7qIjK*N4AyMZf*Eyy+0Pt%{L+($H7OZ@#K+b48-g0LT_~L zjv-y7+|1I!YK*L2t6G?tf;YE5Oz?U>im0-ytt)J<%zn+;k-uMDb;^S!MY&bv=# zlOhWxxM&S)lFnvI)0V|uH`mvoSXS4Ob2r8z;=w}i_h4S4xBE@yy&pN?pWb~x=yoHC z586H*MdV_WFd6E5OXfe`Zs~TPfFNr*>xvR8%G&34l|M%(u=KXMP7XsKJns&&U4MT) zQSNqYm6v}GPaUE<(E76j-QFEgG-qwZzEc5Sg`^(5+LxM;wd`~hrX3@UMJAnK`z+TX zS*`|1f8w5JxyvZ-Capswy$T~X7Qs9_yCG#(_w;1oB$#X88t%{T!>VJ~%vzM!Q>Zy_ z_rB8Z1%l%FC0nZo0>#Zms0L^$HOJ=_m>dhZ=W}2fEO|Z(43T&=FK&EuVn+j7)LH$y$H722zcAPz zd8moxkK0dGN-m=3V0)LKa24E;ep|yuT@G_6jEa&gS0Q-o&Loq2i(s5L)7SBx0?YA4 zZTHL+Zg{blYa?499OKU4dLm~nCE-Uk$9dankU9Q}KbM)B$c_)Sq^Yb$YT?pTNfsQ0 zp8V>bSWf{;SAysIQ{7C&xpki(OSA5v1gy}>bQNtOG>NZTcJ z*LQ3n*miD{*-_PnriL%;I9&RX>z5|?nm5}h()4Kz-BTQd@g@=H9Oiyf|IqJVyE8RG zJHXHJp0ym!I#<)aIEhjut;ZkcZ_WYU%@2gHr$_wbyzRPy`a%ENbg-77O0KT>0zA%) zrF0j6K(Pta)nAS@U|@H8)X?QAG>FLFRpau3<&DhSG_U*P&s-VVhO_|md2uW$A?+xf zA8haK-JlM;YB+JrZvsPpfv0d*GThzJwGeHS2utz5)`dZz zg~yPd;`cMurRII0os0HZ3#i%cR-aD3D8D|?@( zU}m4&%UzrguvnPSOz3a`$b|N8(RU2RfGT3mcG+NLp4?`+pVkMDPFqzE4pBhgahU!s z8Fx;&dTH`wy%FfoaO5?GIK%PxJEoXRtsw0AQR~Oq_n_iI$Jl(A3wE9ombUSUfIuJX zD;-xUn67-3);r}9hBQ*2>^5yduPa7D0*e%w|Lp3Q9dQX556&MxcJTw|61_Y5m}2lO zn@(gVcOfot-5jzFuR;xH{tJ89b5UUG8cnM3M_B&6(Mh4h745G@n8z%Bz=W#)jjHEN zNj|X=kFI7Bni%EFy|hTijaRfUv*c00Sx+T=f4d22g@;&8N+!Z2ok01Vb3Qnum#FoK zGn89S$>?rz#f7;8vJAqWxb9eFS@a!W2+_#o?eQ{1S?-&9pSX=+DTIDNX_AlOUYL9mhOemdG@iIUvk@kr+%Z70G5CD@N*J$d2c&lTG@h{+BNP_7 zq@6DIL*7)A9KSLfahqvlD-Hh;M2>qWjep2OE#DY}VQoetgZ`@e*QYZipUrN+rq&N| z9k|uEjXx5Gt)ImNe60tWz^&ukPbR{)gKsqgwo?(3^;_vUBWMUwk`}~FZ%JAOqV@K%e8nJx#!1}c(+fm_RQEFrS22#Z??fw4newculb}tV# z;=!Y3?TTa^B)93SxG#}F`qtA=I0%nIV*ZW0S5LH}OSaDawa*)HSnEc22=55as#uVXR;dq`-IN8efJkhoRPl_M+GPnN? z*tXqgSLFeUiiHh#Xc;%fJ)oh==8hyqD(1JDjl(SDYbE6KMNv}><4mQQ+W09fji(=m zyp6=izAO5-xm;n%?6D$4{3K@j%(LvVWTb2zlE3Rcod_E|yjE3j#34V>$#W-rB8%qA zl@D!|Sp8Of=NE|u{Cio=)=9TfRK63A$wjQxnfbOYz7U zY>3TUfy1>@3O`?v>m=DH635Q>;LiCicYDdWcUeAn{;`5oSUewkBs^^d>@5}>8qyN* z?Dm@86TLJ<=_cuO&lULze(ucN42L32y23;y{H7H-;|qg#UYtbxm*=k^T>F#sYwGIj z%NfGwM}LG(@5}=#U772drGt1w`V!Vs7Vr#h2Ib#fzk zF)v1sccKXu#SJ8b+85x^5#OE!rVe!A?-XSHMDkwsJioIKlX_g!V{}{Un}AnKDxI2h zBXPdE`qC`#II?=|e!0GbiOBUd@yf552C7DL#l8uWS1Wtv{tMD1y=Rl!o#pJG@I@)U z_7&3*x;Cu}d)!?|tW;=x9lK2WFLLx2SghMbacwj_u9Ni>1%8dkciR?Xr&w6eSV<=i z5EaTq*cyuPyRs*%quprmvQzn$N+XPaJ6jfip2X91d|J}=ti+ANZN*9t`>>edPRFe0 z9L$@>KkG^81vYtpIYT}=VxizcHZSWiW{N0#8$AC7k}a`c2Yfnkfv0ENeWw}B=d|89 z**%OO(so2`JZPMBChT#l=h}uOIeiSdE7uxPkhOJI`z|7 zkhqZZa0eraXZ1WWyH_%!0gm!^9C`n+8M>v}+iJ4;iNlMu?Rf`(qp-1XLlA2}oGS74 zjsH1>t#Zzv^#uFjfyrC9XOiMXq)qOZ>&fxRb45HVGXLqH@&5O?|IgHVs^zw*(;G}W zVw~E2=p8;~VunniOjMH3f6i3Um%VHz@oMk!+sLDNDzAIY1~(s)i4?x)0T+@k9Xj&h zHP}|O?9BOk5MEkF^?bQ2j|MY0h2NBWf`HzMW!nsQ+#SI%rkrAh6b63nT3J_k{LI_> zw52{gQ=z29Q@Nt6SlHVjp?nClp0b=Mp@Lbat?rEKWjI6GD4OM4g+`_PBhP!Kp!?JP zqV_u%f#sKndg>d1QAZx;JJdgrB9Y4A^Mpd;4$EC7W$wbd-Fs+eC*EVm1KRTiS}|xW z-SDJ!{3UJ*@~`Umyaf~ixfU7$A2bWx#gQBlfnV&-a~$q{0qeXgmv6Fu2FB?+=aOhA z{H$8s_-+}2rPoEs=KOA@d3z~b1<$fD-C#^PNjy6U&61BFRoPH z$i=v|zXj#Fd~jR46!#N36H-Be!g#9I0H`hx=d^t#;O44O{b%hbuo58W+_&xun#n8Q z`V#mSw{HrtyP5t3YaO#LE4G;8<#0;e?z+bi?WE<+d)pnq(4JD(TeyS|I3tc-ln(+i zy^Yt$)C`eJmvTKPG!b~(+3yv!KF8xv9Xn6#euLUkib|g~Ug0S*wh@(}K(xp(c*PSL zid73L#m~&c;m~zQoACU{7&0v=UY+m(tnaBzxo!7AOXCJv!TNCAwXXEe=`ml@mq&lc z=mt`^@Y;KyvMODW-+snBqvj{pxX?IEl0I5T)TCUU`@SR1=Ect(zaB!oVbJ;~qo2@& zZzj|;p%nGaA{D8Z&H}^S`|FqWEs*xci(@XCF(?%9WGAai8VW8Sh<-+`15Wughb{#j z#jtg%oG0$DC{bQb^vz6&6hLZ>BrLzgf$Cg|uc%%ORilV7F3vXFpdd z-sU>m=VaDJ@_x>0X4=&P;XbU=Lf?m1fyG2%YcH^_Sx#ifeCWJ3DtCWy5_edAZamtQ zhH}YNvx{4+(2(Vj-96=ec->GgY5z43^d%Z)xh|8qfDbL*K3-GV`%X5Mu$0Y$nR?Ru zz8__1&+^rAY=n&n;~4yGm5>TQJxfiWziY+rdp{_t?42+zAY;38cP6CeEC`)&Yr~H- zro~%Gf8T(WDfN$n0jQR7Sh2G)25gj-qOxARK;k9CmYltX;4>pSu%4W!_Jn&ajEOcv z+be#Sp8_QRW_Z)-vYsh$?{jF`c4;2ITS+&E*^$0TLNPQ>!I3b1V*6|17sX)cBHsA) zHmPf_x%%zX*(AJPIW4Vms1t%-z5b?ON#a@0U;OlP%_4*@g$8^(Nb<4oSqSAyu@M{Y zJpbBe(~LlySa$8$0xVKhR@-{Em>pxla0O^Aw0(JZ4Y1*^Of*68?H z*zagPTt*th4+nXMHc|GUx>lNffQzuwx7aVRu#u7+!gQGaMnTfwVnVy*-BKoD5^qO| zktF>H6?8vw**&HwSTb2zcb%R5Cz(c2HW0dSbE`lw z_tIb&rlSN2Tp?~U6vCGTw&Zco9t<_ReD%sfHRAp2tJ~P(B#8mO#I>b26o`s8uZp-` zn+R3kLP{j>BBssFS%cb=uc&Py#_M2G$;Z{)mE%IlDB_i87&)HxWFARG)vw}f<) zB&<N&h{Uctd+Du9R@lH^L26HZ?Hv6{Z$TDaWwbdKPmyY`5GE}8JfUm&7gdW9;tJg z9PmK+*$r$>(EmM?eHeYyJ6?Z}cz_#-DavBaIK-Ol{}g}lE3}LA^7&-hg5pngzD=4G zuvMl6^QKpjxRYjg1~qRO-E(DnMLG_jKCSO45_k{7;)eE%?gcQ;mz{e2=@C%qI<>|z zJr-gb?TP{-L!n|*dU!#c9jJLQ3f3*ilEgI2rR086zeb>-|H3&67;*IUP(3NaW4Fqi zetxt9j(WX)q~sB(|6)w7@gV)*6s14h(7la;@~&N}Ca=NE&PR1Pwj9}{?I)k^3`h0E zg@`zo8%SrG|8neS9&)p(uUEem1`5N3`&E5ERM-9Np!FpR#yN#nh4t;R?{s>do2NdC z$%{VDJbM#DF0>`}!?Er;SYErH z|LjFFJ};vA)K~Z(*XdS^32$+O;@QcEM+00?-plsAfJhi9=6QubUV03UDgo>TI%e3< zXW99ES`p5aYCGCyT zOA7|#p=#aa0^VK?h;QLhosf+Mivq{9G@Xy$?Rc=7?Yaf~woTPrtnu%(n7agJu z`r&S@qEnMf1F|vngs7jMhA6(@=H5D$=y+G;=J{*$$k|^kGLcdNIzsb5tKNKsr$U`7 zn~qN5ptL}NlyD2~6El2xEjo_2L#u_gqx&Z0jM6LW(bwqL{>35wxeeZ>%PA;+sr41BJRW3iwM9cOt3PT2+rYA`jCytfwlBCS|t@jUvQ;n{E4!*Ee!Y4Z=bct0>h zio|DnNXr|ol01Xg>YvVyXVk$(NA1%_&kLaFQm|FZM>>Key%c^M>Vg+V@@IY+knd;D zcBeN%4Vd3?a#*r_hwA3X^?uE_L7Bg-%>VF?&Ju?%ow9F)H4J&qm2yi&bJ5`>pHgU!b!Mql-x(9lP8=W5xb8kX z3ic;c4Fzmj32lz_Zw=8YXwt~-mh{(x(yqG>ne@Aj{x30(p6^q@-|B(C^$qbk31 zM-p__)d$-72Sj0tiHe(@!i=;F#2`O6XJ{OnLQO|m%>3h)r2hYbIba2`#l>`?NR&5t5k{*v)35;Bo+-~Hoo0{RDka>i>K4NCTJ?xIHf&nV${^hBaGjikBJ5*Y1HWlcHO0c=l@cIm<> z-pk(~5_h8zE%}%k9Y~&3f+}x@)SW8SeIlRtz=VrL{$h7slY1jj=3#>w*mnoO$OxCvoESPH~s}9kA$h?&w%0 z6><7X@Rh^g7NL70$YA9(`X|FUCX4WreYa_UTm!5!jTxvB0u&?W->xE(W$t2(_$&cHQw^NiLN21>Hl(xQ9?t&glK6=K(NozQ*)! zq!`AloNIZMYhgzj-KU%jZ{eH48`1f9*FiLvhMQE%fof?nv4NrzhzJz?LGiGGu5G%f z?xowo=Eh2?Q(e(8Q)}nSVxk47f4^k)W8jA3kqi3_*Ezv?0r?+HDtSORL1ndz-5R>b z1}HPzZh_U}M}-UAeGvG)uj`UeDt=a(-DDJ`jNiD|>w)bR`1$F=5sF$827F|qY}1Lx zHI4BHy3~#Ftde0*g4R2fJs`eay8jiqUw7GpN=yg8Wzf{U4X^_5e*4YyG}>ry*-;qi zE{EJ6wi*x5Si|UZ*}_p8Cm1fN*!oK<9P2~qWi<^+9ittBDGVtMm@>(6G|&Gn2<(Zg z9lz=a{)dexd)M5C<~8SUMJs#Z!E_gE-?B8+vlHVp+MJKvdvjW7UXl8amqTiXPMrXk z@a;-TOC&B=$$FJ0Vo@nn?To-e#1074nU--q;g2Do>W^>V>4M91YD&9=9^w9El~>kfN#Y;C-s+vbJ|R(Ddu zWJFQ+H;HrHTuOK4x;M6h5tD} z|7ZSPx-b6`@iheBT<4YHx&g3Yq_*VutiwC=;-v#cwHVrPf_ZeY8m4*LqIRqw1>dI> zhpQhGkj>;h|Lu}on9QKolFaOb5&yc?Uz0YFWXha4zBG-etR>u$eG5R7)*>TjV(4?MdpEh5yK(dRz$+1$6$ltc--OB4f?4OC}y2qw&?C zWWj=clf_qe8lq&QsYFfN5KL|?eOPaq3#BH7r>7phK>;tFpPrgUQ25Lt(Z#3;gY`{r zFHbFyeudh z0fOvwq)*xRg}TzFC0w^YgENXB!64vbdhpIhI3DCIck~w-Z`S5)H`ATKO*(<1MY_YF zPmFCnU&u^UDu;2ghK-@<6II!rr&sa%ZzJ!=7rWuzY2`!N2Pqgpec<MONl%waU*(*5AsUuvbCJ)#ikn79r1QkuyODWx2Mz?Bn?(|O3qY6Qr;2g;)H4l z{!S+(zWXHxFqJE-Yggfx$o&pmc{_1ls`F6)7Fo*Iy}`OPs|=J>iqeU0eNjr|$302q zUTcX@!DE+XMTanlO-O3UW-EoLkICfq&xN49i3QR;g+NtnzW=`T5N1r?zV_?=I*MK3 z#FN$ZT3Bh*%-Fl{BYw!;@ThKUEts{o1=B~8eu@>Gtf#H1DSwaK2d+z#G|@wt&#su5 zbL^k@|E^@bdair11I6`1Mq8x1QL{;i_wDaVFfN(Z)!MuSF?W72Ye*L2tbObr#bFx4 zA&iZd`9vD9)P!f+s8SQNygq>~N}a%#^m1ydg^I|?in&F(v7O+qGz~r`*#I(Ue))Nl zaZXqB>ZL#h9%4n|z?R@=AAmn!@4NG~3k==~(?3C*0}4KaHS7UVpl*G~ZHRb}XNBl} z(&sy2ql#qTvwijOA$QNAO!?QKm+6;wQH+6dIP|`3CC>oZG-dInooa>S+Ee|yKNf)B zAUwz?B@lGj8_wu6EP#UV_1b%{UcgpuzS@kYI3T43xPCK^gS)`9`y<;Ippwz+k+^dk zPQOZD{Hje$I1dYz=U@B@bZ1$(Z7Vkr#hWu1mDjz&1#4d$=I2`prJH6uQrO7#FVFnX zUPV%eZ0Fmr3;|up_4c*O>KqFpHddkM-O_`vSY5s+Gp{37YZH?{JeYFM!^VpSs zyjYsI-t$u>AXf&L2yZ7qxx?KgDWL(Mi3 zBh@qFI$Jm?yJ^2ty`QEd#su`Fe*|nG%v}w{sDIE=!p42_N5?0DxrSO`v%v&@YRq_J zQpZg6n{POixR-&l*)L;@3H=m!CB};EHJu@G6PJS=<$Ced#TZs!27rUF zUedN>uOV)t|GrYxS#S|xljMoJ4RMDXi@Y<;?4DnhWS$t{(ym5*bUb>rr!yKVE^V9`)a~KHAiWi_>lV#&6=2S505;JAG zXbC%+qz`eLMBz-_RO$iU1YE3rW;kQ!gwY?~mR-K|0X}FXnf@|C4^OBVeHffg!NK8XZy|M0JY|_&WR)v`MJmDfPtYC#`P6nx-mELY zWWg3Y5&s&bsrU;tEe~RKykFoc(syLqj_-ztPZZu=iT^S6Y7ZK>UWhM<(S(`Zb~l=; zW$~iOx0ll40(e~b+qMIfiSVXX&C`)w$IW~_#^ZUX66U<=W13d{;YNXj;+R+sT=QS| zR>JiqRD`;{u-teVc_XdhM&vtmJfo>(!sa> zX$EaL;E&Oa5}SfxY?Y1bVR0*g8(w>zCRD+NR-ezn zbiIc2B1YZh>LXrul66)|FiUgUVEd|4ie1ZqUCRIHuBZo4J|rS#uAce|_Zv|Bv?0a% zQqn)JvmNf$bkM&YMGLp}ooh&4gKr);$M&=jf#UO5p1$p0q0G9e!+C2O*tV)YNMp%| zj&)xId}jSYsVTVptXVZ0>%`6kFyMUwB#kilhAy*I4FRuu3uwKT=ayK?#|BdEFDOZ{YW&Wz66=$<&i#EmuVuhx72~$y88K#jX9V?OP66l`fUZCXxo|ZzlI2vahn!%P9*pDl;pRH z)FLgL%Hhu;-Jlq)m#!ex59&_ryT|2I(0OV)ljaQ#MQpmI*idI2s^g1GHWrP8tn!cJ z+Lw#*rxcC%xmsq*WrbpXje;Mbtvoq8Ww``zN;aHrB6S=+g7`PBk~*RW$pV6R?&skF z>DMgBN9MuV%jw`i9-I3rPuvjnq;NH9so_`_sz?W+T_<2v|h%XM2JmS&D8$sm%b-&Hl+*@9Iu z!(0klavo0_wx|bryAzG0{dwTwyLhsOb{cp+N|X{Kr3hgoz3S?3OvIC;dsYv>5+u|O zsGY7z&0=TaT#z0OBVqjgm-k+4J|eNU{_M8nJ@~2JhrQ!aC3HMw_#|WT3w-+5xJvR; z5i-nIxQoegpf{7od_5@#Sk%qh4sNJ}?#6*FO4CIUy#J1rz+Mv1@UKsLXzb;1E7HHU znYQo_bNfHe+Ztw8E8)NUpx)hh$FrasU`}pZQ8QyCo=eO*yMuPdBdIjuRHKe#IbS5T~px0ST3k?Z58Z1cc^?#px}|_ z4YT^cdQss^zS6{5E{b`~0dX6pD(Ld`DNhw_1Lv7`3(?MesM)C1=GoZ-M?NTjjeju# z9XfaWuh-W@eRRqRmxwBeJU=}txikf*PKye9DD{FO$7Hq+bu*Slgr_B0b%DMXRpCx2 z#GJ~))Ir@Y7+CJ2<@oUnwz=t>^STd18(aLwyDxgc_t&YHuNH>D`I%ZpgJ>#_{Ir!B zcKZrJ`5Eujg=g`)wvN<0GEVyOjTxgXGaVuStmor?Vhpwpy}O$8dl`2SesNrxt=N3- z%;v-LQ|LM2*ZQNxW_9Oqn~I37sOUte8toBcSp zh{(^St#*?-T(0I*^1X29s(22EV;Qg6*HYwIh8R*BlwRJ2?wp=}ecKy}R(blVA1@5|`{Q=f%I+ zGJvzXitfPy!=SPfyd`j~8`Zt6r#_fx;N#y{&uM&afR3om_AD$U&v5hTxJeSic3J7( z0^@)4cK;st|Cu^6eB;;I`w=$JTbjB^gd>}dtg4x179JXixO6uqT*_$2Is=9}5s-1Bm9r}qC5_TJH0$8Y>Uk}ZlNE0t9tm4?=J zCkd6%Fp^}Yl06e4Baw`ZBqO`X4u$Ks_nz51E7?1K@83DU&*yi}_nhzf_~(7@`w!>F zbuQQIdOe?y=N3!0*A6JZOw;I`=Yj;&E8nCg9mjK1w}o1NMTw<1!_8IB;QztV^sneE zyml*KRpW6qT-vdI>mJ89Sh(qu%y^*kq6MXcGm8hYZQ4&!N-vX+Jmm&HLQJnwX6PyR z69)^>^H*P%X9~e;T(xC%&jF{?KW8}~)tKC1{miSys5!b ziIP$t9(`}qVe^SbCTE>G28ng+-zK=+Z`Jh9EK}~-T&T02X-YD@vuG4MOhO?T@LLSq$>C@a*NoPUGkOY zNl(0_IK=p zj%N#TPZVqM%+fTQLP8IEJ8$i6?rO)PYthr)%!}A-`)ttk9V@y1$(uy^+EJKWPVjCD z9RQomv#McQ`M_5;r}HPd1^Zi`Y}HWAAU(}vmL`EJcowibC5W{PFI!PP*++{=Q51I8 zU3n+D$W2o5c)KmQ@4tGvioF7?Y|^dhYYE;Xbbyzc7LVClYsrzZIATVVzvrmKI$PYgCyDU70CsqWy zUaC-$lT8hS{{#$zG-bNQZNV;lU^Q6%XlVlE6I_MWR{mmdTvm>u?*wwjxRj}wjbKQa z;7onnN4&7%P|7qviZldLe1YyaNQmxq_H(bppVLF`_Vz@Q)zzxx9JgYq`Eoh(=+$3X z!0o5k8an{y6DOEwRfga=oiiOpSRe?x9HBkHQVQK}<~Mfi80JV$9A8QZSQ?j5;1 zj}$W0S8@v|NKAWbI%&+-fk~@3MdxuN2A|}bdqueco0_SZB9{%#4iDN*WH!-jb&tnc zl@idKW4H3A^@5K3-xK-b3(-~Qz>#(09F!C15$ka#1-{W;*rgnnjrSByI0o3#pd(~n z@mAh+h>A!Qz|Jkqq^LiW<_S}wMLSFrljwQoo zG;sLyVa(@kZvje^W})X*(t9gwvr;r0`mXLPS(!LNI?QTx~k z#snDU1PrYr=~m3L_Y0fI z8bA?dw*6=CwjxED{ka5_d*FYnWJP^?0gc-4#TBQI;5m63S(RB3rCH&Q*-IwNqpMH)b*HV&J|9 z^R#3)2in4(*g4StrY>^#(h7Xzpck*%IRZKTJpFuS^%!bZvp<3GE0IptW*s;aj}k21 zgc^|GkX+nWrWccqWh@dh20`tZ^y3Ep3MTwVRTK$^TvcG8NWtTJk&*25z?U>~B^^zF z^hc@?T)J~YQnKod5~PSkWt*qxca!c{?a4J06C}mW3`9xAt-{@(uGgPYuYy{^A?9PA zLZr6Q)e^5$TTtvO@|v@47GInix~FSB525#VtsHv1pClBr!Oll;`;XBlI8r#5f|}^t z$w}r8u;)BGEh{_*Dp~PLCiMIy4QqMD>vYNZe3&);+~pVlt@r=b@&EY@HS~-PUk!uN z2lMXEK7@WG#$Wy?ai4p{Mb}9+SOli|Ddf&?SV8`&wW~jb9z$W79{X_(KivFj>U5#u z6H?#$Ov`I*12?9sKYmlx2ZO%?$DW3~LiUW)36tR;!PF>FKSVAFvZaC!r&XsyzaM{f zP5yP{3XEt|m$rd!ey>ha4le+r&q|fD1((@Fk^y6J84`qO( zReDzBB;kj#SG6T8`+(o$C&P04gMqfG_0893>0rQ2tLl~-gh!8^qw_eIfV5pVS*}G` zgHs)I%8TyLu*)rkz1ZhAIt8y@(seDynA|5a)@PC+_o|WT>(FHME7Hgf>wg4v6EWE# z#hsA*V@ph7AO}zD={a_Ncf}7}0mf<0pP~6GTAyMn!F}`g%ITJ$@J5e!Oqa=PToSnQ zzScMbUiA7swA&Sj?oRhx&uYHH&nJB)R|7u4n9!8nc|UVVNKf-rJN%T$i?L4JvJHT& z@nF>fOD8mGjma$+$VX|8u%DXE-niq`lR9zNE_7Rb7p<# z-L8yw9Jp_Ok~9tMfHR`@(QU1d(RJP7mL~N8h90ZWDd&3)I^;GSI@gGdVV@2~Taj^I zm3OhIi-~;y<;w)wfBjIL`u+xM4kJm~ZQJ3U!gYGT55k41*!8NPtDHE zX~>M2+VNvYJVKSec`7VOO-1PiG)B$>kpr$SlOcpK34MH3m^z zY`4&!PtS4LEIY!{cp98!`MB3o?C{H}`h%WK7PJhv8Ke*xlysJ5!m18>7afOII2|GhLu4g2orh zjA$>7YkvbqMMjmr(39i`TL0*R8#u@_UUm!n*bb5{-V0YcnoQsw0a{JmwSbRiR3C2d zVGq%s(CC!fgw?D@Yn|oR^O<-5vV0z2)|L+6-Kl}B6UONrNW`&-L zf~W&O$%-D0z~p^YU!ihrJ7+%wZ$<&6F=ntc{jN zt(W2DQrYFxm0dW`_Kf9m-yke4CA2&Hvy%3mwwq%j_LoZh_WdPZ1=tVqQKQ*~C@0uL z_pdww`?ufG=p_7u;XzS{99R;t!yxpX8#xSp-@0+B%+-Kl=9KNb&3J-eKA4&MhZXNW z+EHV0pqKC?+6-0YHe+xn5Bv~Jq)SCqIBTK96J0pO>%ldRp%`j?C9J?a% z+zE$-&vF+LJk@h<+2x(7O|YEz@pBP11<5Z`(0qYF`L};f5+KPM-LsUxGTFerVK|^CC!(kTVT@GJ!44@>_(bo3(X-^}EuImZy`cCwbGNqmJZ9w{6 z`^z0P2BGFn*seP%W9Y{5puU^28{H>sn&r$0zV6CVR?AZvIGxiFTA}_O7{bVnIcJwJ z$neef`>d3tJY2m=KCp}h##D-RALj87tF*RfZ3}2NNv8)D4Pb90gS2NrDMb5ijU7;^ z!P}OC37M^hgx=tOJLMk=vgMkly^vKtoa>8ucKIPC*_S%oR()SKP|)lVNzrKlp)|c0 z--7co#`(Llqgf-)8MnD!)n+GCY}~vPYx4#=^96)L`Z>uP%88$Np3K1h@4+!!!vApK z>mcVho;_qe+M(JJ_F))QaPnRJ)ed>PN(F1H#!-&;Ake)72_VN|t8-t@r=b@&EZWcx}^v zt;`qKt~Z%>rM*VYX`vmTx4t9YM)9+4pZ^t%v$+V>KfQzul$DC|4Ns9F@wvH&h%G3U zyn27ZPyv@LOBuRqZ()(;u+UxRYbc)jdt9pB5jh&)jv7tHBVXVy2kpr?G*q+|W}6Mg zH^(jfYPAe-AB9K^?KgXD-An7*X%UMuR!&N-{FL}^_;ljSsABAA^OoTv_QuQsf8TY| z8KPRncxp=78DOn<_C7OdgEl8$WLnzyqRVY#6=t6AP$IL)Js7G2sW#-+EfGRrW@+=j zH!}%Oyq&mq5S&r| z(H^^b>D>(|ao`Nylv60mXqr7{pH>D_dB-a>XI)`MlHKga;C-Mzzwy`OUl8Qn*Er0> z_zE+19CNjArC>)0*P+_xSJ1-8@cml76Idm8GmbI72ea5?2~skFXu5NQs_?TCYI=O} z%jWVV@_y;PW^9bHLZ9yP2ty>i-OP2`amX7*O8E@gh`iF~W-SY$KS`J=&T3V*8L*#LZo|{;%F*i4k$BhDfbO$d zKPsCYxfdPXj}b$9Z`N&z{(SqH^nr$9SgBL=yf&SH{O8LjUN}wymrY0aqq}sZCwE?l z@2LKTJbr#X6Lm!HI`x~i2hZA(iDk2?GK|p83FPOP3QWSa<&*!W7`t$NSG2z0L^ICh z=bT!8SONmek!%#^bR^xYkq+%+zfp2`<2{w4VT}7VDk-n{4UIJJK5weZ!eX%q;j4v& zPW1DIr8aqDZ)!8wWY<@X#*I;ieeM}p_xAKVdV<3yI&iGg!=?cz8}97a-@lAD3PEfu zuC+ks{J6CxO;V=T}bX(UENSbI)_Heg<++pUOSuCNzD?eQ;i)2Oc}` zuD?$^1&vPkyG0etK-1>q)eO@)Fm>bdls?dbj^9;wjarYu0VckJrIBBlYVwC~h#?xM z7Uavx%2pu zF{GDretvLq2qmbkeXiN+f+$_-yFX)pam+7CaSwR~eZwm5)UfvAO-A>}u3{7R@|I2zE$aw$QYyB6J5gb!!*)M7x2k64&}5Zd1=i1(NO28;AN zX}>=EiT27~l?6XKkl~fx3$0aAlE*)FZ{s2sl8v2AD1!&#e_hVEkG6?Hi+}9Xaaz=* zqNY(fvl0$cRh}I6y|6}Pza8AmN#sJV+_286c{dJMm`KZC_icdUSsLrbp=NxUb*baE zUK6MY{-cg^Zin|Xmvyo(M?x}N0kb&Q#((GPX&SA%@t7HC5&LqHbaMW`@Bg3u`aiGF zQeNI?Qag)D&3cSe!R+KE!6!~EH)o)GyWAZ06H4+&NBi1QAtKk&8Pkr(Qj$33ymkl{ z#=~p-d;Cgkw50Fbv^!iliJZs5d3t3bB7fd$mwly!C`tcyQ@+_|9dgV4@S@qh3d16c zEZd|6NyqtX*c{D&BClQcSKYJ*^nBp*IU+0-sIHwl!sYb~$4cJ3wdt6{Mg1VVq;=xn zC2jN>iKUg$znX-N>yM&QXHobhBasKhx{dpt_XJFD1@PS@_${|5&(x$IT7Ziq=daS1 zPa^A&#}VnyGZ1Wb&HQ6QFTSSsxYj=2f}L(V!=o4pj#&+j?bN~DWHmPGz0@ic1=3gp+9%u)2|+Uq@7h3BE^NvGetRAg||iZ_bWc zaJqGrUYE!Tv&IPvrEsq1#&I$nt6s!T@1k|gw9 zVmo&vI|f@EWk$H;S;@P!+xIaB58+VN$a9J|M)HQcE2m!}3;9Q>nc4&PQDoYrq)OFe zC0G866neu+a2Flb8b^tojC+yWC_nMf;GrKnhwgW>lEZQoj|!>xL1IOfiOvZM@>JkK zCxyNVe>^YDk9Xd@ohYFoX}*2xbg+FHM$-~vrp=C!crSLl-DlYVQU3^s324TXuO3#tE2ANWFK%OA z5)vR$oZKNE*OdfvGj!iu2);Kuey&HNC#U)2Th4p^*Kb>EIhQ{`H3gOp!HZWA`d2fGW+=x&Jac}Banv5;UpvHR3~Eoda*6Utr(AMrOLPNxeNi6#Tl1I2jT8V zC!lN`0S_x}i#JrdP+!QsUcmB{;FN2m{opVsFpd|i$v?+nT7-FA%sLa#v5@}M7U`mK zwY2qyOfuYw&3t*IF9#ecPSiD9MS;dnhH>%d;Xo4p_}AlCC{V5+oW1fT8=k)~QkfL^ zfOPd#kNtQ9@wL0&_DX(xXm#OuTvZnh@kOjQ`_8K44NCJ}dmC!78+V-h6AL;4e*#%oKcWJ2oebq>AkIV{ z&<^F#er%D6uX+!au!ns@8G*K!LXt!d$+%%=Y;Pi(oc$zZ;ai8dT(12}Je7uz&(_~% zP)Gq|d8rE>yIp|dHsj%wXY^sc+rIP715Mm(RHT>L+7DbLDXPnAnQ$+Mg}AD!fj25? z4w_q*=v*qtuk`aHhU&&mKGjZvvlqlFH|5`f5{1gWS06lZG$_zPMBf?8_Fkf}_jDon zNy(uL{#LpL$V>PhMi7Z%c{$GY*a(j0JBI=tF&F5*7rpY@{+&o$vfBDGz!zA z5ASzd#$cT==eCqic5>If!*&G^X~-gqw<+Y$jiB=jgIz4NUoeV^IV|YxZ(Li~{(9Lf z7gY)jYwTlb$uFfII4%!u0`u`zgN1*2=vi<>Ln&`NsZzF%p>q!}Dev|9ZnpFy7@lYN z_U3dCzB_cA?nML@slT)BwjR?u{JrHy8FM@zHYjNOrqk!K_hJ8LdD=WM$?j?Du}njz z{JcJvts&H{ui$)5Wc0m@AdqJd-3ukuWs$b zGjRK5;pK$xDF{fa37r!rxKEDW;%B+0kkwwC_vp!Cu&~|MvY(ZXtRYane7$==*-6cN z28#MnZ&6FT{P;GK7-b}@n^rx(woO=;v}ghAOJ9u-Y%HSpqIr%q?I_NM6j%t$*J9WK z*RAM>mT0CU*kbvv7zCvs8H->Ki%xSc;*;M?d0mSS{F|_`J%0l7aM}`C|OOeWUBY z2B=W{nS71mf9qN8y>(tG?_EIcd;5NeRnFtP4>#AiIcMPhlv^~D3oki2d8}M|pbKrk z_dIqzlb9?QIY=+XyzU0bO+l5cQq-vIUkqLR zPSNUG0XK!O>7Ve~PJVe>X^w5!0|Iv_`%xYmKx1p@< z&|Wf2%bUk6u?ujdQPc5g!yK&tw*QeXJ_oXI@-kn_6Mj{y=A}!Wt3&;$P%8#YsR@t5dHJP@b30SG#Gf_<7_nm4PvDatuHj8 z@R%uMHNB-#3g8 z%|LwYr=!~k7U0k;BRRH$H85(kY|eDt1iQKc=?|g%*hbkcg=dY zE&V;@{raxF4NEJSUF&Y@apVuu6qhzLei{O=c(o9HG6Q+;3{yuzAcb^TFpE@8Gp{RRW|dd;8aF;?e%-5Nb;wurG~SZKqYP0 z>1Bg;)hBov*#l67qADS)-T)uAp3N}nEW;`~wtoH_{;+h~ZAZ~td*p9t{1bk!92f80 zxw^cq2?J|2-@GO6-+EqNQcp>!g%r$s>vumLMH%v1L$ae$d&|+@O#U}ER@3gxHoFaf zaxY$J;uyp=*9&`J%Xi`Tr;E$wr_xa(>Is|of;v8%@UcobRD_&C|FWOzHeq+KTp|s@ z&!DQ{%xv-Y!=+Y%oPO#bM4qVom}gTe7A~+VIoO0^oM=?myURT|HNH)U-oXzeDN}D< zxBY;7EcaJu(Rd+$*~Na3VH?u z6B%N@Tn{9bzEg_#DllDah5PSaZ*Aj zXAhW4jcd}$bl|xkSKjWVNwxRVO0_&jVGTCmvw>{^4!Ut%IafI_2dY%Cw}j zZRg~K>j)j)F1B`^ugwtmcg8RAEg7D(X-AQlRzdZOaoq|^X1^YOX<_t zAhBm|G0CZTOYB4c$Cq4%csv|k!8_`fV~Rmd*qS~cMfHksocmnZbLxCLsvOy${#c37 z<-UBBWBrAKy!>H{F{ko9>^S^vYsaT>6zF@e;&hSF!M-r)SnKzP$Gc88p4UV8`0jC8 zyx%7J-W1(ck~s@6nF{POzD@#b#NrUMMk%(?cJFM;s{wN0k@uHMdr|p%(-nijbYORl zXsJ$b!CNUz`}U2sgZ8#5MUdzq-n zd*tp?l3>3HOPhVVJtPjIF9HTS8& zRQxgWWmL_)9DsYrOgA+R>A@iTGrF@2C}EPZ{{dSx)V}*0!9PuKp-xM>ic$AKu3oaQ zdQ3X*){O{x|FQtA=(>3RNzbE`+T#h^C*{EN(SbpqBM*OCJbL2HR{`f3CLWu~e8)=V z2l+O~W>HdNly~K627cjhcKbdW52b1EIF9-ifk*RC-O+Fw62D+~38%LsI8%qG9=Dl+ z;XGL)N(Zi^$ce>!bLNtIe=#A|+F1y#c$acg>m)G(uj^?&i}b z9mu8Xz9MO`igH)do5V?RkbZHgw{U10UGJDld@`=Ui+YvME}pD~>8Bj3J>N$$sy;~Y zj@>j^e{=8H|GffTwtmH(-t!kFts~on&JV*2$u!m+z8+9vEBh?cu%8q}@q8%Rf|s<| zG|~Ffc_;b4&+nV;dV5G_O2We#EY#%T=9aIu*^J~$nRGFSR(g`f@Pm}u%r%^loyvch zF^EbFWmTM@kY4tes9d?WqMND1Z{@-g(cj>Ov58|tO3^Q zE!af%_d=`E8{P(g3evF)o{XBxdEk?xccn}5AJ9)~ZspUAfZ-0O`ZHadFwAw8bM@~g zB=0+}es3TRvzZV2|1DpH#k(EB>2*XN59bc?kKN^H`DjLBZl)JsnJe$Psg?mg)qXLP zW4Y-6D&{`7%vYdzmcx;fItzzgdFdsIbLEY6g%{5U`;m5mU+#SmJIRc{W7h(C4o4k zISra5ewYP|-H9oR4usE4dNo!0!xkuX`40ZB&xPCCj#W(hjbIS2V3m+q0}^xp{8Wi^ z!{>#9Vo|Cg>~CIXmTH`bBbGl7Q&JAW6L;m+VeEvHUH*~B&-Q_WPleh^AI21_Q5Do{Wtdg3_MK-TpSt@+ zc^+DkPXfw1eE7(3WDb;SzL>^@tUZ#cN>t?Hlpdpfh5Y0nQxbf|-xjdmEm4^9=LD|h z^^^=MtRs`OOpZ?xCwX$sv?Q=<6zvZl(tH-Yg>F~Lw=|{aP`Oat@ZRlu^lEz-a9s5` zxgeHF=T=u1ILSmta9CWx|J3{c?HPBcorTh>0OFhsV%(fQ0n=E}?U}qZ$mZ2OHLGz7 zJRX03J$~LAa%d~K7b{}nRE@mpT2DzpAS1He71jYF9L1v$I|nj(a0-*m}Y__5>i>BTh-FCAhbRhHZ%aYpl$f#b?sy<=Hx*)cIe`LY0s5;lHiS-Mgn`~_ z6t+956$^M*Lr9l)MTmJD%#F`ZB!7Pdc`*b|wvX`787tQqr7L6Jliz5^6(;c zqcM(D&5}9SO0nsXXqNxK3_M$#UViIZ253_}8Q*IC1$UCOESC6!Vb)>C`h}DrP*>|F z?-u%qEEM@qslBpbC~sV?L@^zm0~6-=j-|r&AIOYG${elc#kuou!Y7AKqi@WeP8aIYta}~#vK{SlDDXi~1KE9%5njhT) zjd$||o)diZN`dA_=?fX)`&?C&FY*ESCxkpXBGC*DmTzkvm7YT_YsPY;*$(m=o8RKi z6En!yCQUJswT`~$gsiFmCW1rSzr6V7LA*Gda@_vXKWsf+Nghl)2g$ zb@#1XP+=pxg+Xcv7t>TFs#>++91#-)z8?qXUY}{3V!YaZOahuMg-h{!k~~E{62u zcSi&D#xVD+Na{V&X*hH1;qAtL!Vht{YT-?bJUV}TWcjTx7c+Kqr>1dKBE`DCo#_E0 zOgw`w&)&KQ8xMOwlRjP#@((Cw%=B>Daaig(5Plrf&UU z`)#4|X`(A0Unswuy*(TD6u$fL>Q^s3D`Ad)l211UWU07|#Gwd65mc;+Z^51q^ za%Qn`I4L?jMY$8aMZcz3mwZHbb=~Qw8Bw_2b!N)zKm`;~(!ORpoI&W<_D-cqFGA|P zm3P36N!atNNhCos21jp5^0xB)!X&4{1$%{PKx5UxAgX?BI-R&Zbd&I#S-X`P{B4AM z>eK?Zds$FnS3h?vv=%)5j=C<>%;26A!E3$5c}+;swdlkCScxZW zAeGXf>!Qa%J|rS-d4%9x($3i&+orXG<{k=18u!tYv+kD7eg5`AcGp$*fTq5UsQ0m~k-Vac*ZW4PO*aMfcs1v<8sLB87 z%V)AG|9R@w!}O^fgB^q)>p$=R-<~VBl5d>KM}eSu_lP<#L!Mr*;PUVQL_SEKof7TD zKVwz%oF9oj^XbyCs{^Ch&2{@rUtK6T&H1ZeI?{`DGp{?m^h)sa_kf8f;0Us0Qs0Ocp3zs(_^`n}z$k=*VN{2Ilkp?@;ip&3ujeZ}>$@ zpZyX(fK@TI?s`gueu?s#kb_7+=9P#N)VTtX{$6Xj5!H=5x%0n@5c8Uvm75^Pa5Zv& zcKvcKdI2OWo>V_;ABN0(*Ps5aXoiJ(`U_dEZ4i^)`OEMsD=ElGqGBh<1kk1zDJ7+~ zVbuJ^OEF)|P$VPfaeCl13TVytWvmQ>h(B+pyKNORyeU&&r&~nFLlURY-2V+p)#EIl zHto*`sgNZMbFsfXr_MxfRDG}V0hy{^1c$BE0fKkjtAuVS`;(mM0CFoov zIy-J`?0*yhD}pbMc0(ipTm=TQPZ+- zbDFmiRmLydD!qM=JXWEC#dP2BzzyT#wCWOc**29gbio5lB0P^$oOz9`G4dC`Yy=@^ z7ytAsbrBj(-gG#6&~f5rMfz*hnKD&;&wJD zMZx}>>bU3msOEns*>&f4EZ{ZbCI5VYnSQ0|0lqc(le?B7D3;JysQ68I@|$CXWW@Fu zS{v->SGl3;W(zczwq72~4Fc-Z?)z=Fzx{uCQQMPv>QUp5u+ds#8SY339^ztnL2%WX zm8GsHAp_fT9iL?+R5!OQS1EnNw&tn%ucnD07&3XYXgUc=*EiBGo09PXXTWot##(S| zYF0kHjf%{DI62MtUL9tJcN!0vXG7HOokBP6yMg)hBN3;XOR>mZ&A2D48Gls7$r?N+ zI1zX6WCgU16ZzsiL$=$h(1Pu5WwEI%)+OKcN&emppP_w#ui`3bn}o|oQ*VN7IYH86 zB)HIbC&U_!iCnG=$2DU7QwYv@TE%(&K43872p};ofMv?B6Ev?JVeRZtk#BJz^yF*!EYMcYW#r{3e&bYPWI=P!9piS>lzM~KKRo!D} z+1Um8u{#1wlUL9tyoOyU@CWW6O%0&>F^JgiX=k7`437Bdf_2RhLHjOrxO=4?X&Ubb zM&4OP_N+}Qy7XzNxE-jh@@fNjtZC4bu9hMNmDHYhitQ+_;Yzi{Jcy#~r%l-Z^udKI zsShuYk)f?$%$R4k9sUGJu6nC%L5QZu&L-J>%l&DfhB-m0mMu(tKXWoDCxG`)2`O;K(gU)(o|{nUfgWdZfYAAiH!S6S)D4s9dJ>6_e^bBHA7i=C=$@izj5p168=?=zW(Kh!0-0+0q*Zj|?}-jh1DA=c&z9 zTFv;%2hMXIB>W<4g6xl5f1%Hcs#>;wJKmCVQO{wzzo{(= z8m147<)zL+(@m*43)6p~d0fwjO=l8c5&q`u$sIrw=XCQCc>-FNXIA2WQvG)xx%<;e zs>E;(l68zhO#FY(+d;SY^lNTSfx$fUi}5S{z;W|pUc4O_>7FQS<2ecra$)=*DTTa0 z#JvZ5YE#4}a#`Q5y+P#974&dQZ35es^~;`NU8qY#FV=pp5cNlX+Jpp5!i8o%?&L0RlHkwWXwgbyA6|1Pt-x#r z!e{tDJue)C1IqH9@BAk4Z>_;-yi)sJs{*th?$}H3w1~=7 zI3jau4|#k34;6;N8O$jX)#(=|bm8BY&2QI_K>ZQ^Gm|?P(P-ZumW+G<@Y#t`dahfP zh@4KD4&)yIVMvALWfJoJQG$hrSjEO5<>@^AWg1BcN6?+JJ}`ZIz*yrg7qk%b@MA5r|~6X}b|L1*zuSgvt)mkOO5` zm7D9AF+V~ zJVTZg$X4(c>;&PM7xEt8Oa5oy9_x1)ixA7i&{JnFM~9N}yjGa7^06AMAhqQ1h$-N^ z_a`JnIs8zt+U-)sqtBS>wc9=Ak}WFfk4(l=HlP949Pj(i;rN6}ye=`G3#axGl3V)*oQ$lX% zx)JPH^eOW2oP?6cJ{+%-f-F!16D%Qz(#9X5(b+QoOZ#y`p%F>eFoky@Sr=TK&0&KgCpr|tuMla`nCcl#jDwyz?dQ!7rX?zB_?bLjQ6v%sfZK_QM~K`sYFx$>H6v?qLw9)>j#P6o@`atc9xE zeUL6yzchv*O=z3l`+iTb78SbhOmpf*Ktpo&F1OJFta#2GRr;(2HQ4@Ti6~?u>+hDh zIn6Jy>!SF^z}b8diKF?{(U68c<97@mHv^i07>;>8uR{X zTGGnPBMXtc=}5MD7MGs;b%OTpG<)@6GW`C%Us!Q^8EWC0WZ-xL$gRE&>9>hS|InX7 z)4pRM6D)SbrDz;N-&&234!?x3*aIw4s`ev7)}C%B_@=22PMYdjLZ%^%3!?;AQ!K|y}z_BEd2)EDd#Jl<^X){YYF4|$_$37-3PW1A2<1eTZSnU}o3 z;as|tSdR^n>lHJ@T+UMpeeV72D@1;+_M)0$WlJcY5Yf$HBK!-lEHi?dc6VY@y>F{% zL@;vJ=@(S^ti$zCjn_iAir`yb2~&8)Dnwo`R2L2Siq+lqPUW=wNqp<()F~mhr$a(?~aKr18eP_zWL)z@O%95InJ}*;BA##H(j*~g4Rcucg@n0 zY;N-H>DHkTuw2;A`cV!8_8NMwYe?&pLs`un-t@;8A6t&(I9%dzT zO;$)YJ?A9H6?U00T$uowIQn?Xgx?r`Mw*Y3vlfU<)>nfMenU*nLHkJk5PV+~@Z$M_ zRp{IvYH|AD2*ysPcXRKag_DQ=dORh30V!4GN8=y%p{W~afBHc~UdrB`azR3XG%R24 z(Qm>_;(2gtJM~`TUhb!ADCcnwQro|)oaglykYj_)DyX%FEg`edS0-pkUP{zYH6&(n z&3=l-yuKf(c0HE;F|Z8WIeu39Kes^jjUdAzw<)w8%)c=2GX$P*^u#r&r-A#|w_d_0 z_1}42sdgE|&~`UJvs9kNm|)3$niN zFHw^D+=_4ND7Rt`Gm{JHQ3GTPHK|)hQj%&PZe%kP`m&mTGpb+pORzzZnd;~Zg5z-h zuf6C)#O~p`gH)Eq2-WLZdNTd^`4dl^@J1s(cC4y&O>V@(0){kAbyhOLg{rnMc|eEE+prl|lwzfAOG28{EfUqT}z$+Fyd(Npm0T zFKn4s;fViBj_6}+s8#!kEBRkB_9*J+ocuhCHx61oHkKVjL$%Y!b=eFg#gL}3Z2ftd zD#@)4c{B!hJ)c|YiF88C!HbK|88MLB^lN7p?;QS_KFXS?z79WRD7=F^Hi>-B8%qJc zqlAC%V8G$89k}j(;&#B^8RSwqtwLB1L42C=pjv(t+K)Wk(LTV0rIO8yI zcXAQY=SqOQ#Tty7bDyx@PC-tM!gpd#J4te{hQIb~ry$j^T1rbThD#|RPj=j@%9~IQV#xi_CRv3bK!B}Ra zToJOTQ}?(V34`?dhq65MKSn-icVw3Fc}cNKiGEIt3|iWAfer&&++Il->W!{J^F zCE&u&@on{HF>DqGMka1l0c(h>&BddBs8ByQ-^r5*MV#3_m(A-yGIQYNa`SH(or5nZG2?u?)L@KV_Ks6%EoOaxd;q1;R>T|LxMK43N(He+YZ?Xe!_6 z|J$4)Lr9?k6+$u;71_6xOi4&eAr+xHL?jfMDrCx#AxV-HN~V3xW9A|AJkL{PeC}th z=lgxu`mOa_pYzYX+-I%xhjZQ6+1K9h_v>ByGHuYn0r?L@QUp>GN0{x zewj}*Jh0!Q5eJ5RA#uN*?ntEvFl9~+dZkUlb=g;ZZ6#fxb>o{h7k4*k zqNi9b?gy!M5(ay5H-?Py!W6$W5^_OV(>2Isqn+HIXp(UWyT7|uBa`@v%w0fksnsGP-diyxo z%qM?f?J2ooWse^);vA^HH6sGzf-T0X-3NhXpd%z{t{x%B_(>;yEl_q!Zo5?82cA-= zpRX0yVFu$>JlB{U3QvBIm8t6o(}|dzcRsH8hIBb_Q^@|s zv$qlM?=2qa;8E~OZd&uqO{h7j&wfAoJlzz z2xnCrwyc*;;7eml%P%?xO0#Z;Oz;h7{0Sb8fom~%?EM@63;bQ^ao_eM%1vOE_~W(w zNF7K~brSEDa>wmo3qok3ZUDhBOs_gzg{`NgEWZqqx_zr3dD^5-clx4m!F_UW^*?pT z|LwZ@Q|poQ=clkDaCH-pUj`n!?a#oydjM-zOYO5Sy@Q0jT{~Z0v;mI0az3UZg*aS) z>#1|aTi`pSIL*|bg}w(?OLCP8P;k*ceqc`t{zv83StL0@60sj-FZW<~Bww22PE}kV!wB=4c}{E z&>f9#W>2N$qUWIc*^l^3+qnH4yc#b(Q&*4+b)yq_z;B zf&b{fDYS%b7SF>msCb(AQ+aF%gBry@js$i>c~>I$^3hnh<9jLoW9tlb{#Gb{ zAk>2eLJbFYCv1S|r%TF}72`0#eE-=5!wmWqofZ79Lq*Zw-PE8!>h@}=cuO-(24G@p z+BR5-f;JvA%`vS7u%e_Jb^i>hw-Vncx9r=6jO&^QruY4T*A4#MoRmW&A``>E z=itURl`}g;=_!^mzU$6MI4JaA{(9|d=!AvZcf7s-CeTe|zg&va0FJ7J@gDSRf;(b9 z3SX=mL2$zfOw@bvPx|{|Z=qha_Kv3M{N4xrWEyhQ6b4w*|oUxudN+L1#}Wvs}`Wl zAmRa%{Yk%=bMFh8N0BA$-qzbcH?Tjb;P`IJ1n^uk(%O}|h`p>yZCQGB6pv!zS~|4_ z45d2Ua3h4CkT9J%r%@%)BL zG#v*Ki>`&bC2;U6xS$1qb3Ab*V`KjMegyJ?sqc0~);PtS1iX5;d?%tHF6x7+zDf{s(}^@DCjSDLGFhjXFh!hf#v@KXq_1}6*xSkU zYHX90J?5+#0~CYS8d`<~i2kYI0flA3P7&`o#8x5(9?OTOyKjxc|u+4J{n zO=tv4+)W zlLu%}aLLQy@TAEL^i3WKeS1J3xj9$c4NqBNtQXA%3sy33exxhtrg|#QMOo$?{Z|RC z6|9Xy_WF2Mz|_Fgrj+!D3f~M$Za~pbUBTYp&%nJ}?x+m!XW+7K7W#TyGkVzCO6ugN zgPF9Hejj0vN0JZL9L^y*PEq?r(#Kw`I^m)Cd z;#*B32vo}`x>9SSiuJ{9dLtF2zdE_w`AROzuu-kt=^*p7e8aYnFpZ;FY?|KTV*%JD z8kiHY9*&ABr*7$-Z2)JNx>!DZYGrQ#1Ldi|Uyb+u5&V8%{bS|nRuuMkm3l4m z4u#BiZF7rm1=*B1?{=eB=!rbK@aB~>>Xa89rQC^y4AJ;KSN9a4P4{gho=u_X!MW~r zWUm6IZ)-8gX1)ve#)b7n-DOab?!mE-q>drW-tF+|+BVYPMNt2|`2&>Z|LmyA`tSZo z9#7UW*r1_ER%t5fS=OMki@do(1r>#&A$+c_wi816R!4Q$dr(Ot-lAgb7<@T=g3tL; zHY^pd-U}-pBK3H}2MeqQ(QeY+b42MST8) zCPxkQyK-Yvs(z@T7S`PLxEu-p)uO{|(|FaQiSx2x2WAE9 zei@*UT&0xFN1m33gHOH1o;JxfJae;avo6V7yl7|YH{(t z>F@{9lPMk09jo!LNqhoATQ3;!xBr3AwKIV`O&-Et_wA|~EOlUFDgRQlza5@*-XZk( z^Kir9^by*uIb5;Lun1$xM33t1BqxPo^e!DeS}HbzlHC4|?`J>Zs{4?3rED9@3CZwO zko>qfv(kf0fn^|Fv_od+-5Lz@&o5IFokH&o(ZgZ#wa~v*Bi>2sU{>wa>-PtT;%x1c zpnR?YH2!9ta@wtxtYeC%%tBY;(us}HCDUPa4efAEbR7k)3D=Fa$Njh-r}{KeYzSoY z@7knOW#G3e)uPYO+R#Uc(T%rZ6f&lEval&m!+hPxASz*!Q#ERSyzEsYxld@Z4NKPH zfdbv{&$z2FFhNs2>rV$_%Wc_)24;)t*_0ZYWg-4TSi@tRH zK)M-TE~2OrKFe84JZYK$kIWv$PSU?H#Oe6!+D$6TJCQEVo+qmyLJ~3SfZV6K1&`0B z_5rJz#M?hj?Rf9n9^0Iu1$-#PQPf}C3$Iy9-%GEiV6Vrdes=k3=1dvB z6rT4kIzmTD9}VU;_x=VVN6yu0?Xam;G zru)#+tmDD#y%w?_W~cdh^g9~ZXvI^}>GijkACT)Y2zq~8MGY2l-xjoSX{FIr*k7}DK`7b`5iX{7W zIacF&5f?g0r)N+Zo%Im<3?+P?`r1SK6}3-A>(Emcue=`Dh5_t1;22GeWTNy+m9VpY zpTnxHFB5N`U&JAeHv{6CwU{j7>2~ZwBX)I|?0==)kNL`9I5&^XKzl%uz=ymXs9ue* zrXj!A*-GMGhfa}iO&9K2s!m?`o54iV1{$@$mK+2KtOnFuBhLA(xqb;mJ9E}PTg_4 zFs>k&^0yY=x8@CpD?Od>i6mpnylG92J9%zyKcu&6e;gd&=MMFq|Bl5^GU;xZl;ivC zfC33^Qa5-y>H4FS1yD8k-OYDvEFSMQOiijG^U(vNM|;0_VAxVy|Gg{%lqPs$rM5TX z?Glbx{;gk-hV5c;!msx@ryA&|qu>Zi;@LjRWvN(Zx9`bzl?w2_e1|H|u^4vz+Pa{* z;R-Fz%eEtsp2Z(jekzlZYQCp<%{0@Yy1|vsByI9UkJ(rW-p>3Jw9Enzux_ zP%*k)6JP7AEW{s!+^-e*BQU*DjQ3)9G5nQcHj+?kNAYH*j4bzFm^i)3uSlX2>YXHW zDyLg9VJvtoHsuY(fA*!m=9~&6TqB_e`aD38*r~Wc^0LPh<*Y@OsR_Fh&(aPDD&nXGCPR*XtcW1_@3S%L{O{i?52GWNj4c8*?sZY%4C1|vtAGUzS+~Z#jFeB zzv|M{ox2Ay#cbQ{e>&jKK5pv6e&3+?aEyDCo;h6aRX4xgQ-Hi7dSUH8P5AM;yF>H8 zy#K7T@7+u1iFmsPoIgBFI}c|<^}VFe`}4R7-e(nw+0z54-YEQb#j^mC{!&F{jL}k( zIPWda_mKRra9QU|1LL^o^7*^JHdlhVL)VcDPyolXUb0+#m<4xAQx}Q5G!!jekq#Y_ zKW{uj=e&|wjkk$|UmyFE{8Rs0Uu{{EBVNIhbL#9QzIpWHywQh3I8i?zuNXH15&KiC zbuRS7_>A{9ZktJ%&!|#heH;mt{6^8gtb)WAIk9WT7ZYJ(uePexO?nEA??2bf-*xck zg5$3P7EW;AfU#XjIu8|QkCx8F%;NS_EE9`Njo8SyA>I_^h(`Aq0za{p;pdsU2Unl8 z;%>g*qbw(A3F$oLeD$!A z+UsWi7`+ixm*2Q%Vm|^ck9TDM$fYK@J6jDl@&?g-Q(atiy)d75_6!w9%DZ}l~(2(fzM0k+>^20$iaO*ZbN(?I9&Vh>8IACz=e*# zRh@%yIYfqm>kOG+`FsgmW$W=KOR0Q+6%~amP++qvtte6DcAfejpAd16;<>H)91Dfs z>!9LB1RoJ;@;=thdKDEunUtm^(@@s$7skxwu@UEO=vbtA7E#p2fHJk30iT|}V#;Nt zCCZy$5%X9w%+@_qD86IP%{Ll8Ry=s}f&8-ic z|AiVcnzsGt`sR3~f2^Bl5j3RzLu?XI1`q)gZA-$+kHoX}CVB=u4& zT{<&|=myFBn3U#U8yv)$J|mfE*+!tDit38%?SWyYvQ>|)X4s~3puNU@7;;8(d}Ett z;VHLD{VBy-{L;8Bo^I_E?0jv$sYPrCvTJTDN_DUjKg(K=hgQ^*T;f*QypxMS&vBOb z*vLO{vAlK0P-_MpznOko>>@eu>~fF9cZ@z-;mqZW7)!_&e`sUIy=|HdN^9^=locJnFvy;xpX6J3_jieUg|c=LiCM1JD>xt zWMBC~!sw+sJh%A4K`dqoCS9Vwr}J?T2eOoux-PfE4hM(!g_>oEmPl2gHk$k$z65`NQJHzdZ zQrc!J-}vtSXFcL_$f8C5Nitkj+r-AyPv$=wJ$+|Ao(qd!YsyD@01zxkjQZU{%}a(# z`cF8}J(BVXa}I#>&m$&iE@eVcsh?-y^c&0=^fPZregssuNBz|g|Ag~VUw`c`E{B>? z=YrLyaqD1O@yGSaUb!)zlU!A@z}%<(qtl4H5?hty#RZ~Kv}czg^_Uq0ON=2a$e89a`* zEq8#;pVWiwYBS)`mYZJvn$;xVvxK+lQUK_T_)Nvu*1`UVz2%o*A zwz$#1fxDjjU3UHc1}X7#cg{1$fUu>4s_wQ}nBxNKqAXMR-Y7Nyb%FG$i?32Ymn?$S z6f+Mik3QIWcf+V=@BwJDFEBIGG=g_?e;&{`;`Bbb?kheLm|`zfw%~pViarhQWZPGT z&L97Y{)zue=FUI7rW_Fp)SY*Y#7pwPYAv#Y|Kcx@QinTc^@%XVpwVo{l7K@x>lrpV z&tO^hif`aZBL1jMr}SI9fEY^w@1@g8pw-*RXfRwyJ|8YlrJ@;_V7}-TnBI&*uMMuf z&T4?}ajW2~r$1p|?GX2-q-(IlJ3(&bQ#=@cNN_(~Sp{4_BNEH(e}QLn@D+}tQaq(P zR@lE<2l+|{&r^*;vF-N$n50_LhxEN~{6~~Eq{@G>;xy!^v^}*@6F;~?`bURdY;&k7 zmw1e}l#+U#kfW*|F8yTPXLs;z#>gTD2J15!1c#twC{G>xga-uJ3YtwoHx4P7v@4NL zyY1H9YH#if;mEk7;Egm>3>x#?PcsyQvaD`p<~I`=6S}7 zu~xRGz$@W&){Ui6($Cnzx?$1{VV1p$9kn%Nzir2!n~~mR9{WzAKaXl5@x(?;>%mMA zQT$<&B{T~noRD14l8;Jq$8VS=hmg6~Z#Cxg8c?#9&}j)LIf}{7!o<~3c&aoIecR_N zYCO~KUYsjLM!B00o&}cU%Uj#bf@rewe!3l9W>+0XM!%Y%8b|{byJJme39V@0=}8~S z{}Pv9{Z%$UyousDMOtP5HNnwb(X$6n^x;2|FsteA7Le0%m%OL(3u^OL8Ked3L1TG( zv9`Mr!xUaP`^QsYv^|M8W}psAR^~)nf@`treV5DLTt-UqIUQ-*m0gtnuiIUYW@dxm z=Ng%Y((mAQCH#T&iD-yt7}BaTM9gQ&kP&F_#MfIK#q?^5p;0X`+xSHqR3&51GeaA^ z++R4NxA6gWE!;9+o5q4v(G8zI))u54THUjAKO5zQoXdS28o+T$%lB^tX()b{a{NqQ zopAH^n4lUZxGb0x$CMXNu-# zkCF!9h2W=IU6T?Um58Q`O>4_u~Jq%j z(Dv<9|Ih7k(#$_Y5X0!d#x1H#4N?5{os1I|lc80xl zYlf)&F_niGNzPqc>Y>T~efXf}@Jg6+hUkQGW+x`Ijflu%shT zybNr^>B=9L8}S2R;0U78Ep2%IwA1zr(RG-2&Qoxd>_aI;1yRO229bNSreV893d;X| z=^u21g*a&8(x^)6JMWYpkl3ZiOgNvgQ|q-Hz_FYQOP@QriFs*AFtc93*({lN6}Oh* z`hzE_m*i`4)G2w}gD3`KUG|%quu%iB-dCP{I9LUab8ibD29Q3fs@5Mj8o3ER+rfmR zKAVWg0SjLDlZMb;#&m=;uN73yHpI0nxQUv`e>QH-4vJo$FdfEM$o=V2_}kUQh|bTgkFj#&l{VJh$H{ssIr&#vDP zO+}bJzDZ#S>BL=o>Kd;#lIw>m$0I!DA5gZ5nXx=>L+z@)hI$W@;F`=#wrJiwCTeM_ z^qA8V-o~3;->;K8n?+X-=ZkTetbcSc^hg#^Qg~18zeP)F(l1HQjVlI&&AUEKzWDF_ z8u2^M)dhFn!x8G@O#wqP*qTr(Fx-%Wjdh~~i6cUACS2Wc>WVqs>G{-V{>l@s8(gtI zdEF89Ix{>C%K~xmt6}ryK$1f`Q(LAvpb3{}_w7C=YH+;={6#7HHc?}jq( zp*l?PJhf^Hv^###pJhD>bqN=K+Yf}H;LG=h|H6fVs_9rlx?(jRY)zcE3JiFa?TFJK`vP8@$I+f7f+lty4ZC{Hx~?@Wo=L2`HG?j znuAF%o?y=Vjsyei2()hN5Bi&0ggrgG4IKmZu(Bs(YP2p9|AM37_Lf9&vO62#4$=72 zldyUFIT`pggv```$Dl61@e`(~I8bq0@N*l=hs5UPe=n#Pa65S@Fe( z2gq@ApIC=uBls5CYbyxdgm2%v15=*T5@ohuELM|;Kq%J#>C2EA7cemy*9kbi^zex|Uo^bBHliN+F%6<8rOz7wtq1OjM}z5*h4N)WPWC^)|L1-k%@s7n zwvUR)Ui`Q9dUhR9JG_{AF3v*G{?=P|}TK(yT#ZN%NChxXr?ibXju zs+T6gjd)sfUjM>UGyJJJTp-x#hN}l$6?QysgruEjWe=}R;uy=Fxze)(z?=E9FfBy*gOdTpf)74jM_xW3qDoa;qNZFg@rya@QcKHh;TL+yt;>dikFcFu* zSA!s8*(I~`EdvftWj|Tl&PB8p9Fv*cH2@oGD($pZbzqZOZtN=f9c_J=+h)i*)n0eq zgWF~ve5z$`F>!aJnsLY*r}74T_iosw%O?shs+s+*eOQAE+Jp3|caqR>#FnK&n1&Eq z`23pwT{Rd#Wjh~x{1?bS2tBI!nC$19vzfc7G7#S`+~HVeO@+6tCRevre6aC9)wOLgxw9NDs)Udx4r&|kljqy`!B__R4yS#k(Ac<)P`)@}!D-NbhF7jvK%)?=_Eu?9u! z&!4vQoQ9@>`SD;`TH>ffG~W7LhE5+G2=gt=aG?6_$1(wS;(E>p;`h&bc>7AYQi`1O zpWCi1uIZA8e6Ef3uk-&vU(h4o+S)0QIAxqVd$AX0mo>7U%U4eTu$p}`j{CBL>*)9=$=uI($M=rU z0F6liTlu9CbWAn$PIl?S3ql>K0n_~u>TH|;&SBI4_D8l&5eD+R+dy~o#85F=cm7Y` z*UUlWo}z2;n<;`Z_k=2{rcxl&jls!TpMg?y!`R%#I26J?oc>hac6U~ywa<8> zZZQH_%`*cflNw;Y+HbMfe;AvYjXZlUauF`IX@f0UYw+*jBOg`98Q3eK%yDt08;@8O z7QP&KhYDYXtIwS$b)j$g*@camh|+_zaTQ^`xKX43;cxLU65Kev?{P2s*~Irz)h^&d zWG7Qy^fXfKxfT$0?mXydD0fx}eFcibNEJ=MMeMeH;1);b6VTAx9$d(8#OQNVo-GUr zrxgDR9!=mRjKX(5yXmryHGO?#fX4#3=$!UVzj}a(*R#I&_AU+4e)Uh7={Z3nLG|ll zBVlrVP;oR!%jJV=YqcZGBOzkpYSR5fulun<^d^gzM?b0(&ev=A(i3BYOijlX*@**T zuEfCI5sY{&s*&JTjNenbvX~s|G1|&mUsZDS4c|FiUgPn9oewgh(gC>=R^3Js<;F;|F zUS7%rSUc>xIsT9xuzCHeeDq2ME#%A3@-Cdjy8Dm5%jbweF}LSO&FK(iZ03sUU<*Ox z!zRMnQFeHn?H5J+xHJxkotn+_(F3{}LVDuYbC|F3x$;PD6OJ&vt=_L(h%GOC46Y?+ zBE=)>rbZ)Rt!-Q6v4&${P!`XA>!UX2(3bNL#(l!{%XBjrok(3L_21=py%KQscG6S+ zC6WWG*L8Z~fER4x+I1nf!UKgH;%)?4D8M)l%C;a z9*4x}8zsCs8Wi0@^3dFvojHz3e1lw-@wh$<6WGIVt}PX6kNoNUJo~? z496yp*XEx9tmiT!J|IaV%~a##;f_!YRYm|TS#QX{}Od>*)q{?Xpz)d9VG8_zq1 z4WUWW_+KycISg>KEq^Z{2H_f89c7pS%-Lct$$LJQFTo&1?PuIIn!kZPsu zk|(RGu=~v89(IcvtTRvXckyN+s;vX4q2(36+|5Fx755A7nX8=ayh=lfsJiXfSAQR! z_cd8AUmL@d=(xY6`W?z&y+7B}+yIto9vPc$yMWReA=^uF1BXqvlQ;dBK*WdI`eQde z5t!|{;?VR58MapIrpQiWL$*Bg3(0Z(_OUQ;r1uYed?g@SFgFJ$rR)_f8tc*2`pf&l zBh!$0{{-c#00p=Q1X5>Rb`ZA=V%%ge^kV0sE9pwsoD>z7v~#ts{iH8YXY1@^c^o#} zz3CS7CW>Aqt>P=66>NA|?p3z444Z`t~aq)c=6X_%(=mKMMD#w@2{NZX#AGOr1-8z0j#_zOTc)5_gQL z9XioF1@`4H7Gt7vp|dcA5_(+%Nv4U$%cj2}`-7%}+VxS`s}bw8*`DNM zh4vYRuTm2R{^~*|2_tZZEj#PmdJ8b0_&s;IU>1bW>Qhs6X$i{P4c>{(Wd4l6xi_y$ z)?wGF78T)vcR;7Yzf()01#T2G*!a^FfJSL%+PBGWbg5hq@^Q_>SkcH~4pGvVaXqQ= zSx+$}aq)$nX8#E@?okWYT&*A^YIFGf&f`RRXEyh*YdeT@=kz=Vt~)Gf}*g%HWM& zBg}Hks2_>T#o5xu=d|WuFu(O>&i$b_*j3;b-k0(BfA?n+oU9&b+mFc}pG2OOea8P= z9r8c-M-+J6BR=(kQHes@)>#%powr>sjhrtWa;oKWH(@1uAJ)ETCiSV;&42ftjVF2f zRhQB$HDck(@%1XR&H=pax@?p9H;>dc#WeTNnv*{0JsS3J(jjq{^LO>l4v0=l9o+HM z4$^Pu(*}`ww4DpNO_N{9oZ=%QE@EX>ptVb@`s)i$<82*yxikTKUJk)>j@lusz+z8kQJ;dC-Z)`?Us>j1f676--}edL`C>U&O4O} z5K=d;Q`$R?5ALXCEs^upe}>LkV_AJrGbi3%mgx!IXYMQi`#X)%^5VOaoo2|Kak|=X z@r~%DX%qa!w+naWC)C*XcVp{~CnmFGKjpnBUqzu21tyc%1{mw9DA(cxSD!YB5dpPS zm&9Yz(DF{}dKpXr6)xtEo$&$U)Y-N4T{{T#$Nph*_A_8C=XAw+?_XeHY8n_c?Z7^R zTtA`dU)Wu#dSMGo8|E45Tui58CqDMZ>`|YZL!P>4$A{zp;g9`4!*sXSp{Lxg%X5K! zsLQzU`pd%+@Xq359X>M)Is0z1`UiGn_rH>@jHhTR=Op5bx)P^>=2xy_)}DS?D-n<~ zx9i7~6_F)tm2AXhhM`iEP!Bj?PzhzD=OAwAW>`+{5T^|7O*m$FfQ2Hn{YN~bnGhvj zuC_WbwH*a}1DJj?PvESkaTTR|7vd2W2v!Xpyzd8u9OQSEXP9|vbJMzrqX zOwSL(yaM^=_s*^`Qz$kf-hT;$&vgc=mmA^B%nRC9V_%TZhX@GUCj@2h6?^Z8q#y@+ z-lkiBiw@3m%7V5=ctQGkFl`kr{A_%_cukhf(GkiwdQ#vE`+%L+T|NR%xbA)QF8c&Z zgiZ$~o{>Z4uRB590vt-oHQ6^=O(sQBm4RooSEdRxwEUwov=9_e@R z8gNRy<0_JQ2vV=@dYl}zk$*qoAoMN(<>_m5ycWupB#K^^d~nLg9rlj|H;KCA+46KA ztC}>dV`b4_j~dPGo^^W5A@~CNZt3N0ii*YscVhxBKSY>&a7^;O50vL^k9cepgvEDm zlQB=vpu93RSEv0fYJmltrgIc}tk`e;dd3n>e_T^^aJ~&pPS2gp#k^sGv&-aJuotF= zU9{e`7z~putPIELo|F7BZmC=22H5mSswF%k9CenSF}n-<;^DZpsBon;kSwp|Gq3i? zO^FBVMY%oDXv79n$L}MLu&9+_vk%mc1+gmb2!NK#!Apcv5Tw*{O{rZ;fV9@CJil+Q zINPLh%H#cg)U4)u;dLVg`=kunzqMGvAr`OV<)$BSyua9OCN6VH~XXSm#mGfTnE^dbkd%1eh4~`E{Fckazl;W%|zwi=V1AX)rN!YL*-wg z>F*1^3OlWuMWP6O+-|DJ^nRBK7;9(GxFyJe8iU&$i<=7?aGno$%$dSku5V%|GBW>j zU909KAJXAY0MTQ0HnNYqq3B8aZWSd4;>*X8gC}n$z=h*_{u__8V0s807z%w3V+C_HA8cc8Z)IxZYy&P?k9KHcnxU#BLZzb-`P@oE7k zr2G&U6d?K18eYd8G;%;)KTeD+c0bC8%z$ErGM-vtBEfamd{zFaEvD z4z%^Zq#D-_0p-w9nQ`NGcrK+8;nDORzFVHYKIQuo-H#Vm77l-eq(_Xjp8WynH1Mw^ zkmR?12(+wH&RT}`wVspDMLwVcYbA$7EH$CqT$|N#k(}#iE1KG5B$Ijqd#x0fpZIs7 z_W7dqD&&4=uwZ}R4Sz!08rFldKy*C4!T0AnaGt#C*v~tMvQv?JA3Ui*hnD;0*3ag~Wkv?$O&xRruOLE7!#(il=%F}EBP3xmzl7Upz5?Wm$O{ES9q3Xj+5+vmHq zz#h5WPobB3V04}_e2?2WMpgZ(8jSmckKIDXGIq|x_otF<)0SL>NlU-d4$`mpq}NWD zx?~JE)2FDF^Od&~L6s*xdRLD6#?sVg>m z^UUsJC(P>`Hw_JCVxfDcOI%(HX0I$J(8vi>gii5?NRfI_1*_u9{83s8R{%9@vNJ8^ z>ASQKGBsVG{o!UR&Hhmkj_dqg{A&)Q`n|*juC>8wN$UJxuj^oGTbH)lg+(+y6gDWb zwI5OMna9r?HNbA~%^$K_0B!>8Qv%zY$@!go_Upd?Ki_xo?$hn(iEgw>TABOS()7P| z%Ky|K|L663bkyZ+=N{xw&#n zh>P3;mF5@7e(T|8d#idjLbAI&ZV&0Vw`H19>+{)4-0?qYL^Cf*y4}K_H z%yrQb9`e+y2Zpy1DYx0_dOVuZ`qr5ctDXTo%GC7Z)wXY7m?E71GVc!xWdCBR{??0O zcLFY#lx{%C(8eBt+tcuG<54uPKsQnmCDfE&YUEj5Wd5bN3bNzW`$VJ2d?Xm^D>Uf? z7O#1g#!bUmpG2p7W(PGP`=ggXpQ;am`WUNUQ7y*3e{$0JD=Tq~dNPOVM?Z|}`gT3I z*#-q_;o%#!32pb2HR~u(NWmO9xZWS9Y>E-$7$IA zU;RU&S;HF(a(+v1E?*-~MdZmD+Qs;lnfZU``VoiI`r+)J zbDhoAR1~3+-`W$??35jso-mZI&BB>q6VGTJxhb2uN}HLtPT}KQ*Xo_t2QXOhyr0;X zX^0Hpqi#t*hwXAx2l5sBvHWwq+%*9XBBjd5ASN&P3F?X&sHh+Gsh$D6*q{`CeNP&|BQL?H%>eqWjY zYaECU%imoN3MS!5)oFR=VqGW+JtkC=mIC>ATV&3tog(LVd`($9i}CRH^M8Lbet_)D zD_$ucpK*TveEYL70+O?s`sPe(!1d-3my}Z=@U)e_sG@m>L`(UZcJpZ9zx9u^v-Jm3 zc@GG*Z4SmE9-A?>_fN4)GNpSh?KAMSTe3Wid4m?ktRhmiad?NjLRjds8(dK>`B!1z#r0{_B&uXK(%ARPrniLsyTG0jMgz7%{UGKq6Da&M< z@KE4CE#Dew@fp3j4;qFVhvPQ=`JIaS&+!zqMC!t^NPIwSIdP_|5Q}TO?JlfVVRV1| z`Wk0A$rY5|cSp|{;wwi(jYH$WJiKdVY56YLn>UU;imHY3^03u-RJA8L%ug}#SebVPy|tPh6^?R9X&ZbucLw)~Swnug!+ns~#Hvf!H}orUxDA^5svX?mt|8W?8mlM}r+VDACifXK#l z=o-+-H1nAS$piowJp)Iq})NsP7gJ}(vLRQNU zLD8zSn>@71I3du;OHbkLqT@{D5u)ro>cf_L{0DTJLEk0rmBRRyM*rhsi28Q~MO&3?FvY=)YL&4Og!hibGL)oYw~vgnpX^UK zyAhbb)!+|A>}z`@f3*^e#Se^#^fiOw=Q`_OSNBu8%e7a!j&f1neO0?9$F!Nk=IuZ1 zA^I2Xt&i-zAM_bSZt2o#UYW+&ZRguP$Lf)U*QrS4eg|pIM~m*YV<;h5EDI^vJiLvq!~}C*WtmpuL>FadoYNq@~V#G6HJ@5KjXwQjg@6(eT_R- z5RClkEloP%xHxm6Bl0m;xUaU6ZsFX;14r*Ievd6b0uYR)cq&}1bH%F9h9tE;Nn^TlS;FsZ(;ADGOn&gkXw(?RKaL?yLBD!DMsvYe#Je9j=p7&Pu7#j! z=qp85?yvAbfMu_6UpGvz)#>zX?E+z$_>M`>PH2^_CAWELB7x~*MQbe^@w(%4rTTpd zqUOg!+4R$HT%rGMd5fKy&|10q9n%jGmo$6X=JHz*R>wx)v;P1OmQVL0D%c2Z!3n-J z(ftIscOs{wSPMSt@He|AT@Ojp=_jh$>+o1nlkw(ZMxr5}uI1b=NkWzGZjex`7ba;8 zR)6`i`9JFsMiaqyhd+GqIL0rS?af7`Fc9C%3|#T!7DsxIPo=q1!_gKW8<%r`T_y@X zDr^OCLgUczm)52AMjv~aKAh0QAk3$AiMb2Z+LEI6GE zM1cW)PRg)6GG?&uk{Vmg9T9cBwDr-1(kR1^oDfq6k_%z5Am{!DG}bK3^+|oFqF>_4 zPOGiRv5)1soAw0^?qE01edG#~l$d*00u7PP{nlcH;sac*x)u7Wn+BOAu}|WlE0{h% zfk7YDKyK#KbrA=$?^7b*YQoM5W=vvIZddN1>-8NisanlSRH$$>gi{=4n4d7xo^^%G zL)K$Fa#yieWX*$JeLOem)&E1-dq-pa$N&Gxt|ZYQrGzpHNm6-SW+@sJg`_e!FQNc!<>ju!-Yg_W2c@C4FLL;@_e6W*|U!$$v6(8}8 zU3%VO0f)TF{4Tg^-I#$%%N!Q$5L09@>m-MhYI1vd5MDs|K5sgSiu z1U5|U3s1iUaPE>~hxp}UaFmKLx1dgfoP{NpXFbtyKv{#{Le&{6q(&c}IaPKRL+**M1?0kVe zj&peI{>b+6bF~-~#cY%~NQMfzNM-w%c|eY+*#D({8I6xemJ3rj!Y?q@m0mBy{iP0i zhn_aUz>6?Nn}!@HFoE zFmvFKcr$(tEEi7Bn#4y&9Em;Jt(dcV{k7tbUTmnhmOYqRj#1}FzPlaz22PeI$EM6{ zP7Dgt892dVoe%;wvMWJ~ZNfh1(z05S7uH6AJ?YEl$y7g5T&dd^+H? z+5*N@tc#x+_>C8=60##-`QTPy-9K08!L3F1#5ERAf~RMEl;pRFp*(c^4}V(3Wb$Q; zR_bWv;U2Yg99hAp?FCg-$^TH~6z`AgJ9BY8Z_lWVQyRVt@R>a1zk+;U%p&zm=g_{M zJ?AJ_HC}Z)#iS82gLaddZ|#Pb!7__(_s^AHIL7K>EHzXJS3ACRMREMX%*5l=2mg|> z|M-bhH@ud>z~>HUZf6VJFG}Da|5gic3;pYs~_n5@=J`zfe|o!h}N3IiJ1rsNClod{CJ*7&VHgMCFdrs&8Pb=vdMHb^{zrznXatn~lEy_Urc|8QYFJ1rsssOm8 zw|%D3wFgH_Y-;EfBW-nDx+m|wi*$=Vk>cz}KGOH}+-sp;>-gg1fc`;;EqGP)VK$S@ zMRIFe*P=X9h+G_OPpybNEr)BG)ve#>pw&W*Qd5tfq)`4U$x@^UXY5VgyEDGQKTegTysd2!O;nqx~Jo=6>jN zKau0>?35*7*4T}j^gDc7^r*}X zz;7loZ?}IJeB9Mx6T{Vvd>s-OM{MfhQfs4oKt?65dKcf<-7x|-0(xg|1T>(e730je zsYWn)p8hFqsu)yD9?QI+P6A<*kw48sw4{sjHT{Dn{lJ|OoIBJ*aNzo`6zabD0n4hD zhr~BKkYXsvP^Gp5-fZ9VP-t@-IgUkkl=O21iVZWAncN9o2Wh`v&VgEJ$aXeZ*Bn5h z%o8>egwIxQhfGL}>jGR?;Zmr!oPy8EoI5914v};=7)}MSMxyLR2lpA@F>pMp+CX`F z0vV|f*FKwKB*~hs`l>5-!(?94yX)NxP<*a3uyD8qYbJJFrKZZocG+>q!ID29oUf}U zJjy^~O?hVUT)Pia1$hpt_*VgY+F?zriUDl03}dZ*QHPIJd286sv#GkbmD|_3 zo1C}7+SyGthXE!ZRwwNUu0UvH%fP)&e337HNcbiT`Gm-jV{FR?zWcBuVxY1Ld#exW zq#hl>Kdw}f(jG+4-;VPpj^f<_Z7(QVY2G89Rq`J<3CaJg>+&kOTmunlsBkglrhauB zCB-+=9{RYULJ6;rS3#AO>+7Mff0U_+9G$Ld%eJP%l3y=FK1lLoX8PD$`7RQ^(zVI3 z;+KZ_GU1>8KiMJE_f=VDqX0U7R(f`YIFEGZFN-@ZJx6i%)LQ;Go=~#mj=jz{4uUdi z=f^|6R;Zq)Id?Q605!}wL|cSsq*@*{?ORoez-?Oc3w)^_c+g5+#Pz@d)J^#3Q#3tN zc#_3S)#Bv|jNQ(z7^&z2b`lu{%f)tBV59kMD|$#u#iP?*LFhX2rBY9Yhv}f-WSoz< z*mY#ecE9!Kk2&&-i}VGH@_<#X%)Pq6M<_)eQ24-g8VC0VtqsIJK&`Xf)^qh+g@UpY z9z0UIaBFqRFcKOI1Dal+zWm@5e)s%7eK%YO`KyXu-8zUqk=Bngm2E?X#v;1jdd4q7 z>D@Ca)dyZ!SMj-!Dd;Ztn6k1fiCVzejS0!e)o;<1pI?GG=n@3BRtrC#l*5njgqiQU zx*;96bZaZS29id~)#QX8;M?FmJK(q)Oc-0w80QgloQ^pD%ZF~kIqw3&f`?`xIwL}N zAx95ovR2kN-h05hfZCl*O;fDVN!gXN*AJ%nuDm)xWr*933vK^5V1vRz3f>Cw57C1m zuBiN?EjTO5s9Ijo0v0YVq2Wd!P+mxHXSw45r=NeA)}qtFQ7PuB70WZI{kLfMqXk>& z@ilnEjc0&57B%a*qOnL}d9Jx45WR*3`$JT$(C7eVFrA`4PR9mxUEBT~8DvU?B1~Vx zEk;t;zA@g*OE&lZ&YXI;}P34dp}Hv<+E#=b9~4?w4r z!vt0CcJk2*m8cW!X%IN2v9uoX4kfm)w)q~UA|=XQtS~s@4>bmUzctA{p#IHktKmiw z6qf4cCGYIU_U3m~{hkphprK)DuHFrMIu#z$SrPl8d<@Uf0YYb2#1=eZ{RdL756s`3 z>jt)95uvq(esEP_mJ-S7#t_}qXY#~4=)%@dkrx{U!lSJgVfSXR|Mlp{;n$X+_3F{l z*x1A5W;t^`XCh}NNH02apE@%sc;A)nmj)*BpXBRDreI~50{)A4O&&LNg5p1b2R(<(JLnKS1H-aIlq? z5z=3|DKjY(|BuAi$4$hVQR>}5?@7%H?1bSzZ@!h``@Nq}+??)(y?Wbi=wrh0xK*8_ z{rxr+Y|v=b(mX@<`E2qim4S;a8y+r9ac4hScChb}Vk9HEj{4oOrDG!wztHxN^_f9s zzr6dp?^bcux8h2leg}|PI%Am*5jn@#O1wmxH_)Rf+^KaM`5AAHOFCklBZHhsT0UAq9n)ew&PZTe}(;U9A?N4-Bj-!1yj#6>DgUh2z}l9nh`MTo);qfZ96z@MJOzSw3}}>cx-WP)T>^rrAmr^w)p;up@`y zWKsOFmnXRE;j8a}@nJw_Z>&S{M!FkiOFV(o8JOVy`MUHw3 z+sJpRl=`=G%>(PHFEeM!%OFwTRnI3F0k<5zqU0N9p)t&C?82)#5bCGcdT?(ZnDjpe zpX)5ZHA0QO=VTuQ$X$DIYR50Aj7~aU^y)8gwng#erBq`h+rZ6hBJ&vFr&mljzW|4( zGtTQ5ZJ_S3gwZ|UBV^i|_S-G)Gx$o1B;+n|g#2>r%CD1kf8p`580Pj=dh( z17s$dm^~K>KRyMwp?mS}zbN*z|CZR$I0mTEHj51rdA^@^9TaR}AX)0f2HSq7ASdq? z5geZ!hWS2_EEMboZIW(;-IWvM(;ABrozHUc?Bbn{w>NJ8XI+Q6#T^mfb`M^wdk?J~ zG)0BM@)`rn5ZpaEo$I-)UuxHWrBKd^eW-Ng7h9bg7rcxUTh?q;K_XyKpQTd=4+ZrH zQ!r@4Oom61-QKfcn|!reRZ<53SZa6{-2Q;a^{Vv@{664SL#2qEt8oykW{^PTD1ogS z9YZxa0`UBvm$>h68q!Cc-*>Tj8&vW#iu?6u<4}Iia@wE=zBn?vb_UL3>8Tl(rpB#8 z-rx26Ej%w_!;0qWBffO-vNDPjYYoPLpYN5t+PH{yY|LW!2LsGYRoURs^8oEz)#n6* z9wXCqA?uiIC_ecaJU;Jw3AAm?^#(7z1g22g-wgI@s93i^KK$MZqr&w?>^*it6<6OY z#eL3zxhrRws)h1v>#z&H(mL^J z#>O2RlojI?2p_Qp^TwzC&NQ5`{4k-n5QC?BAN549t4@6 z8aXHptbn)ey}Wt23H}qmx%wwh4<6N|GK=hSg^?AW^og%(*#4%oMoC%&Jd}=k`Dk5% zD@@jlJpStVq$Yb=ZEVHSPvoZF-q$b(3V^X?JGsUTjxr1|`H3Htun z<&t!98(Ceso2rR(0LmWd$>?041%LV0y67YA7~J%4-!raoh=Ie}!9r6|`L*%KI|d@3 z_=QTL5qA}`Z5p~482vD6_Ybn?<1z;V#-J#MW%(!#HTf4?5S8gh4+IJ9@_sT- z=mGh6<$SxIhCha^*cF*t!Bw~^t+_28xg|rrJA-~g+hWRtqkU;GEA$+K#y+As$86i* zZA9L(|GtvsAW^ax+wh);S^LR;G&`#pvksAOg^@+J7cJlihD$Ckg-b};9g{Mk$3mV} z-QgOV5QY2s6h-Ay-l2uwd!r}RD@fUC=1E~chr^D^(~i+ZzHI(}`*9*KW4@Z>r^reV zI*SD^yPNC7-lm6or=QLLPaVf79BXzVe4>IeGooYXTK?zz|63dIgN0LKIgi8kOUo^`2~9YMqM+AM*Whak0~UEb1f2Av_&=(yZRko)`mIm;D-7ZGl0 z6V*D3NiT1W1l}g}kbG*bhjkV~$G6DK-=rM)Yz2kp*e9@cxjbDhnVG!9`9yVDD{o=(>f(IymEmztu0NmF_EM8IjLw1VJmDJ4{ zxM6yFkM7w7ypgZ;eWGd<#p3SVQRL47-3M9Rb98Iyo*T31=F|Y=oUEOx+v2h3%nk8# z)5Fl&)>$_4tQUm3C@2n8k3x}3jw$P1N^cGfjC*yFqBbTGjeF*}bT(~cGYu3D%;uNUKeU3x1R^z-sV zt|vQ4mu$70*`n1kfpA!r=)WDQT|x_*z^UWE-tKDVEJ_(QCXz%QuEKf^7nRw(Jka}l zx>`E&!?@nc&FlwjQq(+Sr|PzjVoE5F4-?wqeB#%FiBdb{c+_Q}C-@xZv|B@Wh3!VB zvw;IeGZb*4L&5g@v=KJyT6>5y194oXith7?%cXp$uD9L#SU6G zeed5PICRUI`lj~i5+qlX@pu=s2+Mu{c*+hgU)LzOtZ)@B_&X`OMc9Br>h+KumtLts zU(4p{CsNQV8$c_VlqQw_Wm`r5?sq6Wh?|8ac3|1`Z3lgbD{gyxAn5e^ufmLL8AopB zg#ojguV;d$C30+KB;IX0PjJ$29Zl2GfL8iUY1L*ge7c&nqmW(<*K;20WvUCI!3_&e zF@mG3xhWJRV`>axy7y?Pek-ERB()61RY@3%Rq8&s`!Z_zn!Da)I}5B|J$-6@1@Onw z>Mw%kPf+eG>Du>CR%qk(^owWCBTT&VaF5OD7-XXWn){r#n2aHFzt;^>c3%-Y|uXlvHdpZG6ol>9yp?lTh|01NN?uF$tDeq6bdW!Ki#-5@-bs;zU`7u66 zJuJ^lsEc>ugV`Fp%P9{dfW9nwANipTcsETSe7j@@*;P)b^LHsixx7PEUY`THJ>k=T z9_55fg@45&>E&R7(df|bxXXCJfPB9@tjVQt0Gii0X$Uv*4O1+V-D6&gqkw|n*@>&`u3OD* z4LJFGiYhpf=$n3K)!x6O2kIE!2GCCrpi9AU$5FxuB0kQa@z!?@*trY$Xg74hy(fl@ zDWktphbgsJ{cAV+@p%N)p3MPQp1#Mz5e-D{i|j2biAIFH)ZD6vNf29d@cH}b44@D5 zNgLfZ3wOr*I9Aoha866|pF_=V^2^sV88o#&;6es1Iqy{nUSIBAu#Kf5-*BMPsOlL; z4U+JW#?OlB9YvlkGJSM$ql|-(zSlkFsqxq3t^W{Rn!Soi({ll55 z_-Ab(W<6&VJ{4(-T&P?GK4I~f$`l`fkt40{O-B`m2|jM=x!nh{Ge+Bq69qi@!83RJ zY%N4jv;MqFSq^iz{V^uaj`iU;QmYVc_Kj>K)k{dmq|ot9^$1_FZu zQYM`?pkcC#^JsVlviY~3SJAxW7x40gZk7SS(v_p+SG983_?%0+go%;h-xLFa~}5C-TV^%u>6bo zy3_}4kD=7IS(;>@vW<$3_82Kgeqj++ed7B9q(uL;YEs@4qejy zpmdmXuimv0aFvOB>OlCosMqzTm~C1yukyj@fm0=zb%1p$ciaR5Z?h+Mvo2$DMeBku zS2-91qtiZf_ww{z9^# zY0VCTi@LeM-7ax0o|u~{$LXKXfsd?Kb;apzIFfI9mw7B2*Nc5;DN{SJS5q(Kd}0Nf z_-;LzAeErC>GcpJ#VP!__tn6I03!DVzL^{Md`B8%(b#ZtGOF-ybYD%30iiPXVhN80 zG-_J%edg4NZ3C_e5K2Mr>UNzGN$3Z*k6dDt;jQp7WOHLsoX89J9pH_WAmg%Sc==tm zUxZJ`K`GR11+x#kXxuky!EYkUA|nFaW+ok&3*^ zUecE&Pfb3zTN&}B#N9Ds+PV*ES* zHDJsX&ER&SMSNKChE0UXp-^^U5zR`PfmO%OJ0ZvYzmDf58jb%0PnZYN)~ zjaA)tsU5SAN8R0aZ33(cEgc1UD9N5xjYl%BY$q!%1UTcN3oe zZn@yIgP??Fmsgc_lt^_e7I#Ky(||x!TBB(jC;oi6wEJI=A{ILTdh)dTHgSL1yIEQ! z4Ph4jzwDV;rP#c8^rpM6*`*z|;Jpo1#BQcS+!e!>-tY?q%M6}kmq z>_4pS?YG6aB8#!vQ)gk%BWrci3s>~DsH@sHuY?tGtG@YSrf4em_vO$EJ33!|(VRxZ z4MN^s>S}l93Oi4puei;YgmPcz9pCM7#Wy(ygd#T#YkRX?S>T`4Y6|sg*(YsamRR@^ zyXuU-&Fwpsf2-nk=UQg{A}jdI`!bR^2xH;LtdfFo9YXi&pwlF!i?lR$srw=xqlR9= z%?ZYbsJmbK?&d*le3G(TQ{w&$XyO(9TG+0KWnqB}4tDq8Sg(3}7}XVc==WXW=iq&; zf8-K**V>%$%Ui$l7t+Jy{P%8bGYo{mesz!GA`SHV;UU!|>VywZQ44*cv_^WdVevW3 z=U`Ae@R2pt2u_BZmB-$90NMP zb~5VqBXF#_d#aS;F*ajP%`(j+a7x&AjWx{%Y|GlmUCtlIt%}RBPdSC*m`t>~bom7s zyxzqT7jzkZ$;sU@uQvxv=jYd+p0C7DhxTy46p#PUy53bQ+ijsX0qx@-ttKS8UKA!Z~zuUUeAV~okGD2w$;5ORAl8*1KNwlWcWreza?Td z4phH|bd?|XL-XECJA8!+zM_BAanEC;Xnjli`svS^z+z?}KJ8Y4T$|nDWW|E+G}N3 z7!MSei`Q?*iq*w;p6`e}=>P9UO04rU`ml(ft1nVCoo@Y~@Bh!=|Mz?U0T#C=t#HWx zConAYgW%(3?LB<1We}=jsN$9_2;Tp$3+5p|GGXZZ-M6355_xKUd9)9byfNKG_Q|Ea zv}DB$+OG<;Ex27NFUgIMk=$o=GM1v5o7~XhBTSkNgby-r#oj!dLS-+f25+T3WCxZ` zk#z4YB3D^n#z3JAI)j9TLid}(_n-k2Y0fG<^e-@3;!g)WpzaEN_G1>Sno}s$Q+lzQ zZQE%!!B&`}JGSGI%wIU{>+O?NI)R^5N>~{ea^Y6^ql&zV0lcGl^T73lkEs6Y@WAc; z^SE<^#VD5GJ(Hzs`SY%oLb>isL-JLEkN(p6K9x!isuza#(CzGnqu)v+ekrY^T2s9H zuJL00`0oNsiaQHA&Cj&cmOmJrvPP)L^BSh(v!w)M;71EccNg<>_xM~ zpFynn!KZkYJ}h@^lW|F*Bb|39y?w+)0Da_{^ znxp^Xzw~bInR6_pPpg{z*QS@S&P(tV@9}-L*c-Z? zlv}agZTRsRO02O&-m53{J&RElTQr0oO>6JsqqsUqAG{ZIdz{Dtee=1cp2%;If5d!V zH>Mkgdha?H?sHZaWqJ^6zUba1#jcFZ4!_-Wk5G?9Z^X z?ncTkvLsgByl*pjlY~#aqTZd!%0xH+7kwS#jPP*xf|Z7uEqFL~j6BPZ1@@l8IPw{Cnc&*jE+MR9SKVuvoc;8- z#TFCe*)OK~J%iRh!!MyUzJwoN=3Jta2HY78(($LaM?uF}cMGy9+Rl7UEo^^@mg(Dv z1BZAqdeF;aq16YX#07)y%P^wuD$UM&!G*|P-a~1z~H6xu8d_*@IL?Vkk)oTIO2JuWqvvZJ>wpB-V(lqk!hlK=G(0a zp3P>Ee1sbYY_~U^wKgI8BCE4g>#lg`plsgq1rIo6sBR$fLl6I)fy-_h7I< zCFT+GH`&Vmh3kXFmHdQ+a4R@XdvK~qH5~WN9Tf`j3Bkm)bDYfY9U;uSS@eypB9i|R zp>aHRSS2yNGWbgo!ktn&7A&fO{^_&I@o$kJtG%{WB$EvvpT$p6INt;5;>t1d@Lo*Z9gV*mc%>+}EqoFPI^^)8)- z;}(TZQ(prx#DSvQadiiID_78w`|@WneNQsIF#Z*^*w@E@^sIsQkoyVAJvz8E#)~y2 zs~g1Jv|8 z{3H3OA7n?~a6{iYY_zsHP5mK&$f*p-ymy$A zv?1E+?W5HM%x6;5N(_>*axJuQ$>uFw+W+j+9Zp9(M_#hiNH4mWh7r4;K9JQY0_mdCn=W>LF>Y|| z7{}5SKKAhPFwn`xw*j zPZ&8%CUVFP@BL=4L33`Wg!YuPWJxcE4^zeLeR(><3;wSv?dj8*^@0_+5 zX^fx7YqQt*innOV{-L{g|9Or>=eE|&_TnOZsx0CfJ>7sbH(e?|ADshri$_rvf}wEi z(bTU3;bn;3ZY6y_>>i=hnm)hnBf)(+vuanw&P~$tsov~g{el_06P+$Tse)%B{t0F$ zcar37d4_gKWn#nV&9yjUZgHw3!_w?uI$R$U?Y}A5iu`h6l9i7q@mN?Lmz3)eTv>j3 zU9hMP26!*mmDD$)hWx!{SAQll)AzeV6Zf0pG8^N+w>GVyX6V#1l-2>d@+2-M@(3OY zytd!Xd;zX-%vA;NuEkF?B66#OWIV!jj4$P}}Zx`s#hRyg!vhKts)wmv)Q%{Om1X1;Z(=86vsW=Th;4--5J zU*?d}=XI{cC?)9*<(@I&Pu<8?&6de@@*jxj*S-+qXu?E^%J})czwx0`-xzm8BaRLz zCcm=#34Tv0i!^V!z!|~&wYy^LvB7G(;XqUadQlum^*l2H(j)?e`@I4wmG#w4|NcZS zg}{v$4$Y{bv7m0}L`O;(Js9wbo46lMUA8EFT8abw6kiOS%W%WTAoj$ed0o)hh^uT7EcmUP@PF#(yYdX<;3>U_>5V@@OZ-tq;@l#9J-KEi^r9P|^hqpK z$W0P+vQ(L#V=EvmNjLv4s2eSl2HEaqGn1qx&uK~Bpd>G)d9$Q@u#-ac&wdGYW+WS5 zF8ZW`YDbi9Obw`T8fs=Jv`Z-qXzv&Eae!pU70tIT)-YCa z8v_bW?0KGeY?~``-!n>0h|0!`w+m@_uVv!N zrroyhce%sSV52jn~)Q?$qOugHww%%B|t)?sjczxZYc^bhULxmE)XlTsq;1M z1I?@Nepto1VrvGcX>ZUIn54`-{`YeLKK?r$^=V)bJ`W^})FwB8O74Z?s~5dNPW`pg z$Fu2h-@XNle}0E&8T%LBGDZVRZc>*p=c0ja#GN1IA8_HSy(pF>}vAUZtPyF3$L zlwUY4_3kO8%eJj_pKXEhh{P5>?Jq!U{ysm=LkYfo6NvDWy^7RlT+72Wv#>!%bkz83 z5X$k^&R(4p!cfCsn><9GO^`vZbe(t}e9|@;Oxw^!YvJy;u3J}8Kea!#Z?8VYfBV#Y zqtXCOSI-93%%=bY1NZ6NqhB$RZRlmiLOpD_J_wJPNPs^N6c~?A4FSF5>34YoWPIA?`CCOY!PoGR0gLFb@h0Fkxv(`%nE^dFRnNU&`+&cDrDd`g zT(N91%Ew5Ij8*4&f{$J+!_O~X3o6B2#K@fotL(k60!vze)E$Lr`089|NOK?w>CApF zCdk~tWN~rM{oUsvR!a6?W1b=&(JxorNBFP#FDnn7BKThV3DLr;=0vXX$G-FisfPbt zudSbjTXeteL<<}iQQKbD? zPuhcP_?v@wIjTXjJf$PfItBLG8u`=A{eo2M{w9IFvY5k?Yk1Ie3fRS8@-r|Nq4gdo z|H&5%Fy?w%$Vw*(Od>@36$w2JgNIO6QB4>cnkH9MJG2dPr$Km*ER-juv#~zk3Nbphno}549 z1mF1RvZX!OP+7Zli=5Ytn0Fq}4S$0BPd~RfJ)mW zTAk1VT86LY)_utV7k0AZkEJ#|r59que42qAaeJNoZ<&@{K3rdN!E^~eN3WT&dgY+< zWt~uwcSp&0uRMKs!u>P&9&ZpXD(S%JH$USXpDth*&o8?RpE`i)5wCfn5)(OWL|oDL z1qInd{k-lp&mOX!($<9+<-?Fud6HTrQrb;~aX&2TxX;GVn&kS^j3RJ`@_Pxfap1jsxNijq`nd;9F6+Z#1+RG&jp0l+d{1 zrin+GWp^u%S>NE~i~EeN!E2r`f487sK)nCb!K0**%g7-MR3AM&;2_+G#s-wG4zvltb-DGSZ1&p!)N!ep%K7Y@dB}e)g!UQ{ z+Wvpm=l|Qg^IyiSPoO3t6df`UAjdNlFHNF^S=rM5*UMML)Gj#%Fp%SF!BH(1@C&**c*Jl#|UvH zenAaKmoY>8b+BwZ{9QF;5I?A<9`Gahd-HWtsW~yFFml-7{jSM>#QBlliiHW`MeoW*|UmDobQpvFCPu`SaaK7 zvXP&(x~!R#zazDeqNhz%Jzk-m7d;&H8*-MrL**i-Fzea&X9<)g&~n1yxpzbiXk?JJ zJxto6m)C`5uX_Q05TOYx+fGN4QJOwSwbB4)182lIeHlpG-`@yZ(jjt4Dp!X%$-{8w z3cts7sXkbdly0_ovHR83WVH6633IP`b^)2ZYPYp|og$A36dAl@ z4}l9u(j}61-TR+<|G(AstWR+7)hs78_Pe)Q8vGK6Ds~hKoKC{!lPc3TZ=V-_rE5H~ z-{=PBmTuhjjJbmG`xf4Nb*q8|S&Gx0+5%>e6>DV*aN>>E1Cp_?mkK?FnBvoBp2DwI z?@>>CZ-{K>Tc}p^2A#JQOk@&$wJ)S-g?xPCA1b6 z8kKysyk(e&*U3(HajArU`Pseoz|S|p_|_MPM0z?Xzk2gP-e(=qKO|BRdAtrkW*qMw zn)QM%`#f?CX+OH&{S#`-?t_jeI5^*24a9iSkfV2&tZ~awJmaH_KNPRO59?1g#l@1& zYSGtzxNWOx{7b3|w1u00cL}h9L7$Y#Mc3OXqjb|-W>_9o1=7h6|1C?YJ*QNlJ6QwIHwiV_>hB6m#&!AY4n0Tv^g3}cn_beVAfo%WRj)yz|jOsNKO5cW{ z49lLp!bhL5cCH}PwsK8syMj{4^6ZL~Res?}?LlS;8I^w0ps$b0!#ldqYIG-!&9?lYWF~u7=KtOlOJfiaGt#Mtp$(pU&@p6FMxE~NmWak5@>#PX>3`c8DeXsz8b$N zgLkU3w7LC5U}=_UXIHikDztRgr0Y$1@nO@2=bFFp)J~Dc3#;|;DgR96Ri#phw_!W| z-kI=^bf-8NRd!+fNJC>)bPwDRQI%^@4hM#1M!vAGETnXXK#l?pq9t{8XVK~WG4S@9 zEitib27!`iJ&iiAKsWU0Z%>mhcxwNPYk099sUF>`Q@i#P|5QF&tujqQwvSCcT7p#s z2SCSKO1vC)F5XI)K9dA0a*r>$)eyP@^^*~17KriNC76#+u7PpD5{={o2GaLeG@%Fo z1w!4%stIua#8-yGa6lKF27!N^$fF@3tf&m*8hNozuy9R?@^ooMOyw zA<_)n*!(}YLX5H#jaFBfgtNzwNGCoEL*=%+_x)^2VCuJwAJ^P6+-QmPZ2F!GZ@n08 z&F%6bNB)S2!pbos&v=OLOtr`WEPg+b`qrr#2WtnWudhtv z$*~=$1^X6Y-^CWKU#Y(!jK53lz^O`fX*>|l>Rf^ElV2p9ZZ3k+w%_^@;&uOX?oi4- z!*FA<9plSiOGOOVTX*S%YA6-2dZsK+l5 z99UV+bJ@3clA{~?CDJuB@tgFGXj0fNGG$~6_kArQU)eZgY4AKNxtzh02kQjL(`K)a z2~iP#Y;*dLy`G!6NjZ0d#-7NlidHi59&d)3zmMNjstvUrv?!4;W{D#M zx28mUN_; zfzCaIZsLns+^>ZN>{ydHCBwW16*i|Ni;vTiU6Y2pj~BGTnPNKy=Wr^r)N#eYHIH6g z&CnO~FAyNb+`?>mhh99r*HVjqe;NMyOR>7ZQUk+9?rq#mWyN?GW}M;5%!{CLrgK(TkD_zBN0S#xk3tREW(=N_a+c-$R2Fj&JImR$mCG^c^(r(hZy&O8arh??0C~+BM zF&gq%y6Qc~P+oFpKCSGI=YL^W8cP}FD+Y3=VuqZl{!#Kx+QaF>rvD)Fa)C>%<|Z0T zf3<6NTEKm~1H81p9w0xcO^6ujR6K08$?iE0L-Pnt)eeqknNM_8WyTwPz7 z-`T3VPQHhS4^6*_UAhAb@!@>oOAlcFb~!~zA?^2}&gsAIOdcPUE?j7f3J-IfWWf`#9MxqthqJW&?xUX67El%Ckm3B3?13#uwxv*M8 z9KQj5{y)NDR->Ai6m<}XI)uY^CK3K(#dagEELq5IzWeCKVGB$aV3oD_CWLi&uU#qA zO(psS$8JuEM!}uK0}gGyVW3i!aIEHvGL~w_h)XDwAthB+@pn9tH<*1F{P?udDR8sP z?&J-mGzq{*A)yelzCY+hHZh88KK%J!7ANf1^wZ5y3xKcHu5Q?qJYLuHx~}`}_Q5Ca z3F#qzXD)8!jf7OqOp)?A$ZAtz5~j|C?=q%PdV&Ry8PWlu#Bler1xkrXi<3KS^RXbE=o{7V8s_lEf{fNc{xmiM}@H+W@ zv|;C;2QcRBeUNj%7alVd(Jq+SgFUIrqCHYK@QU31^^h$jAIBzJ=n0D+PV;lz6?l6M zdbZh5wV%+!=@qpL^lxe4VBchf=mR^r?0)CkeySiC+V*0>G;kCzu@TnFMT7rykN;nF zHkEaz9lQA`T)i#Q@0<7;J_s4sDA{i%mYOdadJUE$-wk&4tL!BIv)(uM*t2S25V$$1 zRvd{Dw_>eMk$tay?i>sk88w*cc7-=rp>IKcY83JBchzSH4pXjNqJ^F?UcWHSwuj zbnf=!t%Ri4o#6S)`S_QW!NO|d8%!AO?20t3#{zDfR^9Mf{A}?oz;x#_s#BbWmwlQb z;FLkEkL@Bhh`ezg6Rkn^k;@yqF9;FFi8Rfl-92#W3Hw=1zd2Ccepl*a1r?Dj#N}8| zp5yL@9=Y&`OQ85ZBk)3g39gm*Cepg4Bfp<|=#EqFK#^OY$V`8aUvq`1{^mNP`Jq(l zF`adI*mmXNP|;?BqviK$8QNsXKb`tRM}&ho8M@cLK#G?b_k0+9RtQn8H0dHY>EZU- z##O+$eG9=obSQlB>>R59Fgj6N(hc=$A|vmEwo(2G_&)tuyo+)>Vf5H?(=6oeY`iZg z6a%86Mk57R_EUc>3KxIZsi<-rl2^>u;$l5EiNU@6WEPUh2GwH;2}ixbv~;y{6h9|Zcsh``;w0k zq2}l5tL^_#Aa?ed?F(Kas?4rmg5+CGSv1U>ZSO|gz0M+%z5Tc=+Q2=4 zbs2^8%%oI|$vgu837-YYVH68o>YyYQ;dXPMj;~4GAjol*F=aOc@t^a%dg%M{e;3JI zRtD?UBf%tJ;=jBKYX8yHBoyPu(_gREo=xHHS3Tmvdtg z0vY6dEkV_?fPEBFe{+e9)3w1Y%QwE-;yz66cva11!$2rxx4kQ@CUY%9l4h}Qo$;;p z{IRY>OYkq~T9C)iY8bedt+Fd(5pvqs7u`rN4o}dFSC29qaQ3{5ALG$QC~$niRoXfM zz@cQ7mDq>X;{Kz*v^G)bV;fVPq{@IwaOhua4JYNKHOGm&55D2t==P#V*M%v9aSeNI zDWpd){LOp}S%-KydmkBOoXjKdIoDQuws+V%$| z?M3J=NQ~i8VS8gs`+kTSTe%kXeg@r|-$WRf4B*sgN2x$D$%j)p(Yf8a9{=4B>??jg zjJ5uY&C<_G(IofF*w64${Or*A`{d1O2zEN0&f30)$6kN6loDbjOjKy^Qn8R;X`mM& zdASs%yH*!3%S`lpy{}@6n+J}V@J`WWddgv0jvAw-c}y?=dn>}D4oz(rn~IgGh`nOR z&uECUQjT%Ag+|qp^~nLt7+s!5e44no@Z;}wTp>cj*DS{&FjC>QMmQ(sEMKp}p)Gaz zLA%ga{7~3`y|>4&hu4;UO#n)r(IGpZ1TY!a8p>-a1I?o!874*+6;6Do9?y%ggHKP& zt;KhGg6}Q15&^kjpd{E1wlevH+Q9b?sUL>mp|ruNeNP3vC4bo8LmNyk`)2MKn2qC~ z_%>f+`-&sho>jjkVxVU3F;%b7bF?otq4;fzf`QYHi|XCT#&Tu zy#DrkFmAYfyehoe0*1A!Qk6D$fYZGfa}Tw?f@xYrzw-fOV40rcm_)2S;N7l!+>kDqy?@T1$({! zQ;5V?rW7%Y`bkQC zUIYrF_ZE{U#FY-kBh7qUw|@im(*yM5*XV# z=|Ao=2(c3;?zekqQSp|f=aZU6oM-NT>BZcEVZJI-Z(b$C9ZS1gTpXqFk=@_iA!Z1t z7}l18&wRqG$(lN^HoPGs`@EP^(;wI&oYopXHh@=tYOq=L&=In^{AC5>-{3&6Acu0H zE#{t;+xKpfj+j@^W@=1WN59(_Q{ycA@Rja|U4INdW527KcGZDF{PxmviS45c@)2Tk z-&p90hWw0%vhqZnD3m+9<#Z9!-F@jX9pVQ?cLWW2K8?Z869s2Sc0B}(H6O<9H@on# zXzgq%`4m8Rp1%9pWjdF8@v_;^>Ps`y6>oQPq0t~AkylU@90r48G#Tkz4h+7uef^sHT! zS!o;C+wnPBU;784N$;$$giqkCt@vGa@_T6w7|J_t-9nKP>`dLwyod7Ah4lLxlk==7 zi`7+=4oKL|x8>JVJcQbN+0rbug3XPZo0BP{klD38-~{Ja$YDEssxPquKOc4q*-=P9 z^wT|zcjyNo`7bZmf^IENSxw)1Q%Q2HsPuvo-pWuoZ1n^Wmt-OzRg=TX2?>f>*cZ>w zDx5^JYe`nF8v|w4D&HVheJ^F}W0wM+vRS;JwquR8%Ml_yx@#CNID%Th$kWr;w^2%M zpGaM;n?_zIhRxU7TS1p?VumKS0}X{6XZ72yu<&tK^xSP0%74lZgAuCUt9-2(x36al zmC671P5$%$|MxwLg>T^FRR{1@T6ukz{ttAVxFYy6s~Q|8t(j`rn!)YuT3(!VIb2$z zy6(eWfow?}C>JUSa$=0+q^1jnTr5KSOVdC{(N3eoxCDbn(=Dg$*a^xUlZZIkm+Z(r zw>DT-gEfymSY$c35%P->R|HO0VJc}Ml$LKt?b7}pNeySvxa2w>_#_)&M*d1)qV2&? zH{$Cl({ErSY3{KH3J~yAGg0J9pvhsgfOfZ!rd3OznPWD z{@#$S=H-;4clowX8%m`{$iFRPCnP6t*wK5HVWsjl zZ^0r09`^Pm)fYA*IlSq25vL}^@>C8Rd6M)0J>oZJUoK+z#p|*cdpjWS^p%v@x8(2g z`(3}Z^ayB~D^lV0A-U;)>uT5wU&BV}Pi=YY2`Kk}6%aq(3AT^^GA@TlW1q*Tq_Xff z2<_nG@V}FZ)OV%aV+Ut2!Ef)VtZ*J~GjRI0(NY71-3q&~`E8K?l9b4>TnkUz7go15 zOyipISi7@pBh1`yW?zbLK-pj2qor0Ya5m58YDOLDsXUOo!o*UG##xg%aA6d$e6deU zzFvn6?iVxWo#x?E)qU|xo@8HR{k^s6$|x4SrF;_S<{*YFw#l!kP!Y;f%?i!=^u$F0 zk%l({acHP;<*@IKMRb1?MRPEKkvM*?y){>87{nUZYrR=#QH@Q>&xv^!<7DU3G2kCM zi0!*$OL}dH-J7Lutj?mdL?I$Ddpg+p!&k8W?XUS; z;pu<9w=*guT)nrvMfEY0zCfu!oR<@CzH;C@x>Xol+E&n4;LXFz7dK&oRRbrrTCZ8) z4Z*Mi8UatZ>6K~^^J>XPhEP1E0+)N{CUF$JyOws`1%R7@#QuY^U8yc{OKkW?|3Xxy>M?z zCK>GS%4IGbJCDb^gT{B;)*(;RYmXO7X2AK(TXWZGb7%;TeA!}n6NR3Y`TTJE2vmVD znA?Q6W25ZpBFRM~v_8MJZe1$_bkzAYm5xN?;xp}iW%usEhj@jZif|sBe=ZrW>7T}h ze{79q-jDId7I;3o7=sa|NsYaG{6KOvpWdjU6t4)TU7fdjkM~=2@?S}Iqvo05Q%{-W z;ny*{%r5Z|^GD42gXF%qbkqkKn@x$ZS(x{f`*Ta+7(XC!Xsa!(du<=NsStv9sC@f9Ltdlp zI8FI(-QBPp$C2aMqzy?Z`(x7YGIH!NwzNTKk|XzUf-)NoVcXf>OlV{yrreH`>UjNM z>ud*`$ABKf*+8Y!x6E=_krabB>Lz~;$dM4@(IBG||kKil?ezER@ z*IR?}d#$DLN^?4FbKN!1IhKenIj!gSbC+Vf`;A@UG9y^^SwZ7)-54@(MqcaXn?~(x zxszo>TZqr6ADPW?{J?_iK0}qo^)QyaF`iKEjsYh(9GJ*+LB-(xV2b1h@y7fMzJ6%{ zhNlm=`6@PIAm`hjoi1hQr=Cgu(}$OkbbPSKhukZBpZQ)wZE_a6Cel4$9BfAJfYviP z7hdD#5^nkB6Lmhb9Ufn|G?ZlbhgV}~ z_g-+JrubiH>Y@=^#H#rVK}uGIko0B#AeZn8?vz(`;C;?Xw0-WeHrLNV;V_n_2k+aV z#(TBOYhW4m22_`mbN`V0)gdy**MA_}T!HKnuSA?`&$0@8KMT7SoL*d$`U9g>9$ja5 zv|;uOg~fYC(@60=HsMb4H6yrc#g%50H--vA^81|q>kw0?)8n`RkGeXB<;Am_O z)(ztIiQnaC*c#!*u(pm>eiNMF_}JLMUziAPJ!9Q%#6C$9mFQN4;4CW zn<<8x&#JFqWhBxl`MR+s!o==`o^w054?@hRO^?rl zT9gr$sLWSX3Hnp)EZz#g%B!3WD-r1DUGz1$HXugzg!k)+Efl%$RqtOJM&MZR5$Oh+ zP7vU%T(5h}Mm*meeu}3*4-K0wPPtSRq2mm#qwCIC{JITkT^k9cy5A+1YNt!ycW-+I z3rFC)K}LxF{ol}bpsbz2v>AsPchvo{`3LN#jjjYuFEmIAT%*d)z#U>AmlpUYutiB! zS1q#^)Mv&on%MP&C+E6Dc||Rb>2zPIe^`ksOnD+Ujt0h^o1|%TSA%jr_beLhk@I~@4)B-L4vAkrF5C( z@gHvMOiABC=A){HHy^p02L|}HzoUbbV6czT?=GCek=`0Hrio?{-qpQd-LVQ@a!3gr zO6-QL@kG8eS#7BQXK|{Ds|Rj5I-NH1S_hiH?!0#{FF|=IYVtDI0FRH?T&VmY4bi8&o+aPQPGp~ratpCa!1p8NW<%e%66Z?xFUB~m zL$48)h)?7nborw$dUz|D8|xK0Q~ZyH@`fwV=*{jm-1(L{{oPDEXz4v{5pWIdAEXM|B>fCns+C?jPC;I+OSq!38kStK6dTU^-Us#Y4~^D5SBb#DLhgi&-CBt zHI};_ZBymkv8Lnmu;2bKcrcNFmX-D=zEG%eOV3(Yi0oRhJn3hPan|zwTAv;uh?azt&F*k`#6)}sL+&#w2?UImYu@bcYSy(xbJ`#IS*^d zlYi>tVFiI%3ENe9E~B*mia^Fw7r1c7DJeFZz$o=yWrsSXVWK7hvK7Aul*bsL3(HnE231VcKRc0T~DFV!(`N}IhuS+-5GVI-4p`{ zGt;_v1{WfYBCjJu`B%tpQEBC%84U^={<~ZwYjK;kO;7udcyw!G0jIHHJaEn{^kGpLc&W(+&$`SSVSA-V^hG2|tT83A$ zAJR_mtq+k;Md8g>gNyHPg3h6es^O9eq<*pc#qF&PxGkgbDSL1w#yW2*>zeq44aVAW z@0T1Q#Y*_jtVI+|Z%J)n*0o2@Yp!NpCQmWxJ7K?Zne-YCgg<7@4FYYNH)|>)daxw( zw?)`RA3rYgUDF|XyJ8YFK{Y-hkY2hO=Irx;hWIk^t3Mmu)=QX;<^FsAz*Xhh9+9#| z$cUe>WeFLC^1Z@BkAqn#ajPOiRM>!T?%I6_TPy_k4jzU03#4~yi^Lk2-Y2Yi{Z}ZK ziGUYVkyTCk)u6*|to)I2075+fII)Vfz?WmC#z7Crd@7Gg++5Bad|68{RDM^Fr&1mI zo=1HLaq*D`7K<97yZ(7k5xF0IlJUFfYVQE(ZF=k7Y}^Oa^L?i#NbeF2XIuB!*%>&# za`IV%R0hO1(&&F0;-aVouXQd9*Mrp^FRq#g43vyaACa zonsGvG>{(R=jj}~-e6Ph--9#)OZf9#lvt)T>Gv{XvMyO0#WU=W7;gMRc>XecA))w#K)Hg6D7Owf!* zkd`?2AWbG=bq;!xrEA@WN6>uF@cbGb8=<-XTWYoLUSj+C&$OG?+hFjnnkQYtG@9Lr zI@(g)47Hz+j0aOU&UM)7a0b7UzA0fUA|LK;SHteiD8w zJxTH@!opWMRJjPZWVbN2pT!Wn_r>*Jp9n~65oqZq^V2%b)*-xP?yA*s)L7;25UB0b zv3Iv=Ll2M1YA?P5+!G@xZAbD={Tw4AkDIRiPu(#is`^)HGwDt4KT^8k^xyYc`=uS& zNQNf-2pg_qGoHuQ%V$zJUe=?=aP?Q6mPO>*BV7|9Py>NqwwzH8{);*(yKPS>1>m*Q z!hv5r*6{dN;{j8_G2CwGTq<;R7}r{KR8K8WfkPV4hp>bKtoqcKzZNlrrbz>@eh;ss zQb@hlw)$L<+L{%aV^9P0(*{Cu;qTGKZPStNz0GLdq;c&D=}mbxtg3WctsTSN4C7hP zkagmVc8RjcDY&TX8B&y&j>&96TTY!I>s2#3%1xc`w>u7 zDZdMiT#BngSNg!(RQPJdS|==Lk)WoZzfe+V$2ZX`S|XJG&s%ez8k8}9vik5i9r0!1 zpWtUQ$Kslt@-X}8FOZ#-@H9G3?g`o3*53Wqfplr!lgDni;G_6<^|=qrm}Hel_mFA= z0(#m``s|s(B(c>Gt4)PqrqMMd|85zJRTqF!3Q zYQhHHij=phUtui7I5wkl6jR$0hUB@+anDihp;_vA7}M|)PM1uDt|iB!GxtkKj$Hrw zG090t2xG3+GGM0!I-HBo6`eqt5vS1`Mjg0!hO?=$u@jG=Z{%y~tUrM!(0mPR#s-wFFK6)xACFaq_|FiN;6}p%gd`_s_vb z?3m)(u{bCTT%px}--or*nIVn*Si^9!8Kk@Va)zB7` zCX%<6qE-5WopQyR=)NmbhCwAK&zf5gp}SX~>9wU**z@pE?|V*8ie#K;+P!nNaHRID z-i^&u80^I@oT1fB^2n+;MNCjrcn#g(3NnnrbmIQFf#;ub?Gl@rs?KrvPyPLWy+?yl zo}|ci`1q-s^Q%q(EJfASy`Rp56wX(%AAZuprH$I=Xd7+#V>~4-8g>?{M}u$f_~{7m z5@yTmO`S+@k%Oo8SykNGL~};nQ59}i*4^5W(S&_pC2Nc>hGK~4@b12V5d11DQN6wA zDZY69PhCdwAfD1QiZ%Ds2SM6HdP@e$VCAKtSzERR3-~0QqOb<0l0r9Uwbz31{Gt2l zcMsziyB$92d&J>htefYjL?z@u$q-!im*hehed$qon*+El;3!*}KI~2-E_vPa2ZPD^ zw?a2aZ`HeNTHl`gg4G$m!x<8x*tP1bJapI+_{QxX9laP0YZYB|uST4qPU5)QX|K<4 zE-5JgrOO3qu{f{M_{|rl1aOttTL_9+1}^=*;{bds<0mUwqJSqy*dcz=4H!6cOUpMD zK)>+gXytx{KK+jBj}jl?tvY}7lRgt@=yj{^+EfZjQ@=kga=VEA)aPG2QpG*g!paO4;)S9*@N{H1d{dEF@1p z$+!QYP$UFINl4ddg~QtV+Z`qr88BPiRAra(1Jaaj9^yr^zdohlssF|eV$w&c#f|+z zu9Pn4oOS`klReAkaZ_|yIAfzo&N1%j2n#+mh$VRx=am_?vrvZIiOHo6$AZZ5nNRwk zk(;`PHmmk4B5M}Y=V(imx|UpVq|*$>Gey`MKe>WEZ{fY^RM6RG`G@KP*(Q5UR#|g1w=yz@o=Y3xIKlk|mb*=@|A6a=E z8-vLCEp1E(NJao;2B0jq^GyOXJRwnS(@>V%Wr2LB&dyoT9a(Tpjht|di!B^HHsvny0>lNSNoR7ZkP0HhG1K39U zfK%4F02gamdG=Hsg^x+DQKlsSiQT|Ox4)K_vbXd2sWA?+jyxu{(_|?LF0V(Z2`^^h zVkJ|^Q?Y8`;a_y($*ThYM^`*ezNSNRjov!*`!+DI8SPVz%P_1)?p5u}+acFqXAaQeb!n&9WZ9l+A4e+NBfj zsv-TjqUt**7t~8~fASh=R*RuDbEoial4o-C*zmE69Xy0JiEQ)QRu76!NqL)gXTv2{ z9)Vx0(GWr!bNmf|K=+ly%N3h`;Enxv>C~5^vHqUy*6G_1VRIvg^(M1aOzt%mPE*Z+ z=M3IHk=MV0S$+2U{D%R2mbgvj%@)#G#`MRYE0LD4-H{X;{*I1d6w#p3XKBP$m#upU zsZyZbdM)Rl&oKNgRZ{+Us}<6&>c{f;G~u|@&gkrqBPhSPksm?5NPez{_#@>en120g zVyLnVlcH_I&RbNY&g$!@1K)nZX6x+A@BvAJ3>q2go zO#^V={Pxn@YFbL%v0WbLcTSRCD7Tlz&&gcJ-BUdc8WV72b;+~%;yh?1+)-hlzlB@U zF897ZPEAQ$xT@jgk^t0&sg-Rz=_o6oo!{h?aZ|Pe>xxZh1C%D-fhDs6(3D>d5r0BU zxxQjaaeI{o|31EXsW)5-9;K3%`;?EMVs3XGJLb;>i zd)i?AcLlZk?h)t|?PDz7!%A5gw@bWsqLZv!i?dE@{=k(he>OkjLXbbMeTOhl0Xw}< zHMBjXkB?eB=4xjr=-qoh?ax9!2ej`Jo8;aAANAh)vJukvEOMSwU$+FYSs|7e`6oeR z(;aT9&tH*&@tJ@G>1#26of~k+vjKGXq2)*+8zqNDj=xH)7jN$qu__79Ci&c@`+_*; zp}K4MzKqET9GOymze}_SvYj2d9_?Zz?ATtaoarA$>Eg=_)N&le!EMwSc_tK&7>|y) zCjG?o<~2SyBucPIfy+T^YBOy@ zI2clw^5W`0Wa8YWvF^Bn1y>RZfDR5dm-Md zB7o=~L}))qQPJ%II$@{FqwEuS-sdYFYwunn7bCGeqdW)+5iVj()l~ zat0Tq*bnR?=Py(VoR6Kk))aQ^qSCwgVy@tJ+ONM}n_1w**1HAMqx(^le{v#VfI@l) zZ2G0-H9(A++Fe{h8Dr$@4fZ%FV#|Kv*Smc7VP#vuLy0WTlRC{E{_~NPPvnj;IYbUAu*`ru_dr zRJX&AbGr5n$qb-+yDPCVM+DY(Rws9M1>hsLgYsIU9$=egW?a;K5OZC<`2EdJ!_Zp9 z25rYPWKkwg*R!7jR|$bBPj+*NY>}Vw;*ca^5@Ji@6bC$SdGm{km^x%fwY&4MZbC1O z--LSkZpt~18kKy~7zr1-2j#$9xwwahc7j&H?8rVzJ$m z%BVTX)bZ=VYn1DH$D~xR2CN@F`dZ2S{eIs`$~a3hbO*fu@%efjq;9qMZWZ!}=$|D@ z{jXoamS0jy?B&NmHsxkTjn@&_F)igQ=wbv64sCO($Mm57x4}vS)kAb0;IZ&8sJtVWW83#rNk4ck#SIN0Yt=^{Ha8rcFPd2+B6~)97gZ3=I!wl}%bBolJ zmNBL*1-@|*{^S^#rBYkXa6c=fVc&)&2r;anE>T&t}TMvp?G0HPV1pD?^f5Y7l09n&OSZ z$KaFdykwl#5GCYq|}FWTmSU#@rlz2G^lJ8o#EDmH{iq`%Xq3irXIun2jMLK;H2Y)h%C%_1_L zdQoJwiIzAzz1eVts~YB&^;34<*}%-l#^Ao0jVS%D?{QCOAJKjNNT2)9dJsv8IOI>4)?rAi%E85UAQI%)Hhpd7A}V<*DAAW?h>hhgh7M*L%B&Zy z*q2o{LfZSOe%y|Ogo@ZFYu?-SpvAPW^0R9t#C^owt)IrQ|J16Gw+*~!RUO@jgn zUn_?WD`kUHafhW&emP#hqI1M)tqiF-bMA))O@sZ4q?7>H2#8*-lRQnH=L-c~@Aq^5 z12(b!4{vRBp$?y3=b=q2;H{7%ad)RNDjV;&-95ra+0L)j6y3dwyZbL0vtAeg0$lZk z&-Fp!^%7mdL~6>b>Ekt5HL5|#&zntNzKq*|p7*#CGzcvG$S4tvPHVr|$jAHY~i!rcINb6^C zUjqrpR$h(#d3Yh5_+47~2X5K$I`VR|109dJvNx45;>k=`T7m8T=vwF?H^51spq6)aDWdg#hmY1)q0I?_qtZ1 z{-uKL8OG4whbn0AS2RIYC;o5-0^mdt(cssL&8kTQ1p|a zW!5!Ktda`1mVG7#W7^{1B6R(HQRmA)Q~A3bBGP6l!T&DV>uXMBV3ljcJ+rOvC^r#fL}uN;h#zj8!b z63=3rz(R=+T^x+a#oj&+AHbZ=m%8nq1Mc8hz3|A=3YvWPZ@u#<9kM^(9kQp^#i$Hf z1+RHs)Guo`j&Ki$KVG8Uz2<({(%NJ>#N&nbVr@5+Z(6`fjUe*_d@sqm$)@w;u!Od!VQy` z@F?()kH69b5G?qp#P!$>4}Rs7zHi}%pV=N|yV>NT+v~y$3%s8(ZPrC1KPCv>!l=1l z^*_MTl5VNW*laQfX+AhP;Q*D<7Q1(9lwso&dAjX_qzBepOubYp5i8xT4jw)24V8*c z)`4v9s8*hRh+*;-R!n%F>G3=UFZlO2+Ge=m0>vgtPs^BeD#u3Nkh%*m>9pC0bZp>N zA??(;AX9YnyBysTcn!=SbNlTZa)fV#a?-Wh0r2Phhp{_!so;=Y?{MZN@n7rg?hW2I zzO*x7^_eqGb*>juXz!i+;z&&yewOhvSvVe@_g!i~yR#08c8~sH?IO7cDk)oM!-J7( zR`iAH{#NkQo!?_NQwK&4F6&74eSa`@xjhyC4JS8W-2I6=0RB36wxZ`CoFMA6R=2gl znqQg48S;5Z%UC&1TB-|#42=(2d}xO)90$sT2YX=3vi6xK(=Ze)8r0b~7DIdNNWxKz zKG?_lv}=%=>{Bt;QUqr@l(c=IOn z&lM`lJtHAD`rqSV9Z{`jGgSiOqzm5bk2Tct6!!ThR=~$Kk+6t8A7DCS32t-Hi zYc{T31J|R~->!Il0GmJJsrCI-=OkGzc)+X%==3)H1*b^{_@BFSa43+2 z*d}_Ki22iuHtfxYaZeh+>(P(u4st(EdzLwsV{a8SY}uoh{gIAH{Oj<|V%s?CYh_;l z&OuL@S(O^PCjNtaHG7{9zZ$?sZ`-Qq>ukhYmQyb6jlBf>{x*(ejuwy-WVxk9`T(Tf z1p3@N-2gfB(RS~8dQhqF(apv0W5`yGk>3wiz^->c>D|v2z|QHP@~^HFxKA^5>c*}g zVC!;p)w3c9nXUMF=e!4yuWF&ao+3}2WmD@Gir+=}+a)t(Gl>$1)4A0reEacr-^tf0 zwKKT=$lTepP2~LOg5>DMun{=ty754u`5SUaXF3LnE#c|jl~YnD$hl2&;}N-{Y0&cB zBXPf}6T3{Q@0{-J#<#ksCHJQ_!Y$j#L&>@`|8qZUG30zGNGgUyL(>;zng7?b_n&&@ z|9!V0=el}dreR;8FyD1=M#{#@F_(5J8lsJX@3s`l-&fbv)Rb<23L+-TfqUfWiJU~S zo6OG=kdBLMk@MU{TlPA<2R5; zpD+UqA!kQ7#ePnmyJ%m zhZCA0nErVu=l5z9p=I)JK0X9~JQt+6eK;t7`%Zcsy-rPGIk>Qo*Ypn<&sVLQur|Zr zPl6rap#=;4zwj?m(@~P-uY0C;Qc=!(#WB7W-bA?_>c8VyS1(XqTEFt{Kr0Bf?|PZ& z+ye?W63eDc^WcAPBB({J4rTG?6^^ZiV9L*OE9@c_#d7k6+6=jeCbP+fflZd|M@lRT z{p;(23@NvsaUpif&-lqts=pZcCj&uoA~pV zM)BybUZ7X~Ha=3nfY}TCIYnRc6TeTk*(Nl#;dI{F!vX0%=&msP{#3*yR%i{JaB|}y zR7VYUV-|{Vx18%u58c10enN}2clHlVuQCX8UhV;nbJN*v=_15Zti)eo+i;XD-Rt(v z$n<~C`~Q2M|MT~O^NmLNrvBg~s~Xm)^AsbE1Z=oAM}d%|&C2n!e9-si#yPPhB^27r z$Cf5=m&{Yo5#u7xM2M*9}pufV1~F}3b2q(8NVpEb`W1Fff$ zmfeg_W7>AB6^rLDAt6JIt=Aw2R16uS#_2BO*=Mm4bo3!uA8lJb&U6vX^Y@#*m{GTMlUiowq#p%|Yv9*ZSTo zW`T}S*NzkkG17h?kyJ#P-53U+Zc~Ahts_ICBpH5yv&%SYyf_J{!4PM|0UQ) zUD-b>Oi{rjPH$xA$}+4zB`Et;Hnl%&+x_`&tu=LOr#<00#L>?Qqd8%!JJl(5`e zk7HXaeor|k0$if(OOn&6lTu5R(TE(WM5;y zB{%0UF#WtMw~6$p@VIpkq@)KR7rnUXtwRVhUbZ$Nf81c=!w>V!RbSj+F#67n-32}! z)&5vC84ZCl_o&q+ZPDAbqq0=v8T8kl>oDuL#OzPSHO;Qh=$@ByzG3nsxG4=6Q8Si< z`l|k-$hY4AdaeUr$eD>$ZPBN!JHNmEy-)-6q^fx!Gku-;R{rsPsGertpsc$o9vBB)8J?l}yry z3Dgv`e!fSs0U15Unv$+D5x(`(-vs({FmpQ>b%2x@v2Zizf*9G?zklknPVnX`beJjR zy>NCFRiuxP=!gfPxWJtyx6%fz521InXm7*GrBh8~4~kL8Q77{M_qR%KG=+tHslfL^ zCk#{5U*q9jyyc3FE$H{@#0Aq$)I>&wMpu|+Cg$?jNYOQKBiXz5hDDGQeP*( zV4BBxC%#GF}t1O!gDZu z&(tE8wv=!kBKH>GE3!$g9i}7mCwC~dE5D$f=XPM0ZXu{Teq4eBgU~}2QsAjEj91(( zyyDIXQex(R-GA|C8FYWolu69&q)<(?$l17$<1NcDnbQjllo~UZWS#po#C~m`cY%fM zL||+2Y5B%?5F~7-c}9nhGWvER*R!|~Hn-%|Jt5~QvBk&pQ|d?#hV7jW-)CJgMA==S zWS9!c+8YYmr+z@8%-JJhrTwIjvgu)R|95Q5TsD*U9YR^-vO_&t|3GqidzelABHYTM z`JqwQ3wDQb>l=wFaN8w&?1A$v_yk#5ocu5kZ3U(5ZE`(uYl7g?o$UZ_G!}{in4RBERev_ob|JK#q5yjfE z_j=Gfk}drCgUOb|cIj##6-bd*7SDG!= z{Q^EqUUs2`Wpqe+!(Yh4NthP3zt-0H34fj{mKu@#mX89mfyEC3@b`I>75n;L7_}Wx zXc?FUk1qe`4a6eSRbxB<(pX{YaUFQVkdl<8ExLcGkt z()FTZ6nkS{+1vZfg2yng+S8M3C@ON}OWCn@Slu69f0eHoPMy>``mUXdc%ODH*&u|S z@}R6|a-pdgw13b^F_3lGER(|S)mJ~!p`FIVv6-8oV={Ejm2L(Rqq=Pzmjwx(M?ZIT zk$X-S&2{t)mJ4Kl_0W&@OYLyw-5|BhRR-d1;<-xwKa{arL;&)elcG0{1i6|YVasJ(V&9B=jYd%a}N-5(|FEPd0?@mqZZ_%s1 zZXJl*>Pif6g$ z{$RgP`V$RyFMqvO0YeZH9V@_1X*Egi+-Ed`kt=uaG``8K*r0n?A{@?0 zaAd5h_i~63c10&TcUUgMsSKg$9GzZJmT~5(Yu!&&8#$-ze<$~~2fkG>AD@Cd{GlR} z-mJup_IE+ZX~ZT2iQ5_*ZE#xW3)jLca=zTKiRsyvUBoyY zf89!WI25ZBR;Or<;Xif9|Mi|TCMI$w#u-fh2>mPJe*qU7ic-yUy$A~$wV79c>rH5SC^aJ9l?F?Lm#O@H zgy2(~{LXyd&){4>nPIu(J7|Yj3A~6gf>P(WUt1zL@y_#S@?nJ!pjD^q?!TrV(DczQ z%)`PJTo2kN&_uF>p|sjkUZ*c;IXpVJf7BDQ0;JB>HoX8&-dO{f>+f6&y)$A*4xd3FBzX+e;h=B zMt%m374a0RJ@o~z+(`j7!FK=j1_{tVBe`+9Dhs|hkJ7iEj)nT*6-zeF^SEd4y`6@p zRMcq zeSrJG($jLlpWhZ5yg!utCO;*4)56Q$Nhk1ezhO&Fz`%?r?C*Go#|Ei-E7{`Fu+Q*%2pxfv zD#!7COeRK(e>`%6%m>r|s;A6vcfhzqp2ua2-lCqt^6d5BN^thg14rv`eR$^O%m0tC z|BmMRkN^L1TV-U=h88MGN>gsns0c+75=vA^Qbv)G9g>w*_7)<0-X8V{q3pe9b~3{E z`TOJjexLI>=XYLzJrC#k*YiBi{c*crZ`bSPs&B?yh_~%z4zXI-V^oWpxTT0K+_1iP zr{<|UJPLVsY*exU*KG3qzP7wYMgEN_U#}0)X=d)nyy%O$fy%Wl?;?>cHv3cHggTJR zrBZ9gbdh29&+sWh1JD&3OB@Jz4RgsZg~o}dP?@J#slPaenZMiqM&2L#&-2=Lr>07D zK{pf&9nzls@&~A{d_Qx*V+mD5Wk=)#(r`Fw;<3$#CcN=aS)zA{hV-Cv^zai$2jr{O z>kXqGA@}_@)D~!`LFmUyySk@c_{*7Ss4X1DCt;D=M}o>x?PH|nZVfW8@cCm7NrII~ z61S^~z1jzg=dS1k)lC97SFCDS#Bb>JP0@KdHh^a$^opq`ws1VN$L-P60T68zj?EpL z#cPUtdG$*h@sG>tsKEW(2(Qta=T`e>Kzh5BTeur1Dah`7TH(_vyf4QnvK-o1-2Wl; z3}!KrCMViu9q+Dz$-m>K?%x{V_Jr=J(L9qi|n6mt+MC-XmM65l?%=T%4`lA+y%l5B=jmM_$uki+uV;*Il<(oy> zy%MpyeA!TIT&PlYb^=f4=AX3lUVu6N!^vYQeQ<*@&~Jsc0VJ;m@Xp?`gGb#D?cdap z{Vr#?xE4e*Vd>;0Thh;3eDfjNo>5+bX!WqUDD+!|u=J1Gq}4q~DA0vIIVaqOGE$G# z)gJ659>0Gk$Z2$xc;n^1|E)tmz6xA-7IJ6?BmeHxOAjdsYlD9hycrxsw}fxui?<%A zOkuazKsg7g*Ja)xov*;4cH74vL%J|lIebCzHx2PW=W@8wNR8v7KekK@u4wC({^z;f z#@}w1LpP2tVR@aMpLY^385z@yF6eSeT~Jy{-Gu~cxmZ2jmIb?9JR{tIFJqEt<zHHPMtbFO)M43^fp{-@wJIuq6DMb+ zj~U!+!-WjZ#J<;AV0~ZZf4fAQ=3nqVI5i?6U5fdpMxLJ?SP8A_$DaI# z)u`|#RxTl82CQnT1iQ=EapY32`%z6!qAhNh$66Z&(OR3MzghPIRi>$Ob|vc4E8d2pDKn8o~i^>s`X8~AB?n`E)k$Ymk}9v-3;&**%6kIZn6i+WQa9JA8t(`b0>X&sykD+$Zm+?ANs#`9w(x+`GQ4 z9+<~=zNBe|GgKsQ&2@#$Hz!DMn73clN46lQnfZE#*9hJo zIW3d8qa3`_XKm}^{2xk@zIx-}bLDJ21QgxkeD*`l9=i`*ZAeOU29tdij8;xsFn)lN|7}w)4EyX)=4tl9lqss> z!@g0-^5V>xOS};XMw`W-!}xxB$Imh4x(;j|9%U ze&q}824J9~AK8D=6%&%)&@$9M!C8r~$E$~DVC~@eglc6OI8Zy<(7x;eEzMoS7kCq~ zef&ot)sPRW-UPxOKbOk*%c}H-H2UF)eJ8Wa# zU=$OBjPgB4=viLjAS_KWC^PN-N|O^x8J-K_b4&&^vJTTp_C*eXqzQM@um3!+OCr+* zdt1jL!0l&chfxP?vzHAf-QXf&ca0YvT~ir|-#(s%W9zaY$GA^h})F4@m2 z*L3$u1w?R6%JzLN2329ZD|>hTfRh#NKMXbNkWJ&~>d8x)z_2AC_?LYDA0C*cb+X6> zCk>0@;J|9Qsl_63GvYhs^lm)sx>o@T%JqTq`3o!v|vB%PZ-r7L~A5lXf=6i=j+eYJ*Vi<*ynq2<@hGwv%+Ky6ls^l)R6Zm(q4atVwA|aqoYK}E9w{!{ygarYgz*PHjkM+By;Q?TD6QDX@e2#U404veJQVy1?JF|h;Y4e?$X{SfGU~frSPM4}iG-WI7=`A^fJ;@UdSJhzPiTwdB)+3R z^Wcs81Y8&$R;-bsA~{quSbZQZqLuYUdP!zVl1m}mqVgAN(l})wSD9)XINK&k>86a~ zg7DF=pSTHdlZa)hac@VBqkHG`+o#~fTECfU@@GigbO2yBYIBcmTd{A)yLb4!J z3(nQt{CiO#25q<dOUwu3t?xgreA>{-xH37a>HqdJ6TazZ?s4Uy?7(|EnKS?Q|Nog+ z{@>4$?niH2pc#Ght+)G~>VjWKqqAbG#;~=S>xuu(Zj?kt-A~?mV7@CnrleyCy(=bZ z4~4%4QUUG2@VWPR|M#n_Nn`J^S>4m;;-jCqZ65?)IK@tU<@CC|pizSbOzt#M0|W*M zbojH>^x|g`mw8R9GOTgP;#K|d6Cboo>{?^cM+K^P97|3exWamB?cKcuJXlmK^7M8M zG>+W4e33Q}PEJ3#7wDG{eCPIil=Usatfg^X{CF0WM=?qU)kWa++22(uSdXbyZRmUz=`*SW_B%l+5H=6<{qc*YfREyK&-E$a499}yi+=%x>t&!q-<@3Yj{U_63`dk z{M<17t$J{~ReceSFKjtq|2+@U!nJq0UJgS8>lPMTkoP_s?V6^A1z^atbud-#&3~TT z9OT(fBij$oZz{%o|Kte2O;VVejq>0GpZC>Ti6JR*+p83pg#nfa_Lkf0ya4;udzW;o z6wtEvir>{#JwUrAfhX6=I!X6#$w#55A^!QksamtAK+hLL^~}j0qRxaemM4*i)E)!K z8i;{~JXHg3?em}*7b)g^+5x;8)~nfK(m}9gH`Z*h!;3RNi}c0I$$6#OU#(9%;lv|S z`M(_}Ayhg4RMl%ys5vC~=}@sW2((+rUc5H~H`)$ej}8ro6}`q@O0u7&TsD30JCQ)3 z5bS<+AvqU5S++C3+_C^qR}T+M5m(5$a-_CJ#|qlatYUptvq1Q$xXwc8Rmdcbe|s|I z2hbU~Gb zq<1ET-X!}(1%2vg9q=dJ`Qv95BhWr@_|*-oDQ;E~OPb;U#jTzZ<(y8m?wOxSV$ZDVr)W9D$b)8DGG+Uu!9&~raf*MUg( z2j<{QX=nNCX1;f%$sc-62ewuuGcj2$3Qtgnp|||*BOVIr_?d# zB$p02Rbf2Pq&))^%#~qR_-Tl5W`aSlE3GcLTZonm1+85SmPNZ9aD-0Uq$IS%g25AA=m3??dm8}Nzjh`2I49lF(7EyrIYV9l{c0oSzJ2VW0U;U2A<>LZ@%PIE?}&Ax?@2 zdEU%QTx_%3_)hlqvs(L^PUb9O3crtFp&C7j>Y#6t(aXK0-FNRqcm~(ue#Ib3QOyCo z%yzCt=6EvPy`{O0B6kXRIXiis5gY`XSNeku<>a~N*c;FJgmMU?I<@1MPAN1z8a7G3 z-i2I+hbmkbs*syGS1+#gCy4Pr4BYosia6%}FZiAiH$kCNm$RaOg79}zXngsSibTA8 z_A_WN4e@V7rSB2dAwrLN+}l~A9cpiWs*Z5YftX00ocjjLnB&uTHA9Y>sJc3D-ec1Q zDka`OyaK8*>sI{H{l2;IaEaB-!mI>$XD1z(tp7iKgn73}0{z7q3^1W``n9v|KcDZ) z?J_rm%gDZ{6Lc!%kF|-Kk=|s?Q1`g zU=;kbSN`9l0o3i;MBEjig-3do1JZrSp`1Kfq?;N9$SDdR+cP zn>X22gu{AgwcVH}kkp7b^s~IsF5DxN_i8^dDh*9B(&d78<6dtnw*lBe5CI0?R^TSD zir%-XVGND#ww(D|gY8*dtJ7^A*nGE4^5V=a`uiNCjSb=;rH%Q?F}^Q>%)l%%uVfnj zzJ0yF``%abz2~W3RyGTvI$Y$sJ*@=Q4rbkPM^-{)bo-MWvX0dd`tV1@+#+Ply?y^O zaSSO^94L2f^kZG|AzkU99NE_rT5(`7{F4uWy%)M;3 z6ww=kk;Si6ukY!H>f?+wQCZta-g9X(CtJw8DX0Pu%vV(_)>2@WHouJL>Z8EpR0Ri-Oc*(APRc6kSf67qh`dS%QqMnz2Y;e zKZ_wr_d}&Z=7HwT^r?>@Xh_C$PyR@^oFQHqyxp5q%1y{<$}sBW2oW}qqP{sx&tr@c zjqLb*I}BIk8YcSeBNTk6Bb2!7@&1>|a9yPtuy#5v$$Dxh5z&>9?3l_!iV!@$Ii4B?Rl)q4h~d3PC>{ctv0iA0v;b9WTc6(_|NCsgZFRK z4R$YdzsqrPHS;afr>MGK9nL`MU!TG!y%LHQwZKND2CM&o_n_XNV_s9guBw!@1^QfyJFF8W@6c||zwJ;v2Ei3+KBllA!vM{Z15 zVA|%yX{td9G`(liIXw3oMX5@X#6`&5GKGxikD11buQgI}{X12LQ6`VC4A(bdz*m)R zdiugh@HcjjKRJoX1Jr)}8fS5zMZKLoWhdUhKTBcX5rPqVZxZ%Ss9~lfdy-6mFHRip zJDdZAA5)Y zjGn|Z@|mFRZB-4+3Qb6w*sCn|iu@IktG8*R@{rfqepSCI8fQC)U(cRSM4Q83Y0YC# zpuL`D?kqW905VRZ9djOV!Qk{;?KUpZZ9Kd#v8o4uB@RqBPI`jG@o{D^dvCB2?Nnty zbqxyHV0ZYI8Z?%jY#C&5MTW648`W(Z(7Xq@>JfjBeKkMyhS>}vqe@-*fHrzm|yLRuMZA*ebC6a?>`D7l8wDfP*`42cz zWZ}Lb+EQoUTi{vqJ97uz>~NW3Yi5we4qinqx0mGmz_3osze=f(sC)2@OgptF zwo6n^kI_HF`_;Y-oL1s!z7$qJ-dGLSXM1P+QsaRm{`T36Mrm+=N|&B-lpkJxp{^V( zwui8zGBxpEqG9gUtvK#|%1}K2<=W+bWz?+*v3aL%2gaw$SjB&Yz~jpw`L27M#V?Hx z=Ry;Y0L8I0B;SX{Qn?<{P5U$*fzp&qG`l$(Sb421?6<0s?6<51@GXi zf)^|2xKisnz$K`&=5fgy&I^b??jq+>WuM5|3V%w4c6Iqm>b5P|BPOtQKm9qNkqR^$ zS0fj{#MG_MbXeMKxb^hOYxp%K$+_xRi^nASu* zWZF*V_;PalC_PC8GUzG_5fo!FQ=J*~+2 zzV1@CZw!VUH!<6Gl97;-yYN%}c?s;ic-7#*G9yWO+$H=Sl_iY3GdKzx*@KctB8`d6 zKk(4mxMWh%4J$zu-^L`2;bI-@#vPU@OsQ^(6mpD0u#c{=nuvqlX9LWV)w1zh%Xga( z?}kw72Q`!F(G1+_FRfM$o)y#4W_>odyvU%I{$QwJRB z4hedSg_t6jx@+2b2;IWyntW2v6Um2YYZ~hI5%RU~N9eW$2uFv|ZM6sJ30KpSvu(!) z;oGB}cY?d-FgV)NV3=nPmCP?PQ&hCV-04A~>itXD?c^{PRzHR88p=HT&AYLUfucfN z2w^KZcqHg*J)V9}oErOAfy+FjuNx;j{`bCUUioDDY|u}58nSxC`@(HxV_SN{?|60}_bq=&KNvWW zR?b3bdj^V31PovZ$Nr}pjO;}74V%mHW@P`!0=)h%GKAXgC^$`iuU?}2oEV?RL1;Ie zI6ShW2(S7J9}@of1J&L?X*&HX7@ib}`TPADK$(kwzAnZ5#CI!#E3ERXs473O>jb%1 z!Dfs5RcKf@2s*ASvs@U)54=6VEIa@oRG= z(#t6dYs0tgqK#lDyvMG;V9{@cRpD6AjfVn+slh;|p;#{Zp6{Wr{Wp*L%sL*&%SymV z*)YA5Z4=Lg#5kNf+l?ZYcRp_V6oJXTPmRgL^YG}4bKk3){UoiINss#N(tstxhnekq zKOF1SzL+ULjkNJz&KjFMq)zoSnP>K_f|vlmyzE3FEDfboUJoVfJ*!H~UgZAY$Ek~o z&IWTxcYZkHw!koo@m}a+4I=jqecI|*D4zi}d-mCwxiQou-r1NLPU3P$y(#Kf!l`bb zOv}?fplv03y1Qx|XWLv=YaRN@`Lb5uT_Uq+Vavz+mTLu~FO;1N=^nuKJSxKsav#9e zck6~pVIycLUm?Fgj*fKp;4%7iIZ@J)``e!;?4u_sH@9pj+V_#xhsXVv85Yn~kbdIO z&kZQ8KjeJw5I@N~YOzkZJ|6|>o+*gmPr_+muFZFdya!V=U%`AZaq8STNhvtgZ52}bz`s^p!~X5HW*|c+)(654gp&A zeO_jYIbb)Gq#wL^8KO++4*3ndhDqZB_cD!4_)Fp9E^8?WOUy?kr_M)!XU#&|joKFY zXnp8FSB^ADdKDNPwm$$_&;8E$JKlmYVX=+y%3%<>Nk6U39SkV|3#+`bOrh zc54`It`^&>ESZR=wLwG1&7@zaBk?BfYn_F>*SKzZZ^DH^4}yC$=C@X}apRt@_+q9H zCMSh{4;E5GgAeVLWJv>Kv=Xa+_mKVEflB@I;r__Mc|gL*(i1MrU%l@+;|#vT#s8+P ztWe6N`t!=aFbI20%H9<4!O>yMi?M0pFnTA4vS;oiJS#l1zh|WuXZ98QU%D9p5kAW? zY)1|OV+<>w)+r}Ao%QOjS=L8za~WShs-J-Lj01LucP3(hx#!GOXF76q;F*6@WdEXf z>u%LT8@RxJJ8mmB6mHykW+P*L6Po=*t~R)5?3Yovhm5zN=BV`Zf_DO zl+f&4G;y5c4xEa*k#jdx3FeuWY!aHiQAS0$iN7`h0QcAin6YKTt1P6abgHp<&lgDXlPWwiai5*Q#j0TKh4Km#V;nA z_=k|@h^e|?P%!RQH1yTuV<&1~UeCL~)`2hiFWqoiAH=~GyXhBZW7t1!`stXqGJd7F z&HDfI@5n#AKKOO^7jWzGxbQdD!HgnTVsnWPM!K;p8Rn8XZYrCvRfz(rksJ6}v17i<;Hq9D}5&cC3Ur6GQv6*}=K%pHv`@SL8%pM#7q`(uww z{l#%&NJ;!?1#0Y%?yGKy#2ayr&6MmLI3Q7XQsmS&!t(D!qp`dtL3MfFn;>hrFB}(EkP0ZR3?-97vutE2Uas(SDa;7qB#&DRLeeG^d0Z0Y8 zcl~i3M7I-SS;=k-xWghV@Ow)Y(49MUoitMgqG3C&m1&o7DMx@uJ*fzK$dxH0m&Q?c z@{;4f#XO)ZS^Ip-u^8$)j%oUowxK}}YgKG*5Lln+Pj%!d*sIcgY+aCwYvPa>}Y6@XzE=jm4IU-?R}om8q7Hy7ik``01@?t#m`O?U>Z>; z?fTmmP0Qtv+myY;b+?pW{qjc85K#1d<~#kr=d)zmI}Z1U1E^fLI^9?H-}gxW#8!26!rQ$&0;P#iead(eaIzkcPKQ%O?*k zDgi?UVAx$gNA9hNWBw|=jrg5ocDLA=tW)iM^FDKXGu$_sJ@@wWIA#So>srT5lKYOx z<6B1uUXCr-6?`*}$IG&f!Z-V|?89!R9Q8&Z*UvB=`nHL23#}RzP1CrK!}V$5vwvut ze<8k;p$#y=_zi7;O8RA zkpARMWEn-#jx2W+`|GH|DaS;L(_?H?YWM@W4_P%Nwo#J49_cKpsP2K?{$F3SYIWdh zMNOdYZZa>v|M8D27G*_Tlb&F!aWoP#h~O%K;6f~2%_47`uG)!-VPEvJd7?|+`# ztvBx+j?A@&H=onu_K`eMZu$1ln3sWgeColyTeTM}TRh zu4OyD5BF^EGJddbfbZVYe-yWu#b|IB{*qmWEhT&uHih3Y`OuzyhH0-bN%^KT*CFx<$ z(_2?ilXjcITP`x+^+Kga+T~*0<0T!pW@QA~A31sIE|>wG&SagFQz0^{ReQ0y2jLxd zx}!@WK}e$|E19Vsjvj`^yDt=bz+NnUsP? zHyuN;xv%Jf`2Hd!?7S&N{OZUYXW7EW9RXOGU&|6GIf4d!j%jCO>QL(p^OG5$1$@6I zKJiAGl325yQ=jYTMtz5p@ehK5n6D&V{_=erw%+@b5nY~(ZSN$_pc`mN0FlGh7#kPiQ-n-T4m@L9^Y%2)d+oRq=HjHeo(?msXM4_ZPowwI{Tz2nn24)qjijDlPe%8T=Ntl78o{OJ z?tpDYH+tUjF?>Mw@7q_fe9V853pJjHJGUEm!^^Bo$4ymxV2&%lp?M$?719}O1H?06 zWZRp}gGL0-%M1Vp3#(ELi z4=@#|BKaY|AKmZctLd33sJmOwbhqa_8a<kf_=|7 z@w3j~(XEM~NtOwOJ6QtUE@m~@-1bjNosOSy-{Zr>OYZx)x{-UyS(eNZ(RvVeziU^19+5wro?_ZQXYz2b~XTC;AgM+O6YqNg;U~{OF+sM-! z1B>EJQ?%$vTbBAsK5@g4tL#`+6*~vs4Vn1kOc9VKd<2)7yrE=y%=uEu7K~CDik}SF zOX_FhnLB>x1N6U|rLJFy2l;089&N`k*ev8OczUP~Uv$6zSZzHB`qqo)U!D44?QE}J z?W-nWe#%E+Bpk8bcS}m8dY1 zEc*vvw^B7?+|J>Xx7`|{Gw+LH*Zfalo6I=-j+TX#**!H}Rxpn_+_U0NB1_Or8#H!{ zY8V>T7Zr~OvyjGzm2ST$`&PayA52^S@Eg2=*V4uU72zK@NY+{?|o z<)?2?-oIE#DXfSi>Tjf6KYgB+Q1GX|niRH%Fl^*OY{Nw4x@F%#o^|Xb|`JT5nj91 zgtbqb^kVABoFlE4tgG4+81mdQcW|o=#a^n~?is2?+Z%2VKFWTFbK0u649?DC>6!J* z;|xrMoEv5L->Y+QSz<=S^$j)QJMkrC%vpfQ<{fJGGa5&T>6N`;#YNa3JtUe-&Wms7 zN_Z}Q{U63P+2@&iaS$CEESt}d4}ux*OW7wU@{r}~(C?wHH85qmwy!3Dn^3fn^ss+D z3fdyhbSK&xal2Aj`7SpqQq8r*q4k}^ICz2hd4z2rQAcl9P|NlX^~1^)^2(+Ea~>&N zQ{MTC{9dDz_qg+EXDoDHeV9&}T~Frie+duGW5>)~ukU+zK8BU4{^N_jVmLJEXmVum z6*4gNMg-k;1mhvY`z^F)z|t&mo9_29lz8*KcvbZSIBp~>Et%(nLS(ey_xHJw*51b_ zG7?ShXHVs$nt2N@&+h#x?oh&U3f?vL0RlGZHrxZ>OObOy+eNj`b%E^3pro)n?Qr1Q z2>sb02e342)SNGpMV3EKvGZSip@vULXuzrkR#@`)jY~SAeX(FrJaGV?E4mAti6ug# z**>j7_uF94Fk3et6AAtsX*=9a3ZZr?cF_BnE8NeX?Wc`-jrUV|w+dBXqVkX-!3 zF(&WnuKOo$fcGy&`>oWsFf&)dd`RLvnl=euSa)cG%Pr&k6Ky<@M8cwg#f&H zZor5?_7lt-GIV%bq@ovHO6+cAG&G4qOuonBq?(EDv>gdfW@P=i_-wG?7-F94N#5(b9Dobib_@j? zqlA&2L`q^R_zzw0Q{&b~e{)mk3aLN1Z#d&e`^_edkus#~;w9${?hQ8Zn!f}EE$xsC z!k?j0v0ki5sSZtK=L4<9JTSb~#LQVd4A!CtVs8zm;Pz5lQFX(7G|-W~NB>>{MLoa$ z`~6Z6)w1|`(!N^2cx%hm6GO@{znnkJXB&a}nO}2hepF)JTNOt2<$(X5N0#FMJzpEb z*HW=Zx}L9r@z`f=p@A*zpHgI2Ezl=(;khPJ--9b z)g`=D&Tay^$rruugXG>#cS=!o`3<_!^bfAc?|l8zs4pPAb^2qWXOM|BNT;6kXIzE{H#IR|!>&3&~DL?a$Pp>){*#RuDd zNxdq?4*%COpA!oqzQ{Q)&AkotDc@JSiS{64g=|g|1;V})YOf=BTfytSTueRR%v2mP-ILR(%;;XcbpU;0h-r`ja%5hZ-wiDIp zHE6?sXn!Hz;0QPTV#7!%uRo?8yHW>Cci`kxJ?L@;oD7bhm1xuO2IxSDHePRe<=N?`x5#@gZ>q0Yxn z*1O~69;&@}m+Ye2a5+k7)@<}9@ws-i=|k^HqMwX2%eW{-h~jpEYj%H;r7YZg+-5tm zvM|!MGJ2FKO^nUlB|nE^8f5!F^n;3qb5Y%CS|X)i@qLRkClNH9kno4R=PHi*e)rQq zGB3Ntx$67tI&A&?((mn&PR!_c?fP3nP5jRsE!Xko_v};y_)I0q-Euqx%Lw&Y5Xx8EIGg;i%!o`?Kp7{|l)ru5|!6j+58{9dFZ zy-c$kKh_;g=D1(+5j*ApQ<4?CvbDl7HSEb({meFSpXqnvA?JrrH%nYpI#>$lZ=YW@ zeVz=L?Q6xhs7CQODe&p;Q=G(%n%|3~xh-)0+k*6&^b9N|wK}Jdj-kNPR>h^DEO6uC z^yzkPM=2v`6Z!lW)ba^zvYco`noEkhTux;Em%W2u*0*`obidX>EBy~UuV!kk*$#nb zQG%Y#+Y(65Ai)d&0WiAI`n~&j2UbX4Jb9;rl0-RM!)v7Y5AF|MiRL~&0B;^qq_I@} z#k!yO#U2PPf?@P~*Yxr(@G?D7aEXbUbTeneUF;1FG0ksiH2#x;H0|D|x*7Zne!iib z9xd%b<-iqz2eKOo<0<}#J~o|E;> zdxqYftwrdhU^pVr%0^;cwtv8{G67Rk0Y_^PMomzJmiiNimMiYk*l zpI2Giw;GWBU9}G!xaC*y?tp?ZU&$g?MQ@2nKRQVgdgtxi&DMqVBurj=7Wbd?h-5y$ zL83gF5B=#F+mXw`ID1w&_E}Io%qcrOJND=bxIYgF9A9{j!nZ4yHTGD-^J=Px-}pmu z$Hs=td8;7wwAHuCDi471o=3Ng6dWMi+|*yw+XINkBNFru&%xB)IHUF{nTwcow_jJc z8V3I^yG;<`o8eSTpGx{8fvhsA`YJ`3Qau`;MC^ zT6k4xPOP1L-+mITwpN8POhc(wR2CS1n)=q$^FH8Js#y?vp$<#Emofqe{E+pXb)64G zB#y7go>d(2fx28?{oVv0O!Z+pxiS@tat5Yn+dU%SpZXBGTsOd?NcE`tB`(p;iJ@7Ewzf{Jz{ z@BQDoqX@fu34OjFoV>&9tTyloyN{d;9XHQHHU=rCpHgwSp_g~AMzaW}vr~3Cgt)=k z6?Matc98&4oErjV?&$VTiI(E`KR6sGdhPjaBRM}OVQpzQ1OK=?x7mCqaM02FO)_I7 z#2orGaVcm3PSnwMjO9eYF`T>MKeV;s4LsS!O&{RXAV@l@X|Ia!8|L?QDB>9w` zc|W$gC$QZ>kXH>)KlUk=W&Af@`odrdhr4|9F0BctA_Z7_oj9L4iLP;Od$R=V z;9tk82XA~4$bEZUOhwH@(gJs?=Mpo>>Sr;}#YRh*dopN#n$HJIJ^rc5FCU;WL%54K zgPy28a^C3K#9!nnFF9dI-GyTEA}8(CGf`w+jN|ye0bDkjG7)vlMDJf+<-1gO5P}qU z*c3X)AmUxCOJZU*rd?bslwzKTw1mNvsTy3QGtsH$3Jq!CN6S!86V{KKH`z809iD+S z37VJ~^7oWaQoMfu!yn&RrPl7z?FN^OcawZ8t*}+c<@D^=9LAW_zm{I8M^nShG1<0x z^qxGX-ouoGF}jL*dPQX2pdceyUW&|l@>svuDK(Bpqm^%Oa+CX@Lf<|3!u1>W3QPu5 zQqYn7`^QIyjhm4abw%uNW-WSJ?AqWyLP4BnU<&wT$3k=#@P+)&p98Iyw%_&<12CnD zgHNT&en{n0eJlYmUNdTKpderb!i+BXOc z590fpgEDbX)Tag2@Dc1h$8SAz>@105?(a5v%ljqy`b z7&qyGdi$ADM={dP8>i#tFVhprEG4|cDpSz4-Tg>J{xVo!;P20%U?aITPF_-Zw1q+0 z#yXc>C&2w}|D(N5`8c=QTyfx74MudTZtkpPBmK|wE60ysl}`ilU1O@lXwZM>$0lW7 zj}L~WLX+t#z1na&N=*vvxRUV?MWf!c?y?z%{I$CK+w@y-UAa;CoFolNcxEj8=lO7y z9`cjU3t%B_(aKT=(v5YshuH;3rXjIIn%mYq4<8C#IzGx&4k_PK(n`(h;Lz9br0KsyXu(C-9XUlwvKC&G zvKLu|uzQROla-?=e_Hq2t$ecn6z<9Lks$UHRd=ZmXL+w;P}bDauDU@qmn<7D)1HF~qi0|sHwDr% zVNcawje>bYy^g#e4Uts&;QM4kCc5y-tb@iBS_u7AHvHL$)fYUH%U3?&X@=V+YwFGT z#-yv%<@yg4be*ofd|?$xk1wWw>iYwwboMt!^h)vDE?Gg&jVf@Fzeu7d?~A_iDA~0} za}dYOb?cSS(2;J%^T?l{XCZ>}o>S}_T1S239V1Py6odfJfw?9DI@0IbvXZa6>4>3^ z|Dscbwv(8uH|-3Zw-HAVxtsMYQWFQ;7uUWW+5oz@3r->3G=!&nN)feDBXaM1McMI- zicmPX#&z!02n=)HkLciBM;YOc-Q!E`cvR+0g`D4BlJ6t!KqYc+(|&B>yFicmf6gOb zukQlq>sf(3OQ+%X`7>!|`xB(yG+!>l|A0Mjr}}%?F#35Tp2TH+Ui?6#bkp4I%P- zI}O?IHu@})?u^R^VBfptNqwps2+ol-nfY{3ld&;>aj^ldmBsX>CIdi;x>ZMt-0j@ z^a<@}s4WLDxo+X=4o^fvt3JuL;0!QJTzywoX93C&CGJM-DFc?+YVFxvXNbROe>lV{ z3nvGe6+eYk;iF3~QF7h+(BJ)~hf(i7D%(E3CRgtPo+=k~_{$>E?sI2Q+gXH4)ul5W z%uc9rYU6l4b1}SF3~7yWXu+G=mw7&JOGoz5ERh)XabTakyEXo|0F!PXzjaWZ?5|p& z&>kc0H@q7ndN>4m6`UXAs+NPV&BC&#h{Of>2z?w0J_Y5Zh(NgzXjSUCvs6@)NGg=2C@rL-6lE!EcCsar zeb18Zxa|9$eV2W`?Sy=<&mZsiZ{|1io>%`|Gq)LIayqZ`JdWe}cqpC-$D-(?cM~%l zVZ6bkRou7`*xR3;5wi3`rNa{s|1tgdejO#=9C&Ajf!JCkxKWBX4>XhHB5q#dqa3yR zClb?<0_u+Ym5cNHuxpK1c=5{&9Pe8%q;)icD_tyZoZ>mKDEDslx8xX}d7LPFr+1m*ykrcr`1**3zPS>f<3w$=Ap} z1KC`X->??HPVz3}2<^CkznLk`kIU7sY$N?Mlrxc8G9AzoxywbA%6(f zPf-f-YEtgnP06#gOXv%VhLg7iM16=r(EBrd{>lqBikQzie4{f8|6UT+4(?M}KBAj1 zZp2Nb9eKsmSiB0%De>no+0jyR4Muk8SY-q2gTNDvk$Z^lx(cZjpG62hxqee?%Rhu` zb1j@4zaUG^aVLIWK#@(7GQR_8DZz1XPmGMN;7fa|BwIYmk3Iitw|e&qd>2cU>075E zGV`AE7F5pT^r*H(_SzvLH;#7i!`Ca2{GEF9E&m#xA1mBoD^7Zf9N%^NEl$JTr#x%t zZ3gjn5iIrpU58uVyaL@1=5cOsTbT_16qHBE+!Sq|f#n0n2_Czss1wN&)ZWZNi7qb` zlX|d+7%rdQIbF1k=sQI>bU2cVVmfX?Se+q+bCB1z>mKc723S4mUH^?(c67$Onrs;Z@t0Y_R1*Qbh3EG9Ir*n$b|T* z{84m&?|OsBm5GR0`01k^TZKviv{5b-e{i&V|L!=3S+xEjR{8sxH+oA;%Z9QdoEIp+ zI7aqq(!>tDnv2SVt0!*yG|h}ac5Om=No)<;Eo3`rj#Qy{`_qBnm=EE1_v<A^X z`tVbiw+@HTj9xj*)`MZ5dJc0Bd+?M~dUV5+Q5dp(yC=H42M^1fr*9C-gWxSWFPu2u z#&caE5kNo#O-trMisve*OJsT&KS7ms9M=`7{1fPo7R7@AZ|q6K<=>lA(Et z#tgysr~B-278-)DA!?OEzk&D@8*6j#Rz0q1?_d#98G&^Z`q~MWDZE_Fa-X&hb!l6Fg^^n3}51)+@1Z=s+81@ zxER{`(_s>{AD2}GT*?D3vx-`IxhAM(G?2_1YlPAEV__Q0&GaCRII?rI*cH=!eb{@tv( zEptC%bHx1i4KnYRmqg`u?cpV4nUB9pU8kcstKT>)`+6GU6Bh@IG`16eR~4<*KW?C0 z(U+0#5E{cRQ7;Yjg%C`*D!y(iC|b{_~iSUnR379>!xY3 zO_YZ``2xHD@)8w7HrEPT^TAyrqHWH@AO7e3{eL|z4#$t@t_Q-PM@h4BtY+lh1wYebk54sb$l#?w zJgD@=RpSzde2*8{!*f>qnszFbq$qUs-OB_u-ThS`29ogZ%BL3U)F%-5rgN?Qk_o)| zzHuwnKO3lO8%+KB&*9Btqko?TN?_ORXMA>3U-8irJ?}eLTQKl7zMu2_E|?i+iCOge zfKVr+f(dU8X1L8ew3;M^`p*jJ-}eY`Pu_R-o`W{*yHKV6g|QGvx>G}Bb(>J6 zIDYr$CxM{+ewtt8c|0a6FeR5{grkbLsNSce`rs!Xvf#hP22bfK+%Vc%j+fIV`x~9Y zK)?Cb?`bnTxI5wa+KA+>em!zoi2@<$^Ww^p6x&?5cz>IXrcMT2HFW(wcP0&}eK)^_ zjeNqFMj{i@XQR-sZoA*5MDo6UT0gk=VmRbJIh?%AlMM_J+offlZBYN9=M$-Mat?%V zBwjx?3dTl$eYR^(L9ebe`@iKEz{?5Y97ne#kQJ}uAI$VbPuHZ-n#Bg7=6cCpK|2Vn z71X{nIR*GSFta2h|3CNZLw^OYEJ~!}s!+#W7V^x4sqqb?1duGd#|`LE)rk~~-Esz1={OiR&A4IzWVhlN41j=j;YCqhuS z9&_dDhD!XqQ6=aQMR=kV`8IGr(5+uV*Wi(D+b?e-5>$@8`tyYJn>#1OnhFo%8TR{h zYW*$9er^Z-@vkkY6RcX}HouCeuH}UXU>-U=z2-XmY#J|?eyKGxD@0G-a|vU1!o-{Q zftM`4zL2I_lUYaUCmOZC2@^+^1r)N2+fe!__oc1fw1i=P z%oA7hMQD3{fR#R|7B110jM@wK!=y*;xl>~0c>Q&iv!#4G9%JK{8=dmNAd38;rN^wQEAE`lGxKW|A`{`|uZo z?;5sxF6&nZ_8@b7lk;DRBDipkb$cu8FZ8+o%)5#)8?URK_BcC|1e}#d+pk}2$59#= zf4nM2shfV3ru=yqMcwaJaH8%U(j*plHs)|s;v}{fUtXpq#v^PCFCORuzTwh_s5UxE zyXXLYZ}ueSFbKI`UmOM3TlU$%F7&|6{p91>HQB(`SxisiECtSCx2Ze9`FP+#nb483 zB4niuKI`;J`QLRM!pfbcVbp|TVRx$oNp9)?wO{|w=Pdh0S_jw2dD(M?Z>8J)(SAPn z(r`7T#%J81tMyE(6Yv41y@N=~vH-zyf8 zeUZ(IENRQAP}xsL9)*Zx_tecrH3M+EkRrD5DgsMioZ-qGA3?_bhpx~neFwH0uV$Xj zIglr~Bzc3J`{7|w(qYL4~CiJFYocmdSeIzT2;O zm2lc^6RWLqWZa#4PB9U)lOZaN4b*u zh_Odp3Qp8E`1buIr`YCgL{V;uS@PI6O3SsTV6{UC^CdN9@il|w9L4=|x*~cac-_Kx zlR+0s%5E?#5@DvSc`{1ec|VE#R?AO`jnjCFD_(19CwV`3yz=gWHWkyV3AK~0Ik3}~ z|80-r1Qu@@F_e5h0$XPf*C^2UVPZ?m%DQ?7h8Q%hJw4ll4W$B3{?`{VU*(3&RdRkL zD!(C~+iD}BJ~GK87c_vyj{2*-j&;CaJ!H4xQ5_cV)Rtk3*gy#2KY=tCCPLTF^VSyz zW=h~xyYR<<<0x$|_R9Y36t1QO9Mtm|Mwi_|)op7Gls8p7g$8oT{o#Dk%Nwu8p&V^b zvypw{;R`)H&1cRKIoD-2$0|q?HAM-!PoK(;22!*3CyGV0#64A(Zw(E2m;5gt~8ov60Gkhl!nw*J*RCcK}Rf3zB4B)OGhpP?#4 z5t~PoDcdtT6RbpG$ZM-S?&B05!sh;aX_D7Ub=Z64E&k`arvDyvC_#=u!yW67n4|Ks z`E`S0RD3z|+NBRq>FwzXqLY=kxB{=trBkonNe6sU=;x~OkgJ6}S9N5I>a?eU z&Q7gkFK1uDRz{nLOsB`8BQ4zf)_681hxlJLMD_Q-F1 zesV4pBQN}zu)OVwB6rXDceH(iyM`xUv7J1RwRr`~W8sk)qRNsaa_T;)xwkyJ*cb(e z$6ID6xY8ixw(0MULMm{lMB@H4w-LB9``VT&PIBYZdt=O#5p?wplCE0(gqY+Z^PHVw z5OIp-nL}MD3UgG?uzNHEEwkXrXl5nc&h)*>__7wCKAB86Y;pzjz^hTKB9UlazwvGu z=VRFYx=8l1{TAXl+m@l1+h;L_=Fz<}jxn4QrSa2`YQ&J)oVT{K=|H2E-eINs8#H{s zoV{~C3bl!tGN;cDU@fAw>Ep?846e713V!SgVQor=4eR=(4_?=IhyP`49&P&6A?=G? z^$XHh--Lil=;w0k&T<$hA@k!VosgPq=cINv^*`6O=iayXrh+yT>Qc%wObMfS>TPXS z^3fTz{g$1`pF@SGPdhg8cr@Wnb(Ig+Y2-Y7)K0VHs7iRHE4POlGY!IzvU6FZ$MLls zah)eP4#b%ZPPIR1fjeLJ&n)S&P@+CM-H0C_ghRpAMyRue^89;}UAJ@vL|mfZ{QK1~ zu(`CU{TLkqC#jz~Z349<&+gDh+EbD6ZC>ip`}GO*xv$4~X}TAkPy5Qtvlm0MismJY z`UTj?uQST?^`jP%E5XLHsrCvGHm(!Y#v$?gFUrtIg9rwL4A zu6gj~1zAV_p2PgEpMi3-h=uJon-8j6CLDSp_y;fY>pmYR`!u#`){PTh6X3CZrj~bo z0C#h`Rw!R=!gEUn3p~`Vgz6I!pD?oSo73hyF|=y}+e7ZHo9OWodLPSCGJPHrFGP)R z*x!mDFWU!;?4=|88~a?3kskGuK>-?O!D-A{@sldnECbo%(kJ^aFcCCaCa1IY*oe7% zMWs<*!?0W%W;raloj9$fdciZ}FtPtt;z9GGIrQ?ncWmw`4TVdRQz%ud3%}nwaN>me zB&4r1^JI~!iRe+6l)ZA<&|J=%+V{H^P=rPu8Kh!VdB4U}*Mhu19~WakOuiY3i7VjH$h{5$BHqikr0=%c zNFkgGPI+00_h3)fBg!l7qh@iHthasnkoF~m1)?WKY{vPb*~b)lwbz;JsRJf zZs^nROX@6d!;sgFJ?ZHs_==m=^@ivowzAuV?D{tZ4n}=?jmFyuPKJnf0S}U^KO_?L zGrtSFRDRT71}fAKG1c1$(-5B1#!Ls&=YV=CC{~rB1xr`fl%HAt1}>X4%M!Uo_{%!^ z>T}gL3ahT!f`&brLrNX2Z|vDb@n!3^)kekBW4| zSCeG7gu+^|WasyNSvd!hm)=ZpEli__UxsjFCb_;pM#PwF524BuRbkwkhIn?i?L5sL zZc2}YIEMCx`~M*bGas<`e_Sv@!$5+ zJ2C@4_f8BckzSdH4>cRNu=n6;iJ(vYJxgfJ+Nj;cl8)D=Q)iyqY^HD=@3Ak*W~bag z6bn}Unv z_xIB+Xr4%&fK~rr*56LBQ}V711_1)77 z=MXi1y%7Jqp%%(#c!DVfC2-~R<-O`Z9zyvB-`Mwzi7;gQ%2wn-E*^iI$gaOD6ymm6 z?(Q>814GB|np4`Icqhv7rTD)lnst;sGFgSxS9Ue|M2{Oh?S6e@{Z9*r)z;e$?`APuTtDIR{kf7!5U&LNi=Oo9Nd2b zw@t@VQC@JRXuODk3|BL~sI4z>OaIAj>DNhr#VW6N8+lJ$xUdv!X50@#Rc|&Q-xmx~ zG+(ZNe>#dSkxZ9GzxqM;(eoQOZnpv+r{himb-}ph{2%%!Y2{Fz7IDe?xiuPT(7nyL zl7*o;<|kP*s!=LM!^!zu2%H+UXR@J-$9R5+y+xAgAbP95_~w{KX67Gs`&&9cN%iey3s{8u-?$?F?I(L5{ zb9y40WpyIFkvOs8Qpb&`Ubv?q&hY7bA4vKY^X&|6gw<}vm)Fc`DN7Nr)4LDl0nNIj z0>y9=Tn3N)jtv|Hy#wsB(NEhkng2|wCVv_7RtvZMq0E8C>g!jX#$+FPFYahaq9>To zPMi(b_)X?`hG>#_#(~x2(W$dEu7*jW|5K7w4a7ZnAqkcj^8?yUFnF zS}&$>pw6Jw}D)_r12u3E;`v<$HWln10?QyAdtrPd|GbGLL$_ z-6zdB`;hY9Hn>{63x3?qI!diwgeEDYsNkc_M2%P3#ukqmcxkI37?6|)aRn=B4jpWi zngLe2t1rp(s^Ja!+jDbpYus6h={*fWtJNR2U8fmdzI-QUzp#pov_nVk*^>M@4qX?s zMFv7cs&C!YnSuB-EK` zJ$YmJZnK$IQfdj@7-iX3l3fS%x*Q*e(}!?eZ7;(q-)10WOzlfQm7>%E0c)|We(dkK zS9$w;JqU8nR&G&RN4uIwUp+FU3A3o8r&1sG5#}+G_U}B%ecVf?hz$G^kx!={=r42t zrGRhhz(P1Vmnzkse}pGLkP?AhJv3wP2`78#!Feo{&S z`>#PBPesaGK|4 zVRAz6s0SWue(_tz-O4@L5af{-X6PGKA1ATQwwrc>f-bObvfX9Gb}z-&uzmWpMJ9-Xa7_ zTy<|HOKh~C%dIxD(@_GXCg@&mr6FQBAGUGZI|bWv8;=jYn*dYGvad|3Oq4IhetV~B zXec@VYK;we^2j+**r*n@2+53%Ov-iJiN$;;u{`S$bhG}w(|&my5oX^wZ1aqUvgyJW z>OQAM41ZJB3?mGLiKjz8M-?sQPlr(==i(fy|NQzcIg^UKA{|jLzDZB*=n~YF=C=#WlAht7Tt3Z@HSlmH>GPZ0-v7C->mHw$ zlyOT$u2;k54Z*c=*<^~1sP2SAi#ad9TED~8>Z6Z3C{ZvHZ_IetArTcCH`+f53dXor zg-LE1^4u|+`N`;73@R!+#!U$%;iLDKg^VuY&|;%cHRI2QewITkvj&wA&Lt`A>spWZ z?E}}2>Jnw3@n z$aZ~y7PZ#{;&%+mdLB#wrug)%zPt709G$dEyJZ8YT6HBd?TY|8@jId1N4|nd;-qm| zY#r(|j~?(h42MS!+{E*B(h`$26e+@11RHyG?w#BaiJ>ho^?5d=LUNPK2i2qBG48;7 zA>Kcscx|+UI;Gfx4`7ahhv-*_`w9%Cv|3g0nN9Rge`Y-*2Cq~H*g9{Zf=^NPb zDmx0a<(S`WDNjP`@mmY-EywWVW_!BEW9wT^pPp;zCQB5I7qkDV4nQITSz6 zaFL2@2Gc>&^FmfWaHFsEl8$^1$S-crzyG`*+;&Y6IWO{n!#gF9d+j&LS$A|Deq94@ z)4wlVYYzl7J?>kCg(sS4ES%P1@P>OwMBc4M#DHjsV$7PDJ#J{?_cnBmhk|prxn6dM z;9)bCo42}j@TY(Awv1apL00z5nnx7E$g_%jp&!#R;70J*IQRJfT-UC9sTjn=y#%#9GkZdRT~vbtymp2QwF(rq^5&k)>HWi=WvM zOy?8QnveX1e_VX+C)XOFGn<3)%;_Pxfi?HG+RUT#j{@4zU2_mUOJAD#laZ3;U?Ran zpNCh}`-MAF~nQ=s`4P^X+4n!L*!CGrlsjWvj47pyKfA9PUhT8h{ z*tjb|-R-r|=`3c7@9EoR)u(%KE|d4$`Mx}$O!)+X+*zmWbBF1~{scLm~^`E&j+^SZ$Dh}rUH9TtjB z$iZ)?|MWt`H>sLS#)H82p#yYYJ{Mn0DNC^v=6nw=+5vHz56|qjhF8<^0!3ovq+@ohx zyL|+>#Mbs6df$LL*L9w-#tg&LwwQM*MSbAK)U$ZxatreEvEL3IY$fMn6a<}%N??*F zS@kDVBQk32KmWnC7?SLT+^!9CQyexPRsQ9|Md6Hdu8~spLxJaZw6~+VC=S;oR!`E= zP^u1hN?o2>LJVdX5ecKG=tf2t_pQ}{5bC?_o^C>l+Vh>=m0i%D!6W`Wgq{*`WGzg| zsts$4VyD|jV&TALeEt9b z8Ln!PyCHz|cRC((-ls_N-cI$g$NXR=%#Z1^pUUN2nuTTAWO{f*cbOstoZfm_VwK@WId?+#N&*e6y68v+&XJil9Tt2 z>2kww@Vvk5YJG&3viG@zX>1xRkt_T8XJ_989^~0=y2v<#U6KRCOoiN(&)?oVHuVm} ze20Cb5_#{p4X=-%8<@s-*QgbRPZg zMTM_SVV^D=GZUuWR{t&tmjZ9V{a^_ucA~UsjlM!Y9ZbvfDc8fAk=l_v#`I$Wo0xyj zE4^C6SPAZ7?TW30yDl~PatzE6NC&X1BKcqj4D14jBfgE2UpX_w@fQIE$8 zKIy-|$3xWJ_it1Bz)tMA7VoutZ3qHK_#{|5=!w+*RaHr)8wr6Y2%1jX0}Y>cPz<&hEuU&)Abk8x|I$zM5CylaIEJ>LqnvXww9(nyh|eq6 z=)ZRUcb{En=eI`bw*)eL&HEMBn1RuPoSoYX5@GFtjq5v$Yd9Lef2zjhJ921WQqZpY z37@XAX73(yg0u?*mO8tOLH_6yMeB+$P{|XNR~=)H>rp&ou0aK0ea~O1rA!57Z-><= zso8^@8^A zGKmMh*hcvmV{h>iHN7o%R&4W!*X;+}ZYbHJ2OJGg@|wlNE#Kxxy%KTj3011hA#;c| z4>B*losZ_6`a8b|f5E&0ZoT92cCe!LIZ^XmAv_u_eeT4YiY>?A5>N&yU14r)Z)!Ll=0|{@Z9jxop zky&Y9=)xv)PIuj@KwFjUqioK4XV7{A_+=cn9QsFKTgIO~-`grc=74O=iN+!@$*L|2 zb+5!o`-}TiN;P1Y^2LW78l@n&_isVU`8RNqasBk@bs8c){`sDl5ak7kX(|}(e|wms`Ukl3KPVV? z|98IT;IXJUeUl|PS6&hM{&goN3C{2QqeM^Ga5*(G=QhJ-FX7Rz-JM{x-#t>`+7MKU zgkBZRjDQ@m1Zn?gq0r(LJ#gE07&@!lD{Vg&;X|oT9QrbZ+#emKe;2KQv*n44tQVK@ z%#@wb1RW#c%B0>LLUds!H=fShUyO!Qp1a>tKR{NO@;}3iEvOu&>-)m17e!GwWIC+@ zn_Q(ed|gw}QE~Y|&YLP+G1gI%d9a-r9%+9Omhk_06$5fz^>wJ}?3Q9N(u0AXjz>Ga zN}+8$gYJ;S9Gd%F{PC>iH>Tv>t-4)Sft^PMJ71`MfGx3E=dLQ&qL$)V-@dd$U_2{x zszI5KxNoi|(YJ+)dAxh`+XRC!_jZuavcno)ma2QKImbbyG-tM21$d&0^s$MBtG^IC zLqtSd=g{TfsTOHpDvJIfmKBL+P)^|V@d^G5CpwP3Jf^}#P*q37_G%BoO!$U9#RuI{ zrlGBF$8|0Wo_SN=Q9g*{d`U&>rnPX=x9YK{93znuFaB=Rk6tL3(KglA=>oMlzYFxx z3;WFuv2yY);4%Dsy?OH%!rZ7Z=;_K5$afFvihX9HsDxW=Q5_bc&;-0~0hv|YaelMa zuRk3SYGs^YT{na8_MO@|URsFCDvv$xIXA=1GRH4Vs~-FrG#x!=F$C={Ub)rVddU>~ zjkP^1V<_&FMR$EKnbSSw@ZoylEIz$LYq9$~12G6i)WieaL_vb?hoi>ZDZ9$2x9>Z- zoe&pgjUCvs0BTva%O72KQ52^bLNvOV2^)Gw$w4wVah&Ial=vDszbl>@S`p9#ROYTv z#kV&Q<QastK9re=G6Cx77pa%r7a7*o=Y*Uxxlm-X1c4*Os{h<}vP( z0jp)yXVlQ%Lr)PW>rY-kdHL(>@eHpV^{@M8VqE+1pxikDBGdPi>~+5yxbV>Qmk?JY z<{R)|bdH+GZy)F~lXsF{tHV!E_iasuHGy=gQQZc-m&y?2K#$~RgPSym#*zQz%?+Ral|kSwpY;P4Gbnp;z-l^p9ADT3$<~hdp>Xvn2w)N}mBw4HzD>dovOvFKTzvHBEu;%SsW}_cgd% zub%;e3h>pEhA>xNGCVt+ul!JA6QRCuV`7s=J4yudTQ)SZ6B}O_KdO}+fXYqD|1Ob! z?ImO8i-v~!kQ<{rx>tJuWzNpmJBc`wd$?jtxBB#7wd9I=FLefQ4d8AF^Qlvl8ZI-I?T1G(ppW zlM(r&1a#fYFZcg24gs^mi2(tegyWM&W4_=%{HZDU?u~U5s!wSuY<|#)ZC$-i8hL#X z)mwMIwWymc_({uC7ykLvqgEb9l)KQ|_ukH?_=)Ha5ghktQbK<-OT&jsw?BfakMMR&>l-jB{km2s!3WOoqq%9F)Q7*XF6o5d&V$bDhr%+MEWq+y z*OR?gk!aIieI+!2z%#+it+%t>aCY$g#9?L9N8~&jDE#UhR0_9B?GBB@Xp0wqMPK~j z%cHxkJb4)q$0r;v9`GKypN0&SdB>6Sl=K}QUsYhz?K{=`>mW3(#kPGC`GwuSYpyfq zEnpsJyYGmr0o-MmUec7TN17_}s1-)i?{!Jw^%3fA2w)NR_4wwE)GkTU9e1l?Vog%H z_26^R_|Ww0pSc$%x&FTMw=5JwFO?C6ZNZTE+VSpX(KmQ9Rfsx#*AaPs1*YpOxC3=- z7Q5O|G?_=evNP4u9#ebl_uMc`0+pp(KQf3aY7t*)M+WXXpXIWHISDkiHyyvoQ-G7H{z;J`d9d{J)bq@y z2t3fTU}9h612m@ln$(?DaL;yXL`UsMEaw;LD`sIMUd)s3 zg-oE>ij*yFZKiL&K(MK@a@32!P4s4 z&ck3dJm~p!a30mW9=WSuP65zvym~N?)FZ!PRFx7a82s7?9tD>h_KGZnz}4^yGtwX964vtTGTArZA?Nk?;j>!! z>0&rdQ^Zc;dm?jn!`3<6D-d-0M$$Y)YF682B=!T_mM~}Ly#p|H|5@(Do>e?3T@zz= zp7aWit7#T%t>b0Q$eQpkMNslbJOrbsLGt0+*M5mWoCfKRnt&!fQrwmUyIcpCAmHAPn})aM}S6dlLqzJ z90a}7316}qBK^qG@1CtyV6UFMrJmq0`SZNndhFD~|E^=swrABFB1!+=gLRkT*?($a_RUBj~>{T>6dU23x5)soyq=fa}lGe#pi5Taa&QQizEA~ zOp2Am3uNx_SK+?#k-s?M&0EJJoruY{2MY7gY$knu>90`uMi6tv05??wdjr?(~qoo>Tuzo@JCWV7H*%J%U{ z^86Y|&#B)@^8Wds+|*HwjfO-Wmpvhcv=sLj@~+h+yO`eMhF41tv}?44ORiKz`=J@oIDOXqbyy8t zTMl=Q+?EG7_ZB4cllAbOoYuK-T?7f`Y){%r=3ltb>~t-z&r1>GH-)y!50QAN+RY2fk(ie|q`b|~q`O0e51to*tMip?_>Ck(d|?KFA~ zbXglIlEDgDmrqWkX@I?zW(NoH^462HzZMuMBwXIsqJxU(hAWJvFI2-X={43yE?T0% zJ>lcuCRR$eeXN+|>ot^Nu_F8syc4~ezBc}Nu{^JJJ3J#Zju+ii%w_{3cZdQ4D|}$-P=*S_%~nCwdW{M zefjl|^ZGDptee!!wuabG5(N5>b297$|xgI6xaUc=sR-JCYc>WB-Ow{Rf$ock-<*a{uH+VvH z4tpVuhb8j6Mp4S;OtGk_bKsDBKGGfErg<{&0?503@n*l53Dx|9cQ@GnMCVmGCE=oG$SHn?2d5&iGWe)nEgA*Zv z7ASC`m!;^KD^#=msaEGKB=hRyqf2W>m?$VJ=%(cX{%$*K>Y5Com9t7wF2EmchAn$` znv;2x6Mp;C)lb8oJK6>wH?6^z|5@{9#*eUR(boAJZ3vzSGBnv(SqXHj>XW!3i zx(Mmd?1WlF`!RL(tEKUYWUy|r-*`oH42{K(2k=g;VDFhH0_~TRup_*+`E7g|gz33Y z(f#VfE1RAzYFIa5N8ZESVD@~h%-BK8`e2OY-kF3MTg}5tQBhotbt^_UpNM_DsUMr- zv%HV7P|<6B)U$ZD3NJn`{&9Uv9r*Sdd7d<&qT`KYL)kRNP^oIIobxLVj$lbe?>AO44dq!#5z^9Qa{7a92W{u07nz9EYk}ugj5r8_@sOn!S+{Px^+c5F zG7G6RlWIDUiQ|ecXgyS4TzME3&WjKy*!><~MA5ZnggYQa>`b2kr>xTtS7~VP3n! z|3STTp-z%V54vl#M3~2td^U{iEEXocHAY7J9PHQrcO7pteW}$_OU3?Kx>Jn&9nZn*ejPaEmmJ4P#99`ggXF%f;H2HCi58DM5AM}j!Il4#@SPwb5?(nX7-Gah>_AWIp-(Nb4NE zxwi(6F;lbW{MupoQcy>b!Vvg;H5oT&8iD+NgX;|$6~LKlGe~u1p@dr=xL!z1!lgRV zamTN;gpl^pymiVfXc`}tSnnK!gOgFm_;sHMbV*l`7`2BQ6~8F?v>h&l_I)LCp& zR^nr67=zvN^bW!?*kFqw)Iwll9> z$$Yl}oxlLS6Fs3IUL)K`&rc}`uJ-!=h?&qzvfLnfaS-k+#8_2p&LYQ@!3WVN;V30! z{rqn}C$Y<9?tZrgClRc#!TJ7oKYF&wmCtL8q1}F(1TS*VgYzw4_twO2P#iw0*7kW7 z$22D2`xdiO%vSFokCFZZzN0tSH&l+IUiY#}-r>W<>2Ikww_MmmOk0K)nNi)r@a|`? zFzO!Sfk?UV;O;qCV!KiC^CKHY;V(=ysBiU5T!21dG^A=UVMD9R5U6m z?LXJ`gu+uNKF#+y>gXr%RHTsPo~LoXeba;tm1h`ZTx8J2fh|P9!XNJ^SerG@yTV78 z!&(=bKfyRh*w9kHgS>!V%Q8?cxTeakLM^1Z4kc0YA`Fgif(Jk3-XYVMv6c&Bt7%Aaly z-S8?IL;RJIt>gn)&nVcwWEYP67Xp-%TtZ3jt^4pIO$MgbOMjiQOd4%#78qLG4t$f^uaTu+2I)M{_*{??YdBUGB8P{Z9w@y0?eH=gn7pxyiW< z^?>8IIQD(QESF^Z$!jIp)3&T+7hVD4p5?xg9o|@|zFF(UeS6fc9BkITQU^POi%KJU zKBHl~>b=Q4HOSnAthsxvan9>%$l26y$nnjt>5%X@ESYyc|80LDTJvjgXw+%L&92s8 zjIZO7%8_Ie_S^&8^j97TGk5?se^Byyo)^4L_K4*H8MV$UMfj8yppX zzZBw)Lz#GD&rj@XeWw}!J{nsN$dtSt^F!|6Y(ebDKH+!Ek~%K0FQiw>wJceV*y~6urt-z2`ak?|E z7M22rlR`~>vDN%Sh>Tz@M2#G#O*gB=gK*jMj08P-SH|+Rm{0)@WaOy6&8GHb);H?R zztq9UM}MT>$1xMT^9H!IHLpO{;oIFIp|Mb=zIis|Z8}UFx~0zKw}5*$o+ZuNQ0mU^ zHd%pj3=A?b-?u!4->llExo7CO@m^&@w=PjG~~qF=HD9`Hp!?r_X6t4}AL93R&Izz&e@7p~}+@ z&A6Kmi)GEB2v2l{tb8E|Zm3#ED>jI}w%_kaau%Tr>gKe?Oyk&+0>1Cg!`Y={$%QYe z99E`uO6SQ%iiFBf$Sd??Mf=acblpWze(;xq*ue!r`}ppIFZ`%n(Wf)<#?*d>PfPR? zTMV?msBmMh>O$U|%L9LXr@;5e)`WDO3EW{VlE)R>j+g${E^-S_L3G8I3$Lx2h{ZGi zo{QD@p=#v%{lc1wkg*CHvmXoKV_wpjWnd?6ze9KEqQVH}J7is~THg#TK@`De&C{{8{5|s#-ZgIuaH$|HDtK#S9PxJ$4Jh*9kd3tq_&g80X@wr z_;&qX?eN{d_^Pk&jl{MoEGNSYHzn3%RGt-;d%FUc1Zaae1V&(+Z09C5mH|+&ZEMn@ z_K+WLZRX)9nSqeP;VZJ==P;KpMRk%V5k#!CUPUjaRq8BPWxq9 zoUa@N(fZvgO`;RQuK`H5E?(--Y7s5}TwHRrG^UvEiFljA-?#2tbqn+h=$a6yx|F2Q- z-r}Cbtv`i~Q%rInM`=kKm)-J5KK(@%ew95u!;FOf_lm=*9e*)fW%f0H8KoQlXD=Hg zxRrR2bGx9~Lzo!vUp{P3%p%=@9rv0WFEJLPOUq+O{onEv6~}K6!iWBC6Sce65m(kH zA9SE{eg;d`Xld!=d@=3GKr%Y&5LFahUHzLqkffK}PE(hSJBO9+9@06W_SCGG+lFlP`M7oODfK+a z>%4)oecrgeMe^sqd)3Hvt-?=DfVyv@v`&SqQ1ADYtw}_wKc1=_t5p2w0d(FX%>RTF z;ZTFF&hh>zP`>>ndTmoFHl5g|Q|t2;MWR^*pGx`Q2L)&P9vOf1C)O?8*+%j6KUZ)w zJ!Kk?67^*zUW8zABoQwYk*$KT=WUMA3Q!f z8NQ?y3P$Ev&r7EI0IT|_o_fg_Kw9BfUwrJrZsSJlDJp8ww0*dHW=WB1g7!V!;#A;(b^=%2W?#c39}O=$0g zkBtDYunJq%LMz^RaPgPy-W6!fD|ouMtr)yUHu~{vc7k5*W0CF8ThQQ=bL0i8Z{phF ze8xD7<6H|6|PpF8xi(6KF|Z;9KEq`INk#sJf+;@0Py|6*7v;tzW1<^!uH? z(|@bM=|J+{#(qKK)~>C`;@IekhHu6KezFH}V72$_4Mns=Vkk+UqbmpYU;k}uC}u)e&q0^72)MYzVg;o;RWT0gf{ zil;ny)5@2X_}{%8@g(E%W6B5hc0=6iOZ%q(tVfpP@{BHf48j4IYxAFWF%i)>_^#^W zIDB(*mku!c3u5vz2aQ6iF^`Ey_>#>620lvft17IdxH$vU*}J@*wc=N~<&FScar zWkGQ}1E~(_=0>u=Kf&iiYzCZuBvJ#V6FArTcax$!#l_vU%$==}4`18PGJJa74Lijj z4VAE$VwTiEvw2|)TzM07{Bi0eY@b=ra+75gf9;FQzx1OE6D1hgHb3bCYX&}%U|BcKx^XuXuTk*ws&Egs+Bhf}ZG^*0}G05@NixbfqS@V@kdl853H zu+9a>4a6s6gYXoKi{})4Rdtxn$QXyaec>_O+W8Q=eSx*dkB(?q?=dNF%|RG;PgVBv zZ6F%0hIOpm24HoP6l`#9hLL~IGY?5ugB|0~&zWBtiII4<*S(|vV70}x&vnN|d=RZe`n8xtF;yEx&#v~L4Jmm)I4+)K@Y)?A}aW4OrY zs+a0)=9I~p;$v3ZqeaP@^G*?4ltsxsn-#U6(9n|_pF|6+R)1n$_?K&2%r}vHQuJhx z{L8_|#~vS+`qzd2hyPw#@TMhCo7l^q5auI;c`f*5QfP^U7vE&HWdGtyNx0!^ZX4_z zmT^5GRSWCin-243Y$vz#?HlGikJyvraHx6u>3`NEwaP&agL+Y5$i6?gl=}-D;$i;W ze!2wa9Q5a7eNF&xmv*3?;6vE1I=ZR4)CgkUd}IG~(I0P0x(!E~BtnpZ>lPESbHLc! zAu5vo95Ty2*DJDT!o^YHlLk){fra&2gNS?#G^&fUS4n>bmMr!Qv{7N8LVs+2?8J4D zD);Pt_9YI4Gz7ig^>d=ZOsrkTl;LU?Sdt&tGQ%@e?kac^uF=nS@P${<7Hj*nySj{$Dr#7J}Kn zL(J=zFX7_XLnjVYwS&owM_~Xp?|ysl&L=ghKUsHQKys+*Iyf5r*kY^S0E;t+1#QNw zLHlFwH#3?DP+%Rk+NSdXF6}L*RliN*+xz~nbUc&s*nDqnobxR#y3Mq?ygnb2iq)?5 zzq0|WJUP*L(oZy(0nQV znasIw@J=k?&D)p&P}?+`HfPz7`&amlS^j>5xw#?#V_1P)e5rQkL-}|tTvy@C1vkt- zd!x|vQVD9F^^!4+Da66snp*4R8}LFlJI@k-2CmOLES4bU2R1(pd~c4u0XA>85{q<7 z@57=K6mtF#(ljpp^r7mp6M{wewKtaGU+2ez+7o4{Z??9h`#}-xluFP3%Slo^hU;H= z5^keVV2b+YxmYNS3aR?Hp2XjL;eMJJg;!a$pPklvi}Kd1n@w4QfR5hhEgjbz{NrB3 zygcNKQS5sxgt~L#T;Z7;&aM-9Q+mVwoBfpJXz_jBGv;1+w0Xv@P>=2b!zA}qz z_CzLRR=WMzWY-JK$8RcCZ(YTfh0f2SbCYmjVKTAvUo+-!yt}APU$GUK z{k1itm8B6D?2PO}?VGTaB8#Y&BSF z^6~mLwTy-LjxeZqu}z6K2LsOjTlgiH0Suq;h{#5254`3i#g;w{LKpdOIv)Q7^8Rh7 z-}22uBum&SK{JXY@3(WSDy36Q;%q;t!>>l^Vn4_=+!_L-`(Nt%clChCoRiL<+&0`G)r(!H(oc-#Kj84dn6M32M}dbJsR zm?X6&uZxCQd+~dl|GHXqDiHe2q`Lx3uUgwA?{{ODVpGd*%4g?%bE9X!+CM04AFiD9 zi2;`ECr1t_Ea0&xtr2{=jHDyqtFFnF1dvLP4!aXvj*=e#Tzkus!RCXvi>Fy4(gmwe z@to_zC&!wIpa;`HXK(+_ILQEFrHaBmPmMxTEHSf(;?=&}uCK^KUxa_Vx7dun8Ah|$ zEk0J2>j}O$A9r6C5F@z7T23@bi;?>_{=TXtzk`sWwabjGVIk$7X(iLH+fM4Ax#zRL zkcar?q23*pKymRHR71uX7jw^}(3`-(PZW>j?|5Z(1pp|4=z;UNh-vGsYf% z8%w-EH!CyQG_L*j5A6WlyBZuC z+dTnZV&@NSSt|rai@6hVtn|cz20fw0L-p9yINDHGI*uw{4RmZ}&Din$PVMe1;Yb_f zLD=(dBSmIees43I#QLK-j&<=pz$##L;)`KC@Hn~18Hmym+6i-`NzJJ^ddwf5mv_La z^u8OS!bOla?KSuO;Xlk67u0T_6CwhOmj}E~d`1^@O`(orS~8LQ>`@U5DlgaPt>jBr zR?=?X6i&|;W9pV)7hUdhlXeNYJ6eB>6Xh$y)20K{NHltKJkg~khZEbGYEH~k_4kJ~ z9R*r4G;G+*?iD9-&sc zILWq%^6~I<(vC!V*5d;gr7#D^E{ad0ee(2fdh&_F%^62vBy0FyPDBrK5C?XIR}S-2 z{xlzZPljFNXj1&rM3BlIaM-9+l~qeeZXJ`Qy==9HG3xOf1s?UHH;dB#rI`_2Vp*Mz zyjcSp6{nTmaUU zR`FtrYzN!Vn>Onfsgf&}l3AKZ_mJHVCN-CTY$Wspk2<8bsggU@t6b{Z_=r45&MPuj z^n{9z^Vz&HC2~MC^0yVOUqP7>d6{;DSC|tWER$Ev6C@n=7Rk~_p1~^dxVQ7t z$+e;Y+#~ZLY`yp}Dli-noix7)%8Y8{`i4%l2-dTBvU?mA^nY+3Dfo)@+}Vw}^8Uz9 zug7a0lZBfE4yI+3Gx%+4V$5$Zm4hsCr!2xF9!J|tEi2a-<3;t!-FK*WcsTONy40fA z7&p+DcIJ5_3d}7WCx~>)=Vzq(>Rd4%8;s>z8O_Gi^Y0GZdX(Yw^j+Sj=F49_-)N$wXPK)F2< z)m~W*sM5cbKJvv68l1j}rS-Yty$9tEv3d=ZURvcLvmd2>l;NTYK9r4le^skW7m9Go zPN24`Cl(AUSHc;Uj^Mi`hU4-tJb*25!b{2O3pgrQ9wj1^Z++KDp z%!RWSmp)0iAXFR*bdR>~gr#u3cWyHc;B(k6Fe)V))brXVrfY(sCuGmqHT428iy*3w zE4)TSekSc?Umjwa5@(rcPr)m*Sm*5`bi}4RoL}_=iqPak^S9A~V#sre_@Qey1J~V6 zXv=pbLhgp~%jE?L*vS!W`j{;ZqRTjx6b`fiFKyFeXo5pIN#8E-_6q>6rNP*lj(R@ zRxe-u$j7t}0ahigQT!Y{$YOVJ0vOB3T?2DkP=jy1^5vi;SZz4tk}g||uBr@d>Kn%K zfXrN{eNYGXA1$>w)ZBod*b8GKLr8Si#SH$cA5hz~wLt0XB&3@ys85%cVXT43z}JaF zSmaA+>a%M={W?9&0^zOS)qo)fB`=uYIBNFec8fSl>>CV-Jq# z)|@0k|I)U{MtgH%hh}hB`ko+ESi_9{JKEqcO?C9GEj4&vGkeu2YZ$lg^m}z!qXB4w zh0es>tV7$Zzn4{+24VA6Ytssfr`D-Hu0# zXuNn&=-G2d(l-8PW$yPZ+%40;@%#ox;^o}$$ey@aRL?D&4}M2S^q!H|Pt=-5=Z~gg zK^DuDzD#~_z4Qcr6ui*1DLLR)uD^U$>K-GO>nH| zdB<;uHV_)j9=*Cc4S2eJ#K3zi+w7+^5Kkv|7JkAI~3#ghm7^R^%PDn#+qhHl4MEH#4E zrM`x0CuU+i>m|oP(l&zQKz76FpCu4_K*f&5r5{Kp1ui;8;(X~ zO4h@`=iidt< zko%S22=U}Mg7i1zD=A}@_+p-Mkx_mSB*#}i(M+y@Y&gw9y2q2$+-Ef8jTkd&(q-q? z)zgIAMu#k(QTkVF*Du@ystn|N+Mzvlm*-JKQ1-#Io%1mCK)8dBVFPh?JI$Yk=ur&k z*ex^WNTTm}X5W>kEtC&}JH?b_C%o^o8Vs&q1M$yIu6hD&WJB+7-4E;MpkFm|kgt%Q zIA`nfj6aE%NVZ&`JXA6bxAU!S=9*ivk59X-;_WzEPwl*}_3JluZ~L;O5z0v>b39n( z<0~g7;StM%<&pNVmB-)zy8#N#QbuH0keLJ!= z)@u%Gtzxur0y;9!fIk7^*D5pX;UT?s65%8;_%&R zNx0AZwtNqlB8uhoj;63!gU5_u_(0A}95Za(8n@&G&MGsJhMaHFtm=M{;58SV{U`IH z=EOD3VJzL?y&Q%M>i2Co<(1;YvJt~txe_cYD{Qp%xdSUtxQlA1-(bS9xc#|@A($@v z#HeX~9a`j?VgZW*=B!>HNzf?7vxY{-e`q?;kMm8t>R1q_I58&f3~>NEIi*c}C0{Vc z5VmT{4`D*p3un1}2RPf7J@kw7DKzD6d$uPs4!7!MoQ>R3f(d>frqUUoqVo~0OuDci z`1yd%`^?zuU}>K|w(V37M&vKp?7#CGQu^rkhSxqv>4f2ygZn&io8b?EYS4=kgyjH%4TzKPYyInp5Appx~*`a1sP+0`#`6YsSrMul~xARj^+< zn3Ddv!Sb|Z`?{)7Jf!7p6s404A3|lsb`TH1^XkTY3x{yjTsOj$u{9Bo*T~c#&wCB# z=QDgixdmh9V>j#cQ-SzE?nXycxhEdJQ{h!sT7>&|u&3qAe!-Q;A%;A*Imj!mcG~zs z4u}QT%2t%RqGIT|W~?T8x{9WbVam_s6)~#*wtv8Q44a-b(J`Gf-ll z6f!%qff!VJt6IY}2YO{)vl2&UU|XYAzjSvw=z+kKaNio(TDimL!TD-1ddntaV(bUA zdwdSgIfujh94T$1xQ}qpRE5=^_Y2%wFx_d{<_PD+mj^bgYr$&%vG@Czo#E(X3pKyh z`_RWw<#Mgv0e_m*t?4Cw2JMV!Hg5OV|9P%Ib)TD7I`bFG9u;=9H6>ycE4S`uB}U?K z@vohhsR8Jsdz#5rEd&0khFmk0ZbNQ6!@rs8&vBIbv4)mv1AY`ZEPOYX%E{5sG|eAu zhczZ1SNig1^ulVo&}?d6Th(+4*P37lGxJSzj}?m3*M5p*jzH^mzDMQU8_=%%eBOiy ziL+Kgv5Vu4!2TiQcX3%I2HCbzibaYKn*9>iU6_Oqhc0#BP$KdE=lKtxs5xuj=5yyF zHjvO=>8$MUHiaVlZizQ9jDYsz@W$loIAF2gyv6rcAD$Lk-aNFm9rrfgs*&Xn!PCkQ zG)wBN;M|uOe#M9Gs3WpIbipO*5OpQPotO;{WI)5v!} zJNa-?XZBLx7@AE>If-v%B+R-me>#7@0A^XGEe{N^kbYe2>9$Q4!U4_~Uv>BNz{E&c z6=6zCzW&|2IfE%3oUNT)L}T-@Okk6?m?nvhzZ$gHQ@nJu8-1!ntFySY`YJV|vkk9F zY}Y;TWEH$<{LA-owc|1$owCU$MHYKpe=_C0~eia7X zT6=Ir@`GAh7jHZT7M2ed-XSaSURN$uUW=QE6jdy{URH?PKHn}%+1ZAiRKhBx zvY3?NQcm2$F4esM{$*zEJ(d`FP(P>M}}A{Wvy&mUE1kZqDXHbA)EL2&WJk&`oP8 z$45`@+*|*H_tXrs$$l;JiEo6Rhnr%xoO_|GD&H;7cm`)-^BC2Hkq$l4X9NX0p>pr@ zNp7zSXuO(caKpD2KZb|@%`fbMe<9pb9h^O2ZOFEIb=N#FYZ#vTIZIDoSuxYwo;Lv& zH}rImZkxm1#$syAjrI6VRf;h!V+13Q#j357=OG;rGx&aHp9e9zji#Ia(UIGx&3g@2 zxX4D2z=vf{qi`|$*WtCIb!2m~#?%AJbp$$UM`}p_!4a!7hrjnNLh$Uka8?>C!DY!V zsTn+p95ORajt}SvB3yaPO4J}qtj(^p&ae@4iy>nhDn~G>o5tiVI}70%{~$Q;+!!ow z<+>cZxQfn;T|Q^TlTlkM@cNNN75rcQ{eSzOD`j1uK;~2L4F4|~@oXqM^m=xZz5^~i zsr-M=1<&)XV9d>0<9N;H%>P|gu4d#nWl&9WZ<5MA>l)fR- z(tOJ|`&c-iH?4eOtsL%qT9w}FyN@;pAAGuz@ET}KC#yY&L!pby%(z-F86K6jrPd$N zN45;(*G29b-(WR-2EoQ6Q7=7H2t%Tug{r*B${)GyG#uH|61r2K6Wog#e_Z z5u}m1nFZ&*eSIS1zli6Sn_Qwru48*2%MM$*0^GBd+C;h1aq8;FkK;xKs2UXZ^}c;2 zo=yHyl74Lf@4vNl@w`8bTRhy3n0<*yhMF_7J+C!kv1vG<@?06@87eL{9DRxk@&&5d zYE0yKVOjh0)_%MuDi+(fkLThzr9sgyN-FMiyfY2cH)y6_OQH(5OlEE zZ?Mo92Tm?qRj0&rk!@6e@VEC5bgj;hEmVJsVwTqgS@0}AS`u*BO>Y2+SqF_g*4tvp zj)ObS&Lrc>cJ&=cjmvR%wtBmbbNzqb*L2JFU;a@2;e*<%j}>-h!LPpk@-H9#z~uYi z2Og=mA-VsB%b8#cG<8=_RG7=fk{)y_D^uAK9M!<#8)to zd03{?(}Ax(sm?wX9;R;N1T&En-S}Z|sL6s+J1)8&aniK>gBd&JP0nta#OabhQ4cwP zqOzoS1#H zO6`y7+BV!e&<#7tmWHIlJb0cSB)PFM0N;GvvE(W;4ud~-8r752=!xB>I{)u|t(w(`cY4Q~nKwWsifb@f2TxD^X7(LO2{mX98Nos!OE}f@*^LG<= zzNe{WNST6K`p?=~VpHfED%{xduK>7oOTrh8`oUi>%&yV63e|*l=9U-c@pz%c>05th zA@n7uyO@0@+6Y=k8Mm&1FW+Qrdea2*dfm?5(>ewQr{>+^-ECyPLd{(+Bu|{W+5kU;Bl_%b_Tq_qm!)z)rUOT_dwDl|6sp(db45}4y!$-L zpx=>t_qM~WCr$5h;mAJ8WQq&2`MLnTSbRMmjF*kO>r{YMx$LyZ1rmWHzA0Wxi=Euo z(xKCJiHW%Pn3teCeWjKnwwy|>!A12oR&;@bD3R8kcSkPx_s?313mFoVBKZK z!+(%pUL<13h~jmQ(bt%CKZc%lB`IBHi=eJ@e8UDD#^}tSwheMA7&Eaoss2MhIOTz3 zP1yhO*F5lfJ`h|uj6I!OdPmm%cOC+hm!ZT<%|YDObwt!eihPSzP@)$b4_lt@dS_6Hhn^KcC>8K|pxck_JS-5sc@106)1#I3*%|tk6fN@uv z%#yeuap2Vcd#5E@;LH4B$-h@;p=~VG%iTzv7!u7T?w5a|awCowed-Vdp@SQ`teI;u z;dr%3>Wxv*;ut^kJ*67b-<5VUi^YM?yKhDM&oa14`1!&$YVsK>kiYhm@ICJofs7#|z#R6cjr9{2~pB^1m)K zU)tUUPPdB;xBsCdbT?@lx|sgNMxDarv+rn#oeulW+#gbTNNLLTMVzhhj#Kb4b6^j2 z(m0Ago!CMMB=?4O@oXYcBR=Qk`9TmaXD{6=^c#JN3U|rZG=$Vn^=Iy9IEi2pLhDD{ zCeoKr)moLI7i8?`ua2-Wkvfu@=B4}opj+DI;<3>_?3HU6$%tVmo(o3|@*U2=vV$3+)5k?w&xv>_VHIDP-% zwQUJo$!%jQ8lquRq>Ds>qMrO_;-!}I0jqdH2inS+#$ zs^%n5lehs7F){k&G^_s#(&=*VHGD_uSK2qK`yN*$C6ZZ_GDJm)@StK@5mP2oP+LJ+ z(p8AGg_b<7Bvm3dOhV3tk;*%~Fx4|o{+v`L;6{i8>OFqHdcv z&Mpq%o}Jwf-e0{1d~FOWv}1+H=;^`PWYCRtH6Ga_jb11@|I+c|^I#l$mDb?YABK7Q zOoawUW0+x|-1_p&Flydgc|Nl#8C#^!ZCSpRj79nMenM3LQ5u!guO9gtZflGzoOnpR z=Z$v0XCEe_>q4fqyJeOO zhMxW}j+=y0=gio7W6MeeGVL5{t3I8N4B6xQc7ewk{en4R3bA;4(p=+Y zQWV&n5?}K@q7PT6MR-cIshF_RSx6Joe@FMjLtqw9zIlK<0nTga zZ>$&mgl<8t1q`JRF=Ewoqxn)Iq*<+0imc1V+&YM99!h{7|ES-E@WQL12tR$a`bFGM!(YXnx!W64;K=1Ht&l8V zVD~yP+{#hxEuhPHFp?tTyaC3eA zUQXiwojZ=uj)Ae?<+m>uR>82wQeroy=Y9Boelz=U6)@LvEAyuxPy!eU^yQH zGn3Oyihm|3KC^ABC<6!Kp|_x7dT0hrEK`NFrYIf3v?|l`N;@fC-g#H!&9dx(=@*im46 zulPMm9M3A>+r>_}8pv<44laeBk<92HZ7EnLzrio}<7d1Wt}5kBI|DB>_(g)+>p|?3 z=eZN_+^Eoldu>vSxgdBk%)CIe1-_MNq^US@kekhpH>f2KK*-5u#cJ9z+|R9}R<8RS z3ied}_!+`YtPM=OY&n_)>dh0Ye>LA!sXjg_BIMn>x16Y#R2u>5g3~9l@^baN-%2->b~^Oh$um3RHJ*(6>{gAvR5$ z45d=JtHruCJD#?5L#F8C0hfKeq*=oCXg*mw;=A^qmqzZ(=(eNq;%qV-DWG)r*b1fp zXnOKzv|fXWbU9V}@s!yn@7&uVHio>!|BkW3g_Fkr%qjk-!-o4pzW;|K|G&Tg|G%PjJN_N}*MT-NHp~u> zr%|G9{qb&kb|Q#}X+&Iu%Cl{ps{d}E1LMKScarjJb~+?nh|2l~+Bua&Wz;@Kdy$hQ7#^h+5rq1AGcjhnZc-M^3gORBM_*0Jt!-u8#*dwpVPRF zp{!ZZ{lgEM;ReS$4GF0!@cNiff7)OS{+Vsc9AH=h0*>Mh+TYYZUq&dkaR|}^EcQ)i z51~!5zL;S~D_%h&uXgt`%nE)?%RA0UUO#Nt=v>`{k6&%wdV`jkP*tHDRguWT14TD% z@;g|G8keyB<$Hf)jeGMqQ3+1MVRO48Ht@#(8(TGLvG9Si6oD%QlvN;Js zLS&uf8(OmU*!UQ$8W-WRI$vPmf19k?|*@>@P0`8CI-}>X3$ui|L zzKhb^NM@q4;&vPz+592;QJT;a8uJ@>OuwQfc@Ja|NB#by1&{o~zsWhY6uzt`pELpt zwl7vYm1|H!d#A>usSb=edS))^)CwM!`6|9{Gc&RCkU57N#a*Mn>-ie;|lc)w7I|#4ioSdmTOK^bw#mi%d#EFqxZ2UJ1QjuFI zvz=Lon+UtKffYc2Fc^7koT!qEK0)oVcAcC=qLOA@Yrz;ONa_)UA2(4SW3b(xzXC#L zg)b&i9F~>xi~(o*A$YsrhEZ!oCv{+CcA(oQ~pgQ6bhy@AZ~geUStSN#id5 znU*;By!I%Aw;yt{OP5Cc{SF_Rt{hTdp>p_o*KUS>vjCO^jYD~KR6g8Vy+`7|aG0mr z!|Uh#9tE1k61k;gQ6ZZ3V#yf-qdlL6rFqp7)f->4CrKZHjwfZ>wEh8X z&imr{Qa1q#446Axehh%zmxAc*GdW<26J-YN$_Ypz=E$J((Ay9;3>MhlflW zzQV-)gfCWPB;~8xr@l6o4CkzFNTo79q4<5b!%XtRfWdCCx3k+DtuMwlaxYq=0Nn@Q zHl_mfZO-wEcz+eXlxr<-)uym4aalTL(KJ-*o@#}Yc(OwGUjSI4z8u$hS5;UphT^`}ySRLB(;9hN_L z{Hhm(%U#>acAS%_z?hkp`bD^{9%CUKHw6NvQH75O+n^`PC~iMj2N0~e{&#ef@OGtl zO>fyFIH44$7i6Cat35||goK78Q~q~*^P&vgt|-~nf9f^N@cybPV06W@*{3ch1#clu zU9Y1p)t}1$eygQdmV*74KBvo3T!^J>G`a)LW&e4u4fEJPY#X2_j#k+DYV&kJz}7b@ zsb@A2RreojKc(-&vL8p+I4-tOVMSc49&97%EohPU>Q64VcN!VKm#290W+zNihWg=) ziM`ngn@+fuDy}aOT@6`jvr$4+9o!zq#n2hp3HwtM7nV*A4YyPnBDuo3Z*)y|QgD81_5n%FG>WcYL07aH@M`d=`LdSy}uZ&Hak!5sy zcPLa~Se9men))k{KKNc{Za4{N=*~#7yr=l-IyY-L7p8&N1l_x}X$WCAr_@K3zp}$% zL%1pz9g)xOIP~;B9dWc>`N%QPI5>LEqm+rDa^DuDL`LkF;hQw~@&Tjo$aJ|^G`?){^ZeU_pNtUZYTAO>8C)MIXEW#KK~$cDmR)6<6GweX2;c`t8nA8`5p z(A#!;0=@da1v=gwf{lB)u6WQ_e~9(=D9 z9o2$-TgFQOTCIM8GZP_-~ZpfKey9*-?g8F#Q_{RQwUDzf!EWw zF8b{3fx`!k-wZvX=A4iGI0rSCV1Hlu_W0B$IPqTi@}Hyq5Rt~vU&Pjc;`MCS1H5x6 zJib$GfzodWs|X89IHo}D1=|d^m^Mn+ui<|Ro?(^OtfzB1<} zCi1A|ajO(6M@y!|NS%Y|!@iA^M$9xlNVB_`7Bg2c=P4|3>F2^@LvH0e1%2?`f9kcp z>kkN!ZoXb9%0keH-t}9%G>!R@2WOMGJ0O*Rj~UC3S%|P2zWMqWJsDubb0>x3{1vpx z<>%B;IfpXlS7{n*Ak53f;8i>qF;IHZe|G1- zv1gmcY}ze?o=?}nC+VK`+x@%A3hN7vF%l)%>`1pahu`l%@9mq>vRXB*)VyK+5l

zYiK%JTif;Q8#+h)X_BkF3MU(Q14R{-(Dn4U!NDa5$lLPh_oSXLAZPpxkG{OeDH}sf9kPy{PItA$xgJ%O_&f$@x|2ZA&%qaktpI%U&~!!2V7-sQ7$nd zC|Z@JY+Pjv&HifD6$?(V?#ADLJ13(cSXQy+IRAHw%bAgvKbDJ!F6@2uK+Or1rP&uV z%_||FyXVr;4;J{G-$<1EX*vwe7_YVo22y?TQ^=U}S8I=8=_cu8{yxan)-DxPYUTlNw>xRWVsXVk0{m>H|xa#mwPhjmpavjtyO-6Na^h3^o zc02qGfOQ`C9$cu50dEz1arT|rc;dsKHMTn$uy@aGd9l@SOxYL_tmGL1)77_kR!&iS zs<9l8L-OxXiInV?8>xb~XP@tr$#=!wX|C&{`f_T!2kRho4`-20q7cRUS5f_LAQ<6Lx2%xW6~u*AY)lDBO+u97Yi%C0@=sJQnlem5!&nrwjT|UXtoD3li4Qc-@2VvfoA>q*LEc7$bP`LMk zfmk2yTiVcNRLpLnv&}VD1df1>=`7kuo-kplRkPKEIWj*yJK7!NE@Xj{hIR z{yUoMKmPy6?U5~!7TFY)QE1$rBnd5}L0S|Ig-QsaLRJz*A$#wYk#0|0_R5yM_sAaK z$M28#`+d&moZor<^*qn#^RMSQ_vh_#yWeit>*YGT6c-TG2SVxm7e91G!1K^g97|z+ z0KXjaqxGA?f1e(2*S=vmYGSu_SE(74k~^~R$wWfUx82F_B!m*$IZH#PvEL>^%{Tyz`^D<;-zrc@d9w7o{e@xU$6uY83GSJ) zytp108IObwKesGc00~FWz>bVX2u~K!Z6k7UIh`Ll2QAG4b&JJlu3!fi)N{vMu``l= za}r;rU#zV8Hz5{H{&Ej8Fwky7#hz$vpjmCA6KP0FOI5_ z!9J?H{V9D7#t`iK>mD88bY*|{{Eh;UZO(7tbr}O$g|Y>8>a%3=uTP$bu*;J3Z)gm@ zB@2>I3EX_o61kVGDsaD4qqhq7k6zDIG1*BjaGX1N(3*uzyXtqYj&BaWSn##zSyPgo z3r7MXtEk9+8{-UD`IoVmUC!Vfkuz*iCX!BdzYj-rLS3ziKC$?O;ZDnEQ~%p{NK~`* zXR@sm`5N(8%T@o|?>qNiCTK8q3;$$M48-Ztk)Omb(xuhxBC{Xg5j~i~N$N7ObJTgpEk%F@5Ej;+k(mDW)u%ADDi2j02_W2 z_rkyd^rtj7noEj+6qD)aY`cny-1q{$!}|ttdD-iRsxLoz%#AkTxo;QjGvgM1F};G~ z(K?qSzK?@Gt%IoGgC0D?750w9WEM##oiy|ny*OnSZPKb2&moh_MTs$coY){m4QOK=kTS4$Jdr$1~W)o~W< z(NDWbb-VE0yK@szQ28mkeUQj^yf}S+uz=twsW9dGwa}52H5soS8=C<3AX!SqRC-d6 zN#}=9=|L!;`OG?QJOml1S+18Ft>E`38BzIZjHI;C*SSLaMBZiIkn1_g7RaqT+bS%x zj1C@*ProTKlkKw)ShPK0C+j}G)+t~)3ePON+r6$Zk~gF1lP%;o2=iN!uPQG)Dda-c zZt+?+lG*oH-J(xeNVbhtb%F<3$R~Q`RZd*sAWOfrligL!L~5rP6f+y8CjZg*^5~Q! z=2FIUu5Vwrps(v&jvZ{wB%PuYQ-`Z5$@X0-)2e=i@A}u({nH<5NH=+2+14cSlKV|6 z)V|R1ktGDU@Az~xktBPEBzaR0k|(G-sJ^e!lf2vK!m6+CCy{2kJjAlZ$V}0VKJ(o? zq&yKp3V*{ku(j0VnWdTpw{0JuoSc*<@29GhzFf~wy6r#yr&_+1xYwy%l|0K&_Sxo) z9rQrjaiCfDOeXM;ei zrrOcsUI|W=az3vqC`a{@TP=P>->~@nac;6_DsHJ56^vj8>+uC;ZI9&$w~^WZe+v z?)-2dc)$=WWDjnLP}Shg7k5%^iTz&q=)dEw@@e=k{B31Vt~Yw6%tw2~6k_94Ui~rs zRphlS6aJ&qi&lTt58nHghUs0(J_9*Kj+6`iT{q8m6no?B|C{;_G%v_hXU?^vCx7gN z5Ti^ywZ8hutFZxZrCQh_?N9v7YtEE>z8s^gp5f=IFgGn77tV@3-WD`?Ky=b3Px(ajULQm)tV^c!y0=Wy1la z4(9GTV)YecCnc_aS+B&h&_91pd?olIUP+^QOJsD)yI?C9M)-wDn|Wi2N#Jwc**ihb z9n#K*bj`8*!Niw)4*x&>CbgTyp*E&87*gqJzI8Mb9IhNQYB^zz-IiS99fma^t=M-> zme@PR9^=V~37Ut)#qS>SHhROa<#T*oCO@&~<+lXmQ%~S^d`zcnb0G*Fr4ZaX`5Vs5 zn}mGs>W8up&XT!1f5Bv$d4NqP7}C4+JtEs3pm1GG>cgXSkeafyk|#SNdEK<#&yJhq z%g%HvC-xt>j@EoPB6u9KNwa^qeMrIV^WuHSlp3LkWWsS8=Rw{o+RgrLGPu6eTB_oX zMk71UOQF}(!Pd*3j$^$UvYRaVI}-g-=0KmCSy4Dtd1m|-RdB^!deny`Jv?zR?r$Knq5}oj4Zt1}DJ=J)*jVC~%g^Kh}X1-#_MJm#%T@`;{Y;T7S?V*an z&5w}4v~pvIdLz)R9XdjLz8T~)O=ZINQIo@x4$oyOjpO-9H{bHeEL7eI!|gMt_GjyoJ*DR%_}G(!cl}o&`fT!oPhSuI zSW0hgFP#DI0?x1D$0^B1ag*;(%uv%uAij z|5$19&EN^L8QZnf>oKh4_Mw}xLA)|#i70xd^ygHh!vpT?jrKc8(+~Bplu7R=KfCQ4 z;SRKy3c*C|MR zKPV^bd|Mz(@qy;E{e93=@L2m?;20*&j0Ne_gaGHAy*!`lJ5lQy>DBOX8z!Zl)m+P% z#T5C<`xhKGpem35gdj1uFsNwO`<60{8Y=I%L_?N4ujC7m1Mm=aTeH^>8{;)HHUm5_rbpoQXnf%*Jrq0vp`EV<3}?Dw zG;95$5X|6ZpAdu6;Rcw zI$wLzR3mfAo!Bo73urHWZ>Y{I9zIPg$R--K;E?d@-j|&H*hcCLewRW+-WFT1hi-fZ zU*Af&*Yul;JaV+-ujS!cq#rqAJx0uVYITz%9HA9fKFZ8*&aH!g5ObUikvF1hr;zmN zRW+Clim1tdd4`O%T79oWW`S0>xa#r?Vh)kn7*qXn5ZA@e)c#eTLFb~#eV2)Qlul-y z6;%uu*=<0;?e?85w2O5Y<&R?|3%m^vXni>a#hSfL*BxlcTL~xX#Dd2Oonu3=Rr?6M z9=u*}LpO>YhZ|MRIx~Upggg7lvl5(nPWt#LjPMhGO7eRDGzngt*4)fZ?|{NU|0^Gl zb)#V6G3z-#7IKW(fv>q`u~_#|YjQg7!++LoGN1Zz!fQJm_;vrI8#w~iF1%{I$(xQ% zVHS@hM|D9r_*T;VTYEh4>8#iz_LtCj=AT?A!zJvySNiG&eKg9(^y}S7eF=vi*Zz~| zcn48EVK;h|Ls2SwNAYO;Z)96LLDJzQ>S*`gJDX-v;E*w$hL8 z*a`S!g&>Xli4#h&ue9({a3+xp{vc_^|5zptR27BrI)B4`zE0edsb;u-hmYA%E&(qM zhj|~E`39`A8g?zTCD>jNQT61W7anw~xn~s@fFi ztkHxj9NpY6cJb_ch-!(UWNsS5B(?FVLl1w#P*e5`o2^jrd^~pUMfNbhe>%Dw%@Jke zt_(kAaKe<`Wz9AZZ-A%B#{%XTF_7_7-D&Q?A2}$;Ky7%5b;_$cQYG1 z1B1D9O};~-P3mEH;bn}EX-H1HQiv7Qg5+NBQrwwMJ|uGfEl9=RO&^X)#kH}z?EAaR zkdkYByWJMSW4vFh#9Y*ats)1FoQMD5(2XlDZMOq)Q0*C0Yj7IeR*`(w;%bNdS`{9t zgZoI!^)cQ?*;FKoYZ57@j5H+eor^-03O`^{xLD!Pm0GA$`SGdQdLEj;pHOLYi3IY= zd6P4$U*M3!9_~X5Z7`vB^<%VV50Ten$)EDr3lCeE-XnGRLRx^nh_1jV_;Gcu;5YAE zn2RWMozWt=S<2tPQ++Fh=%O>W{1Wy5*=L)7G1(DO$4DA#@hCjBMm!|MQWCXLY^#bNT&$!fWG>QEizjfc&HlP^UR%Pu15<9{D_Xo8ar4*i^e`^&YVq>@L392bEb{k2iL&I}|W^W3&X zug^#^BP9PLhBz^&fFEe1TU#H ztYNR@EVL%2DO{Gw0$FvFhLLl|Sim3Dtm{>e&2wDI1xzids%&`lw`eUs)ONWLEL(-* z)SjtL#}_f^^q0b|ql7N6jAZ$Srvrsjn~bzq7SW71H}S1;CYFdF96X%6g@;!hbLUN0 z;iJUbySGxU*gmt-(#JW7I@>MQBh`Dbo!q#Vt%9!6 zG~~Fd>b0$RjO4qIjftsT51bnRb#Lu(7kv0|TW0jwU!a)X74oAZ29Gg2u6UWuq1v$M zNhY2qFk&tG%xy>HaaSu^MQF7`u41s-J8E|j3iCKazF&rSo3gtVR+lkF!Bb0WH#^Cj zf}zGMo|0r+9e6%>hTu9$9i%Tky#-uxYUiFms6g3>f_kO48Dc)CDZ@(alM0EYGtYtFlN^d{omKEi!S)38 z!T;lo6z@EDVl|xL(R5sXPgcqL&$@joqkTqv|M5Yw1t2K`uml&>WVN97g|7htfn= zc*x%vd^o?Dh2kNaQ#+`9%P{(Q7xl+y)MVy`M|%6;rl9;GrVFeF#i;w+^(d?w`!!5bQ^N0$sf!l4_?G#;tRP;w*Qxr>F^du#aUu9d8#$AfJgUau12 zBu`D?&d4?}%~Jh+ku4LiEdBYqM(|26XqRvg#CPD<8U3*razt+V>763I4-$~$jQE9f z?Rk(id}eJ%ZwWK3k8!Rs*P*pxca`P!L3~6lcjDsxMo?;eFZ?i)mi$9fRYu3T41ero z`}(qtot)!kS!GAKTgc7Mr`d&a;EJ03iut8>oOmJl=aBy-Zm_x^eAdy0NfdndljPTd zZlEyc+|n#Q7niO)saqvXqPqCsS6^M3T(NgS2wVLD52g!Vfc$J|xe!eZInuq&C1U_eqi$6T<1<(urD zspCZc?Y$`Td!61;;QB75qjMHVD$``=589A1dLu?+ z9=jUT<;p>tGRz8@qTWOD;+fi4@}0<`+ILgESZEUtIhR`}j&qQj&&oGv+*!tar_&SR zX&W%hzRe@?%{owx96NACrWX=NPo^Gv#YjF`u@(9J@)lgJa&aBK`W>8Xdh*B4tszAY z-x`%a7fChpY}dd6#9gBA7muxf`p>$Z(%We2^}!x|ZF}f5S%X0BN?=xuXbA|6PJ8EG zK1ukv^16L@J%SsKnGDMN-r{mt!gjj)*Lcl|RU`hd7fR`+-joP)gbR!hy!@k|pwzPl zBi0aSY^BI=n-NdKCMU58XV-Y7;n6Po!W0kmlYZ__u`fVxSw%&Q*AFH7WXuS+6MpEP zGN-?L5lrTf{E{oJ2U|B88_oDMXuXgbC0JttZc`s=Ian@&K+TC)so8Jf+Kt0he7$7s zv7_QWyq4j<_d4VjL~7x$PIr& zZ`OxiFDZ3;4`t!&jE?(-w;FL@+wPn0)^|W!@`r%Mi3n7^e({J&Tro z<(S5I+3gAE2#i=!rK>(I{LgwFcK-7+c}EJAmfwBjR6mGPgx%n_MYf6rfBDXSp( ziA`1%H>?&waq+_)m&7_;oO@|}35KD_$wJCpqz?Vdd$c)f>oMN@f@bwv4>I|;ueYfE zgy^4c&J4?V zo?1d){u_I2Wz*o*4c&4c$2XWDKA2_DG>?JJ2W*?g$MDIO*T%aIh&s-i<+Dpu8%;~q z|4tMa;FgK}tNkI4pi0Y3lSSM|e<(*WypO5}U&Xf@xx)c?mr_BiwEhn<-Xi|zWt`o2TyP={{EDCvklT})oyDDbi<{zeco53$f#8T{0u|$sB6qH+11|% zQI&(e4>l=CSH0$=i|2}9Ya36xG~+h%mllP}2kd_#i3se<*{p(Pr?@NPbDKCIG%|~Pr}Qtem*+aLA0W7WX{|*h<)BC-*;3H^|zj4 z@On5e`S8{FsZ54Cxc|PF0rt0ID~?X3W!2*`{l}h>Gre$`%YVI-;B=0DHh(r}Q4a3y zxkrs;Dls-qWja{w2gZBu-|!P7&i7ZU1RKgcl=Y5p)Fkvsc6NI6d6FEY+goQmemqM9 z)0TDf!K_U%`MOx|<3vqnr(dV~9rXv-pB#BBSv3tiRqm#9v`pbI!Q!Nht$MiR|7=3B zs0Q}%REQ=Nj^JsYBYUXjW{^}=$9r(51;Trdq`!%ZM84TbNWcFV#kK`*n&*W6?>W{r zQhpd0IfBlzPv~Qs|IY{fKl79S_tnlOB05Q^5g+QeJUhZQkL&HB`iA?O;k_+_ld779NiZ(+3n_*QxRl-;;#@B=qKnrgJ--d$nV*G&T(R0>>;=(*5uin_uqXXA8)i zE?hz9%RpLRsmrn$9mG!m7dLq{37_;(n!mg0IQ*+t&*Q$@hTogbT$!bNaPHhg*Ih)u zb)lNNIbLTcnFimz5i;6=qFv<`CV%IVfCsxb|5`?Kcgm1E#S{4DeA~KK_is!!-S)@% z&5o|6qloE~Kn(7JpI-J~&{)PLegDF{YNGAiX|& zGxo;C6=2C7hDw6JwVoY7ItVxDey0`IL;+Ijnq1q4x9E30w0@rrI67e zbT2*pZo^AQdash*D*Cw>lbcqHOnJFTcJ;+F%+)#g;b&#P%(4$G#9A_IvI&vdcv=RO zS-8k*na09T<(DwUM7q65H*aaTM=%u-F=f6YLFMh8n3Ay%)*^A&Rcusj3G<2hUuH*SNIvm`$|f-3CGX!OL*s! zFnn2#x~Z@e5@?ml9o9oIld9F)n6C*-zC2f16K=z$`h{r8U#7soHfn#~X9{*DQ2&*( zjX(;?>ThZ)6mYuXbkD)yY)Cq+?i89?4x5_f3~FkBc=)eUp7Tf&))cfRFOK;G<2_Tm zM_NU2c;BMNr12y0VEgdZQYZ%$mc7A6h_(MAZ80AHU62u5#YN~S6+9mi^KHE_ z2acBNU$A#}{Y>d(3yN7S-W`g01Y(gj>BUtYAX99m?%r01K0CW-ujB-x@bw7y2AUYm zcxaUCK=jd*QCUTfUf*$E@aVWe0u-0mfkw3Pl83oNB$4r<%M+{X&agveY}opOF1wyzlO=pB~b=UIejKQDw? z_!Pn`jw^HS$+bB5XN;{pt^oPN>G#Ny;vn)p-2hi?Ebv|Hxor~h8><4l^zX};LtGEr z&&tam;Su9agUIt8xGU~t(CIrw9*RWau|Td^7(YmNMex8!xE!Ik@Z>HxX~!Eiceb_- z2%stZs6)L8qrdI_=YO_?fvc0E0cATB?^IyFu$SOk%onj*J$?y)IhhWV5Bh?-+=p}9 zTid`O&8fp`z6Flo5LVDD3V@qU1^v5SKcTH*1T(Re15VB&`_}0^c>9q0$&^D4p|hOm z^3CtX0V5x>#)XXkJl8TKTAfTIv}Ajh-iB|vUqH{>`?TE`Zt~OXN0PVA|G`}=BeL3ymu5?8c+3Ji5$k)PJh1t``U!} z&ZfOFr{BV{D&ri=#AXO)qfDWcX+XJe9giervrx17m8Q+!{p7KWA^X~R%7B6I>!|r+ z3UIUOX_++x+Lc7oqDqr-1OPZr9Gwbmre(7Q&|rek)u!fPZwh$8gaP3bllU8 z6f#C_bLs=IyYu{h?S)~8_`H0n?9>EGO*XAd@l3(Rz0-He7XQ#u?_}P!=vlnmcip^N zJqvwz)3yW<`V(^8hby1c4N+OvDLLAA1KOt#T&^SbKURG9kE9%XvDHaZVf4iWL{LNu zT$H6I(?2Xr*lyVm3Lg-_-(CuiE+^ z1T_=>ppMAts0!3!SUvRO(FCHS=bHF%3&`0#WeoLgK_6j>-t?DksF~_wyD7f(zx_ze zs@TuvOJBgGE1uu6>B0Yg{{QwN|MNbz@#6T3>@co!%bGq+9>U|hEHZy`@Q_)U^h8e* zbD6s52g+83`|&$dFh6;3I^@6jTP)iY2Gie8>yr}(kdH5bf3@>Bn&m7#nW)c(^+YrI zz1Ge6AZw?K-FOv-yERA^5&e|^t-U1IoEh9+#;W_tvKUMK;wE_solc1Tsn5fQs?f6I z*YS=@f`?uprQWC8gv_iBj~{2Y!Ly)yr)L#^z_^AIW7U~feBOGC-}&7vTHQ#Is_Myu zeWoWQ5<(a8tj6r5``%ex-}#3r|5Gz=&^Zjsj5HDRvlnX??k#x8F4FAGcnNxSw>45^ zP9xvyC7F-WO+=2p!bMZ5-w;yII(Wu#5FHPQ4UJRR1F!Ik>ji5DvaA~udY>%?CU*s| z+N(q8drs>4{`w{Oi1TsGZe>UpW9!DuJ%qv*)+PH$Ok{tJYbN#NT==}z^R8v_ACZr7 z##*Ifg3!4N8U=q~B?*u0aE)Oag>O6$i{qLbz=nS3!`kW)7|2(->hx(9JbWTI3yGYE z9ezC`-1^u_&Y;zPdsgRrvbY28z_32tyaR*zhZyMQD7 z#XT@swCDO-X$ug^WXtu4To(D&}fiCR3k_B6ZyWgS)p88(D*%|OEVkLTCesR@CA zi9-n@}OfGrru=g$tB{}w8+aoEl4bav-oB(I2$Ttg$N8a-` zU_hbZmfnpF2=00;lBP8c=NWIe+zH?yzpXU6>y|nMI$UEPMTwj-?@c|ag#84kWnAe@ zf=mz0{ED`DX_|%4qA1MFzJ~v2-TqS1rBHs)4SqG>Ig%8gg$xsP0`98S$S6l^bB*>4 zh|+vz5MO+YRxa;Yy6sQk@;2pIGYdxyyjya7KN;~rNApyDo&D2fT=%Xc{PK5ks;8B|hk?i)xcN6k zm*xsg&Rdb_Yy0sg!}FI3v&{sTTB-l*r3r^)UOr-j~`mqG#NDEGY!716FIN&kea|! zo#t0)*Qziw{n>(_=4*vVd`dw1T6Eg3#P_hX=$@?7crX4cT6(#Xl7(T33QKfT0azaP zJo{LxBQ`n~_xV|T1ci{Jm&MnA;LT&&Px|@eAWN^>K5@tnT7DYl^o9GND_vTb$lquf z$P2$d%t}p;Dwp&*ZH-v7w~!~P^b4U+G2S@roC2~7Z{`m*rlZcEWe3l?j~Mb+>NsWC zIOfY1DfkLbpsHhVyZFd&ywyto^rX~h)Z;W25lScm%~0d-p7Hi5PQEibro5Xp6w}tz zKfeJNQ=SXl>!Bj?CVH7^YyQBH#Y8s`-&`;)H^>n8ks^8R_BIU~9 zK7*`+)o=U|rY~j5E|9`+LIy{jg`v;u1Q!&jEW^7ts?SkKlEvOm49rS(LfpIJJH;q;| zJQ$cB8X>r?nd#47H#-%e#HDRz0t6qjdZ8=+=V>2Er&&q#JU~zKvFA$u$r}JO%~Ks` z$D8mj+v$NJoC1N?{EOtPxp@BMuU9pqRahGDaY#Zq5)wpfoXgz{;P8%Pw0qWk@utGQ zy=I}mK*_{@c=zH{a1J>6de_`f6HrAmqubh2U9W6Au{2El#0sQ*AGH$H%1CiloC0XwJC$^nIM#Fl)EE|Or%#CQf_;m z3CBx$tH;cy@!8)8uYW~7!xz;oooq@=;1y`9eP28d67&toW3>I)NcB=7QgIOMpR&g2 z{td;a%l(lJ-@7pF-m|$cm$HzH&;8t~^g3AftJ~rW7=Uq#9JNZq7t=Z;_2|(v8j{05 zZ7&8*E>d-|n~VTo3+(z%wGo@t1cl1Q6Z*fCVMx^G;@rD(+_I*tt+>$$ftUDJM0Uqx z({RAajg{{pFr8TFN&LRfUCQ#O2FQ4)KkdHHxe!{B*k|6lWFm`XgnjL=!U;-w?*r_roU&-^YI;BA-Pv!`qd!J>LR zF`w8Yt*~5+O*SmU@r{M6Q?~VZQ~sOz5MKo})a>{z6j==0l=D87*4Lu-7jwF?{JQ@= z#})MbZqD=T@T)B$a0hh#XWiC6(i|c~_%_pdunS#&U9#Jg7#j4)t&VRdLK%j*6>(5Cnnyu+N z7TARKrJ|~Z>i^KV>)>fRM4+C|=ce zOS{iXLoS|Dwhf5zK#MN}xd!rEcrqbHH0^3V>Nzz3t(Imd^QfD#$88cE*aPBaelA>O zrL{=rx|nWs2|t^edwT)zh+Z#ju3du4#AosyQ#9m{zOAj=t_4^bA$wW+Q!g;~Z}Ce+ z%%B6;lWl%!?Bw@fydS7b572Gi^)$n^13#4nON_~i2?JePB zFI#PAA=^p3IqXzD&R^NVtG<*DtATMp#fkhKS-mN-A*t2-lT`VF=$r^a&L{;lPnZo|(RR*y5xv(%hup(-~%u z49lw}Mp8y_AUW&IMyeH1+P&-N_V^Agg2%ef1ck$;UZEX31a; zNbJ4P9CP+S;{7VfUg37{$@&Nn#Cmkq*rLJN^m~F*Zz4#9X%Fk2b_Ml5$yq9WZ|E_2 z_c?kl1lGeyCk1{V&(ihtwQW5~_pMErK)zxFw3%?%ieI{^s$v=Thy#eayF79<}EXQ(t`gi@z z-_hZ@@xhLAHP~d`(OdDe6O-Z{s>LM3pd`F{If^F~t|fNM_cKRU){Poc>5K=R0nkPXlTcfVd>jKI~_e-+R9OVDOXAwl9x31*Dy zbt$eFKv_dReV%vMP;qgUD=?p+J`q07uj&-+c-S zLFabep>2E9fI%>g&xOdbYzkvqnay|x2Rd&ky%BIi!Djt{xgDuc{Cd*RFf^6$UucD= z9_&W1*J9heF8+ps2oWv0_VWL%*Tt89qz5R^qUtnvKAmws*aiEi2&5AErrBiXwf-NV zDDpgm3PMEE$=k@{rOMRpA_rD=;LDAgd zM+QE*P37C%orMl#Pnj)~l966Y>+oECBc=|B+3)Rr1L|4=Y+(mSKuYfJ=-qSq*g>_P zF)c8IbZ_>a^Z8eTTX}Ti=?rl=!DYxfq&9(6yzR2v?~cIBUzw-(ueE}2yM^xYZ8u?0 z@Oxc(l{V-V3E6Q%_X`LK)#OfSjNs_VHE+&NGFE@rQP(cF2HAN9!Ak8M?2;@WnYJB+ zKTfv4AF=zPR240wYn~&V+IRoJOMV~Jp5^}(wLpd=IvJt`(%-S!&s0TJq7ef>mK6IF z{s#3y@fs3^A&N`OP92c1IhtukNTr-+bF_Y3UZ!Zmhz<9ohJKln;yq zQ&4=DfY;FIU(``#wmfd01&`_Vb!A5g-q2I^g}sCxKgzRInoTbsvtJLtx^|=vNMC8K z`F;A~VSuC3@h+lITXiT8VQWQ~JKFX-el>Xg){b9Ug}*^9b9S3%^-_7E*x;`7lN=>T>cXB7^`#An z%sRw-^3HZrf{1gnsXD>O%Z#w!U(yLBie`V0E7Fk0js*BpU2aDC7#o`E$rK3c?Addy zw;6&`RRe3j_JYAQLoC(&Uwq6#QG0J6f>x1R&yb1@UNfxmSk=kEqjdkQbnE|*3xBwR zLOW1p5Uo3Q@^Eyw{Ab;^QatJCX&s8a7ThUEJ}hAsW3?Iol{ttgJ{s}9q8+^TStXzR z$U=7aJ|(XeCert9AI(==-SK?NmAmP(+ejQ+?Zz`KJ-@YkOeCI!!E zS91AygPG0d`M2^^B*94^M*gn?BnpS+3`1x(2qG7dkg1T;x5Udi?h;OkmHx_ z$Y0ZkPdZX}uK(#m8Lqnw*vL$hJQ~o!;Ft#GVfj*iJ_PUIO6<|C*Nt%P0XWL2MBczx=FB1FM$IP zh*;e*B=OvrV^-K%1r<`+ zkX7vPH-*SQu=Ms!;_B-mfnQ^|AH4 z?M$A{Z=eg0rMX=ig3)FVJNL_#;2YEBKfjm#p`pNDXj|hiyc$V4n<8k84YvDV?~Wn# zT9I{|+;+c-xm#+Hty2^3kGT+HXmWwz1_tL(|LX=zpM*z7IxU!(|3h@QH&6M>P&spkyjrb~Cj%?0au- zes#hgH7B>3e<-|zwPevzFVjHG3-sDUZ%gPaRI_j2qYcAvis3e~y2St5u`wWt@Wpou zP71il_CT1QriC?4D}D`NTu+#)K=v_{bA{&}@Q`=Iqoc9u@M_FYgoVtIH;ErDXQzlaq*$?#Lb2QyS>tH57pK7Fa19O!ow#Hq*5cR8| zBK39;++nc3et_V6+`e@ArSwl<*zTdvJMqK=Jq$jZstU$~)*&wE7-DY`c~{(Yaj_q6 z-P`H$A)^O!?}l%`dZpq&>-9~!EziVVQ{ZHz_2d4IV!X~oT@k;sgTx{AOh@ckA9ODU zS!*oyz(<-H79&{(QdoW~RonazxPMSEe5qy>T**4-4moXbsEVp+TB{cp^Em|v`A1;C z@+nOQN@`LA!&>1H?{(11J9X-VBOU2zdF$@!L-BwHv82Zey}-mDUGtTwBN|d;>uoIk z5bOFYRFPp5eqDERyUN#t>usgy`KA_Ot3PaS+Dtjn?i8G**eOKV9BbNT{t-DQWudib z%tG=De`Mj(Jq-t=Y6HpASrF`V~$$LNZ;WtxO^@ca4-$ZPTSCNtv}AqW+wX8a5Muv;9~|?WJjCqikN1 zyFTqvM%qF!JSY%ySd_?zb~od;y+KFv(V;UkJ3ax|w7DbL2tLN;9K+e5p?`Q`R$ccG zk!K^>=2bME-jA@7bibC3;Goo>3OZdzM>hEP{{Um zE&I(tNW8{qtGJng+Z1U-S@XLHPVxt8#>if{G0?X2?fqZ~nWxIB6sv@v_e1)hpJ61^ zmyPz((r}ZLH^QH3Kdb_yo7YqHcM>^>w!+Z^1@%dR`17e^@q+FMs#P7nkSP6s z`MwFR)PkJV&B*ObQK=-;_n+tc)}V)etnnnW7xR@m#{9$Lv41o-6r%BXr)J#^qh9y$k7WeI@yPejR&zEv|d|s&!7<%_pErwEaZG< zG3qQV#?_;Zw(m~1f^D&h{`E(_XnN_>cHhJ$Xg$`k^_Z&%oen;tI;PNwWnvkBLpnF$ zg4!grr{Wq?T`b$iOG)&bu_lzW`9!`wV>PNz)qvPZsZJ{)UK0O{;*EB_Mr8TzME1P4 zmn79nvc8?r4^AzgX$;3^!Px2u-StN^sO%t->dHL>YHRJVCp-l8#IccIfPx&H-sm=a zsT@Tf*!WlsGLn^$6=6PKUMhicE~^Vg0z*}0KFXp7u@Z+$P4eNOWNBh$nBB4 zKEz5a;+e9{<@|su+}g-yBUoa%D4)_z;nD+CrGW`T0qo=g#dj$`pY`FhAeURkmjAHU z?5B#^>k=Hl#N-9M*L~z`^J^-R?gxz-P1X)_1|j7xb!h@!rKUN9>3O`%7i|~+n1{^dZ*}rS z9Va>Wugkw=oq2pk;cqZ6yoM{jhV`Fc(UQePm3y{*9KtXVRyrq1+~?Foq5bs&-dx^Y zMDNjue_w>Ee5ap-NQ>idjgBwi%<1oy=M8@&UAlYbHqHi2IU0C|eW3@R&oq2B@*F@t z1?7Lr|H6^HGJj`^`|N-ABeLOaZl38OI8<`3icP>9ds2t!Cfsu{My%52!@&cv%Pi%W zfchOgtIJ{N+;4%(PmD~mht1(|b?-f&8?k7x70i3wh2TPx4ji@Y&eBX`Ppc>`wYwD=G$pdfC%>UXk{ELXqX-<~i9EZLkW^t8o(yy}l0~7gB}(0LD>!x zRC9?YoE#oN*7qgj(WR*n@GiO2 z9y~vfbmg1v)bdU+a>-Fq^jspgF0PQC{Bpod(-*d1N(sMoWecNqd>x+2=cjIw9m2FI zHFLA+7Bn8IVKp*O!6a|jph?SDSWppH)KHxYl#i#2_bFsqA_`#lXU0L8IiKZs1J%xLxZ` z6QS#|Fi|Y2f?QeqPm15HQDmrfuf_{U_-f-}l_nJeJM@%mi@Ia+Xjqozo(~N;uz4eh zNxcBGr7?epOu&?RqAm~>Aq=%-aXzB<&2iraq*_z-=Gi<{x}na&bm z>i%4#_&XIHABQVvNG!l?;O}dL&nJi+kJ_7-1}U(=^1y`4p$3>CQki@Ag@6L;wgjbj z0f~0kdvcxygz%p@q5Gf^WcIqK1(XiJt*`3)pZ*93GbxYJ975NA!mw)k@Mn ztlPnNhti;k)dbXVig86PWa8q}Z4W|E5ZqNbu|`U62AYQr%hUD#AUpZ-?QaoxC|}bP zh~6C!mO13Ep}*mHcho)Jbc^u+=Bns?y4VZbmAPH+*hYf%wKl1L+^fKLH`4ct4K0b} zPD|f)#2?GtshDS)@*wadZ=a~&09ZfQ->zw04>Y&0eknf}1xZ<+VF%2 z@jyPIZ{|$;3)P|Qr>@@$#9-rL>B;0Gl*(9EL!VWw`r}}=C%6`->ar<&CG%h?e(ItB zeS$~q@KfIRR|Ou~F`-|}$}RK=VakK}8D@3H1iR4D}4Y)$m(+y{dDu9hFMtl)_guJ;#Kz81jlDfQ8Wmo=zr zxWBMQdJb>wV)K5_Q4F5$<(`@M-9a(nfPd4Gax@YUE_19S@;55^4hzc`!VI~7&TlXg z)$#@Md%yj_(r#;}flx2FUc|oPG4#Lw8ihwfd+G*>T$X!tMV&;>>3#C!FF<)^EkCB|^f_*(PF;2_Ll{Xm-6oW{B5^Ww{eOBla>-}#3&1mArq>cn}0 z6wIFtzm$6QFXrvFeC^$%j^48P(W(Xn~g8@9)SOc7f30p6%b!ykG>w zJ2LZj(PW_UjO7c*NDA`$7Tu%EFNyt5Dtls1Bnw&4Y*n5oFBMvpUH`JWPQafZ2TFPa zmhl!u95Oqwgqt5(b}ZEQV`*-x(4%AjfRSe=FeP~sjVKl=wG0VP^6El;Bay6Aj9xfb3CGOylAC-Nsra<>fjl|rl^AEU`~0sdjteot;{AoNx@6?5Kf zfxTsG==A&oblDZ>boP(H>n|;D4?7(p)s@^7?m5azdhO5Q>=?sFI{mV8_!AoiDW3A9 z@i8ib_r_uq`K@#Z$&bUbRak8bQXBsGeE!}Bw2EI}cLZ+%A5-cN%Y+3$>A|xM#5^gY zK*VG9Gr=!S{cOg6ehz#OQN6i#r4t8~_a)x=PD`?;$Qe1Wn2rhC`d+BU8voaRM19@s zQ>MQ=ep@bLJ1HIlz4_-AN|Op8QRD1ojeCL^)V$0P!SM#x4G7=fbxV|!z4lGM)&Wm> zKIxY|{S&=TewLS&GsN9@W}Y+%>Yz;gI!gh!9cBxhJ${Vv<&qEeRA>K;MOpT1rIccc zNP4>KD4FU8s5MvT?{0Cz-S0D7q9z*9D@@CiuJ|M_eHJU15^n{s$-(FL`+czXeA}y% z0tIOIs@H$QrGXT;RjhKnbinCYkH>0w2OjElu4oO+#2=C`Cc}2UNA;xBt7nrhp`>Z+ zds@y+6fmqm+7#^!N4E@};jx>3z)E%dQunYi5ZQ1-W9!v4*Ir zT5FJcZXb6~E*Ti8zn`J!js+#HI^J_cUlmqp@|0v`3sk`Pdq4FDINCX|x$S)l{Jq?+ zdz$nEuH`)zm31q}Ruz?SQi&P#QlvD6n`aQCa$(Y4!C4S_nr59FK!$p^7Yi?3iZSu< zxMWyH7S>ux1f7ixhwEE?jniCzfLF>Px6HE%RL0`pGW8K$&Lyh-GU2t*7Nj+3mK%;F z<(Ybc1y`_=ymf5GRTCck^oo?zV<*K7`f-k*UWY{6YuSsR*1KJRnvL5sJL5`_GfKu}K$W-^9AP}x zCSQZXkxaC;9kp;qVoGf>wiGujZAIR#5&rHvCTfA&KKN5$H1I8H7FnN2Nd4YL%*!L} z`PMzgklNtqMN!du4Epram-<}~dY#h0zFb^~Dj!^OQK}RfG+LVn{{FVgMF_!gujUlX%rSkWV)0m!m@{OlfZK3e@Pv zGv1>5SBQHOfA`@9#y73#qPQ;BQey{!UJc}M zNxZmt?O{)c6Kd$mMoYY2!N?vT*^!WK^kxJ)ie89EZva3 z^~k*szno&7?YaC6b&X=*Tp;{5uOCbKkzxX z2wV3RR8qANv3igQ`K2%ADH)G z=9GZxrsoQF(8q+;Mvb7l=H!Ifw+cwx@Q{D=wF^T&dnB8WjN!HGFO1&s_oKH6UrEiU z97v5?`JQ~g7&l&J#N4s1MR)U^nL0AV|2d!Ai-d-nImXdF;nl|Ysm%ZU{{O1)Gr3tR zLFaAJi>bHasYN7*#iB5-MCNW~qPw*bOuBoXVYlT$Z+d11yC%}rj`T@g1J3J@*Ak@RO7fKm& zR0M4*aUZ2Z$1Q>rGjO0{-=tS7d@J27C_T?ay0}u1lDahrw*>rL7Uu(DFexf(@$fk|`(_8QyjeS_%fda6&e&PgKcLX1E>{IG6LE z#p5)jmsBMUy9oU*Pt3iFHnr{KwS*?ljb2ugrSP`voVS{>_ka)YWN^fPt?M8{R9$>L z2x`aNHyP@p;D8wY+`}K$us5dHyIlAI!6h=NKDurUB$D!XmaLmZF5OzEnbmi+uC&wV zVDZP4om8o@Zpn zRQHE7GWz-#XHm(6kY=BARd+v%+ZiptXV?zUZF}66)_UQ$R`fR;xdD*&8%=ya>x>D$ z$7h^g3E{XWtE#J305(g#vx$it0?7Y2tmmGArTtmIH~(4S`#r2ibNl{)?L^c2w{r1t zAw2O%w$5)*nmU~I&bb6>LfcxpEZpH)z^(5-6XDQv(X)tR*cyNN2A{dP4{_3AH@QAb z7v5jv5pjNykGI^SIH%<$ai{5OiZ`+L+MQRe40M&x$gH^k+P6q>$6 z+PQCsTL;UqmnT*gj%9$ra~|__1j-!5$%uEEF1xpQwu5pvG{#Mgdt zkfiW<<8qNFERlB3JJ(jD(Urp`PxdB4bKg=*&~bumuix(#BGiha8q~oa*1<@dyr)f) zI1fyH=dOwje}}hbQ62MvM@Tzey0b_D+ez>K^;Xh_eA=%wo>K*B`n#|jlI48%b4(HYr*n3!Qa zUS=7_D3t^>w<@3YFek(459Oq0??QNOyRqxjXdO_UTWUH)8w3B>IsHGs-&>ww^oo(- zJ2Jg(%4Ms7#?AhmuRP@-lV@7BncfS*+C?na+!AqaLF?Yo6=u?G?_2*Rn`BV^sCq}C zmdLrG{M2w&n8;;r_?~C{=@a3H<;a$mN=5CTD?Hm%sYs%v_R1rpIbfp~yH@H^j7yv| zp=M_r!T6fR+4Y1`U|Aa8j$=?p0P#k3*UukAWX&c(3o zc{AO6JOOEM1wBkWFb%C1tOE>p+W;fSv-`T)NudvH=*|}hB2(?Vd$SC#@Z~@t6DV&2 zTl-Mi#<3+3VyV3IUbYM>{GU~4?zj(26;DP^XyiiS+L>pf=Nn*D`(-O#(F(zNYPI|9 zR15P36lGr2$tZ5XJ{t0?3&N(B*eOg2-^|Shshk=wR}?CsT+rex z43m+6zx|`Sm@KF_QIgp=xCC-dr|#UDC-UDVj+c7=n#FxVPcjPYtnd)s?yH~wvXBOx zS!`}$4Q`jRh|wfCw3dsC$J_-Pp&p$|e|@V1&BqV&GEYoFL((>(d>n$qM_zhdWuzp9 zE1u>aR9JxivwN>r=vKj?llC?7G%C^)#@i@`?I34_UU#Vda)8XG@s{j(ZV;lk z?(EeoSOcyzYz~ifY02B)WVg}pn1iG19d3Hp`|)nH_y~U@p@V$wt;}BZ54E4r-5A;! z0qL>3ZIa9_c-id6t!%e3jF>kqoV)w)KXuHjG4tV>b_$A{UfvSR{O^ADdH1z<6Du?L zVfQ>u1(6dkWU!0Lvtt482vYcdr6+tB9lRE{zJ2&uh@$R-M;Yci3rS4UB;X38XXR_+ zJ(cKyZ?*&(z@KJ&VnVFb>x=$Z2qKImhj ztHNg56L?TCrMhnyvA5dOy|?6XFUaf>`)A@ah#8`%48Ie3)wvhQ_P0p{hiNeI$@7Xz zpyZ8P7nK}B;RgSrOFCWXI25IzaBTv|KY1Q#e>Mx3V;PkVqbp(c*@Wd9^(?MzRAfXR zFGJyg?$CiVv*`BuhHB^I0bbz?rKLDjA6P(CL#Gly9^{B?s@V`S?W)Ix!=)JX4Pc z`|J~L5%~v0Kb8Inhs=PyW7SMc|1hRyT` zg7%HIZ*e~lkxm9gXp{%_f}igBw0!ams7p6o=z@H3vtzs#*u4ZFIyYmA3C^0O>FcWM z-KpTDXwjufI{;i(<;JU-J-FOb;^e4T1&@`Aq_vO?_cBc{Ij;5Mn|ZEc%SlGkK~~KM zCDIsNxL+mMEx7*1Z5taOm2EF*v%vPg(?{~1X z**|MO$3j+BIC(bUX&bOGAIZ8e*9cw{4}B)y%%O}+iBrc6D>?1pR#e*P9Jp#XeR~nq zi?t6OijJ??=L+G+EyX296z#c^3TYzxE@uxA*Q}XbJ^c z2W?>kYbQAM+eSpHA_0!STw(2)+m07LSddS!D}eTKHo7Ve8<>#y4cx(D33YpSWYbvu zfM;VS^yz0Fq3fz;yV2S$w4va;_9xT=_9Wi_)^OFH;9LG`dCc(dbf>_`+`-;!uADfXeM0GATRuFETkyWN+78U0Pf71?s{0epQQr(8QHnmOgo@e$)$FC5(@_puGIvt z+QP$nT7e$b&*&2CmeRE25*#r!Ha#^G1}wuu9C-_g@IB{koC%8ya9NmB(L_sv@g>rx z1vbI48{2m(W|bhdk*0cYrZn=8sdBY~&)4`oHUL6-BMB!Cf=aqySO=yg`cP;zkPv9Il zr5TXu55eTJE!y2=sPcYuC9uT@o%!64RIs`ZbFS&DN8g3v_SmHv-g`ZGnzJ+K!}bu+nWZduz1xV&>aOoZ zoyX9};7+_ifd;I0CT67(d1rG4bNfBjGI085x@b;KDULrC<#K%@3Ei~YPCq(nfRCyo z2U}0Ph1N%zJg2x4h;7Hg`@?pGuJok!OXQz`*-ul{tol~4jVOyAv;e3ODS1;pcZbvs#HJ?zVkwG@c!c{fJZt_Ce+PG&*0{EXSF$}jZgCtq2BU_TSz|qh%V|yVO=N$u8M_x67 z?ep{wZGAErE{nwH--}0+4Mlp24`!%0=AU(m2obp<5*KYL^#MY+B@-A&|Pi0?|Y z-N2gA_*?K7luHz(=RUTh{`~jbYqi?PI2_LiWNNO74Lujx$Ur4%6 zK`v)HP@>(^44S&O#gP;v&=Bt6@=;_N&j=hHW@acQe21sLxdaWM*x0Fe?gJ}uxAlgZ zK{ev1N52O9%SLfW8h<-+?_UXZ2@h~nzdu-M!10u6@_J7>v3eSl? zSFoZ0rGkGgP4}(f^H)!<-{GMptL=0CSNWh1XJsNe1qmL6;?}9^P|iXkKiJ?-BuyVS z-x{G&U);dibILC47vgZ+?Fp)prN~b3RX{Ssl~lZiIuocR79@um7+0JuCky(}i*l zPbH{p*2dG2H;t`VotUrC0>Q6WB-{x7@6u~s zEu-TT_$7FiaVBvNwLfU&tR5Q&o4GQZeu`RX>0mlu@T>;5{mf$fSg?Sa&jP^w;3y0` z6r7+a9>!+`Rd~p)9W4~BdN+uB%$=J@g4l1cl9T&8Law(>qT=E2&;IT#hPLafmri-a zAoHw5mv!kdWU|~!9o#d5v^V_3^?p&1A6gck_9y01=iVz_%q<@Vm4gfv{bDnCVrS~c z-dz)@6JGM9c(xQhJTGnzEaVe@AI9Y#+gW&6J93--=Pt72^LIamiGFjFw|A;vsU98D zTGiZEO7KbewSty4PV#l0PnUu#sL5@GA?0v;8kdh)xT+_%fVb?qt9g+P#J)c4c~@v3 zmZbL99@L^C7mHM-{B&Fb`M(XU=Lnq*709 z#Qf^O6N}obnJaj3%&4M<*n0|7-1P4_K8JaUcM_SnIv@+ujW;s?67{DY#81Ocj+Q-= zS|Tt3KMWXew@6cyGv!X1>Z_h7H9C{cgJlnpiZly(1r?8wcDqd~Xr|DUT+-?OZ4!R6 z&izib&*gTJD1&qyjbjL3;WFE)HHS`oYmup^nnguw=@floWzS05X7WBO^a+s@$DOFr zG2M)@lN|#}R>Lr)DZlN>rB#rTFbH_=Lr2>E@RGG1uN&-p_uOq!#qYn?by|N5Lwd8J>gg_fY>{(g(m)&SJYY~f4SS0KmI(w3#% zL6V@@(j|+X$dzgv^!VRp_{LnfXMXk@-k)6mZo!v=$6hhya~CG!ht8Q0?M-4XB78+A z#mfo{gUMWvjjZ6%BY|~CW+(h2Gw`}bZ|iz9ZTG)IV!qqmNvX&!+z72a^JW>xY;oUW zv4M5XD@fQQ>m7RTCk`hbOVaCVf(y}yZt^RY0Mqe+eXQ#?u<^X4anv&bmMzuJCEbmI z$KPH&Gi33ER@api-hJsPKQW=0Naq9NF2*+J&WFGg%`Xoh5;{w&wk?gX|5AZ(zy4r- z^GEpkO-O2WLTHxUU2&t}?jL$XkNhyjH!gn+tGe zrC;p&R*z++m&T1}{qZN&NVeO;Cy;B88*-+8jyK}m1bSOM;DD;rCHJ*h+|%+#C-O@u za=Q-Hg`ZDGa#g!I%I})K%T|^$5lg`Ph{l22R(q zaBV(P`7A{_N-Cdw=yxR_nZ&N`kyo$BM7{$H17|78v+C45-?~h&)6%zNG_et@`Xle~ zarfXY&yXEPuUN^`I{Jqm+b5yO1E0;^QuBDy?wk+H?^Lus=KX5Bd;kdFb2;Hca8TmB zPmL>e*5Uf9odIoE9L6&?b_h^f<4pI!}s$g$EA-TS5%TS9+~B{mbh z11rle$#z|oO=gv_jNKsoVhl<8tL)^Xzd6-!F<0SQ@0?wWP7<86@(GS6P_)n9Cq^@2^HPfpQR$ zZvD3ZXgfZ+91{7OqXD+~gBNxXdi^=C?3N57mxIsSKXv(F5!{U8uUL$uBjs2QgtZZS zDchpncYbT_sAhhGZ<|*!p1OVKxtW#^TGI+UeA$)>4Zr+e+SHq%{NaAvS07XGml{>x z&aFs%e>y?17pL*$vPQ@52OK2EvQ^s8IqR_JTH&3*NlFq$U!Kv3dj?$nJH>6H*9%4z zsun`Omq7G5y9t?`0uArWbGyG1`3+puZNy6olJ2!%DCcg5;thwv9Kye3AHDXQZay8( z-Su@$t+2#jgINlqRyG(HuqBca-29*O`S|*>P4yu%h~$QqZx!VHr%(BR`|SVuIV*EF zCCe$|UVX*&!ICf)=}LN1U;H5#U|!%YtqWu#9e>iT`>wkfiq4OXb20To`-HKhJMNCD08M@MG$WE#Q? zovYqf^hDlpF)!swVlFJCn3mQ`=xcr-Ve;S*T*vYubJdjl3k13S6(@cl1tpU$qn`6k zD36FGm|w!%ULvEv_b+3+zH*sa@g&xCC7Ve{ z_duBUdO=w;H~H67>b=$fsK}8i@9Y~jmoVU|%hMnFgw87^*;Dn(5`2=nqNBt)h|NC> z^>6ET!Sy|R&fW0J2kyIMr{!C8tU1UwR1f_> z1aINKa=sI-1VEa!Vn6j!XB+v7wyJd5_As>iJHjyYVFy`;?dGV>TQ;()%E``(iwxxP zal4Um$xOKaM!-{Dfs*WY$DXaIZwocdEHWi@x1fLW`f^fn2GE=EFR}e~`mc2@7)!2C zev^pvBdV*b)h;M=n*HUT9}(zuV*h}z>OnkUPIc9a|0Vuat>WunamBNT--stT_(Sf4 zuaB0WID_nWfe($lG%@Dahj#+1>KOU7$-?rI3v$v+I>|}Yp}En4SFvwuP>A{ALEk-u zp6kWxT@!Ox)XdD6BXN z@yD$&X1_`^SUpocOWzcVf@WPwar7godqK#6;!FoTQ?eN3%JzW6j{8~#)e@2V#g1+7 zp&0uGB91TSKSgFOp?y0q*W&@BnE?)NSM1$<5NG9 z@Lv5VPKbFEOC~RzY~=Pia!&`oZ*~7|3>(5bc9+`PQZflHZ^OKyb~ElMjPdsCQbes{ zB_3}37W}2c#dzSN8(awfQJ0`$g%mqUx8JNfqma=_4KAiE6c7`=ziY({KQGaxM|pU_ zsXenRec5sNRU)o79_NX@19U+j-?#H)w!ObzjO-Y-^d zq%2N`O9$>AB1xnJ?eIZfah^P!m#2C+zH1CB)>-@e&yB(%*%kKv1ZP;b`0124212;L z*eEHe0bi$WuhTP7ftFOJ19IQkN#Ck}g~%RTfk(>w#$Ftm0U>hK~10;uJr3? zGDquQ2P+>F`@@e*F72_ynP`7rTg#Zxq0{DHkbV3(2O7;CT!xPp{MWiRXfyS^7d-)a zMJDAzrPUx+%lx4>m6DWJb-wVRM>x<_2#$*|_JXIE%3-xD18~qp;%{riFATlxq@1cA zg-zV_Te%e-VAUsPbfdN&qDogLcYBQxzAv+krrRxW%dz;*J&QqL^m|1b_(nxCU)VK$ z?s_Ijv56c09?Qd$XX3Ip-W{;{v1L$&xc9!;CC!`mZWS!+H49~03BHeC2$|ob3I4@> zSwA9C0N43|t;(8_#QVIo<>ZwLjGkWCd{{LOA0x)4PdIl2pUx{oGtq3KuM2OwlHvs` zVlv+&l$&7Do$8NpSupG$SG>dZJ^%-`D!N#&1wet=y~yDBP$I86uyjjw4BH!cbI$Rt z0zbFQAu-wzj7xT!s`6cikby@hTR#(df`)2)W)sQqgqdcn!#*E}4bA5@MAo2~Hc0+m z?id(v8nJk8M&ks}y2q6(Lm08_5W=T0jF%@Xveiq-sP5dpn#O(#M z#U&zltwA7uw6hi^GipO;sJd`DD14{BXDE`R)aQ1arohiHq1$wA%fRrihgNiX27ckW z{qeo^6t0*07#-Q03Bid5mi@fxc*c{&7yY6dS8GFMpSBQrz`Nw1yiFUxgdaCIq^9za z`Rw?!uRd82JrMIaBA^fr(lrw`0*jGBQRUi;084Nj>ZEtCi$&2uDUQKw?YJ2K+V)Xq zF+{#&(mP8kLfgppTuzStkH_itT~Ndvw90QQU}Pb@2< zO$mDz1j$kC+se74z$s+UW@XX;_9L^j-<8&6R&ZayPLpSa6aTfoJG}V&5|lR}=7tsH zK}lAUvX1!P^txeas+{`kS;It9kz=2WR~i9j6#?qpnKd+TQn-A$^cUXzS9v;R<1b3L zzb%nDHHw+19OK3|W02vNr7E`&4Y`lWDurEl1lTSW2G%UDBjXAj9dt6hRelVe9F+uL!Mj?1`_TM;(NT+^Gb zorl%4i*D6CRHU`5M`{fB&f+WK>bT9Q4xqH(lQ4F36a$PkZVWuz003l``IzEpm3BV_=I4`{dvj5Bnx>}Nl$$g%UD$KKb`4x@^XEmax0A12yjgOPEgyzd zl;R(6O=HyhG;yULhdYivANWpkk-JR&J-5lvLD!mtJD=4mUe5E%kS$$;7k|D6)4kqF zR&DFK?D23I9t#>}h)E29Y#aQgm7pTY+&&(~wYiRt51orsXbGMx-65AbiwGR7(0Atu z`VB>4jtTAblw=Fae-n2tH}Lw?_YW@B=K<5%APE`EUKn(rdZM-`4A=Wo|$VYsntEYNeq3(TEMWcTf zayrW7>2GXewM+d_VKFT^do<z|I$gUhH`&+Ey8gaCGE5$j4vzVV+1@l_-}0|O;sGD8sBTw~ zyg4&%GIJh}c4lkY@f^h;--}e_AGpFgRpNGE?r@OyU6weR6Atwo)0RWmEO2(hq;Zzk z6r6WeZ#y3L10AKkALR59`hX#g8{Bhaxs%O?7E9gL_{#G6KrL2d9pkILg*K+Ze6KT) zh2jkARNKkU**n0*vB$Tf1FBKzp!|VHj4>edy<;yIlPo0R%ZQ^yKPPGwnk>zfh{Swl zyKl#L{85mzKb0>5t_c+dnSFJ^pL)-Due^*yD`%m$+x<$=FIQ#w?yfheVvXM&V@F3s z_O}aKevOHE{m9M!rt3E$j^HFN?b87=iy)JEqX=q`R0N5iP6gWc>+AF8&M+Qw%-P?j z5SEHutV(W%qR82Ii_YE(kTBpep_ls|S;|eg=mOP|u8(C+P}CW#Z!g@N?Xtp2SBh}5 zYY_aYRUapv4#pq6n?`gGgW>1B`+HTn+fae4w$+fK5S})t^4xTY1U)CEeJZCSihHuO9)!IJA1dY1u#?&XhihjwXzn3*> z+T*`3BvmJG=2Ks z3?F5;+2{4tp^&4fTZ=*!Cfa_tPoH}oiEdM5C?5{G-;nYLxbqieRT zf_@Yo`AC&mdm(c#jQpF^l%&`}V!3U|VuAxmW7^{(wH^x&b;rG%{%pX$Pu5A!cPGG~ zdYu1!P9>Pgvk%kdYC%vPZSU-A1sF`+QRe*R4`O^zZY=DsfaYBC*5fDsfXCC>9NBbm zt3y`$@XJ2b;bQ&4v6qT0YpJE1)}f5dKJt7wuld4C)tKYxiA1y)msc?tXu`(BLi_h| zy2F-VX^mbBKqhYb_+*G{@gv<6>yJ^)M5|1>weWz zd=T9z{02!KLS*JlS_T8_Lu85b0S|ZQbCYvkpEne}%S^t)STwNPW(l+I?QXmDj*84L zG!#S5B>1e7llBtKs(37H>eWZm3|ftByc3XLLS=V~pxdK;C?+#;=jUmA&}WH<%iKgx zvBB)7a}vQ9)hDHI)HnX;e9n$#n%7-yf=!Mt4byG^-S7K`@~N08^As9haIe2(w4JQ5 z!#cR9Z2-l`Pwz5Qq9Pym&ppcgpchI0`ECE|(@@Glb2OF6>EujtM?(!F_x`5X*4YpF zpy;vp{;c{IwwO86HgdC)7ll+?)l%AVe|AA?IPWl|Oj88Sxf62;;Tf5!wM;B=GtQEV ztHeV8+~zIIJd~W*J8CW3gD3MDCkK=!aVKYS1FOm)Qso+#)n&D!Yvc5*=H3Au9gv@G z4A??Fz9!Rwl}vm-rpy(d*oVCrWxgae_F~zGdWHe6aZKEZmTS>oMB6KsJ}((Nu-D}g6w6*)V{xY@ z+g_iW&l~7NIZJlo_|a8-sBbs4BcVysJPr()-b(%cRVI7qV>b}lOh(o$WkNa-(!sDaq6PP_PPti_ZSkV*!1%8(!{%q z$vY{?o2hJd%;t;8uJE`-c`_a|yZ&m%Y4qcDrYH^LI0NKRG=Z-0~ZqE4A;<1TqB`K1%RRjm;u^9w?EQfQ(1CX*t zN1poGB2jhvbkIFbAJ)O&0c?D8zfzbr&Az(vT$UDI%gjaFVQQo2tX2N&(-At{rbLg15h%YwmK+ zLEQ;5m<>rbf+PQag8Lvqy3`WOVLH?rU?0|C#UoU!U_2bq^oT{R7dI`yYW% zBy>I+k7IaK24?1b#GvEv_4|<(bjK4-AoYQlVh7m?TH?EQXqIS#{#yxJ-Lm(XkmufT zJLo*TUoO4L%FhP5ZjQm16F(9CskDhscm#Ha>P3?OMdFHIsZ(LIIZ8|g#3oZc!`LHM zB3dbaK=*rBeICJSFJ)6bb9tN=9=<=Er`g*EUv?QR+7euyMAqKF+^$b?R$?-fc{>-L z5>7Gn3Nyq(oqG%|)st{?;+*U&f={NX+!@X=_#D%?JGz@br@=w5T_RTR3Spl<(_s~3 zPvEetKhC^A7R4sblA~FCLB+FOqFg8!oX-{*m{@It{k#IHX4~!HlYQIPa)JwpvhOu0 zUN*#?;eisbM<`K$T~X!rlS*VV{1N;~JPlYI+kXfyW}~sDfa!XV7DTk2|8&x`6LhI> zDHooM0~?{W8fqU~bm68m(q@$f3UeDeoeLQ_>bYf}`t=uHYuWc8^rjW)vfkGH;aiOi zLr>?DEfVlb*NqWLRbz-W?9LEzz6*Vi@5dY{Ab4=|dQ|86gHZFp%e(WE?s#Bf+IEr1 zx0?I%I;%4v1P}SDypaNZ6pUP;G~GFgmrZL|Y`TlEB`9oCCL{ypX6NGL7h-U5A>Xd6 z#}7GKSnJg5^UyP(neGc!BX)P2ayW7|;m^CCs#F(hkwX61Otg*<${y6Q(2R}4lVhKG z>G@T`bu3~tL#-Ef7A{C=sO7`Xr137_PvvmNpVNV7uOBq@#fA5{{{OzW-(>6C)u8?E zJw1)yQ}B3xGCW1#GX!eYy;s-v1M%nmPIgPFQ1-Z6p6#tDTsJ%afzjX&WMrOau@w0N z>OwQ=yhQ)hEV`r7DYF1JNFR&bl)~}k;NL`chX0;77M(N4)*_w_L6v(RTxZS0j6J5O z_^0Sdx^91JN6!;^pr%ykl`L!EFKpSY$1kC%ehRfxbvVwn6g_)XGl;kK#h*p%w<#r0Y?T1S;p!RIJ%ZrD{*7$L(!0|Q@7M7pLDWJKrgO8aNwvnq_9+-2)wZn9ud%RhhJ6ek7%bUJl!cRv7qxHW}Voa*v z_nL}&d|No2CvnaL`Hdx_PF$!%HPb4ywUS~KxWvVzkX4JTxu(085|@G2Z+xG4o;C=V zyBL_(@M9Q20PdVHu2=TqsoCWNUn0GR2Zi1_DOQ3q!23V(+u^PCQ z!`+fM0!^{A*v@O=7rLhx%AOtO(Sbp{7&}X4H9bn?sxkK&Esdhik>fSA^OeXW#7?>M zLnBH~8N^<4DF-X<53ie^xjjgG_4lI;f)kNZ<$T9z5rV{A z#I5QVq59TEvB=FW7-N9LDR z2%!$H+sqLDmj{>2zPCx{W#V$&Q>B2ldZY;GzUi9YgBEE$<8L#HaXvQkTH0nGo|@2A z^sdMT>c`)D*IQ~)tBd`6C6SD%7WnDZIkqT*|2yVa8kC90x^fg&#s=|o@`grBSSu=? zk@EfFU4wI~FKy0CEa816s@z$pZKQa=f3bWqqo5FKW_-+&$ZvZia-&tU4MK&7w_bEJ zlDh|`$AGAZ7KUS=OZ*O!H@aWYz3Ev36>@-^yoo>Z9g0hn>7T^hOM54W30>!PsS4{x z_dsl;VSf8mZ4nHLDN2Sr7odVGMOkm#Hqzs;<%IQ|C3t%#kz?AW5E8k|mHj3cph{Hq z>LI&D_`7Y2zA=9Ro=0a1tL>Y?vE``(rcl1HB zyF!?jyV^Qv=Q11$`LPLPZ}!ja4kMsaSe|4O#z?XxS?oKxV;0VY5IYpw1<2*fUY>Fr z!BWGs0*i`+aKAKu`cua;NUf6cLIhWUyN^ZdX-7E3)sZbCXer6J3)(--@X?b5NBve0 z(aggcvo|_9nTN>S`#1!wt(eJ`Y7X8`%CzJz%2Ty6gl>Co-`3l8V$aL=DIi#Gii%9J z?Q3dN!av-{?4@IYh90|-_-ZuO2y{H9q$wqe_>kH z_JW>JGJgNo!z0wcAES93nTN6Db4K}UCcA^8TsZcpG99p0Mc= zI@CFVsXkQBM8hF+0B(beGM(zYrM)(RZn&$DYiB^1rl!-B~x-!O=F;?=j6 zaHKtYqSq%d5LAMF-d*rKjZ1Eld8Fj>x5(lru$*`F3l@&rZ2QPmj!IQdGav7TKt1LATl+af;Z*Lzb_tcAVEn!+ z)qgnwF26k+LM@;NbF0#HtuAh$jm>nS`y2^=Z6e zd)I>hX_kDTlAcjsAL@dm5_hGSM|z<|_l2qkD4+T59tD!ol7)tQtI<~`DgR8V z7`)M}qdP;~+bcL<$E4EFg1o%@cbmTiUo%%{`g?mG^r!yV?&&y+eLKs7%*_^1LM{2r zfs@XVqs=*WcV`T4G4(J0peDl~!)JMwu0`mrWYY4l;3;&CI;)4D`h)=mIm_3gy+Kxy z&18pA3Dymsw#XKlLixue27lHvVt!NZo$>qAf354n+dr%ay$i6Z^1e17G1u}AQGR%M z7Y(^eQ=TE0KNDDe=Oo_|a~j9Yt^?U-eem62@y)HS5b)Z6Y|vS$5i(eJolT7+{7j-0 zA9D=CaE$BiG@bJ#4kq-Oh}g73wWsD4H{}J~o9OWJkr@-&Rrt#22ZEDFB`r{K`%N{J za*uuy{Zj{YmVe_8T*<-Wu*3xFH=TX^K^N&o3JLzPWb)?p}*(5dHS{q zJ2`ChD&vM~0fhSAwr)!r292<;L0{8U{BpTGvm*B}*j!$&Oh4QRlTY4__gnQqvRA5j zO>!6ahAA$hDR z1Qzrhja*lHae=<@un6YBsyw6MmzGJCioAG2A)1(zw{kZP@zp`&-!i?s`GnuhjPHO8 z!M{vzNVX9pIM!8FC8|DCw50myqP$;2N+6BxPHGQvJ~B#GzKvUUgt4W?)}!AVz|XZ* z=3dSaWSQ<|SZ43WfQ6`q3%d=#tmE$KuUE+UGd$e*)?5~9-l__z=BCQjpX6{y)OrJDlr3`u{gG$_ODEA_|ex zkj8l_X_E?tB$8PnD=I6=NM^|1Wn^zTuk5{NM)uw-6n@X&AD_?ny1v)-z25$LU7r4N zah~UK9_O6^-O{b9LY8T%xXHSG;WRN^pzC94;s%mtl*q#Xd z6S@Rhp3$HDhJSC`AGdvwfM1?yI~lGO;t{i00ms+gDE+SDl=SQWvzNUqaVTI9kky_k0`*y45b|65&j@g zy-sqNrX*crpU+PljmL0Grz@L1TW~`BkivJ0LAcueAwYYo60dv>d`e0~_&tpNn0_@i~aQPcNVmMDz_$Nr^-f^M`^p zCwb6A<$_ox6gUgKqS0-F3J7jga{N%O_zG5*l%G18#X~ljZj|sBj>Uz;n&qG zUjREI7^P1pK#bZ}bP-K0oNMYd-&@g(XBzx#-v3yJ>hJpV=aPreW`i#;hCGSP8Abx% z{tOe`4YrG)pKgKsy5LRzNA1wWbLdOMlTjEYC6XU_u#hH}=tMpxtU%Vv)a!DK^S|BVlWIZ_GSQ}kgxnoETZaYcW09_WEV z?C6NESun6hgsXiud5WJ?GAt)AJ3(NdVQ5mVHhz(Ieg3TdA|5}Pk=>i&0ur(OCT(ru z(85+96MNhb_^hcNw6a3cIz`7+YJ(D|CwUrOkw@q05q8j0@+oJ9Lm(HNqUD;yzDGmy40$VvVf?=EEq3H` zb(JY;jmZm+bbKP%zTkQ|^QpQQ2&_NOcIDO|1zSd$<#CBdc=u41%d0pKj*8z``?0ME z4NqT-Jt6xQj%}|w81fJCsta3N%AppNZQmQC=wu9D3664PwU5}ZjgmqH=lUEgI=+D@ zY?aaiAh8CjSYSBT#iit+EUb&1D} z`Tv=(6N}H$Y94KY<6ZVz)P&EPlY~+49BC)%yW|+Z@6K#2Qe~1{AMb=0ts<&7u9d-K zxAreXZ=8_IvPK~GSTR0z+;6dmA{1*&1ilD`7DC|Jk+kZb6?me0@*>xZPW*b1En$!J zCbZfMrSJRAMRHLX58ivf1^<>u$W(`=V$fOT4xFqE{D)SadCCa(034^^3jcVSFV0kNVe5#d=|cOG5rw_b9|px;~`KXn;i@ zPdXWe<|}tnNn29B?>aKlo{;2#2KqXDY#4pWM=# zny-O*okl}h6$+9Pt3&Gbh7H(P$U5`#L=RlO$Zlt8&a&pW2c45MC%+L@2L5_qGZ3rx~Xo#Lcff{8eKM!JLf5Evp@;q06O3%X7( zD<76X-(Wr$?VmQ79LQ@G|4@YT<1#~D+n0cmb+gkegqeIRx#e}>#w@Ce=Zwc0Q;}6& zyk34Ws>XKXX4%cgDO}jP_Kqc-k{ny66>)jF3JE~?YVxiUWK5*W7tN~1r`mS56jOsZ znaU&=MlOdxLaTe2{eIwso5B|eb^}J+N=;I-Ld@ik^jxlcZ{pHEqrc*5fD06 zLU4}$BW+U*{pF(7daw+0-=ONz>qW3qH?bO~T!k0seZJf<^bNnHnb&(dUYyy*vL-@Aj~MBGqS+sZ3B} zIiKQGC&r3-zKAWYLVo)m(4egmJgRcycv+pfG67=kK;L5M7kN{Bl1nd9!L#d#Ym;V}BYc zqv;ZkrDRRK%v^`t4_odZ^;^RRBf;IUk#B+FE%^TP?%L|z zm6(y#{jI($0)w9!UQxbDK_1(7Vrc*M9pu{M*3Q=Xf3RMF$(&MT5Ff8kN9!1ON3iQIWUt@!tJ48w0N| zX-X{X{2xE-|5toppcs}ZcoqqFj})BSWt;=nwMoo6X?0*)_fdNRIH4b1Mk!Bv!OVka z-A===QMTzN+t*wU;u=sDoklSFCmNS3Q!vrJ)ptzqBKnD4o;z{P9V1u@I*`~8D zeuqQN-Nsc^O#|}PGd5=(??ZAMd5~_x2afnZLI&Fx@Z@LAZq2)cP`BTo(g8w|yQ27h z%0e?_els`e9I=BRKV>~x(tiTi8QCNC#M!BIhk^QG{S(;JW+v@Y`4Z%Ayr%pkRfe1y z$-K{0zY)G}F?m~kuQB>dkG@Ms16oMR6lc*ofU1Zfd8E<{JacZP&3k)d@Kc$Up;TkM z*iygWhS&!+cidc{*Gt5wO!qysbVCSz2BSy@DHpkE?vB%qW&x{Tz@^B2Gf1m^H0b_T zF6#Vq@Esnrhx+HG6J96)JPVEdT;%)WlT_7x6nHt^*v;2y$+N~`)4>AcsLb|M^3H`({8`hU zBSVvp!Z)rY)G=m5phYL;~s)+jB_4H+qx^VH9Czr%sLg(TfyOUw$Ew+T|p5HDV1Ko9g?_%td!I-bzI7#jQ z%-#QAaqYWxTSq2i4&AlK@V-A1y&#py4;?Dk}$4njI zoZ6?cUK;=xm2!_ZMt4B-?Bx;Rxl$Or)nvfvUxedou^l|a@vy$Y5%jL4AH=r3LBFO< zyz4kn?a#lCF8le4e#s9&)SZhy`}Z_~TEvT&eW!YXgQhr{|3op`(+Sijb~mBmGUKNH zxoYH8v6OjyDgs>gJ<;J`@&VdjN3P4hguZ`N{4$MB3l>^SgqaCc!q(;8ZBJgd;63{n z8L_1y;FWKglhF4YWu(|j5-yAZyC9d}bwY>oyoYj|=NVaK*)4QP{%s@dxpX0yEUJS7 z(+7-82tRroc2;x8!bsGpCq44n`2}b99eH{DP8oieNH=-jwT#pCWGxoqjY{ttgdO zqi0YPLY$itOFXwDk-v;2+nc+NynHF%JIBk>r&2U0mBdW$&=(f2h~H1PyQASCr}zeU z#9v|DgwoX} zd3oIP& zREwxb+P)QZZw53MdRO<_ZX?lA2?y{d5a-Uad}?r66?os{b_n}W4%`RLB-FolK*Mt> zUzO5s>_|Tq^^$||*ILohRN55>le&XL`=6%bp^eRTE#kcVpZNVaA9?rpWH}rk{@j^h z-T9yONU>2`o0ohI{PyE1y+E@Cd50P$R9D!@yI8)q(9rK7-DlwozANa8cg>gmq$O5> zl*$mEHysIf&rh=Jv{u4sl0j+eR2pdHGH*VTBe>O-CBX_s{|KL4OL;@(;asz6gSJ%$v_rpF_D()E}Mlzch1^13?;~TlxSEX>(=)P)@lYh(S-MoU%v~!s$R1uK3-{WPdKo@4Tix^s~ z(~$qVEBEZT8Ed(^uHL-cQV6+oI*(s<9Mg-@iMk`Q;!O*?Q7cXsp5n z$vJ%6m0>)*Ssa>~qK_=ElvJ$WtblUnTglb8ix{CEC7v5T2rNz$9R9zjP%S`Q*iU8x zBGuhB+17WG?w_4Ms=i!|1`M^&6_%?&GGF$vQI|N`pm4!c_Aehf;?-+wi*sz`3fb`a z!d*P%H?)iZ7zX-GAp)Vpp*fi%u%#P>{6i17fZlXTy^_^Vb5a z68ThI~7kGSW$OhB+uIA)GB`7u^M z0s*ho9n|+jfHjKCDpH~VDjzO$FLmS~M{(Zgu;U((b*Z?XZZH^zG;^Zn$f2P8b!y_H z#%nOuY@z;gKnbYiZ%_YI`-WcEYPWb<+QHaXXj5t+1*H`jEH3|`AcYEgZlw`Ez~&_8 zlhVY!$lmsG2;)W;NakgKA#qkg;-}xVQj(Pz&wqE}rySvvaBcS|QLPa$3uGS}SGn2G0R3+%sFM!3{uwBmYM&QP=c!kA+ zA`lrjSGerbitm|CbxX$Tv1vx#rlZpvZrNUsRww$|`;(8Hw|rj>C*Y3A&zT?4d0SnQ z+UN;9t>#m`VsD883bS_y@f%;^=EP$D=7C&vG6f9@FvJ0&&#`1K7ziU00W&He4z|8X`doT?1f zS!hqDjaNYEkH?C42>;f9J~=|vwq-!dqaXQo#up;bJAbZEDh7J<-KX-O8xg#l?A%wx zynaVYtZP#99KI`I>E7{H3y#XQITw!n7N!wSV>JkpO$cT78APVxx>|k zEF{BA5jTFue#64+iC1*YYhkgk{^0D5AqYN~zQ6o!KT@bZFqxlCMUV7Pv4`b;;)#>P zp6tYa)DhL2Rw^Zx(3sFk>uRk-ZuH8QCe`)~#S=(!Fz{%3sO zUsa(OPD}$w(jS_x)>SY$tCUjj#7PcQ{x)3ZID#Mc1l(l3mH?|aHt?qKT@|sJ zCXC6>;jsc%vgxt0_j=Wx__FlAY1LkC@}VMe!F#mgDAvBJ+qL#Xae_s zBiy_7w_Y@56laqYH}^&#By+|YrRlt$gao688Z(DIWWUry^wh#jDB^Twu9LPFdGZ4; zc^R*RrDwnvs~t7Dt*!RCO5`8VB6Bs!O0bZvnH>d&sQ!Z4M0{I8{BF`wn%pO18Ux^P zX*tJLe-=|x3(qq04Z}&b-~UvZX-Kne*Q}clEW?E}5B4Tf1Y&z<;M!Z8c5JPF)KIup zgKLMhI+_DExeIOPL%9j6OH%3&a+n;hoE@e8M=ieWG>$;lB)?OE%vY z28)c4*UKZHmeEBaIfld1^8TovWHf!& z^$BiL+pXPg`UJ^I_Hpl|uS1T%P*StDE<_rz%}qY_1G0F`mzs?vIF-PEE0FFR97@=D zVd>@#0_14UYiHiTJ{AdytUGb&m^>k@cZCceehUQg%~8S&MIrUv?U8ssP)e6sY0Cy1nfvy%qFtvENtmi(ZH^?2d@--4M-()q@VX4~2YjbJWbf zkL?rQy)PEb8IX)KK@R2f?7m~n-JL8%GIrC?zKWBW$2dh>SIUOT#a4}?rch7fh-CLi_)D;RG zDy5Y92A-go8}=i*Ck_m>xO%K4;~m z#1M1r>cI4=Sb~c?cj`=Y0GeDj;e7G&11{^8Sg*g2z!ZspmY3WE@UoZHEMuf0K6Nq8 zdAAc5(P@X%wG~Bv^7QzMfiYbwybdHQM6VO?r-IX`AA48uwg2suPqf5-wa2Y1 zHYx)+(UyCWON#ITsdklMJwAyZ$65Aj-!#Whu@M8D1UF^w{+*TAqvN>9yHM$aO5mGM=+FCi0K1Y5r}#rGrQ>6NM$dM5IG zjxl@*ZvaP~La)ply@t#>hO4X=FtIPq6A5n2iy4#C3&tJW+)Emb4Jfe-7y3@e4EB|m( zeFw-(Q*1uCKu5m&C;zGbZ^G|*IxlyUkCu$fF1xCJ36M`nE9VB}v|!oa@5y@(ltHil zXWHV?bgUm`5c_bU7h|5B{&c#012_Nqx$#I$qh2I=q`$Ta_->bFH7Qi$t zIbZ7Ddlu=y>^jM6>a_&MU5k?@xyMLbF1PFxX4pukC)I8!IP#JBbOshBk_oP@qOOn@ zao^jT%$ZRQ;UYaX%~@&8s|U*4zqL0KbFlh_Dz_DR1a8iTIX->73g_Ny=T_FYLh_sO z7ZSRec;6>R{kKE~jtcA&`0CyUtB%~3Lc9O{Z#{DGuzl~g!*THI*I5R4#peIa+t!n7 zheUkm;5ub+OU_RU66?crv@|cKP~I)Jto_R%ylu3h)+_D=njKZMmgRqNxc~H=w^;y6 z?`hO}^_`kL@JV#MWT6K=NB@~Hm24wRoUf99e0(q2z}mP^oTm}?-l=-(Dl&vOEn?T6 z&C!z+EiXv%>()T^vW%|bOb;~I`Rjc$BV&fmcY!l9-LQS>`eMzkSx_&h5cxc}gr|S9 za~<9q`TzN-6-6UMkn#HYPflklQf}4H`{~nj*nGU^V|gCo-;+i`{mO6(4Mm?9W;ahk z;%s}^kmeG$-VnO*Z-($?=n+1)kI)$(n({p~*1Cn|+kNUYS2tkNYVMUn$^<+xH*Hi1 zp2tT&t>>8oDo}qYXOvHqm2A5$qb&7HABYyz3EphwAWu_t?kvb3Lh)c)mWbAItX9w~ zI?*@}6=l|MxVBM{)9Z!zB-6Ek_i_Jek?X5iBPG2edE*zbzQ~w%*I7g#OW#d{{tk=} z_SLf8U4-*~rCy)BdqC+j<72(70r<6=LKzeq4I=xi0^)wP0JI;K2^^n*wBrFSoz2xS z#y9nZSz;6pQ|eO7%TSZyFF}KLB1e-#B`aWq!A(`6m6d^ z4}uoc$!0UnHr#o6kCIed1EhRz8uFz#wPV!n z%Wy^%`>Bb&GJYsu(dKvJLGj^SR|6!H7-@(6uL3Q%r2||29jT8{Pr${ z@QXd^ZIX$QK3BbC=g=$gVpTg-IT!`bm)03(S<2u#hj93DJ#m#SaqVfocP{Z#Hks8E_?HGQTHg97>e8a^u79L*IXfEA)jTKKCtcG>o0qN!6m7F)haGZTt zN$HFmyt=11yEyL*-4ij7zP6`>*;z&J$(3xhyTT%$n?meA+*W-rr<4P%kL1NouU0@_ z$*xMxSzp-qKA+*mPXoLXs~Ft%F&wu)Sfu*hmJJ2#-Xh<%lCi%akG@y`D=54eXFm^ z7a4-Gac0)6DP=Z>g9*J059H zz(_08j~a(&u`*nLIqhg6+G^d9)ZNQY{+0fFf*4ESu5ZwRdvU+)$6iY-d^0YG2e5#2+ zZAyW@7j6{frzhUQC~q}J^GkhyLGXMsKZSA!>>DQfY99waQ*J>}kf_5azBNpt7+HeW z7U1s~6Fu;Ui^Mnbb?+yY1;9N;o%Bw#xNt>nlTWDxytf5M#tZjiP1Pdnusjt>G09xL z`+Pby6m{ln&{LB{9!xhLZc9X=zdyc*6Z7nwGl%4|=J-iG%g&Z3zDSbFDpKX2MrVL+ zh}LwxT^oLspn>@2RQx>gH-UGD4}9{z!lj?O0KsJcc&yKa_vd?4!^3`J*9MRBpNdeB zPO8Hhf|t&%_N$QhUoo7H6UzAH#z@jg`PMg5$xbS!et%T`+A_SJSMNLi{Vz~$d=koT z90K>6w7LBAg-AnY9o@V-1qSyHQoGgF0OLMy-ip9magj4bSWOM zHJBM|9ponS>y;=e2h<{)irDz__kI*S`kdZncMLp!ym-K$YY@%Pifs=h^a6`)re=lb z2cUm>l}6=LGx)~)R$9C)#)-=(a_cr(NYrt#v?MqJwg22j)k>;?=T=*{$L~;FsRKsg z_j7pjP=lV>SR3Tpdj~bUwV{Z0xXjUrFr;-HHz+S22WF{};*(DZJxI6NyYj^qh&i*> z8qVE}iH;q06z9?~_Qf-elm+?_IbGBO6Fm63PTdM8*8JxH( zr2_u7fr-fH`q|Q9jP89h&s?>M7tdYcVBWa~52mdisa>EVIijD5c+C(*J!Dz=X0Q(S zHwDa=yw{=qGY^58{0poHZU}w6P54}WxRRk1{RxEGnNI~mV(<2EEEiCaQ#ew~ zPtkCYzLFI`Y_DM=?^@}*+agGCjU!g#6SEmeOLu+$#oJSoD{Dng1xByKy$AKqDl8+A zD>tG4h?|xqW+J6Tr@4YhY`7Y}TX#bBVhB$aV>{^TE2MmNS{%EWh z6Fl}2B;wS9h3ntJ34t#?kMp8%=9$9vTa1_B?T-C-@5@=B#|($UpR5F|S`yn4cBvF) zR;~$;P0gvLYC*L_6 z(76dq&hfS3?WTX;J01sON)YRWf~PJ#IG=fLQ{o#g-!%}d7VgI92{N6ReH!4VRtk-l z-bavCEPrlBdmh(+mSh%qdg4z|Sxh+c9vP)n_lnq7qqC5_NUoMEhU@#!D7}rw?($p1 zYDuARZhz2^w&&S!j8o9ia@`$BFB-=6U!>!SoBmD)pYFlYTnFx|7vtz5o7wa4co6O? zFHp+v>B4KXI)9rsDbdbj_~_;nf@@0oj8C1r3EXvl(w0~I!V;H|N}Akb7`<-b?p#p| z;g8bkTvi{#4nGO@v&@+=p65|aTQ>}SWVNN_9xwRJCG(qWT@r%4ncup;bc9~s8yjL8 z2?USrMY)hoI24LrV^r6UfY6nG;C}W6DAK%b%S;r(V%Ok@!?H!-QWrS4gQ^ogc5@{R zoN9-FIL1qc&(q*m=eNVXXTD&EW(UPR0|$uRik55%OGoKn6$=Y@^Fi<1!s?sy5;(jj zSa_3*@ZYpjqPcZn8VlU$q*8j);Dp$PmzrE};bFA-@u5XFl5d@7T($fve4+9!uQQk< z`c7A7l?c9*_&;`rht*YRT4fx4KC~a7(DlaFJ&%TJ%1^_8&<=xMS#l=+ONB4C!H#cv zVvwSJIH+sw6%+^@D!DOz6)B$B+LqM&0moi38DY9_cqmKl;`p8>JljO~%fPP^iv`8m zw}J}(Gp@(pHm$hjvXCrKeUMHdcqs>@A1)6|QjucLM6sMx^u<-m2X$Ke8bLXKp&~Vz znryb)e%C~b8En{b4xODC#+v0^Sk4)TV^5U#6kqKFz6eRRm%B#slD|Yxtpo zQnMQ$?<TOrrRa(76~INF{b z30$;jMwgU(ostUk@R#4`+lQ4ZeAXIPzm+opLk?f09vt%k&6khHMfBOo>L{I55IzOR zu6nB7e2*~U>62ngLrK2PzwNo9`#;>B-+eZvs1mQ_)sptm5c;*_1;H1-)nmJb{PJ4c zXLxz2(B1Jy8yujqPy7^|&5aT>Aop_AjAW@vEK_H}arH&zVvds7ReQ=8c7)s=+OY-p)*tl58Us z-5;qqMfg;y8htb8Az#1rB}0_(Z;2Ka|K4|E6eD(ySIWL2xO+4y;+Y{6$eMiExc_+{ zN(6j3s$mt6Q^`rvLFR)<{=nh9hjtd`u1f!9#5QcaC|El&d4wErQB%Jt<_y`i`g~rt zR|LVc({k2|BK8gZoQ#AQ-oT~Pk1n-VmVs1y^}5dh1=%Ax@5zJHMeyOr^F`tCX4Hy| zWwN&>gZCTlKM_nsJ@otJ(iC+t7Spw>PoCrbYqH>o~?xkjm(;bV*7$9MY59``aht$t3~?R+an(%Ad!+ROt*Y+)H6 z!3FJ0d6RsnnT)4{qA9f3Ebz?vmhyMb4RCtnxuKKtYi#1CH4>5T!vD#`)3-do>JYlL zw_*v4aHH;jpa0L#|L;#agLC%9H~L{g>*YLkY#&T0*?kx$(UX5$yb>?6oI{gCVgrm; zop5bHY_npG44Rh)0@hLqUvEzric;Sp67@-v$Z;qf&8`T`C_|C3O$h`9iyqg;Pke1Sz-Ed zY+HGnrue227V8g|GMuI)hyT5|&1~p5PP1;>9NODK%)=jj_>tBIX3;yOHtWb3We}M6 z!f*+X%w)1Zc3wcHXHt9Wsh8m9fSsDP;tul5Ug3)uD<*)n95g5xHihAaYhI^_Ikc=5 zuffqsZqkSA35n+tE3!JQS95Ep8_%HzjtDlQJdAr=TQc(|Zw8 z^!P~Bd_=q@D=oQxUxIbnL{e4m4Bl~>Oj(N=!O}&gXMz4JFpO+KY>wWDVZ0AyuzH88I zHs2VpN}XA3jW?kxuE*SHRQM1dk7UgY5ep?F?tSe zZ{A?F#UoKS`^9&7ql1gip-~f0G+?$qy=)i`X@@3McjIYd-fwWlJGBL_8L}|5beG_j z$_F#7SO!b2wb}ima^P#7y)r}Hf~QREpWlf7iNg%~VH;|8IHu!!*puZdsOp9GQjMnI zva0Cq`(GVUH?g!&sCUYG{evaC3e;e zf%y53+XddmC@kahHcU|q#jiDbSEc3MAcJiO&D9Aqyo*`Nk-iv@=APYI16;kpcWb1M zbUX!ny~HEfAG$!9Q*_4iY9KJviRhFyCIYMZuFaO1C}59f%iv~hft+UQV!Azr5Ku2v zSs0p#Q{U}ad#gS`;pV|N(}QVvo_#jr#U3LZ2^>0DFGEY-#&(w8h}bVU+VJYJSIsE0 zUN3$0tgZwNSsc1krX$ck=~1AB=2~ zfX8V?!WPCjs&h|Xonr`|t(-H8UaAAnNj@4nLMIYnp}Sw4s0R$B4y&qUH=^M#4>{!v z^RR26{bc4+8616;ob=4(H=K$NI$->H1YYpjiLo{p17FVVoO-`rh|Fc1X31`ZQ}?9* zbj~+I-MRe>&IcF4`F&~9o;v~1?bam7TggU>lsj-ie@7FT4Y1rxJ+uZhZUaphnx{c( zeVE`Q266`(hunLi=|((pl`*AWR-{~ zU6qi#%<5Djy$VI{=8w;=5Ihjdbe=$>j`6-ax^L}mEcO+4P3RT{LD6-u+IfzDQ0`^n ze)E1MzTs!;HB6kvAM)HIw7LCA9Xr_ZJC%wgs=rwFv$O@P{o1~ee5WAyw9Aw+7bW@U z(fWZu_Qd{to(EeR6v4vA@5nnc6y%l2^0fC>^yHZMLx*cOs}$Be9#y3i9Dg@e5d@Sn|X zlm^0PDTuX(7uCoa>wd%BfEP3!2K~4PZZ*6>db&n z$|bh7PlIrJesbrHPXq@f|LMahsz$W`7RGh*4FZ>JWOO^B)B2w}gYBiU`|8eCTsnDK zuY$GjKlAqNJ~5*^#|LmK%;A3S@kY#fp|Icn4L#|FwEVFQvtQu4etgX7cqPWl?@u#3#k)&iCUo|U@86~zr6(O1GAb~&9)SZzq%4j}7E+^}$l=vcVG@f7)81I2c<5GU zNYQRz0R8qNQ*je&(p7&gF3Ig=w64y6*dW${N8WqvzCiGpyS2q%?T!mVZK&M;sd^Hv zggKSEI#%G~`W0?Rg4c5Je#c90_64l{a{Jx>PXlNShYvMtEdw8u&AC%%ZhB^R%Ixl0vYJo=S%bB?tQe)4a=xL>%R)O7HYn!U~dru_R=a>-^N$qnpi<+;bf zP)T~Nir|La)oXrpt7jg)1sEz-{?L+W9t%u%Jnl!))xaQlM^E~o@MZ6@U5#M$rDi}e zm!Djs%q)6Rxf#RMjgF#SA|zWXyU7-`mv5nZj<+i1b# z^v6W|POW~^{P7ESdsR2av@PPR7iG@+@B6W4m-4&gcYgrwS=DvDH-k9R zrhHlK;WAQgTny96Uc#p1HvJZvX;A;y#@vgy7r*W1$z|dsrX!9Aj4gJ|!43xIDEn&( z$aie+ZHmgV|BP!DIXcc(f}cJ2AguPxoEkKdZ>~LFj|KGv9<6&)tY9qgs>b&2L2Mdj z`|IZH3-0{)V{D0e!3~<1-=8(P!W`El3v!4#Y_%TzEV*$H{>{IcRiq+(PDmEHx|G|{ zNKV;oVVfPOe|n@~_#qicysoV`;`V`qm!Rk7y=a0@-p~E~aW3#5PO!+7I|J@RFXd7@ zf{8vbUZjlcgLnPgOnsbgqu+hwrmA@@7|P<>rA+r2>1$%%gi6jqqW)gC4;;l{tkNR? zrN9Ax!F%=yk9hb=|6XlaNv+!myTf;XmCGZO(6L~{N&|pGg)6?PR!o?r68@kly-1yBOt5y!T88zs6TVr@u=sl|m|fKDWtcC1i^ajwc=HjQsu+T1PO3ZV8+lh@A23FzwaX)BM|e|f-T=s7i>hlg7R z!{rjmFmw57Ec>@?SbpdBEwC;Q9xOe(60#!{DckK7mGa4ucy{#dsn9%B3E1)V3~LBp z_|aYL;#mY&elpt^HwFXM^*sV-3gbYwChxE1lLL4=z;Nb)=o)ttu)5e_~U}vc76$6J{>is!I!$BNcz=tPux})a~h1< z6p22S7xT#OE;?;wm#mI3?KQyC`;YcM&a*(hZ53&b&hOCa&=9AJTL9XhyaFCHWoX9% zyvDl!-Ot`8TWgfwZK4H(y~fUYta#3xP3T&e#e3jjKxJuu~f8! zMt*YOJ}z76xK01IHNOQP?05Z}uIPrLer^!JO6YI6GtXXm-wY-LZ%v|=YT(;VQQ4Ry z#2(t&H{n^gMquBZwN-!Qokp6_k&i>25scd4!AL^ zt0V2y4rW8oDG%#!BZcg~%p9v!g1V|XS9a0%!o(x{!nHqPu*2e?$~W&aSez4(<9tWl zBT1$=mnE7&@8ba`C(1!MnZ~@8s@(AZ&oQ;#G|0dfYZY_hEj4NC8zZIvG8gH6&ZkoE zopn&on0@h8Zy)OZw&y&%GX+X^eF=Cvodf(13f8636OfW*S(lQX1~eL8GP;cS-~&ZL zmLri@^!CR&z7+L?czL&m)1u!Yt;Vjdx3mLj_8n$3TVW+0l799aPVYt;ln8O_S>16u33n9;5NhkE0(Ak^4E(=ll;H=d3K;nE}gy%Eo?m` zJPLgN_xbi)vWm8nghEy} z8QC(kH`#H%?LD*i-g_(ZzkWCV-y6T<_#GejuIrBD;B~yN=Q*B_r_6;`jOCMDJFqp0 z$8sO+dZt86-eJ3J@#g6=jx3HgfuwaB~$u4f(XcM7nlrC)BG|u%)gq;Nk0kGV86rL&m{l z!BfSYWU(=E@snk>=&IebM^u%Y9Dbsxzqug@FT_>x>u0xM>VB6ZJLhJsB~@&!eA-1O z5_YWnP7}E{3EJezwdxHJQWJu|I}oJraE zf=Cgv9dY^Ye*P~U8Wzo8I7>|utd(5se7(4lb$~v=sum)k7T-EO4HB} z!|7H^EB_9VmZ_0$dK(96O-5a%%!8gZNjIMQVc#M$4yHC+KiYyPQ-^z+y0(%3P@ei= zcfTKm{JL7&Rp&uv;6w2m>k_W)<~RIwXAtg|*l}w_Y{EY==hncsMtJ8ZXus2F5H*s+ zuP+eXY$=Vqf44;vd*u^kGhJB*GR0&16g$SN#IpZC$|DMn_!zn6{8K!9(O%U9 z6&gM_c}khU?eA{}Y|G!_*vDT=F>eAf!q{5icTy%Q$Q|s@{E>zZDpTBZ)oT=huGWpD%?`3oX9bogcD#JK^CgB*OwKNc zYlEQC?y9xALNuZ#?eCV}f5Rm=iqc`bOz+6vB z@Sz~l&*V5 zq9FHo)gR$hhmG2y)HOI>_9`iLqYuuE#zyH2mcaFnRRZ!_33Aa36J@%En3$x_`=!4R z3tY11k8gUzmbzV>zk(@VOYb&g$ce#yl)~;KyHb!!ibc}&^jqLKx5EDH@HI$38mpiD z^Bhu&Uo$_IYlWeYm){A*1R;6-4JE^fIVPG(7LO1?SpWAq{=c86UsZp)>PJcbAv5(r z-Kh;ZHE;N|kyywLSi3Cs3Nh=>53cdK5xkTn?h&uQg51+*k7R0x;Q?DFfxDjlnDa@) zRj*?dPs{$SG4Jh0Z;l1M9b05V6Qu_fJSxO^A-;b!$0qTjC)q^*>;Rgs*l;~y86)=2 z@+dd1_Ta~7>uys9QASM?XGk#vI~X>>0j%CC3Q>VdU+ahpiHOnnT2tpzf>Nn{Q}WLLTo1K*f`#DipuZY zxr{fIvYd!WCCnDy8RPgi6bx8|?(ENNLa{4fuL%!Ep|VB!w)r>naQ#ny>MShc)#FiO zBcVA^InlZmV?s$j5I7N>`N@ksP>jC2w{?DCL%Vc7;%I$CQds}?XMw?~R6q8LV& zKW|#q=U_dPgtNo`G1SQ2QG4S#11TfwW7{R}ZY+BBi{ha}130AB&0OBLopfu@_n8@o z8MsenC!?OQ3Y6!hZ?JU?fb$Qzn-m0x#3J0_T@zh5aqi=9>IK#yb@r7nrYxP1MEhy+ z(oY(a)|qB&)8pOv{h^M?6;V#o4lM;%&J#yTOL3VdP8#j7m-k%h3Ar--u0~-MW*h@K zlGDX;;W=3RE6SO7avYk)dE~?|5?l=0t(3&bR9x9}m}yQk3Itxg^OCsGizX^;5BLwJ z1O3feXD?ksr)pY3di!ybn#Gy(+S9v8_E&SNsJtmj);;RH8jHiQ6)Ut(arO_g3D$&F z$}i%b!Iq9sQ(y41+x43#qnhz&08JFN-VjLVCH~_~PJvVE9z1S$iSHdHMVZ#SaEQ3v zdcdKy9=NYdM=L!j#Y^)IGr_3~|2xNguGN%(509b%#qCV~BOU*#M@H|mAJqNz8w4q+ z-z7LS1I5Ir__2#qkmjv@?Z~(7B*)A5K4~j|hwH|g{OzylNjq+S&NX|P56)8_V>#Ju zq?NU}>qc+Jq2BCp0{?M#Qi)+sDE;2kq?H2E)jj-EkehL$h?j95q%{HyzC7DciWHHU zU`Qx~Cz_8won)Qz4}*>kjFwvtrHU$^ZfA-@yn z%BjZS%wDNIO?o_}OSM};r?h7=<&KQh(b1!%Z*lLwZftEMT}i$C$N1h~h#ZL043+qc zq#3W5{YK2BuhgfHI$ddm0@_l2+GCugC+`p0cpDRXc<0*o1pW%J8al)Kv!BQT&NE%O zn9~Z+p13n@I(A|5Snsm|(E)7gHkRNXUqqIx#)Z!=OrUsu`NJgkd5o-^qs_-TbjW`2 z#A0y?IR0IBx$jpG9esB%1x>DCc`u_xpUfDji{~6an=uJD3rex_BN=^@rneoYry$#^ z8=NPdry!p==gy#Hn*)bS&6qeHXOZVG$Aym)bwKrMglK6KEg^x^T1wmFmrj+*!&83eGm<7XJ94I*mIC8 zx6_b#)!%eK*iB1D2j=6~iQMQj=act7BGZthzi}o;Jtm${@A<8Na}U{B=>BJ4!XKyP zBO?Dxm5Nlfv>H20>`7O}s+wvF(2&_KYhPt`I!=1ata(28(Rx{BYpg3iR+S^&suies4z#tr}=8(2P1IUZbDI<*95({ zuDa>|b;hw}je|4B=ds`}&$aK#m!bAm=rJ=jbG*XovZix84p+D)jxF;hMKQD-NxfVN&pE8O7x&ls&PVYrI1b zx!b#T&>0drD*qiwnaY^_5EFh z&drkb@qewJjz+z4OMD93e566x{J-RsD#gH{|YU zb*LovYpP;Ko(dH?!)}dZe{x%+AwY0`!q&P8zV=XPOma0q^xF3nrfaciQ~mUB_)&A< z^?y|&nw^cz2KhY?MAgvVx6oBEtO~_Q@dEZ=^3Yed%(h+44WF*K?P9P_!PLKj^gl*I zA*9+Q{n6b*cn+*v+~+Lt+@$o@A?G{Td+d&;V#H^7QukzMt-U=Q&D`5E;&%^CmJjS8 z2b1vDji!fFk`kCq{cBIatR`3%1Qeflv4C);`KeVw#8AWb67%=}-5+T_6``0SIR^~` zDayl=uK08CgJ?|A)Zx#b3Sn znd=gN+3#TpJ1lpl=3yVWJrp0W-Au+~zhVM+OSPczn}tr>b7OFE)o@iVZ3-+!SWP>U zhj3@_Qu?bRJ+&Uv+dcd zRO4O*kHe*p=j&dQu*&RcHftBm^m6W)l!eLGaY z_J-o{#8s)wMBd3}pHP*y&p0tRN}y3C`18^eiP>{~1Mudw{ZEFDAYf>G|DJc}7KmLp zegBAR5MQ^x5I9xy7w*WYJ3hbq3+}k7^P7BWhFw}mSZ6q=kt6K0`?P)zzWr*mgNOKT zvHLvC{avsQ5eCAyONg9ff3cVZ{=-Wbj*oJEirQ8!tQz`Ny-Qn zCD5Q*xXkwx9_i2&ePqBiy#x+(54Z-UTSKiG`4iPcTiE&FeCtc1t~flU!v6b5G)zz2 zyL@bW2+;SsXS*}bV$62Zc58wCr1K5R_h5Pzj5+33WkaY*dG_Bb8QZ(z7!UX7zIRjj zf&K$mO2#H?f4|p1yX*(8JBFh6T`I>X!UGCV6+O}A!IE%BNG;4g({(U2sQ|@=G?kW% z1?UyH^7=`0I@ZRz3-4z4hPx8_Yz~K~{-;L_Hu9sSEy7~%lWegu3X*?mqS`6tY4mw@-1~T z93(j_&*oG7A^fCLpGWG8pjvoNY&e3Nq;ab)a$as9iStZmOz^xfsQ5Zvh`-+o!Q+f# z(lp&D(mQB;)IJr?4W&mJ?9C3BI(f<60M2SQk*z%edQ`bwI9{hMIQoKN$LLD0k<2A4X~G{`t0l0#30f%y+FN zLZ6FG#+qt93aXS?()F^CE-I|+B|;NaYMr{>ieExe5FwkdCSHd(>lcx$Wp z_7!-aCp*OZbpoE+1bMt~?8bL-)hC~8tl_u)$%d>qM{tf;Ek?F`FX=*c)?HD{8JxLY zx^DV%41!<$t5XZ?!E*f|o$URzq|8SSAxqC2(2@mt*!wTTdo`_TZuKef zbJDoe(!U85Y|mG2acn1rUiA8ssk{k>a$5g3f#;fRsFWR3ahFv0Ky&_FKKmQ*52}rCf&FHc;HrBx%$0~g7*(`| zSTmDweS-5ic7*PL*47oc(y|^JT5}e+rQBf4PWJ*ix~-ExK9gbIy>>e9Z6PS|hT11z zaEGqr?>a(N+<_v&MEtZ{7L<8hxpr)|3O-6u?&bTuAxU2IWq*}YjD;-z?KBPFf%Bgi zrM-s>T-8@zJ+1v7o~1KpW_o{zvu0b434GP?!tv&_+p}4O?{;iU@UbgQXe)S>CdR?n z3*65K_39vZ;XJG4D?_~Jf00L8stEc%>u;Xfp$nYBwUX<^zSY?*|FnW+f4H>#i*e_v zC|F<{EV}nS24?Tj`zi67BJDSWL;AO$fS{1b%$?k3kmy_aUDsL$13T(`3a*#HowvyW ztuvZ{p=^OgH}ZkPjBk#^KM}h=t2HLkzXa0g2b#1%V<=L3T_?Xr@DaTv8Vh2aK*7_8 zXM@)R9-ZKNDmYjItC2z6^BpdrUiM@9K25Q(mI1(fQHcf+7G}U zQ7CMyXpBGKv+ra)YYIP(RJ;F(uR{M*%NO5WjDppZS=)^a`!FX|uutuNDfB1unKq1h z14WN;ZV|-`cz)ZtZ-6cvFT~gVz3u%CIA+oV>G|96$;01sWuMuzieZ_ta`qt!KClIIl} z*jqD4mFLfm^5=El)88hc)14OU6Lt6T#K!cUVo5!m+9x~np*I^PMAgNfq$U67ef{*v zpSQ{4G^FthTHpNBhCx=X(ITpinY1=&`sfh*BEKK}ui_(DW`BLc9I`pl`PjZ+|1IWf$8 zbsbaqW#|G4eoOPO&;MGV4MEmaiARf7AGApaYMo~52M<&FjZ0_x!6!8M!VpUt9PzjH zJhr|DBB$o&?wbd}@5o~nE36zOuD|iSw`iK6b09$FQ!6FukX76IS-&}mqq{rSyG(G0 zwcd7KVP1uJTeZRsfd#n4P9w&2qlK8S9Y0tZ-~gw-nDWtGX$56lPxsId9w5DOn@MnR z2oiQB{*Iv8gtRvdWshG6f(>io-ZC8;lI&9a*HeUF^pnHYGr5&1kSJ&Qw{*S;>d&gN z=7{|P9bKa*)Di`FZX3Icm~|&ySJoG<|1b|>&Cf3P5qf|&tiyP#wGL*K8c#Mo4+N9O znV!h=?Qnyci$-u{2`gkSPA9<<&;=_roiV8g0ez8I*9p#cedJPE(Y93_<4Emi8SjIW z6E6)c`j&AfbE>bWk;sj2Z=={=&;b7e55vWB3UbR+>AZ9YO7hy-xq|Im8JH9+*<#_8 zja>t{@8v`?>h?+x+fBAZten!6@|9mOL3bspKr9t~H=HzVH1d$qj#Qj%69Er+Jx+#f z5uEo<%fJAI0|RMfriuv{tUk1BmbRPy}@;P2U+08yZTAS9b_p^^%oWejW8=% zAN9^A)KYM;`8gGxhS0(G?B)-LqYeB6a0}tQ_FcuUXty3?{|ei*~r7L<}TNYH(@m-@Z}Zd6)@!dAXlrL z0pjYH&PuW}lNdM>=XN~qfn(vj6^w~Fm<>yJJDr~}Nquj1X++pK;Um)%-kaGCYO@Mw z|AerT8y^R77P`d3y;EM|b)9bT!}ZF0u8BEN)H`7@WIl$i>OPvu)q~*qHTkYOzC1jM zVZ@E0IGEsc&Y5E%ufI95N8elF5M-+9KVLS{1EnYDay$i*B! z-}-fl9VA=1*qSkI8dA#Oe8%V3ROE{Cf@*^^Oyt$*yrVa~X~`t&8&3R-BILqi+u&sX z1>*OFWCT*ogTraXVl~2_(!B8M)9-j|X|=Df{2jkhHlb z>&f=ir27=JkyaNdNYp6nBS5&cxLvRRDt*O4%HrQirrS?XW~yELw-UUAY(Z$bhqe@C zL0)mzn7O?q=HM*$Wok~6j#rZ?%`6KU_Nz25&(e}~9(!ta9a;lLHplgb(E-T3pO$-C z^B_5{_><G4*__^^}A4DU`EY%q}pPKmD1HEbghOSRECTy&%pTR&YR48+I_wG5{YZk9k> ze>8d4>%V;nNnaa#;)CqI=HdP{%w61Ned~1*##vRo zANEA7H~!63V!k4^ ztAxw2444G$6WqVV;H0tTV$+ScaCc`NAD4AD-Z`3T`@^ISp5G6OcvV#hqe;t-Y(jxx z8f~0?nWG4Ty#rnp6jgwmMT!rbh$&DurR^Cb)!3b(@T`fJe#jX zYHu=hDzV709yh?%t)tDal!_qB^=ILqL|q6_4W7O={|8838OQk=dSN@8`R0a16FgC1 z>SPnkhWy~~1_@yq_=|hRX82P*hEudkx5(JS_J_Bf_Rh=Vg*49H470lESox}otH=&L z$h8K(9O{r&M|r8pN*aFd(SM#CDgyIlul}}R1I$rBCdbb1f$A&g1>QfaL5?6AkxZ8V z<}>KV-(H(u*hw<;925W2ScP*>;|;qrSV-bO4^|ZN{lv-wt#bCsHmFNyy_@lS0cn03 z)>>9s<2N1kMa7yj@D-#_yL@;A*iKgHPRMxR(HjI>&*Eb>ccPlThkkp@)A3#-gr5tlJ_^vDLu*0OZtoT(o6K+azyUotaYD^ zel}##-KM%r@V6*#L_I$jS&K2Jqkidb2Ey{P@Q9mWAWUu99M&sNhEt->lG_XefxR(T zoZWE|YNZo}_0BBArLn{gH zva}W=+I;Ct{d zgQ%?!PGnZ?EhLAcsnK!U@3(%#Yy{~=K~F#M%)IPLi>ZUVzK8t$opMorw@8k8LIG?P zj7NRxXoS9gs;V)n0*nsj6S+39iV>SCyX=^clDZ^n{v~lTlN18tIl_N#BW;sbE)Vki z2PIDJI-x2PIQ1$TDNFyLb=GKmu4fN$%b!ixU1`AU#*N38|5bxCi)CVX?NeC06(&P} zu^wb?7cRNG=AqWcr(?#%-0K&u{=wna2)LVNeKONz{(pL8#plh7CZ`B|pr}u&XQ=s~ zdc;8XOw!eds z{`s;w@bH>$A8IdPX|ak*s0ooPv-4!nuGmIoR^tV#Ps1>BkxP{6N*@GfriLE7*N#~M zjwd#0R**c9`dRx@Iy|CTdqOLm48b~lvajDqfv=dVO?iC@9^Q6BO!8b>Nn zG*><~gZ?Kzp_I6hc(Dj0{Xcm3tuT-;YkrLne9?|A7Wa6y!aDGESoSM+LFLVh%t5C5X z(_6uFn56rtb{wBoJ08`cAAq!T(-k`knaJ&#U!w+ZP?Na|ql5Agw7=AY9|3vkNp$L`(2*f4aKx=wDq;tD4h&wUG?@yF{`RfSG^xtMQ1+SJr63xbu@uT}D2Va3AuGo?jKJg43w z{Q80?q$L+0{MzpY_AeiqhiYnL>McTkKm7!EZc<*JrLl$`x8dANkyIkDo`$;*iFwM- z=AjddA?U7F)1q}-4|msXvl%QWxNRJQQvDJc;MU=8uyBD7MeV)m3xvzCFY%|?-Y#=+ z<8kwy<2D8t2jy|w%j1Y0 z#P61+Q-|)yBl7_sZ3({D`0`g#&S8fX>#eJZwl>HcE8M(_ki zCBBWYs3WV}&ZW$OpK#%Yn6#T-1O^yCvCz-b#qT`T#;aRFG1S9QE6nIcM2;cQ6$iQZ7aN(UBA41pQbpxc^@@sPvCQcqpyj7fPJ6$dD@ zVZvITUvYmnhA3QWT-p(U@6LytU2w0%gSw&Dy+p$yTUNbURlOJkJte}{OJ;x5UfpQ@A`q4JVND~HGn^ouAlisSG=EukSQ*4Jjp z*(hN5-Qy`_-z;?1=rcjbo;8tqCU1oGW1sy3QZefbxp88p1a1`61nwye|Iho{hr#3F zK1Wuv%BsB|Lrp#uw$49pDxo3w@OhT-A8y5+aiK!0OC4Bl5$RYeS_(2EwJ)?vf8w=~ zuQgFLV^C{6)|;(8jYB6x6@6YrfaFbdKNjyoOye92 zYyH{=d%~~t zNmw~ox*G3lEWgsV%7ZgkK3x1mT??NDlAiVx`#@oZ+`lN=pP{1oc-7^oE@-#kGxUGz z`_a6RTG6xPP%@xdHX}TM{NiH?s`Tv`|7V##QiaI-Q+>d$Y_|oUE4AY4Zx5i$BeD9w zH>t>56~VhBEat)0)cm1+&JwVzJ4BgYq$m3@7)P5o4ZwNdmSbA%CGav-(E1B=H?9Qx zE;t(Z672JJhw6g)t?T!c=cr2k!pPNq2%ph3D^<`XWAA^HogS9d?-N?D%6S14J z3YFx)SrqEl5L}?u)FXHL(6=%8gX^ySq{&+oj79}JNak0y*Ahmjp`^&dqf((4l^ZV) z@D0tuTHAIRRZ=gc|NfTG-QSMMt=oI#Pqe{}M>W+q^%~%(q}D@+13l<^o=`?lhvBK@ zbz|ewS{#rF>t+2jjwNnAyIi-*;h_;K;R&6jGqre`-b{azeh9Q@Le@h}Lttd*j5p(EJ1(BOUin*o z82B}KLoy9>q4YCF&0-I+PyE1PDJdfls2t12dU&(oM(9CCZo(g{o++2;^so=H?iNrfr;c8o1cBjq!Z7CQ+!f6H4Uay%F$)A3*b0(zUR)Jwi~A= z=V5KPO;0Na;dkced`ef*4?V2juezuvz~i|1$9`&pzs#TKn|<>iDqq@vam}C`$GuAS z+{>xO+DH?sJ$z|cUW!s#ZwbDv!TV%-VqTx%p7d+!d>xv0idORtR6?1-{>5CyVK@=I zu=5`=*UbsH4~h<3N89gu!VM}d;F$T~W4?SJ6r@V7*z2@|LV))VBg#xj6NY`A0_`Yl zW-KYiJApN73YK@b5q&v*rqm4GpU~;JcC}HY1YFyzoP-IVF}uWz38mt7%#%sH{Agef zhc^G+YVYmC_u7^EDP06lF^cNjci5_jNoaor2`CU?4cVNbp_Ex4z=w9P*g3hu^zJPoDYmtcGKWnY3{E z2;G?N1S+p3=&}@Lg6A#uzPj`l2sMn7^K#!$mLPF^3w|hs>ykNzA3ptee$C0}N&;L{ zDR3vKXJ#f$6?`YY&?bC;k8D);b!Mlfp{9Q>^p3j>OdEA=`g4atPi(!xoTe4BF1{`+ zv+^N0mxEE~I1E9#^P5>!xE`$N+hlcJ4g*d;@tazgGax@TXWx+rDL}#A%Du6y4aGlg zOeXi+K}#x)+dbm<22ed(bE7VVAxG`Wb4RX$eNyhOlMfwGNrdAj@8v46uiBos(Ch+f zVmgO3tc+2gsz=IN@;lTse@WORa@vEMKeq1w@C*MvjEw&m@)aR~NmS^23e1Og*Ds0G zLt>7tNYwGSa3RzErtsT*DA>ub=`E-W79#FCK9yzAdSGVjZF3+7XZ`yW-4>4l-{j63 z?Iw8TxPF}T9UW%~?CV%yQ+)g#X(_E*Z#0MEsNA(%&MYY)6yUacV8{&5Ci} zh6z!*p+DePjr(uvd*AUb&+n_HP5$6I8yMwV?}=1ny*}r?1L5x5O>Pt8Sm4fLj?F6j z222ZAglDB);c)BT(=mJ*c=5d7zTdCH(TA^xxxKj!uURy?8{hYY9c<-0!Y9MvdrZ%# zZ=W-v(|IttEh`aA-gOi;{|bi>39)BxkJn@5uZXPc`!g`CY~URSy)}y63>M=w)5i&` zfUB9Fgzqv{Cw{w90Q`J01=8NQA{<~ez8r+imTtTFsxS?@^XfBe+;9w+#6ZE%My~)Kkf?9 zdV%>qnYG^~-l3sSG~L-TYf!qKHkjJ_1NMsiSndp;!W%Wus^8fEH&5H}SZ4|Y(vo;a z*_9LbR^Z8w%r3^i)1Yy<>dHn+If%4yofHCshvdn$eZj5(59I|Zzj+)Bk+J?)j^8J8 z@kk!bRE&$@up}IQh9$^J3o> zy2sE@F=J$wYaDV6jN6xjtUXE zF&d}$@Lo+t)>DB2M=#Hzuypy6@Ao!wuR(xAQn>+eYzTMGQ#Rp*jqQu^_rti>_D=q9 z&^+e0m;O7$lMMD-S6?LOPvCaN8GGqzB4>O}XW^CKr7o@ivb~Xc>HyeCG!Cq(q6Cb#F?ix*pd-yGwj-m!D4KTQ?d1!E)g8}!D;~6 zZ@)WW2!kLrJ=&&Tn2gTbsNdHgVI)5``Tm?la9#|ZEf#c-kYW9;>`n2gWz1d4qDnio z2;DbC6GsUj)t=aItwvT;INL2Pn0GlCrzvR4l#1JM2gg>!J1c_kt#Z)PqbL)`!X`55i47`#v=Qm-%CjTX16!YTY5G2CAC@l)q+xGNfR>S|&k z%029fd(2!2<`2zRJ9CMgZHu@3qTPf4(;a15r$?BVdf>$2Y{yZd(*M2xf0dIzJx8)W z9g2fuQ$6$zAEO-sQWQC@Se%Irqp06dzCA*YVs* z(tE|mXMej1=5{{2`#y36uKMm}Y1$z6$Ielt8xeaKO{9@9+u9NEOuWlvDZ7BXRdsGD z@D1U&%C*rg-eGV(B7ErF>wfTM8#|YzKZkT?rx+=z+Tp@I8>2YG2GFM~NqZ++1O0_= zCqpQru;^v-{+!`qU_S99o2|YP(puw179__oDp<0Nw4d-1iKy+;Fy3#=9MhQqLDmLJ?1zDCspN ziHMkJKNLtu(m$HuB$P6Q11Vj>ujD2n3POCBUW7t{s>l(8h;8Ka%En$1nQM5w>;@$> z(**q5^rXvH9fgDh_L7{$q&qe(DM>kpNSj}Hxk*%| zHHw{T(QsMr<0F%ZZ6rQnAEx1nJ)~_t^e!AZYq)Dbs3OdXnsn%M{l7R7deR}EWsPhG z9@0YE=ffL=t5~p`qRM`aiX_;_bWZ;mJ;~jWwGW87)cS+j+n0t~K_KJrtZYH{|Md6& z>s&wPIxt(c^$Y%(B~FfQev&#o@g*oB&7RGueoxuYdy)T#*1i+kY0f`%RIA5TMxLP#HrU&ewOmTt-R&tLip!t#^#Lu(a49^L43Fn*4~A~J2W z6{%QxSAym!V|at(x?H`~ryS$Uvx! zQ@~S7nYZyp3>cbMHE^UPV^>S&E#rDWc+WiiTh^f+zr{wlrV{n9>xCWooGKFQHDB2N zJK+v@(&xH$t;2EISha3~`YQ-b`<%20D8}XR#2@}__Q>NT)Q+>y@JQZw%W|7|a6ITS zWNnfFYXx5Xj~HBmQK~-V(;-VNzpk8oU*aJy_{1+}n?J+tN1k)-d-e?{KPXo^KXHZP zRI7N2E5-;lX3w)sHNoSn_!rs|FHk>b5&c>{85+4fADpTjgl^uH12npM|9M~g1*Kn- z>7yjg8UE$oD>e+AjsjuEniHs6I9+#3tq*tKIGrN+yaD3n{-lHUKTHl;aP^SLK#{bX z#O1@M8`U-cL4h-XYmfg_oMpLbfuy;3~$}irJa9K2H}xW?_T~RI92n5mrfbAfDuj0 zr=<0MEY?mclKJ2S?=8N^M>}q!L$9Pv%~=}qiM+OKbITlX=h`r{IhBgTV z>0XXE-pJDRKPXFC)I{~uR=jkSYs&1ry$1fLV`3F~7 z#~i9+%kaVJEW07Ueppt!c(6f~f?OF{(^e%$Mi=YC^xL2F@%XICdD#o|!0vn|?LtC7 znj4)tNi|o4ALb0F?u~9DgB??|#XBz2%7A@|kUcHQR;jXcV}Opd^T-WtS|YEf>yp)J z(POKiob$lEwq+HHu7{3gU6_M_{o-^poZXn)`)=3IqG7o1eW_cwZWOAV*mz}+5V>~6 z8~Ymr>rvc{EyiPljQMZkezP7P1qIdkTXWSd|GS?vG%d8g@%4gv|9r+Sv-bbJ|9{=v zPZ^sQ{yi;%GcG1spYmp*r#enk&t@ArA*0a8&aMTdO_68UjV27aG$z{JMn{@6*Ynso zkcLi2#WU&$=}A=4wmf8$X^2*n@)a0dg4h-f04tfuK zWhfIMQL#N)7t1IxzZaHqzh3B3v|;( z;M~7$`Q`0gcf7hPR#qp#g1XU1k$oOm@O2C+r2(efEt#An z*hm+Z)vlT4{YL#hwr?S~=0I2yBjz}o;1|gu@|fgdQqqsY)2F3dvFy7Y$yfRx2ym*^ zXgd6cp|H%=Sw0R@@vakRM_7sP{HSswQ#TFC>H2eN$%p-zU%P#)>bnq0GoEAVooE$U z_vOv5Q}tsoQ;)?ku|FfX+jO*5ft57DfBgI<-6?`+H22%RiKtKRGX&-pWMd3fxY)-|^6C*PyVqNFvOLCue1dbu5hZg{GZF}tt<2V}0k?l{>6o5z=# zF27pDP1nzJ+TS)2Z=U~MS+xwc=fn%D@3!J`WiQUbM&L4+D99J=IHltPhSv+i(?bKSY{}uj0EvHGx8}#hq8QCQ+I16zA8*POx`UDOPoz z#M=|SN0B@RJW?^sjYMvw3eyuAb=whqZs5#59MJ-0vrSDMiQT|@&W@j-rUnku-genP z)egvWjGf3ug@Hz$KT|}V%FuWBVOmlLP{mG`Z@Cj38NXCR#r;_r`H;*1YxKAOytggh zp6=O^=MITHtR^x~JmIL+A+o7f4m7R2O7VTjPWX_vUKP!1!Sra5zO~0~ z`56dT2H0>!K7gQ4j%kN}7{eak--;pb&ES9g@x2{|J`kwhnXW^v4t)2Fyne@q!N1Dp zg&UE9ct6_k&~rCG_@h-i(|XViOkJE>#syB`P5%3ht@2U07Ro=lh3O>*0gWG4qnMKd`XQ@y5#lGDt*NO^oxY z!13WHY~+bDxJ~DN{@3YP{QiK6{>-6wX#CQorSxV1_Lv=@+Bg0Vxz6o$N%(98HNg%y zr$j?RHD7eH{&*hN3)wW7Pe@|lfSIP^s1hWu{pf!}aMzXQ+3q|EdJUZFDQqr(zJXq} zcm|z+Fh=f8JCtqq1)S^cvX+Vp@b&ecfrm-RBK#@CPK zu{MsFHO!zSk#Fr)bwYr~1g4tI>?iJY;jiZ`e-@tp#Kj-SijoCN@y$4;_;jWpau78a zbAczkuybRWqKH9B_qR-yE>758RK?-q=?e2Q2dNe(98r^bcZQhdH;l_1I4{aC4a!~H zvj_1Ojtp~4{e1om9Y*#=t?)?!$s{l6&N(AwxRe)~s#gjb8RO0srz`&RzILi8&~{}Q zhy29BB-zFV^vt;-(4jC4mG21_8f_Ppmdk(Wo2-Y>^=mCXR~87Lm0Y24Q95k1pBb)pP?Vlt_1%PVXTnr=BgzO>9HCrkzsaZN|uNwBfz|_q=PxM(`Zd@;=r$!hby{ZP(gSi!I;Zo}Vx#a=7zf zK32U)?4d3h^ybqS!c*by)Ca+Wq=2}*f>9n8Xui65DBY$yLIat>;t5!7Wk-7LotHHRq3j)kiOW#@7q*(x{mGZ0R~`_uSsu zI5Pl(5wY*D6b?aNgYb{r2_3jr!=l8*`saV=c%ix>BEV@Hg*#gkHx}yt_x}H-M|QvL zWaQ-Gy<^v| z4Z*#~r?cXpbYb;V=izU6`@!tq2PK~SgQ%qEL6@|a1Q(-~*|)KbVFg^Rdz##jdA+um ze=64EY*mQu@=O$bJ)`r(d87~bJdr${G&TUX?}KPrwzZ@B`}@om&MTO!k+`y6H;mOX ze3yB)D9BdlPZRkgN`ft7QYCj{9KOj>)E?EF!uIBZ$;_G+v<{sYPSYpy=0zE&zC=~Q zuP~h*_ACwXiPSc8QkXWaPQ_$;|S(7O)DJ^<`er1+BeJtdWE_D7L&*k8U#@sl2)K z9v+;4x#m!>QpJ8SHE|DcZCS&@o!p}AyXvtGcQJJoXnFp^}f#i7L`|6VZfyjxB$fZfn4;X`BMCT<2u0UuD?`q3;%>^>E z3-v~cEI4MIQ62NE1}foGT87yza8zdN!u<_nkoA{5{=^e7QGd(+OE2Mdp_6ofa;yi0 zE;Fg|XGGxm@xu=?Z|mb?)+ejhu`n15&M;q?F9P1v`Buj2o**I0^-0Sr89KhotK_b` z0}tIV^X9}t=&p2jXvu$r-l1FE-lw8a^ESm#xa$gQw2LD&kL=2~n%EBq903xF%PBr@;zBqO~l)2?@Qi4fTKP_Hf_0AAIJy`beWfl7u4jXwyV zT5R%eZbKAzqP#Xmzz4z~> zTxv#Tmr$NA?k0@cJb+nq!Nfi5?=4NV1k$fjd-8u-oRDrrIRZU2FAp(p+CiPaTn1xa86G!O+pOfT$FPn)A!${7lp`i&o0Z@Rs|}o==@bj>1H7o6UY>6!cY0{B?c_*1qgy;(yf( z{-^YhasMUydul#DVSMqJ9(yK+vTO{#9k~8T(W4FyeRm|~EGJ@Oq>x@#SOdB#m%45r zrz5@Qkoh|xvjA$PT{qZN)38I#VU*hHH;Cl4NJm}hKwBE-==%-CJ+EP1rRvxSiYWT0 zz5YE20qW(BrPE2cTz>nOei#`)n)>y{>>a>#Yh9ZM>l7qN`Z8y_Ck?Dam__BO`hny5 zt-xEkG$i4%+dQN+AC&Lr$c!GakeYUFJJkqA_41Xe?7V65_Zs6h0*MVcOyW-yy2gWZBt6X~_cY zWa%}-rt>9x$mRp%qh`*dsLINE!~fPamaY~(dnv+Beog;aBbdGgg<=jExOs(x%-i;rvaqWTq)m>dxAsy&?{C4h%qwOfXdi9%PCW5wSQUN7t1OKny z_~xr(%!>q1(>K)Z;=zLd{rvwv|9@YT9@D>B%&o;{V}%Vj=LNKVfBb4t_$VmsY?BhN zq$VFaySwiNR$+g-p~_L!zt|n~@IXLNIOu+tY>Ly}KoL@@)T&1>{%HTF;d*BlU0TQL z*1ajnH~Ee_IozlOS&G<`a%z9^Db2e*dD?r(fiya%1%nA7mT*en#4`=qU7 z-krrI=1vE$Q7ZBWYpHiFH6NR5Ghe}Daj_&*SQCdhKXYcI@}QYmj8`i(a~xI3ArZorMT zo&I1oJSKtI|z3#XV8{nYPl0_(oVEZIsMuu=DJd-v@b;Q3zv>lDuf ze80#4a_9AYlpG4HEX(Y}jpm1KCeLQ!OUjATg7g7hSd z?W4yZTpvT7*mbj5Jt|W1fc(`y8Cp`6An(8UA|_I?auca_|1i47r)a8WQIZambC#-@ zDMg{Ga=FDLv^hgPt82$Cw1~;>ZGBs{KZh;mz=Z z|6y{Xuoxa~kd*jHasl_R98?KBQgD^&ty1O@9V~fpMV+4B2d`5|MN=)A;L`Ac=1;`D zqEB0v{pB7Adg zf-+IWCx7Ay$4$J(^HpGwm|t=mnSB@JH~_IC8w_HRjs(y1S+k3a0&s?(k$$P@gIzH< z>ooZLA?B6ok!O?XI2#^s`9S&&anC**ZIluYHZ7NE)|5kFeIVZFfO!D;tT%c)o=(7- z&}((MN0T6(XEbX@bR9qaW|t`x9ADyxa;gwuNeUAI8_F?~yA1f@P|) z5Dax>sdy=8Bg11^#nWkDVJ&vb^Q!GH)Y+WW8@y}*>n>d!2L}m1wnpgT#rPyN`*os6 zN8cK3IeX`sM;>E7d2QTSIs*fz^yv}}zN1)f`R0+C7&PpYOusvli?{WX9+i0!zMFrx zxvlhJNHTd506TA^_P0>&)bnqk+RV^ir;Ut%l$wRN(G&f!o_+Q;DQ{4|@H6T5l_=yr z6f3=rFAQ&IE#@^&)MBv;~IG9{1Uhx{u+G^p~v% z>wsqHg9snt3C_^{I2Pwv02h4U=Q&b_z$_{KFZ~r~AT&+xl5b++zL0t|+qpNeEYUun z+Utm_H*{VKCYgZk#X1HhUkQRQD7U_4ZUnDOZ(GeuO92)Jz0eGO3C~Fnw361;q0j?% zdrbSok@4I&<`QL?oi|D^V)^Mm_iK0SsF~R--Ow6(l9h6!4Nm=iR%}!~iAiPwOT2nR zDA4>W)#6t>YBWH;R1Y=Tn1Y+Res?~8`tn6ire_jcuU&Zd{9_3&#+H;{>_S|;SAAr7 zwFA#5CfBuY-$IJT?Wz$~<7l2`A%B*b*JuCtOo@=v!&#+^SD7A;p*~%||LDJT)ZW3; z{AIZeuX{4xjoCkmkDjWXjw%enJWeys9YlXj?u+wHmbempIwe5CWk^Y8<}PA?)jo~h z@{zkj&N7g#+&u3vlPa;vsJuAuc_ePy#-~s1UPX!1_g%>;tvL0z!jCfvVN{`#rHUsJ zuW-3merYa+{8#SXbxnO(?^Cg&mEsIlAw%KzOG8+jof{}5{T`2}l+0`D&f;973P1l< zN^;)M+=45zIXK~YVBDXB$W>%14*wpXz&kSaD$TP)nEBeTO`)^{KB=Y(HzNbdtVw|W ztlS^a@zGurAo#qye@+@C7`H-Y6|CZjF*g7C^Doc z9nv#XvI^f#($k)E&u<-s2Qyh^*$YGPd&EiQwOStz%K5aH2UWumTgG+6$SrW+DOIGO z+zt{0`+2T-HG$G``co?{&2Y`?ZL9sMF{FF&P4)tj$5G||`l-!!76kZ1GEQailH6w% z^mZR+CfU$Y6lDdmkm}QN`k8|nNz+v$hVoZhK>X&nlFJ0o#fACPR@#kuc*6JSnmf-h zHW0iP_uUtVTW?_b99}eFuyIv1;7gO5q&2>QO&&P@` zFB<>1KeG%;=A5`c04_f-GPx2t(*L*q_YcOM}uYuFI-v2((Ohazn_1;i@IORZrq{i ze=+sevXQgmE^;8t1NMS}HemaFy78_Z4VmX;{9)djW8~|+;`DXPWe~BqR5G0KTdgSG z35f1Dgrl`ov4N2Ur=6SnPgFq{>>jrIR_)S>mZEYBOiGnVd8)`bw6_g**c&NZ5qv~e zh0kkK{8M;vS);ddTNVU#XMDfXyo_}3=U!ws4FKziWc1D9I8Y8R?mBGQ29aXt&Q<4? z!?5DiA}7aRoE|v(LNurY;_EL^&gs>G)3L3bQ4Ln|^NfGRZ3QLpS#qD3N-7OGyGhDC z;(ZOgi)}u+`1TO_j2QiRw%jaiZ+zC2^0z>pBp>~=0uck~xz#}ArMs|;R>o!ZXFGDyA8Zv8Be*G-wPV<*X~=rb7qg;| zOygdj!rW1gel%oys7S}!iC^vo-)@K>M$e(gDd!H(qmAwSsQywDRw)=Kd`eD3Hz)q5 zcYU&epWWuh&YXT6RdTy;{Co=PjD=E-?KVLB&Z5=987{K;o=c>iUaL4i!Xqu1=|cEG zk{>>6S-}BMro~m7(WZT^537GBua4<0q3D1gIhA`7Gx<)PxDi~1MYhXc#yghL zHDmeH!JbAuHGWl<>GC{MQm^P%-&leMkr@8KH7YVKV{c3Ta5c#N5K_=+m`D6>wxJ_i zg;zucJ?9QGlE$jNna2wWKdOiA6{{cb{&QVl${y-?zu}78e0SpbP&o41{W2Huuf$7% zrw;%8$pm>{&StWj8)6-Ib<01n!F1O3kISDu;jyPL_0)jL)+~Z zTvfivxQp@?>Z~ijn*5ZGdo5zl^d+WZSdjcpw_hG`o#`&!4tXQo9!`0m?lX};J?xW| z9-j=hZaUi!7aoS~CzD<*6m?;;Z9G*^XgBsgx2@}*HN`a2k%|FEJ+KH2Gk0Vro@>pq zzNI!jD3K^Ad5W)=;J$B6E1r1|%G~#-mx{viNDFnkT|OBHpOt*GQ1!#ZHQd7DZ5enV zG;P1~J2&)N5Q?!aC1VqZzxC0n0ATOR<}9`&L%t-vw1bx&@|>1csoU!dhu7m@d@{cU z^!rcp&P=3Z;46GC}NVhy};kuMaBO|*Qc6}0fFKvdX2)oR?OnzyC65s5TR6J4*V zbU|!r)`>OXA-vv4-Y?^yhvi>*SUmb8;dF)8P0{VXU{KbWDf_Sz|41J{S4W==+CS|Y zx8#jrY$xBsae05JFg+6Du<3-wX6Gb#eTx9At%)njq8^WHz%TT%FAhce^$&SGp1 z9jiTF^d3aGiY5nw>rg4NsqT?$4qkmJ7wzKag#kZBzU{P*A?8RJPpHH=V*TyvW$}?B zxWixOy5?De6K_X@homDg+~Ik#j$Jq!*=5!A^E-n=f>ERu{W}fRvmnW)tzMbKf+yV*SwM{Bhh_0 zr+Un@6rFa2b+p$7LuP5}AC|L)|GBQa0%okze29AkzJX@-FO7Jq^njno_Ej7>DBq*> zFdfgA<_&!4DZ<+)#NR7DTtU_in?#v$A5>xGKV=cuixl5D-uQic3Dv4{2L&7|@W6o0 zm-FWaao|#c5IvFCpwKB#@XRNCR0@%aYl6hNi{bWW;FVg~A#|&w;K&fZE-!7nR!~at z9DS^<*XyzE%0ul2n`J!Y*D&1lh~V`7lsdW=RDt|EBTjT=lX0X`dn_lLmb_YO^EaVy z1bIPv5lk4!MROXD-TjH2{qi?9S$$Oy+sAl@Mx2T)zpSBbFFuIT3{ninIyulTusPQz z6OIz|kJj5)(!o3-YDN5YC3;Q!_PKAZAdTl$VeZ`%`14LK6Z5_}eCWCUub_H$n24bx$Yrkug?{DV(;+}dr!}x>=XT7(Ho=ql7GLwylD@nJKtfA*tVUV z{1ptAPV6AhJ*3}^iQmM#)}oyvmpdT}b5-}1v65e$l_Q14)kA~Jzj*d@+sGfzf7wR-=HP@s=$+RpeXDl z>9?A}b(U!k(xsvF51U$Sq*%iYiKn(yB#j+i{F)CMVUQ-F%XplUR4r4SP_S!~9(k7R$5A&hhmLxFepidT|8spWjvr`Z8X1M6lP?EG8rMLi*2|f{`Y-xX zd&nthRfF9@lkXe%M&PwsV4h&l9PBj~o%!CP3zgXnKW^v|_q;098;6ARQL*=}zGYPk z?EfN|cbA5mG~-_pR$JZ=%B5_}MRf+Y- z>#Rhg&pUP^f#9PFJ`>in5}ky@PHOkxe8_=FV;3_<4{u=YuQWK`Iu8CDp{;iwQj?Ub zgO~3f2|kx%Lcg3Ko3#i$@8s87o&*Aw->1HP1P9{u@MXI! z^*%V>&r#)>$V$q0Xk+H*>ce;e%a|w4CD?mEE{TaL`UPX5$#I2_g0_cQ6M+z zg!|;@bN)0WN`}j&J#G{v_pOun6=Xj^-BIPuV)qzq$y8qW!7u}>8Xl*_nRb)5%k48i zIywbE2cA(xh0lSwH`|~=!U*i6*0euWGYHbZdF0=5rT{!`a|m2*#f_)F3i81n$Q|i1 z8R0w#mtR(fmzXBQ$*dEKzlNN_x%lA4F6%;kbnqZ~*TelJo~gf`K?EmUUy>!^-2*BT zPlrL(j5<5HLcH~%@yIG3mbG|k;ZI8rI`_MMprQp0=eC$=jt!!FKXu||O2UIv%u(5J z;1@()4&Cv_ARqdCO}n`tjNx$S_IS5d8nRQ)`UO_QdN^{y?sXW!?W%A-!00TJg;{UJ zn+D1Rs zwL}qbD|33Emq35iaOg#t6X9huFMYrl58>W^62imLFg44_d)+4uZ!cEYQoel(kwMXy zigeszn6b>uzak!7HH?4O(n;X(fsJWNv0}J(|J;v}PnFPe^`ZJZCu4XnYb#}RRv)EY zO3!Ome1Q5JS+PYg>S6lwT)78xAu`YwJ$)r+fm#lyXB5-@h+Kvs_vjFD51#DU@|({L zs7b%|YUGk&2mALm|3))7bzo9`{$e^r$Nn+vKI4tosEtZq1;*f!9kiFUbUwh@xj{dJ z_5VNb!dSL=<`%xviK$4)tOr5atQ}#yQ@{sHH}>x?f^_-qq36wHi2lVXx zmCs0@ABvldx~;b}e}HpAVeyQSJ(gz(25_r+LSRJoo5*#-%Py4UiZt5rvY=)g^Vn;c z)sG0cz2b`GEsu!x;-heO@T!}6Sv64?etmA*9|c-V(oBU#PGD}uQu)j*7$`1sne!Cb`V?5H9Js)6 z)E;h+U2Qx<^mk4KvVWB(=82ydr2VY85sbfw?Isi6d84I5Y3?uQa3Cq3KiVbW4#oUz zqLqc_*!%YKc1<-~;7r>eo)YPgSM{q!%!@-&Eme%#q~`{nb&S2O7OoAiL%w~eUU`9R zRUu#e%&ovo=OBmo%Q%96Dv;5r--w@uBA*9M;(zYfl8g3Jv+DF@v!9;3_YaK0U>wb0 zPX!g(cii!j?MOdPoQEt{ot92VU9M21Fkq{oh9ODdAM0tz$^=Hr>F& z(hp98d8H7ebVE^TKMl#oHCXzPfjN}O+@C9>Eyu%`${AL!P?91~=jqbdjKjrNj>Dg*1g=OHGslSUw1M{4}sac_nJ+*pRsv* zg@r$R9q3d~0AjRqt^&-YEpdq<8kN6bn~-63!jYO} zG}$|OC8`rIJ1&^23eH2!6@NPVP;3 z7lSeb!b0TB6f{}Fd@SU+&FVzYrw7USXf@WptQnUabQyP_X~#kvavV;vlOMLn$pB!`@`~T@M$*^a1^|2zP3-)7ub{y*x|Mk;xHz z^bwiJPdRp%NDSeQr;)?&2=A0lcB&fp33@W`45QHaNx~N_b*8|F@DA_63i(O1W%z0< zygRRzl`KCZxhug0S(Kr)2QlId$Y|3=PSwR^99X=LmGpRdqZm?SofdjE_#} z&%r2nROV-q5vX%I*!5j}9%_#mzc0T$h%RR`QxEF>gKHY?Ip2RVk-0M7aJc1AkQ(pT z(nk`0a{oQu`jaUfB<~;QO@GF>k+f)Na=T5olZ4C86~7eNPWorLcB`Uq1tL;!>5z}J zlf0NL1w?C>q1+>s&sRSe9;N4hl$&NGUAx_XdWwmI#B9NAsJ%wyd9$*w^?VtJ(@Cvg zT*_HURaU71^%ZoajqX8CQ%X*fJKLS%8*&ZsyK!vCo~fY!T-RKmziJ#8i2!-lBB8~{ zDG(OgZpibe6~a&V6xCGo!jb&U3o=yJz+`CuLGQ2|;g9~H<pbuP1B_q zElKw&2SbRE_|DYVe&~8k>-=EeQFM3OCCWMR8`|}BY54mlfMsdsc!Jb3h)8N;!>fOUnO49z;R9LjTL(CAoInMFr%l|pzuPEh6Jd~A~Qc>_-nij?(^ z^spxQ4c?;jw5sScn z_vVWWYoX{TpeS%w;w8N5tUPc+;sb6tltt_d^91LFzx|!JBhhk`?}QL_0OVUe&-Y;t zf!dv<_BGcZs8icIzP=KS)0Zws)+qF$kZOMLb}m;)ct&~S;s?U>s?F!WH^~>YLqx+% ztP}AmJEOoK-ye9#rO=d1sTQ|I29wo@e8WS%=api+KVnD~O?O<96zmrlAL&uefnT~h zePWERaKigG=N;h^f}?RP&s{YPQ;!#aIn1008+kWhIC*~qYhlHtalv$;nW(ERUd{xM za+Xz*qh=`d^1|Ckhp(bJ%hRunye`PPq(91MXN@Y20$pbu-h(Q|DNXOGdwBE48O?}A zF-%wfe6taQApK+LluR!fEbi$WReJwKo4+%Elzjf17hgr$>{Lyh&slD5FSUJ93})Hi z6lQtGLCJ$NxWTU$S|6Ko{tZor`JQf;gT-x7c*{oC6Tb8IW&_39R-9I8cyLQB6`2|Tg&1umV6koC*Ga){Tz`9UUYdBQ-7=3l=j>Jv z-@hcSJZT?*sa;Bz+XL$fPi;5Ll}&;Zmsh%n?Q$h%_SuB~y-MWU)6|R({LICztfR-R zmKK3Zak`)NQ!URo|{57(PPfZV=E(!!;$nAV@6L8Kb6m2}{feJk%v7K|HAjmfomfzb7uT~>c zHqV#BU?rDI_0DB*y&XK8PCR#xOV93Te$fVLyEKw5V={2tvJ(45c_|clh+4*&IpXCh z`cCQk0dV_v{(~dUH!x)Ki}L;M2icu}g;Tr}@P^3P@1T2)=yZyPE%{0vSU$3&V>g%t zJKiVuenET4H}&f0sxMNJRgdcUuLREHqz#kJr}W>%{ca)i7|kHa(hv4C^-K~zs@)7( ze(e}Po1^?o-vSb*hk1A;5|K}*xO4nT52Q#Wz6m}U1?f?8uXq=|QBRsF@P1e%z7nbR zYj!V!qp7mI;m3#mw?FGc&WYu7-MHlHDFrmm|Ep8}@7(zRzAn${p9H2h2>-_)NBy}7 zymN~)d+)BJql!pF#eEu5j@ITyM%PN%&AEHxWepwqhxpfb3|$dmY12Wj{6kH4KfT1h zBV>elzDrw%T%aZoBri7>_U%d$8nKeE^{AR608UE zt>`mOK|SDgWzc5Yn((2 zKL}J3n~k2Et%P@;>x=Kg8fNi7|JS;{1v{*-ii#8bWC!8c(*f`4$zIiE&J9|`@6UOX zz7u)O{f;@bJe&Qna^3#uh}0gkkVi6aG|^{tlvw;odurf2L6Y%+WIK@ue#7c#(Kvu_ z&nP{6d~g+c+IPQWW}QSAa%5b;#{#syHi~AyP=%_e--A)^Cf&NmTGp`56P%v)NL!*kwBVAwnbLra=h@f)A-U?-;!QT%c$TEn(>9*t+#Tx1{lF((5Bw1dr*7Y}hs=u2h(=;A=CGs@DR8L^>U-5%Sob0n8>>{epMQ++W7s-42|p~0 zC-?kpZVhOe3g^dL8i9LCg2SHgFThmb>|bLlKU^%PW3&GL4l<>hcJ~+=!%QNJ^#S@c zI7wkRxoYNyhr(+FujVDfJAt#qvE4(+FO&Z=-nSmq86;ZVw8)_LqR;;7vqaE6}SS2EgZVBzsnAHSQ43V3RDVK&5ft;AO=@sPPo}ernAeRI+%xBQpfnBn>le#g;g7}%uW7;B9?AtgB7Jj^ldA-uf2LR@5B1@D_hZk?#}+WY z!}j^5qaQGL-u;0lr8{Ozd{Uhas>cJ5siyA`eYrQsW_NKIIv}f5WcQAMr|{0T3PaTG}eHfolp8eaC^_HMV)E%q$HR0n-~t?ZGpf3Uq1GGXJh3L z$%TItg-FFupR}630;E%sF@6~(5Se7`k}62dO)m0LoN8`|UrNCQmzv0PMF$i_=+}de zmeih-w}Ws}acwaon}#%h>8#FP+Yxv^Cu&94QVi@X;$B1FD9B3(&yAfY730;ZU^5K{ zq94Y;!{WiV7_bxFS0I}|jBhpT$D(w0kSv6PB;>7{u$9hbax|^0#404z` z8ShWb(Z(kj2JPBOj=gN}ldXA>eBrBoc|qq4@NRy&C8&&0?X5k!u!qRC)A1TDc{anL zh?W{Pi$T;?i#X_9+zZ>TGJL0P?#4`u)O5R+AMl>JtF(q|4j5ih|x$)Lrjh1`b!uMd zcpWBf>)B9hSXqQ|ZEEp9$@H#Z3}FRa;@SNl89aKt0k%aBnm} z1ixS$Ud8L5g#4fKQ3|@@;%>Gw@|KGa*e_uP4a{q}Y zxd3^Pv>xZJ0@H*Dkw*!il8BlvlNCxnawe90WHxPgL>Szk|d}X+IJrd||5AKr+)N z3+AI$0w;!T;T65=M+vJkytCJ3*W{)(%G((a03~M_~XIKTWm2a!P^95w_8e z!Vln;v-mVx`#YAm6ciaKUxgRrkIWm($FRHk_lxnWG>~)4%V|sLz{s+lkfAPyF;Df> zm~2boJySZ%eo#?yRgosvo!VS7I%N|i1v^TFP+4S^+evbCqx4wk;uy%Ds;+-=L zP->V>n0dpmM`~hM4pu>ds1oA`!*IwnR-wtfyMZ?cZ|QTFq{5zvgLrb`2fQI?yy0(- z2O4>~rRi#dC!@?fneikC;}&-eg{*Yoe3WG3A&F5uK+W81)A0sKqSD77Gf87wkVk|~ zPAW*Nm>0~VDyTk6`Ylh?_feDPZO6u!;izlAL160w9HTQ09=cirRX)tMVTVgGW*ep2 zPK!ox49Llf`|b-@xQwQrTn)pEPL3sJea#>xIJ)^ms2(cqdw9#QYh(9_lvr}WeSFz( zYadnq12jf5W;fe>kjcP|&EZ!C&TlL+GZEj5om*&n;X&JfuInFX89%sNQ<5%fHyO{B zkAaE4udC1RZ6wnH^$w}e4cHOQr86zk0f$2}zrQtahrEAL-+u0k#R=;OmayPhv~lB$ z{^LIe)Ez_5PHk%k&z4Scj=RJ7`Tmoo>X-dEzTtjm`B)3QIqq zN41CIjiWnB28n__+h3G|s*SrGugM~inwp1SN)5p*=cWB?JBvW$PucfK-Z`K$lC{=u z?SK&N2s3x%F!1qNN)=FXfK44K?Lng~kll9EoUx@03)44;ZbeQ4{q6^150}Qk;o(=y z2ZPB#Cnh0fF}DsuODf;>{tke8e4~v^P$&ij8yt0&X@HCaAz14Duxj_;SB zgJY}(6Gv({Fs(;c{=;!L(l34bT92$Fq%%St+NPQ{5HKhz!*VwqFCV$_ppV=F5BZvX zgu6$;SBt}6tbYKG)7roF;+Tb>_Y$_8)FyCP(%813eGF>Eg1${3>;i>GZ!?>;5%kZK zy*@(K2o7$J}b$k9JH9Aayij&7pbnf1V>1sv>Fm1B~Fch7?O79 z&rAss9=wsUW*Ub{(7J-(d~ElU?w6c=&>%1k7QSQGTe^|pb=|4qHew^CHk@CNG%AAE z_f}Mu?NXsp>Q&y$hD1m_AF2O9unqKYosVfJ=8tx=tjE1}?82abLHV32W%!ZaOsiWq z5vQD`&vextCI^0VF6}Yx!$szI*O>+q;o5@uC$2w^Xsp?{#&|ml?Z#C2Mp>$%;udXh z)3_}>nG@$eXO#+jBc@34+D-Ybb6b%{AxH^sn68<`M zMFDfd8>1$1?vA?b05-`oiFU4XkPK3_??w9WChg?-@-jSm04;YN?$njp#N5uxw9SH5 z;Br)<+mfdsM-`^>CR}47F^DKW&MD}JV`eT1S3Zt{(4C>TmyQo&Qt(i`#KnKW;>&KV zyp4kV-QcsO=8JZW8vm-*qdb9Ltb0be3L0?6E?4RW@qIsVZu>(X?>?kttry5x8H34% z1A)y;3ox%7WF64Aiv3ky$CQbB$HhW;HvY5DK65on8ZGf_Z2wiZX;>ERf%xHGQa5N z3WQp&Jq(fjpYvO$QJ=gEBsNFQB)4oAM=B@0YQ>`PtciVBhU9q9Z^nZKVZ6aOMYUk3? z!IflT(vpd{mOoqE+^EO0j-*MWYDxGt!Sz5@kPiN+Rnh%>6^KhbOrP5$8=6Z}S)Y*fq6DfR;`L<~C2tp&K8xOHx&QTZriP0vXJ8dabFs%NjWkO#q7O2|{IAz45c$ANv^Jo>`l`))7pAN^~ z{#!Cm3!!kwgd?TER0jpU7dki3l|a{q=o874C8+nMTyP*Y3zTD<*nWk-Bj$~c`n@{S zkF6r6%3OP3`xJ;UknZUjW z?~Zim#G=HbiyB9Nl40qx-1~1t|4!LzvZg$*8tAzb-tCeL_|JO8KDsu4d43IU_CA-% zcs~ke+*3!hiWy0w4Rb$kry$T>N1dm2#N^vP@1iI>d z9Hh_A!dH#R>?!~EKu2Yzb9AExEPo!48=)V7Z@gj>Zmb2^?s+M6w;e4>By3zTb-5WT zPF$_3+c5%{yCsyCPnW|tCcpMW90j<2QJF%XsE<0B##U8&JD}S4kn?RKx8jlDKOIXO zgtv{)o3GQelQ=(D8DDfQg!TMwH^zc!NH+%Vopm)J`ZulWBad#>!@rUX%IWd*z)N${ zM=Nv&a;YOE9&8mrlt#w(XNuq9?}?GO>AqD&-5%Oa+FOX>ZY(tisq0XZnw^r*d>M`% zoj%KGpAC^4d)~7WbBLt8*7A=P+ewLLz1KOrbK#W6rOoe~o$w9AxK!en;Qm5RP9MR? zjDB~h^VEbDwB2nQ(7Zr+b=n!vczmHEho_nzIFiah%Kp%hGJdBR50$9}Dp638U*+3J zil&XC@2`J->@>mXBscf5;9MSx7&4b8+sCYZpT(^WgW*EzCZwZp4viPx#CzXV{+Oy{V~^sAz5H9XsK@q5mBC^V zfYwQ0hiMs}>{&Dx7ahVg8QX4Odf5iQo@rBMtuG>f&de8jE}|}t$ShoD`wJ>H8h`lI zXR$*xT|cEY4K~(CAD?zON#52_@=X5HLGm<9aX{LaI#dn0v8Q`=J9$wf&pQ4IB}wIc z$V)ypN^*bhq$c%?4PrKaPw8}!z z=bTBUnBV{^tZ_bgu9XbY5;Vq^eZ&8&JAU!neLWI0h&K+Vt1-#_H-E%h==3ggfpyd@ zk9XDyp&<)W9EtYu9EJ8TpOUWLT>uS9cHX-{+)wsiQ!X*?0Qb`4f-f&cLeXEjSDv=N z;aSJh{e4TlAe-DFeD-JwOyqEN%{EeyZNEgdO|sKwfI~t2@lZ2%tFrV13=^E$NceBE&Nn_ z)FrC4f}h8F*-nq`BKw@&oYc{%?HW|8cxK@78nN8+IJ) zzV3Ccb)KK|(t4`OivKKltgl^Ict%4$X#PAkk-rH}mEqz079*%t!SE|Ao0XK?x_@^t zX$;v<8#~HqPUF7rQq8CCJ?P0mAGd?p-<2Id%`Sd#01{}oWMuk>;1lQ5tPeviNX4k- zR}x0lvtRm_R9i7hF=)n4^7P{U2WQWcuN33m#X{H7lo@2x<#Zu5QgHTOxfxHv6zpVw zq#S5H1h+y&jJb|?0h_9 z1+0&vxHx05gVeD;{#K@uj=VVdPSN!=4T*`Vrb}>wjkFe&COsoUNfyx``fT`{h7`7I zrK>i$4HYL+ttS%bNeao-`;0f4$zg#s)XqiBq|3iIRc24mV(7N+i|Jp8oW7X~{duw^ z>6O-ZUth)|>`k^DntTxQpL+klKK#Fb`8w{kbjzhfu-pu@nH-T{!tt{+$G#Xs|5*+A z_i#hheVUl$<7RNG%8;epCKNvWJuSXJA`)IJ2tCVp$^=4~Pkn5^I0=rJ3EOCZRqAx5)o?IoVvhZ^8~9JU z`FuJW4yTKXu2J4_$HrfK@{$+60;?%+M2&tTZpCa|)sBsagvz!6O2H7UFn+E0`E)cs zp8R^NGvg0n;IzngzwBR_9lz|atF3|~H^z#;wQ-OaS5j#1 zKUqTZjl$QVYE)##o=!_c(sfc@*C`#8y&7Qjw!cDy6xm8fvNs%eL2AA3uBEaF-p4N1(hJytM+mYeIiO=H96r?Vsvl zDcL$C-KhzFUT?L&6_f@IqR%4SM{;q=P~h@j{f~IIbx%U>{$5Dw5?|QM^a~E$^04%@ zr6ScxN(eP+^?~Zg(@*o1!_mQ0wAhe+8WLqv^yS&QfmZAgTk88*?EL=0miFBXaJj=O zD=Zy|64fsG_59(;^DV)#)w=_mIll2RDiJ=@sA1CDrBHZRU(X_PuoD_Y+EhHO4SY2 zeL^GZx7-ifr|s3x#uFU)!kW{@8pFgMOk>A^xGYdf)ptHdodN3#kL7d@j-j+gYn!*k z4}#0r;!ABZhYuOQj_7k&L2elj5Q9gbj`e?ztvjRhBR;teO_v5cR zLD|oZsUY%~i{E&$5mRTvNP!s$6s?MmHweEOojrRM%S$r8G8LT*RTU!}npQU)P2wfD ziC!&LE$c)ritI!3#cbroT`T4%zf8dS=UHAA&Bd_K?G|6zwoR0J`QEciWCTbdtV}e4 zL-?y<8>!>-0G`OYeSURv7V8Ifgw&ds;v-zF8z+3dmToww|&}S zk%JFqvi!NjO5xC#OZiHU<1olnOfNM+OOmC@i5ceehtpl#1#dMK;NY`$=Ri&`>IT6>*|8I7d#LE%5C2-6oS8LdI6=nay1TB(rBCCJ7&?AsN(OSl>M`dC-Ub*| zzUU_Ws2+bWzq_*kaX(OgeHrU|IshJRJpal^r6Dc<=f=}ZTLu9%ACZT z1Mluj-uaukisGufE*mVBpa zmhckDuP<*H6TjWBqS|YTe5tTW(*~2aW&9+>aq0kR9I`GU)Q6|`Y{ca_X2%;kBmUkz1_*@^J;-j<0ZST*CH^7+Kwkn55U6b zH$ABP2Q}|2oqS2$16vOc4J{G(?LnKyLKWR5h`7Qg)TOtRoKz@ba&uolX8651_w4;9 zQn@F}S2m2`<=ks}^taQ%|EwNKKj#;0J-Rp$v$GDYDZL~(d*{&OmFc3-&KkUX*nTz8 zU>WMIDf~NG+Cb~`^_6+1d9+QWP}n0nhphRoe0eL&@K?*iEz;#X>IP(MRHdVZ#+D>HMr6D|pal|6#Lf z5z--2({Z)JGH^W2nQstb{-1jPzdHW!-vPB3>jln=>ZE%yYXq!hlSSS6!XZh=BYhZA%jJ@EbHTN`wa zb8@3MNkhiHWu@A(h*SS2yVZ1Z(BL4QO#1T(xX2a1dO9`?3(g8ZIk_#0;H`UDitYN1 z4Hj=tsfH-P9QE~a!+&JhzU#T%(Eb)6DZA;ad4a281mca_2hTt!M$nEu_i))b~rmoE^*sQe7KUDcz=ZOv&X-cAZJS3Ead6u-e#U1y4BdT6Z8s+yaI7Zf z%@`5d{>N>C^V<6{{OH)CMb`NVJr2^HH%`2VzfG$(FF%LFxRP?Ktn5pe`MI-tB4;P* z98+Vt6~O^dvC&wL44(y|jUAL`r48WJ^5cx|TpQXbA9b2ZuSJI&*L~wBLLvXy!_W73 ze8uOw7LJX2%|N=;arVXYB4FBh7{$0{2@g{aEPQ5h!Bn{6aaJ-FJ`@b5H4+?`#f^yN zFIoh*K!0#Zn#T+H&Ul)0H<$j;x~@3Ov_khc2%9pEYa&X9kyF7ZPJD`j^zAU8f@@$Y zW<+1O%lI>*-LMMfy;f; z_&C9f&(>=5CB6fCz^wdyeHg@b;yA4Ct`j<*J$Zj>hiJm-7{%W=8K7DSM=x;9s`uid{4B{0%hex_^@0GBG>! zlEpvS4XD{H{=_axNhWElY0Fxa!F=Rdd!431{3Fj8`>lKgy{V6HDH#$z>&y}N!@{d@ zI)Qsv$Y3qbOMeLpDp`ZlLUBGi%>)=`dqVY8g_gMzBuR7)OFv%hK{mOzezRlzr0TQ@-~4h)l9T1cHL}VQ z%Es7-atN}JetN3c-VtIXU3TvNGIM@QLrZoJU5zJZRMNJA~;(vTOGXWJ2eXKRmiN%V8Dec|w z%JI5Rv5S#i69g9BYWPu848Li&%p6<4L-IvE1z8~c`p1p`=44+bKAU#Bn^UVLvb zsFNMU2+L*5owGH#74had5BCthAw7Th{y`_k@wPP$-TDOrDTj73?Q{2TYF#_yK6^as_9FRkR}FC)jgumFWZHk7OE=={vM z1X;JbGJM&ZLE@M3=%fG7x2i@uqj$Ls#@X(F&AQf(R<^DMA_ou;2IPJFx^opxinktV zoA#ocv83+H+-|V2IM;jZT`vmBk7~IaO`xbKPrSy7F08D6cJeUs-aL7*?sZCG0Xwzx z<=tCTLDj(aUBml25W1HZP+XLSPah~x2|k)7a?s!JXGxevmt2N-!+R$PKLq<0o7e!J z>~$87@UOux7?K6ZXKl8)<9neti=@}x*XzV*l)C|=f}?VRTzZR#@2C4XZevw!}c zk}FF?y7Oq!)p5rJ7Mh)=N*rV)&9upAZnNMa&#fNj-MY_0l8{pf(h*t37#f=3&>2SZ zKB;f5NyW!WJF`rjfJ9eBYZpzUZ8SchI(geY{d@QE5J&mXm$CLJ;nCf+_|6bQU+Ro#?{tMT z<(9>Rl2$-kepnb{5Qh^FC5OC}6R?i%YfMvd8Xk?<_3uD!9GVEM>$tf_;RTyJEf$2X zM}=voyu*77@;>g>{ao+Dul!Kry%vw2DFjog{W^uH;77^_E z+>2Wlijg2ukKb?HN#$y=0bvC;S_8@yJhSJZcO423RbD#1;`&&(hi{S})w2evb z=#xxroc0k>Eh{H@8-MCAGuol7I>~5H@pm*T$_&{O4I%FDO7GDg6aOH(MJ~|8vQmvu`V4wV&6=(9aWg z`d)9Nj(LpWm~od%egp<2>1(46iJZWp2;bTJsi-;qva{c_4<5%}t0K7Ta889U*k;Th z&NwD*%NmNt)25~rg-T)g;6!{XGXck{8YkD3`FM+X~k`E{48o+L$i~gH58SE)Ij7)VCp)z7ku$FBAcD|JS zp3sf>o%AZKiMWTfT{)lJm)i+Z{jYNA+g$N`^6Q6-6fGdm;jYu)aUM0Zns>fFQHamw z0+x?v6yig&TDRInEu3D}5%SEcLA7>Gri0Wkf%)E4bxKSVxc^Q*pI+jHqfXklgI8>^ z;=8^`WSkN1-v)ohvJyZwY|&$w%>o(k?+(w`umGE07T-f}Q_+=v`<1>smXKI};``?h zML=86e=NkT3r>ISe&|^L{XggUf1lI;_uLU)x4*HGgUm0x=3GUri`)62sXvPDP?q{bks`s|EGyAI|U7q#$jh4-@{E*9N-ElTB(n3IB_(XVZ4e zad;cKD@{7O0<|BXRC#@M3ExY)t-4N4;YWR~ZT;kVJo;_9Wa$Gv?<-zM;e$hMJd4THem%1^CM*#LWX zKYIP+voCVydL1orDS*JY6!I~Zt?=^w9nFC!3}jCU3y+J3R&Z4#X&-5+1QjM2>l|}e z@Y5jIe#6s~=(Z;&vDzyaqh$lUt}72B|Ahj}E8Mdv99AVbTulbj8?Uefmk1rMdHC!1 zFGi7mN82S)Ryy*mi->s8!VH$kIQ0v06%xFW-1y45d8oYgS8d1JRd^EQzJGM28!HR` z)*I_h;?*L>-csHY*i%+pqCHMYp1YOK-KtXIRx{LR&8*r4&#$+wR6V? z8h~T>#B9vDWn6E|oIdxr6E0|K%1siy6@|U@lUiwka7yR4&DQN6*tHa0G&xK`;@IY_ zUqH)6t{n5%($?i6^9N0+$jt91&1FYdF`eTl%P^;>hh{O5UJKE?a!v@4uzJQKIG>rk zA^ME`esvS1Mq+l!InDxa$_lE))uZ6y-}VD<=*cg7K2mvmZ$jU?puX+7287WD*Ms`& zxP7cmE!vBV^ndkwO!vNLplUDDKT!kuhb{l}-0r0uxNfx7gA_)l+cZbE(6*nhU^;+@ zd~w+O=EbrVP`-Zt`2#}t{rg@=;Z7w4mDy*$BDq<}xKC7on$%0oO++J;NTs;VN~u-E zmf*S1jcvq6aFB2I^j=iHlLqoBIsYtF`tcL7LW>HdB#oae(^9hhj&?70?=wA=hc4lH z9t->Wa3MTuwflTA7(ZRm_OkB4W50K^5|xDS{p7qqF|=Zj_K5Bk^UtV}x4&6OgOz+w zbzEzn$_~%S?p7&$OhN8>tvDj8Fo`}hYFw(qg*ZQbvi1;p3H##R_wIK|!?$H-2^#^) z=u)xoyBX1ck1jn^G=_A1p0)GfgT+5sQlhK!Kwtov{#oig@M?jb4{dHMh3+O_(O&pG zfJZ^?TS`Y-cBdIqms zgnmD&lhSZxiO|!C=lz+Sg?||POU@Zc2HpREmW zsE+>56s{Ru}r>09&4gd_tq;qutiKE(19sG$n5ZOlGJ_Xk`{++N zpDLg*WpDwm?j_Bs#Pve=&{%6IT^dfc9BR92^c!x?o4zz&vcTFs0efqNh+NFwN9Ugf zWdg@JT4DD7570L9Qhin<3JfkJt8u?=0p92nj$C%-;5E%RDo+=HF}fby2Wj;CwcP?5YefIt z_wWO*>~b4_^V|jlI!DxujayOqVX5I4>26du;N5o-S&mlQ?H6b3*0FXmr0ln5EtZ@TFY_Y4k8J7s8?83^sOE9GavSa<7q6Q$ z-fk%d?Xua^l8+X_Dr)iN)!KSIwd)VX_T?gEnNNuMVw(-a$6M`+Z3ZAn`BsY6u_~CR zRPpUuG(h8F<+GNl#c;lKjqUkt5pX5w()50s!*}0H>R*~H;mlplQX^tcrRu9?bKYVV ziwz_0%}#D3M_9i?nP4)SrQE!`!kC4!mq}zjfd!0?yry7qxCIq&Dh@_JC%6gL4PT^R z)?#c8wHj{%3;B1V(#?leOW=F(BoDJt3szc(YB4BG0^J$r43l#UplJIuhTZN;}6RdBiY-?rdiczk_;B% z>CiX}Ig6S!^2Tg!yAum(huz@kSL1(?Rfe;CCh|8(hWW*19 zOz9mwWV4Zj*rCQn)`%UHB>3qhvpt8!^~yQPp0{YtKd>x7sm1UTfAlJpeV^Nte4pT! zUou?qxjO?UkN?_JI*$=~JPmfGynSd^P@Q%2*9Pt>m9D&cZxp6=6(8J}>>zen(w` z4@=W>H0?>$=70KXQF3gHjmR|cr;*zU^z8pUx6^Yw8!u7y!K~Aab|q0KD+fH4dTG~j zw~E7)nB)I2^oZ;X(|v^34)fwg+iEaqE<7Whz5r>|omS=ir_kVtR>S@dVoubUo-$`Q ziV_-+Q1SHn-f5{n*luqjp3FFgR-^7I3vvJ8m2l@rs~>rAsJ{8{2r=J$+Va&_ zD5nGuuD-DSAy|PYFFgsrp0x>TPqxtrvG?QT{q(3A*+2NfInkSrYYFzJMAjWBU?=^2 zOiNQs@W)r8?;Y=F>qUw)YdtB{KhQ5Z+HNsC9t2_rCgbeCLD*7{C)s=)tUp*7*_|2y zGwlUot@BIxDLdYCao-kNk8?fUL+E5S<#r}HpKL|ir+yj!`v%awVVC62f((cmzgS(o zunITk3GMQSE%;?ADlRHOLFRoxO=IOgjUS3BpI|-}X>HHKdllCrupaa+VDD{#Pwy1Y zp6zEMpK{_jckJdETye4xFFbRAbkAqi#U`K!@{VO(Dfl)Fac6ZczTYjvu2-Fza<92b zw#>2@-iK0>m=_zb1*|QDIsfH`5a($)9_7|nqUwOVU#RDZj;?}epG}3*HyYBkDW~Q_ z@;czU8Q&p5k_ z(N1o{$R`28mDPFBmid(Ad+ayV2*(+jRM(^X)*8!SyB(yYa+{#*R7?2XtF^6=(6{9Z zUfoS3%ae2tDktkdU?GK57p_WQ1XoEP_CjzjsWrrm7@Vr4dVAf&7N0y$ z-Yfni6Hov9>2@ObC%n&=S68X1zzc=epJkZeV{VJLuhQ;Ve5uyfty&ciy^~UHLWyrN z$5vqI{q3UO=icT$YDCrp2Yy?qxq`Uo>lnky z1RRm(VtRApA-25bJI3WRjTBNWU2o22z!l5P!{*z2vGeWyh$Jy%V8e5MA~~UWQRmMy zmFJaklQJzX$kYj*x<{2v`dFcri`{|q=8dqTuOoB#=MNB`77Hlt|A?ALxn3J}){p@ZlrO)|oJ1VaXGz6bIF{N1Z;egb;aOjx`VD z5Kc&mytf}H1YYN)yD=NzV6rDyAjA@d$1U=&}wIIf?(6Iz_IVYVa46*t-z2xXxD2DhR)eTe&apzy(kl8 zq>v2R$|v%TO9bX>j}*Y=oTQJf({9Mq@trI4V8#DDulZsM{W5qL@F=s+f^JI{+HkAh zyK?t0CY(#u2wmv~#(C2#??+m(>|C!pRorg~>JB|e3u^fW5Y12L-{cgN= zYGvlLX*p7VJ8(%hydJ{EMPd>@48YGrVus8N-5{mz>dODD2CBsZk^(b^V0BPISZuNv zT<-GCSl3Me^RpGM$;|I4al+6|Z(k4gwwdcOYZf$qXqOsF z+$6Z;(o99+?Wj#<$rLIX3Go+7L<8#^FuJOGr|_d}6qMI=q<=q*!(rF=d={Jqp4xi< zMq)4FX_j1e;mu1dXp&8nacBTNZrAe4!B#j^ou-w=wSqBwr^N$`#_)u}%_*a1GM3(c zuwQ~@0F~*Lh7EYek&o)+^QLFlaU}6d;8U+Yyvk!{SV=d6@m~*gHggg@qV=wE&C~TD zh-V#(%l-j9d@-c*}qfo1;1T;cQag_g}L5sd|U+2iA^zQ$SiRYd4fiH zbp*%2B316P8XXc}IW_kqaDnjzXPXXb4+j zS66cKIE2*e-5&LvM5j)-31+7O$O&%T(c3zV13Bm4zbUCi$HYK0_rh+t@aq~^SWq_< zL-R|cq=O{A=ONZ_FVK-{pJkI~w(lbCD0x7mylVsVS=~&H{}Dcn!y8oPr*;#%v$fL!_U4&Kkxc%@opF=%rN;xz9Zq5hHxY6~8w zJN(B`c5p-E+Y0l4<|Dp-!`H&2+R!71Pg;Y}z5Vw&{ol_y2i~?V{hP;rC)=i=bp~=q z3|)&f)fT?d7-ynz+e!NLok!cEWCjIX*DJ&p7rG`r7EQeT z#V1|~lKJ<_D|{3s_Y3RjG$kj@FIL^xo0b= zxr!X(^z{e!^x_Ylw(gI8l%xafLLZ9$?ICqGUz}0jBz(VGp-o4a=*UJR?1p=G{{xb! z7hN`a3uH3HG&I-fNo(%3%2y`0z&t2OX7u7Bq|vW0s}uKi=Eo+zm0Xl$oAnvl)Bc+< z?mQ6w%ytk?X(>U|2EvQZol7s4`jF9R^~sX(46;mC1#-l#W3+X6wvtsn^6)F(IHA%H zQ4&=$i9}ztynRo)o-z~3JCmDJXa6?RtqXgZO~ollYIZbF9YpBJ_jdZ_N)U717b2|J z1h*(iTqTT0P8F1)T(#lx$d?P4;4A&h@Ao)TSyz#mdRM?F#@WV+uN{t_V-5~W?uM4r ziu)&27NBLKOK2pIpZx32MK8L)0%Wc;*T2YI<|AF=Dlm^fEk-_fc4AE60v~C3?nF7O z(<%tw3nWh`36hn^N*cZ;?jw1pmP8zVz)ALhQ*q^V7aJ+is%ceKT%4R+22|~P50LH* zj9M-Q(2%b?rfu8e*h`LCwQ?INRUoll8SsAeqyu%hWjqfm|L5-E)2>=U)(w1DE7)B4Xn}i zD*sIvoJ?Ro?rrV~96#nh8om4h`G%8zb*c!NqEUfo4}5{5;WRr>rBW1&HF_g!Xa%n= zEKB+1bFpyu)3Bb#GBBO=-#>d&8a@1PqzNje0A)m*;Bd_d1{T}uH~rN| zb^Ok;RM`E&RJHlhN4QkqC2B@Z_&s=UdNL8*%nvSYkM#{hfN8&>i_S^{lvncodMj89 zFBH#eQAiemYAuB>-zy&=ru#fh=CkmO@!G)lsWRNv=fGVR(*V1>^-m@jeL;Vd-V^=D zU69eT#`9oWB^+-KW4N`}0)s*76rsfZ-jOyTDw#NE>}EGo_P6_Be|mR7>$4_cQazud zf9fHc9wFi%OIgX4R#}gZ&@W$8lb83+PPC$jHN@gWg*hVz>kKK^v9B5_^-1ZwfG30e&h1lTdW`VIh#H+ zwXcNaBi|ZZH2y%HV!KuR^$mzL61L|nnFNZH>>szJSV^z0o@72|Gu655O8j5w8?N7N3+H9f(}OFc+Le)e)Cdjt-I!U-tH&n zY#y;VuQWmIfwW60TnWzmDYjk%mR^X=Xp*@3JQr6>xxPwQP?HaN?%1B@F^iEa?;D-0 z%aOt2UtO34!Kag36v=wifGLzm&ZuxkVX?sLg=e))WR1a!H|&RsvG%_9l8*ox?;p%F zx)a_CF0s2_2`X>GiTo`436lueqC78u{7M^kCa-kb4AetgeCe5_VM4E4n1Apg`8VGG zTpH`<+JRRlV(OLid$IfNlbRbDQ+SH@%;U=n^gQ zs#3g$d`xqwN_PR_I^>#I_srHPM9fm&af`JB1D3iTiBC0SzOIJS z4`N^Qt%gTR&3_P|oiC?sg+A~<`s&Xc|2|x!%Y2mku^)Yf>wVO?`{1^;$XC|A8}Q@d zni;LMI4M>%#!8a11n7qpsLj(wNQO-7KZSgEllwo9I6uC;jYN7&D^Ry0M$%QgYTIi| zLtc$)jJMsI0%>t70qN*%q|vVU^_+9-Adg2<1=MKCHkYaG1bhC%=Befb85(^+uamiA zLA!`QB-Pr!o!kANenhC=seMYJ25v8F&9V~y$p7v?{`=XMucziRLnnNy*f8>&f_-s)eklS45V_4-|DgB#aR4<{)2rXHF?+73#Y9svLQKI?CV=P26EKEg|JlU z#hd@kMh~6iAit5;VGJr2BDcI%zwGET2)~#gmM3o?#`{ON-V5t5fw-FN?J31}P%e|S z>b4kxf4*$=H; zLp?Q&Y~-F-1^THPD|km}@k8I#I}kg2sl3;r83jW(oQKH^(BLX%f0_9E`Y)+X%5%hb ze)mbP3Z-V)U-2y!rHTHbx=MPE$TMQed~^N2aRWO1Olp1jc@}@#Mm?;P7=U$#NVWY3 z_K;)m1PZdt_JQ>?9j=T$JIUWJ9Gdu-$3*HMYtR|FKaUd4G>^lRtI;Y}X8PgoOz4W( zqoEWtjf)S5OpfhZz)DA+(8`Jxq;#!l$%8(4x#{_j)o~QdKJ4W!jUB@W=G*Ia`wC(5L~`oQ z%aiEMCu+VyaH2eRF^>3+Qjx!~tP5OoAbent6hD2Z9>?2MH<@QYcEH6duBCx()8LmV z_-8Jz7#>;p6jFUz#G+oR1jV6Ic(JM3D3 zdpVvVaBzXx|BI6Sj_{I68tv-;cI+i9*VInmTc9PK?L6_hqnMk_r}5}@OEnd#%j5Uk z)ky}D`um3>bf0#RX?R_dsaOBP-}{|`%{&z3_a6FeL6!8xyy#f^CM7p{EX%CFiFOm- z9=oB&kBj(c$b>K9*DNk?sMUFziIVt^Xm`Dot|Im#oYS8SKCc+?|Ppu(E(Y zpJOTz+EKjkkbD}D{j!pReyL&8&vgzA5(3`GubKYBdoZYYr^eZF1hnkeud{SGqs7{| zdh=r+C|eE>a%pqGDL)0OXb&kChqHRK?d!O=-OQaZ3pYb~|J$YCx; zExpl&FkqW4)B979i-*dr#MFN11D}@Gwci(s@A3r$$2zkr@Xt+Aue|UGh2MxhI-Kwn zVl|vajM#1Psu`oH&g~W`uvFI5Ud@3^nMxV8)!uM+^{K6vZXD1u+P=%x$%B0!BQJ6< z27`%3zWLw);>c^XHvHj;E2pVvE$^qo{Uc_gTe=@XJ0#vMkSPu%|1P-sTY7<`m5eQK zrvsW_*l_k9(*qmz<+8%tO*lXE4b#%SriskzThL@dn7(Je1+c-PN_Ox_7 zJG|jtzApmm$GrS?eZSz`T+i8`ZV@Q+!uhP-sSx}!%E|2z{tK(3xIYid`oYFriQ}mN zZye|w_;G!#8h*w$-QnTSfIgnEBl>a^SQ8|3+mXM3;CiTfrp&%ZSH`qgLR-n`G5jV+ zcJ?D~yysj<`xy;$#dZC?Uw>c=Z*kh*@g9`jSrX|Z6NL$i%wr~}pCWf^ms_w!F0@Wn zaT-m8pwI2R^q7)C`1INTFP~5$cw9a3V%V($4vk3^2!`Zf>H*}noq7T^%A)0Zr3IiU zvno77%`OH{f0g;Ra)0IccA!V#H(eCXQP`}mosjYtpPmhI*)$wGa$jRU|$;wjD zV!{@y_+g|o-gP`{doeskev8=NEikmot*`yDjJM8e6=x8B7u)*MmdM7jV%q*9s!#p@Ns?iM`RSFxmZm z$b=yWrAwO*DJJ`&df#8lW-~nz%gjMco1OvIiF ziPK|sG-PWPN@L-8O0r%#?&Mfj;?y0|a)vXCZ{Q^#bDCSV;B1wZI?12dEJg&O7>V4X`U5n)P3>qZy3 z6L$%{ti~UKQKu4+Sm7u?Oj(U8cV0OR1#}|4^r93ST?2eisM?x#iiW{3w(QN;d1MRUt2hh~wkx$S?kvTRa(kmpM4CZI^drM(;Z+P|r*JM19D-RYH771T!Vm8ppGqN1 z>~mgUul=k^^Phf%!9MiPHu)T2oA59*HU8iG8u#P^X79g?pzjlYb5n+b&PzEUmA-+k{~RBGJ)aGEKe7TI=#8Pg_FE?xMSr}xtNh~* z*E!S-zy4OWZXen6*Xo`}t%Fc5aKFcxeu3aIkZ+#2%0)J*pZid=yOH>AzfzhG?}kSV zgW2cRe?lJr-<1p37T};ppKbexc91wU{&#_`4C}pmpDTri;gzEafB411p`h2=$X2)$ z?B!rBcen(fE=X!hl=egZqpg+@sYW<*A>#18tu+w#6RxJM^~G8Ce`o7Sgg=t$p}@0W z$)LWvslooB2V(_mjhTqKlG@v|Yq#bd;krwax>nZ;J`s(}P5E02vJwY_IqK-izl%1^ zg56Tl)9&pY={+~uoF>k0M7RUXb^OQsVn$DpGc=1vyyBl{p z!TU2@{LwXngDo0s+zZV})Ayjz)M^OIX4>n+P8Wmsm7RZNr^JIS@9~5~C|J_&r_cK?}`J>10enwA^ifa*#DX6#* zxSShTj%}gqdz$jjV?k7a|CFO03d(7nxZ3s>H}ffj-|;))@Y2PL*S>k6Bh8JA=AXP^ z%6Mw9S=9#hCUe7&X1XE6h3O2IdRJopme`jU`vLy=Qbl&xl7ZJYvdG}39Qev@J-wz7 zit^bChJ~+wVhWuFqhP%zaPRXJ;M~@WvFtT-2Tly4VtGf;h4F((cTTc{ZBhv;d!-VJ z_8tKVT4u5Yk?+$GwuQ7@|MNEODPWAzRIW%C#$*Lw$}Tk`{%?oU z?vAxVk$D~Ld_@KhB4f}fn+)YCV&^yMGa;udbz!9_4yY8YM{nn40Bg#(qAS1n!G$rN z=T-MBl;)eyQWy>g1Aj#!(YH~+uc(#c9`phNnJmk#U)td}ywaYh@ebre^Z)H#^&@y> zPo#X$eEWn8VYv0wGyV=~%_Aq2Mry_8G)plTub2zI%A4j+WEs%nw+mMAoojyTeOVhsd`-$YWF5qWrO zW=t1iRw21IlBAa03Jr_22a}b5LhaT&ni|b{;7w=yqZC8vC+;M()e`S*;I2zT2lf3i zh_N912u&pVOwc``zFLGzIyctiIfkLxmhZ9tyA`;sqbH^J_a*$Px-Yt+ungC%XLkRh zXn?!h`PkHZqk-cEray2<0&mK+zE2U0u$iSdPI^*{H>Ym+(oR*wmmNpeo4ZG$<($f* zu+Rp?`Ug&n?CeJa-s*q*)AK+m5^fr1kHNbg;tafd+VLtK=PW^AhKSuy?;hhT1OIy| zBT7WBj<{A{?t8@rIOiW!BamH<@kkJ{UeH2R2ngJ$KNO^i4gz~)?l5ZZO~yb()#A=2Fe9XKA0!hfU)SK<`lhrI1^lU zu&cEnQ#>cVcf9Dp9cA0TFg_=^1wl-bPv;6zsq^U5;^sJ5ogH`+%Z1RifA&&()98Qt zYKP>yY2WY?5O~4j`jEIc{P#Ki-_J!#>-p~Ei}*%ORhO=L8~K^u>#G-PDan-iGzzly zbYy-%s^B3)m#k6nt@U8v7=DYVtQ0B9KqGekh!sescdRa zJ~tW2J@QtbrWJ#D=0^GTQtC{ss`r*D%%&$Dew6x_{b>Pe1|5mr@F~HQ1+&bh!A_boXHNtfjp5EDacjk{9%P`9Tl^J~1A@E{2N&E{F+;MIO$&zb zYR<~JYVT3Z^NmW1Rvtz^fvoK6LrWNbFKO@Yc~%JIe0`C(+gf-4XDDZLULaNJ;DV~=Vxe#jZWKki3MzAI((x=E)T>oU^6i~8S{hu!$H%R^dXDwLp!7zwJ@G!|bJH1SD)*v( z*rO@YhClc`tnJ4M!p|1`|Jb|JXfD6#Z~TU$D5*$@G*T)lGF0{@m4wiUR1z7I$kad* zWhjxUL>WUUG7FuLnKBnL&-0LZ2>E~R2fyFF*8SxB;Qw?#vapu5yw-6!*ExH?_mWHY z?TSi}RQsi2AihXUgU+jX=1;=P<2nrjZq?we@ThOQ1HBLVM8l;$lkL!+5YTh^LkrAw zaJi7Qi97WFc9I$!R@!voIP8{}&v>fR17fL@;aiu_65)=(!+Qk#==u9k^SW&F zi1&U*D>wZ<7>$e8F5Wf^*T48no}u^qp6JZ~W~V4gi68y?sCe}bO74+~QAnEr^|Z+1 z?e;WoioH^arH-D9`*zjsO*SvKP_jz8pKsIib|hNIl2=`FCL4rK<_z$0QBxV`Rp)Q; zQ2xswtjkd?f%>gSF06{D&jro*)NF`hp;j*2YcY72fx2i!19!jmREd?3{C=AZh~7hW zUmFVg&;5u!r(3XgsW+)ok=Vex?Jb!5%0Jnpo&d>WbC<(kD8s&UPDa8~*I}r}$=Z(V zF%eWR2#fpo7+y&!Tjw0N12*~dd#@R|6SJ84vEHcrK$FkfqW;Gc;I;L)J!js+?&uf6 zqO05>-$*6*szCy=a}m#SjIk|$lw7oq> z2`3|={f*kZYx)7Gyl_Z$^0q(8_BDL1_Bw+M8u%B-2RIUz2IiGp&iayni@uj4&c%|< zOH1!UE8<9d$))>Z$Bm)ZeYJuB54}$1_2`){MSE~uvN$Ux83_|&0k=4Ax`T^*spHy@ z?j*X*rSzY8A(YElM@N!CNZXQjIjGf{SlRX)NXfj0GX_;gT4#gFmK+s_9fIv(sUkwc2 z(@khy8v^WxZ>D{xv_bH`6s%vC3PN0$9j?9ggUN;g^~AX5SUk#>=xITVukLdFf57d8Wu_ybRLXL0qwFM4|8>{Y>c*8q|jMsm;y@1cgKynv7&wt)< z$Ebu}%zv)y;jxPh$wtd*%YRL8ozAHv`%<|hw0F)Bix#acPWMls={cizhW?&3?OQ8; zdruE(-Q8=Q82AoMza+Scmezy1LCnZ|^;V+LbN{A9csbeH%==U-A(611nOomSpq{1Wyb+V`OZ!WnnIJ=8T0_bdfQy1F93u}C>R-nbsf#1*N_i@zXmcYOP# zayuyt=2j3=Dk2>=Uu*5B>xpJeX+^ii-L0A?y6ybm)<98@wq_gs{0E3H8*pS222|GV$lF(ecC zpst=gJ|>pLOcnp<`Yu?hUYGrVk!HQfd)-HhmG*NY{?yxl%V{GqitC>kb5f5?uBEuV znkLK2Y{z#Tnup2)8{V$F*QZJa|*hDc0Qore@`5; z+|%?q4PL%UHR)eI3wPCOkDDA^Ls`u0iL5XvCzcm=U$?b&kY&FH<`rT;l55%T_(OW~ z;ofkrbiw^eqP=5_iQeWR;JK%_`?GTcw60Y=?e>zMhp{UE@1uGln%M6q`5iUGu#MR; z#owTv1l~D9i^=OGQiJ2BtE#(+nM8^5VYXVrdvwNc?%x1erhIK}s#zChRJreJ31O!`Yz=(qCB{arx?pqS$l^F`I1*p- zA#e$r7Amu==yl;dH5Q4NeyyaupG>;fkJOSeXp4S-W0KT#vZ(ub&%&SD)%uZ#r-{nV z2cvh^O~ZVw2Dg+#C7ItL{Z5eHe{O$+l$<|50Zdue1Fi0iR9I{8&D>YPS&#w$+|+DhN;+Ck&=x{yarS(`WSq{8Gcf4%6ng(mp8 z>&+ppmDI4r{cri<^ttE1k4TKJ+e8&NX7xOa+)0a>cX|F$iIeKNE-5c}oStv{PWhHe zJOeFDk?}|f-x12Od?4lJU~(f$GGv+c$AI%L z`8KV=vO7$jWHA_+1q8a2gIUx~mu=bPbZC|_DNH9nQlw9P;Y%mxM|i*NQ+Fh3562eo zuS|vM?)l;(hGb%@G%P(oDnQg@d)+^p{Q@GbeRA)oI{0_3TCYr87_K1W6+R%6k~3x<{_wr_oy0o1wH9K)X#aPPOWWYC@f zkY@WkCCx`8pM4_rIkW@7%rW=pzL^q;Ieq#d?-w61%secvf94Gc8z?EA4UGm{bw}op z>tcX!I(O@rVnaxHY~q{hnMbsK#Mc=gE`+^WTu~c0#E>y_RsFUnR*?1PTl})_d@!op z%o3uV1iq{PebsPy4_7=&&vmB01A4aTiYqZUz?5BLZ68U5<5?myElf|zib5Z!hb4Jr z#42t@t6miBK431NBVmoZnGmR|`(-e6jL7$gtSlQSB9Sk^+t%5IY^?iH7kuS2IhP-y zQD~Y*ildvuj@(EAHpxw=4UW~3Uge)hnfzNxwTteC{Am~oE+U1Aaf;(qByd(5v8iRy z^X6t=sd6+p!c&GFb!O_%VU1f=XI9c_N~5LOT^Y(el2$> zy>I`F+@9LJf8@%6a5&_U04{1diYU!3IUxb+>crGy;xoNh;IffVN zvCHepAr93HyO^J#A$0y=?<#r@d#g#%Kg&tj&ho5|ga0?^81Rb~&~u0W^u7@P&QJ$| zYz=BnL-cx_WB170%e|0tzSL&<%{us+xVGn=OeIk=j5M~XdI20OO?kA^vd9P8_+Z{p z3`AVfJhajBA6Z~8QPy?-L<-jV2yr{DpkhQ;OUtBnL*P$_=}!87{z=Ne;O>k8SU-{% zFL-tW)NWiq3onZ3^}$Sz4%}~m`Ri|n<@ZV;KA0;f{M9$I!dy7?xXLv7x#mb#^KW`R zuGiHEwHe_s{>`X!6Zo05h6XI7&zFC} zcXW-`7(AM4xAv#cQSLZzG^p~mpPWyQ(~dJMCjDjW*h8EGh)!9$S{s!}1aJM4juB`k znz<6SmjvgC`hx?te&fG^JN?9I7L`?0Vbsm)t*YxNc3OV(wTpGcwSG(Q-iUUhp|5k* zmM?-d3JGZ6272zzk(yE058bf#JR|R7e=YgC!EDzBi)5%BH+(xM)=a*)^RKll$sm_p zZq1IxWx*x3#__@hCQ6q{STy*VFzu7q+}-|H8);qQHWwS%@`0<9N`C&6lU9AXHeP~j z4&)Nj+cbJ+K_d0>#xMEvWSm2Q`4#Udq=b|_ymGsTJTNwrav$p_ySV)fhi?BR5f)Ns zoZGwMZg-;8k6&qI=jM#fSDd@Ztq)CUeXAI#|9K9V^2Yh+EsG(^K<_JM`@iQV|MUI- z_oM5huh$KkXXx{WHhmmf&Ou#_si+VvT1AVLn`2(2pLcP-cs&2Ts1Gi<3hh<1`bZxC z^5f5p%p}#9-G<*NHIQpB^8L#$){?!Sm)cX<+sLWr@M*m@Cd6pz^Xw&EJ-R>RGnY zE?oK^v3R_!-I^(ZEC}~z2Y;M`s9&4+^mubomr5<;)}>XGx2Cf0;T)rc*P*dA+IfI@ zvd;Tkix0yUhYix+w}wf$%6DF`h!IHszITmbtgC&cdWUPp86;~Nd9=h(FA{8mkVxSSUEYuX}Qd66gw zJv0b?)cSAB&CWS;jHB8@f?i0Me)UYR5qm~?IY!v<3ypp!pKex?nc9O7L+FgF1JV6S+ z#mQ#A?Ez<@7ZvYLM?-O$`U$CwF*1-?a4A8ym;CG8!lRuRLk=b-wWLW-69&7nqFd*3 zNYBykJQj~B(prB_Xe^=~%%?-09yQT(k~>VLWnVB;AvgP+8SS!xbgO z*J^vvlhhIQjK} z00(_eo|5k1nY){5Pj)6I1!}LN?&uD$+k2gnW)ZEpUxof2pz(X(!J}G9U@GD&a)KP7 zZJc;wyC*CGzK0~I>^ti9pZk$g#p5OmdcII|=-$z((l5l(UC6E^EsvOu=r#mfT_ysy z;&xBq5%G{!Qb@PG3HeR4ds9~!5qU{Hv=zJCOU5e6^l>^niLz zde29{NIz#x#8;$yA4m;^uVoin>hvpNqsf7JC%Z>*q->eyM zo|%H+p2MHiIXVbcXBR4Q;WufxdVl*kiy7p~oNFBBx(BjluB%tyeF9J7SgJhvOGup0 zLy5!l=^!ob!?tDVB?x_UC;&}g@-5p|A%dPuKS?_j$kBhFoL`pu_p;w4-k)P{>D)>qBLBX270}OzIMhq( zC0nbA|LvnjDt^8s>2UJos;@=l>dBgtqqEltEz{?-L;8ELI>U7Gi+m>euwI#}9|?d1 zuUysmLe0qU9Uo8s<#8ZRgRHBJ#-oU+`n31Fr5|zax!AnMBp8nTy(cSN{vH&(ISySc z%O(paC)?7B?4U@yX1c`vKG_l)^|7U~jOdSj8q!`K3>t3c5`sa|AP_rQ&1suMuMeie zgO$Pvli|5d1rm)!wCzNR@{VL+=V{?M?erW%oPOMXvmutyF4-K^x^)@!uP_!$K`1f$ zOiGeFGlso7^zv-W;Y3{PBRn7G{s z-fI6KeyRkl!p~?s4_83;=8b>HAEd)G!<*(jQqMrzZOsV=`g~v8(D})&{!gIFcp)z! z_bt6Y>Rw==Y$T+u+-LH0HWBo-m|kS9cL3ek+4Nn{?h~~c?szk<3&_nFEkVMDgqvk*DY0K$P@)_Jz9jv}sCe zZnvX57=~Bgvy)l^zT>6ZJHOELx>pAK%$?343e~^)gsTQ&O6)_{)Dk`axtF%fi=`bt zHCnMU+Bv~hQHAX%3tK^Y6|KEL2%L+$*M)u$ z!t`v(!5^kHvL%l--=rpqC{BN6Dfrt>#C|4(cG2q&@=v*P*F^Ra=}$*pWd6_l!A17Q z^2SE^N@+AIN>3A2S)+ohF6(HcpBNwaFt?E>qyMa&^g{@5f}UlCa|tnbxR@5aIT0cQ zs)o2VDEY6XLA7={CP?KH2%F=(%p!4>DJlYPKOW9YP(0-Mr+R zp!CXQ_aN^dc+9QPvhX?-=A2rh`-lF4YSm_k#YfGsYDR+Ew5bzjeI)d@l@^nR=XJYJ z)?`Dj?orK!J2_zDB`3z8{gbdQ9`EodP9zC^QI`B8p(KBcEQ2E7J7DUa6Wp*p4V0Jr z%NcLf0bhIR**)$5H$PiHDbc0*_5{4yd0eQ5FZ@6E+vD+fSljB_AzW0#GpV_ocqZsI z70RrnPHU|mRd8HM+bO&ySb<&#y(ZiwLhE`T*}?ZKw3q%~7ynN6ndrW5xX4)ZvWodT zncH%Klj~hG=-4+O3-My41n(_ViAt{}m!i~r&by7010D0r<@^3Xw$9RRk&jWZvQ0+s zL-bb&2-P(ia7+W{mi;eFS5%V|#@p?e?~8*IN1g`|bsF$_WR@qd&4O*^GWRwAw!^#6 ziOyw8%+%ZGQ947JMa0imScN(~2&1p5xs5xg!0D#pL$hr^iQif=*;CVFAk5~t9REJgcbem$ArP5m-CGDAL=-&_U}tEq9(Y4dE?CP*j+UWpIQke7eqG_QUy z@ziS0k9#`<|E_%7*vQ=uHCU^NY)nIdapO(;Y8@zbVCtaC8 zL~MlZzC^B@1BP2WFL%vLP&qu`O0Vq`rY1~xo%c}Srsg}jcoy3QDNP}swb}FaAZH$U zPj7x1#k@3lt^FD|Mbj?%nVdL9RvV6gS-F{kVlJFtEfc{`Wi2awmpZ^h9X;Y#tr^5f zJ5|5YL0_>9zUvJyPguuFeOUZ5e6vh|c2Bc!;XX$h?BbS6zWgTfKi4(Q&a{GqC5Z%` z>{Qp-6hbs_I7u^ldXfaGCuMVwkHfH%sZdy;BZ+EUa?0HQfsAjDwg`Rl0wP!>_GocC z!QU6G?*iv+U~40<`H?C!P`}sU@9n8f(p~P>%hbPuws0p~zg{cwu#sN3w=fepHTONz zQL`thM2ev-Z=r3ZK2ZAnP= z{vhLt>qKwcR-Px-uH;5%VKVc>W^$F?d5QNRJrA&OQ=^uUJWOyx^-H|?_^ zIR(<@_uLAJ|JR(A#+G@6xz6Np=(gviN_|p3ZOWhM|7kl?(UVFp|0|kr=T9Q>R|Oh- zI=sMfWbd_q9jU}^@16@G!Ve(I=ttbfG6%Bj-|V>$IiX<5m1J|k=Q(LJ^(^o-qR&aJ z6scL06AOo`yXr{6BO-a{C2PHHD)0vewKmi5Ys{|Czvb2)g0JTSn!>Z)q2m7bb73=4 z!2K)J^Xz^W2P^lSSC7)ouE)oGF@fEkS zzzi<1Pu~t&76VNDH6Dx&L9n>MR`rTrFR-do+CW?@oSuiK;dBOSNrKsN{=fryFueJ| zKc2rq^r3e_Wx-pkiICv*)}Vz~_AGgGd*qNOojc|^O*LPBg;3-l|G4#oRTlP$-5Kc~G7 zCV7>~N~|SC^Yth5G)8xFnXLT(Uy-iBt95}elT zRntY}T+WZf!2GF=V#5DFK|Y&(thZ9 z8u)z}DH0Z)BQfv$6c>Ne2)}|sMNLK_T%3v0sgzD2$rYXc`Chs3d_3{p&Fb%@`F4U48tysL=RX3Sld@NSR;YXj}!Fl0`*kTWezKs8V%PF4}n%QmS zYcM%Il8i$r)>NBS2L@O?; zeL`Un4(=AI_UURPt`atq4pq5uD8l~{`^RcHwZs~Bb-I+q*YC`_7oJ68?u&)>z%Zo$ znbEYcWuaL7BX~^hQ%I5Y;}Z)JjI^4)N4w76Edw{J9VPPXryzi#RH6L#S1|YdBetbD}9F9b~q3C_l3IFLCyLvbDH;fJC_#Zy(!Q1u_0x z7FS2x6Ah#BU6)E%Q>=XZ*2pycfiLkZCcCHGKvv8#DtRWJa?E7Vq#oMGbDQKZhc~;=g;qEz2!4QpTo7|H_cgqm3Abt zC%ov|F#NRLoEgUbm$+=Qab}O3f)aA)!{?`~XuZ$ZX@45}12zRWX}0SINZeRuk7Y+2 zsk;AH&QWU%)!)8?kM{2id32`3M%TgbKcCy|Q?Xskovi_QG~x}o>08^O+pYxxVPuvi z^K&NeDZX4#$w`Zw?o2c<$$(xB7iCIl#3GMq~0xN7lf`ZTSz$>u(uV>s&0sYSq#emt*dv z*1PCybsCM_<*M4cJ)jikOIzDA2A_kcpUKwkefDG{Q;K-!-caK5^tgjbuMt?57AG7j zp^<(48!o3>xsv6FIiJ3o|47R2Revde7XpP=S3)e8Wx(f;yZ4tW=n<2}p!Lolf=Jqx zj?0Zsx**ByvQ7@F2!DAGTV?)hvic|Ood3!^QhTs&G3eI`qA3Mw4^3={*OY>a;l4AZ zQLe;m@u)upn{S*NfBOnJx7-aqt8<*JFFAPxsBH*YOGR-A#qpG zZ?Fg9S6+b|6z-7UBYzk81)dNujgiA`9tObfq|*5Ep&=QpZ1CIm6>C+IeE~MR?$Xb3BULjUoePr4TXmLc^^@b|#=*MS7LNvaCNOoWB*PDa zJ35E!)zTs^&+rI6WBbN(nRm8S#wd?zJvI>?pddnRt|DKXTl<)qvu}5@|Xti3Mal!c^g{Pei5Cb{p)jk-+))h(#|IewWKxVW9i`e zR4{$!5`X;Y7~wTm_+{~uiMF0+%M0%Pp-^{9QFnBvk>1z)!|AqL3-K?~I`sTTDwJv; zT&pYGO++U})u*ohCR#r2+1%A-#Hr$zL)VD~;#KjQ`QV3i5}|g=>Vw53apeqjHOU+! z8%$4M;at~9Dm@Qsz0;h7O-FgxwUpSRe(TR(!#^0Z~WFB&1IuVtKVlKn~lPn8-e zPV#`+YZq0Chjd~r^qpNc~!;XPN?bA zOOag2g}3FVZ`>_@lLfWx;P3Q#iT|^|Fml)8yZN+@_;E}{NlNGZ=lb@KO{%ia87H=- zj>~1a>PVe|^IaDw25N};jc`XyC%ifs)b>oYo#?lI|Fx&C8myOgw;ihqgNyP%K2|A? z)8EHtFEc!Ag-tP>hLbyc$a9hIOReWu(|q(M9FE6lLG0m5LywyS@GEEW#`#rTH23z8 zE?X{EkgSlpG5z0dq|8Dt>hvf*-^k|oMYq&8vO!+J%9ozEB2zayEteGm2FciDfb!|j3t@MChP8*raU-Fu; zO(HjqMENGX2MH%7=f1(KgM7UAI&zAhi@;uC@#;Rkj>PEks(*Xwxx!lEjw|#g^GJe$ z-?c`TY_NEm^F2PSpL}81^(NGJgm8$?vg%!4ODj^nq370<1_$`pvd;7lf&J*^amR!? z(jZ`aVT&Ij@LJ*K$R!SYbUW67>ySzi$@!d_wM|8aKhk+jEP*?W@QpmVg_ZtCql@#nZHeSe>>-I#4~F^xFQXfyJ<%)nTgwqud*ci_5~^v{@clIY0Z zh+m}l?cIB1G3fD}fjSkrY47c86J&n2CAV;JEsaNU_~6U?D`>~p<}1Fm`3-p^J6wOv zve2}7G`;u4EddilR+dE606eu43%x47Kt^M|BpH>uLGey1pVQ4;cwN+E-PTt~Jee-; zYjLBWQzuuOSMjD1RhO2-`ARfU_U~xmjU9r`t^$Ht6$>z1s=4Nc3c{tRfO#WzuzXm1R9hAX}09j zWK5*EZvbf1gVHbWxlT4j|GL3_!#xwy z;W#yXGi!(z`7mNK6u;#x(GBoZZdEiUZwH6Rs~hR_E%FTH66kdy=l7g8k6vv;rUgYG zW{rFzSDQaxcos~^`?#$h%QXVYvH&*rNp&Yu{I4Rt@RVn4`=Ih}{bc4>rU#kxe@ z%q9$ryqU))uaGI9bOZ4 zNW9cKik#SAt?~Vs7cjJxSgsuLfn!P&gA0pcB=YFJWkZ`BN$zpxXSU|PK#Q1UySDZ+ zl;o|bm$CT_RGsRsYndKI-8>~djXxM3NtDeV|CB}a6J33m++7JgVZRgZ(GGpgeEfME zA|WzVDCA6y7p#b(ts12F=N$5R(b>1c8tMvE)Eq--q>0V(M_p_tc(HL!UDB<9F8>g3 z-EJRZy(ZP_p~(ZX5c~3%?E5V8>}z`1`U^LpvD)yjVOBHjW=YKd&5#58!tEJe#T9}O z8|zX9{T}8Ysq|<1m;m_>S(~4Wa{Q_k4PrJ;j7m$2~GO=!U`n(HXA--VG8luKAEnsRz|9=}< zGkHLMg2=vRxDjNtKpe_BK9$=xkeXC}*Vo$lAaH9q+-iY-4y6}p{QP?jVSm@jTgWy- z*sHyJ7hbkN-OwR0aTz6-MrU>olO*yo?#`y=W_+|iH+G6hwYI})otWc?%NAg{epbH6 z*-p|r!>>2In?8?li}2UN?ej2pkYiQG`ce=q;d;9)=sW%IQ{eLYkvOP!lkZ=@F^@3N z@0=r_CBu{6aIv#?bI__Foh`CvmL#l`Tr>D68#a#TPRUF&(f0Pg=Bq8>q@5jkT_!cJUiB#F;Ter$G#h6U3(%M6(|$gtp1^U#?GDbMP; z9HDNA2vz?!z*a)|{96invPMW>btGLC@zrWxLWUk)D^Ap2qWmp5N|c z)4!%~9}PA&6ptqz&4kDKB6~k+r9*N-XF+7b1f+-U*B8~zgXapYdtXT}r+wUcN8nJ< z8d|u%#vy0DS7ckWzxAQ^COBB$%d>|+hXmhe6_(vo3R`7Ag?^#uac~^AE#}IipKBS4 zWYm@9!5t6low=F8@FD$dTg8nksC9Nsjtl(&lilCfc{NTGzVIB6BX)wcpsd!o13MXL zul)GuqwLsd&8rtLY}IXt2VrcRt{tKGWhgqN{zzu033=VQGw)OeH)TJIRt98|6GF<5 z4ypbjVSCJW1r2r)ku_h$O>)~{;?Z5r)qUlp`ab`%D8V1Zo;G{?kZ3BX^l>RxC;lb> zvme=(dS&_Cco&#`QkdO04ohDVr>~Us>%*wgjY&*1;R#R*fYRofB*o6*$=u%uk zQ~aRxPp)8;4EW7lJ#u#t23}QRY^)bjRX#H(d$qpudnrgNh6#q zk|)Yfx01;N9t?`6f5`@ee!t5+^>F&Tvt; zg3jhd?Z?*bL{=eXX?N`y`Fh4&r^bAeJYqUenYaEV>rOQ4`8N&0pGxM4Y`F(8{$b6Ngo5Y1COwNH+P)^IX@ z{dCm;5#gD5_E5YEjE*g-(gtcsU5W;6x}g$y^`p1lc(6c%v+Xt96jxAfMQK5_)W5{P zvqtlCS1)1mR8iZgS4w7`t+mYC<6w^deZ0U#1RF(dl)<`!l>X+4Ofe&^QaAmpVJoRWNW&gPU-Q9P8 zVRej7$*HJ(!Y3^8TPl{D67ZiL5Of!y!cMzfm&@%T`iE5nOJaNBd0A-5pvekqYBw;S z?3;)6LDNrPR0~oI56T1uzkUV57uQ#xJ`?z#>-rQ!_%n$siiD9%lvDa!1c<#2?^X@S zg09;7o?9E#L2%P@r_f{O5OGzfHq-JtwyUq!6kav$2$ zDoT>OJ`+j)T4|}2tEAWDV-j;gE%dBB>zsD)7jX8!30-qWfP`>-R*iSLOPD5CHSVRI zBi+$|&)?cp4Vn*QS3^lDX|emI$H?`9NZ)?>$^4x^NC$>-+R*3fsl|nCYSpv?wiV}$ zzIA?p;xO-W?(N=i<_L55-^L_RVA^Yz-}0VJvY!~K-Ihv<9{=#E`CthYrvijCq)E|lIZ7_VPBTf zbNpVPma~|a_9j==p2=O&@FkBKC3Lx8UncrB18)07VhGjTRp+X~0$*>(6mx71h9B3y z-8ii5NzVP&jw@441U~s)F6WPWfX<(7)vpgb!@?);q}==;P;bMgnX2`Y_zv1#ZWVb3 z3+hjfRty&tC95d6A^JQZ>k|RzYc=Tiu3d{8j+~1I(e<3P@WB9ZvwitY`b7YYj`tq= zG-XKkg$(?#m+~d|H<)|BT%Sw?nkE=Cd)P``>GxG9&xYm8g_7-i>|~V#{NbmA&f^VJe()}X>9FjMc!*msapTNv zCh#ruO2~L_M;1PXnng-o0_FnCZ7n07aNL=#^Y)`Bp!YA0KjnxnJo`Ws`g~Z87{u}3 zUBh>goE+Qy+kG?$lvL^%ikQAZeEzSbTaO-+Jom*X^x?GsxvoPKYi)-|Tgino8=s8p zoh1FfdFDk=RA;@~`06=Rxrd*8GbNCBlB|+`b$CBdd3{ zJQ#T}MYgHxCup=cki3h#l8)VqCG!mrdUq%{ksphm@!mGYB&4gST~O^0k$Je0dDCbs z9g`Y zYCp)?3?F0Xh*)?Wamu^FuMq~5O{G^~X@x4opYzo2I1t~FJ?l~W6RNIvU2USz0dRP< zcr=bV6HYh`$UgWx2Fe>)L=M~+rw(2k9(M5OqQ;Cp_cf~uQDTDUhfb`a=W%of+gebI zAg{$^z`A(@r66*nZB0QNxE+$7y}#!x3A}%8eZ2iBY&W}>@v?@AN{rin>=b?8V&}W# zZ6TXdNuZDE&6LA5m@9rFn^@6I?>F34oRK;4pX>O4_AB@i1yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` zdjtH`NniQC^DI@NZls%cd=srA=d9L&2bz?GjCQ;I&m+`uUD`+Mp6a%|eoB<`Q8Wn~ z6;YraiZ=Pg#=C>I($u?z?bS)juK)SYZ8wfmBT^1Ev*(3qhtJl;D>&|;4f@ROlvX-P z$*kvD0zFv@-bZw01xr##k3X>wm#1ja+fsk!W*?*U1wJ0My(mmOq?`0q+g6aa=Gvdl zKV!5gEAukLE7!GXzV}-F_MelbjdZR0a;aXGnw>FCHnH4G+uf74Qu>$?RjU0oWb@_y zw5T|p@bYoWXL2A}>_knL-qBLdE%4wC@ zLzKUE9yQssnQC3Nu19RAD3#MBRp+53OwH>x=B7}Rl$Os5G55eDw7C7w-M^frsrblG z{whqI6u*+@!q!xAn#LSsRn5#nTD!%R?wbHf+5tfe#;@xSQM`6F?}~1npyE~s`uKg= zK$}~^W;)KrMQOD0$r=>$&^j4ej|oMKP&|z_f&5n_Y37YVQ&zkR6vS@ikXqPIZM{`k zs#YUQ^LqK`>WjvQ)HOjT<^>)jO55T4;vP#ADopvah3YvSDqUvgf`_02WxM~FawwxA zReiZlNpt)hb>WidSb5!cTEvE%V!_VmC`od{r{T6P<)5;s>p!VU-8wO0n|5B9#{PA( z@*!gT;og&k7oDE_wf{CyuUQ3K7Ysyvs(|8remW|&b`cH*HdQx&@B z)YvJeP5D?4Nf z^(=I5e}ZX&l>Irks$qP2c9MNvH;FFa8$Q{(1flgxK_b)h@cxm-sS9G9l$?gaOtoP< zk=G5LTDF;uIx{K#sgi32#nQ)W92jat9%pQ@Ucbmoc`eTz=$Y6?DZM%5CU>EkY<&Mt zly)J9tUTP=DfwW8-2Xhlcf5Z$<@74HUx04}_| zSJ!MGZ=qIk`-{KLZ6yCVFE^MJgu}xi#nG*+IzhTrD#6U~l?EN}RtOdu`PZ6RtKt@4EHD`pBQM4K<5I^pfC+ zd_E(Ukg4@LS8N)}bvIhr%nDM6Z*E)9y=f36-*=gD(s(GnJ9i5*mNrm+vqx-0JpR8% z-8&rU@caL__ukoCR`yKpV~Ul?c518H14QzZH)%z=0&ZRnMm|$3qsLjF>(#g0rczaeK#vzI_TmAvqSKRI6KwmKhI)`ySiN- z-R@S!4w7?9U2~e4KcF=?*?=0ahmCf(sqx^kk5W39B4lu;-^`TxRyDC%(|*CcW{5zp zD_fiy^mu8-@`fHC6PE1bPqQ@oLexmHC(xVJA*JW7<8hwN#6ZvBGF{{fkr{aZ_(%c^ zCjHB&Rd+ZFs2?U$`%fJEpSsTO@a#)a*99(q0o~tHa#+0VZ{&3wJBacZkm$49Ac8&) zx@y|d0qfMSIS<*xxY+1Tg{pcdvDx{3Jnp1AKBs*>lYNK<8b4Cx?`4*T*(%>Rh1aEE z?M=+Htq;;za_LQ#q^>$#xKXYVtgZ}K_cwbRzY@bo>`~a6Z|ZnyF=Z-ZKm;2fSE~F% zFAK?~Npz9wn$Y)#Rk?;%0H-$@CKY8G25mnV-UN@>dsuWN<2#$t6v}v!m;OCUt`*B zAkSSaC+g}ty71g}PQ#lI3x>C!?4>t`qbXwKbA=MnbK}QC$1fhBb!>0u_@e>SlL3c? zqvY}X_=(y&MJ}w8_m=aD9vOaKVff`u;eOy&R9lKP7Qi*vWM3AY+=nCWrk$H&_d%)M zrBVN+JvhUpFUvVy6${UPzTiqFi-Ww$jrGrH;fEut^p}(bA%EN|Z%uF?{v92~oubbV z+lLv;-}oGW8z-3^d>ZNT=Ki;}EwajRtHSjC-?vOah}EV&7NUj-mhC5DNrI4BZv0+I zd5PfM>+MF&3gO`Hzt*unbigS!!Yao^2K9knrphNc@qM%9j+@mS*zv|8RrAH`Ab!7> zt>cY9SewShE;so?F(-AyP?!x|dFp38RI3ejN77&G6L!FtETyaXTpKR+1(L*_;l}=M zY)!RKw4fsYwxF_!5sbGO@zvVO!m!vXIcwMiV%^^{Fs;l6)8C6xwl@bT+)atJFINAr zju~%?2#=NCg0v|1etM_V|BaLUA1Ch)eQB1pF^()*_geQnf%93rf_V4X!MXaxd~RKL zJkioMMK&dZ72?j{uJ*Bo`w|Va-p+hjOsKTk-Ny;s=o}J)oe^v|40hTCy1=n5{f`NL zVQ`cv4_~BJ!OeRWO7=ZE3}UO__*1LAq0WSJbFN+vJ8XNvof$RUA2c&3-ys84vy$|^|9foa%cJ&S z;S)}3e&Y<*W9DH=k+#IHgZjx$r>r58Ghaf*M;X_WUhrsp?E@WMFQ45R(Z#Q;?VcBm z1pt$Vc4Ff%8?5m{km<}bQ<#R$yt;t=E&_!j;zj*cEIVk~)T!{$8C{6<-^WZrPQ1re_q3$} z7xo_QY(Dr)4YSP$_*_Yo!OrRVnmTjrP+k|PCH6)IR~LKE+~O9%dCs;~svL1p_33G< zW_}R#?Z0J*5<_9Oj`I(vqc3nQUr0)|0Z98k_}gnd6f`Jh-nvV8fkgaQvW6XV>^U|f z>7eBW#f;`LuD=5z&vJ6QbMiEpmgrF*bVXR8)3Rc5<_K^uZ|s$na)E@C%8I#)9Hc;HHSZN)dvL z=P!A3`;l3bk6`I1Ie70rQIv9Fg}5V=khjeGiD({S$*5(f#(#v%sx%Mjz}Yv0Tlp!B z*r+g{a@cH!&`J~UVOgbz&$Y6*Hor2#n&JWTZlPZ&Hd)|2p5?=WG4SW`pCw8!g#O9aW57RCl5cre_aSv1#_qI#bl8%XjAi2Gdjdp5>Z;FZ;GQG< zW3z`R(5EkVbeX@%;4H^Rm!gyhDY5)mUoJCa)6$9~3iW z&&{K}gR2Fytoi8dq}y!0)(#;$>gcGQv`Gk5y&gH%%z`~Eb>5BG(qf7ViC#D^tDj~GZjA|C8NSu-T?4QY<%6KMe)nDEGnxG20% zT$YXx_O+$Mc=dyYpaln}nBCrZ)-_5b{pcqhxgm~eS@Z|A$G@Tvk6w{qH$MlwOuwWI zUs{2Bl-RSamo{)&s5P_ly(DneJC3kF*$cV8rxK|70qAL@iu+@i5t-D}VPW+F^jAIZ zlyQg{v}c#s^xl+&kw<^MA}TsiS)*q^-|d&EQ?_x>fr)>}iSOs{Nt1OHsTfE`_L>70 zeBwEr)X*WI21k@Q+7pkyc-!>KQhfA?k$O5JydBVxB0YXkP+!>o^A z{F)SnbX6YlvuA8@v7E3PhsQjzr$+T<>SJvj`%HUXZ9y2)oaqIF*=3-xIbiFLq7)pY zB_kipL3pXpr84F)0Efq_;|EPkV8dGvzX!`5IPP%Gh zEr^e2bDnfEapDi09K2YL z)@L$ww?14g@U}dZ#ESngRGP)aa$sZg7fOD2m(Xm&OIt@%aV&k|73~2JURZBvMdUIE zfUMZnoNksCqfP6N8I@#E?4a^8pPn5%?SyQ5`jf(3IQ*Ga6owoxMGt#+O1NU>v+rsk z6JS`|z7%x1P6=1Cw>377>qD=% z--`pumSD*l7}VUP2R(F;m3|0{;lfiM(KYn)u!oP|TCGI|Ov>E#_SZB2SI5E4Ut)!F zZox`n8O3#p|IH)Tu7v?h&vkHwumOz&j~SMBQ1trv(is%<>3YI_9q_5tZm+{_SBTEV zJF_KIb|5C&aXoHn4?c3Ui~jwNE6B7jg|Y7bM$d{~qr*mSaMt@_Ahx&!?;Imz)28I{ zxYbi-VP;F1pd|IL{^Sj3h08BA9ovh4a}&o-_b6eyc+JWZV`VtO6?x#jrU@>)H2hAF zO%Ce_hWOvE-_@Ct+1T=V0Li*T^c-{o*h{LQ!A<~x42zPN1e*Z;?`KW!9R@&m_On4l zusPJ+`M@mQYJ_Jb5)5JzkHDR{TMo1Q(m3;9idjnpA0GSixs|@y350qQgQL<;;NzQC zUlR{&U=Qv$zHP2HAS1h9Fz~Yyj;L9t)ang@`l@M7vtC79yl826r0YD;+}ip)_u2+G zy0zYJlr(_}O)|!ClNl7AWzlxC)gAV&`F?I?P{jv3zBx|O%HyJ5R|_Q-9i02YHb^Yp z7LK>wUe|Zw2DKakcEgUnc#sfPf9bss@951-jfdHS!r1A;ZWldJHuWAN4>+*vKRQCg zPinx4vrEkF26~WvrP14hLK%;@r}i{_69LxnYL;N$lUaX-;84J8B z4?H$0iSHg=;`}PD4j*jk-6=1dLEGm|-HrLfc;3UTY2dyHOb4KA%qucj=O~I82$sP2 zgf9&U&;tJ6{#*LfYYS*m{g!a;u>rgqz2la+tpJR*rQ8YMufU5cpV^Z|0r2q#otN=V z2e7zMz!Kkd4klSt`M zxHte2tQ>dz`3V5$65~2Ief%vZPE8`# z-kXa5n@7CKTsHpJalwr?`Q%DUN_d^|Dy;t-FR&+^GVtkgB2;~=t)58^qcU^?BzB3C%o{=Jh37ZvoP5uG615?w^bZ%{$hm?6ne8c{sp6jr$Rc@iqkT4WE7kOdP> zzC|-GRfy5OVZP!#wA)vU`pGZrmo2eS;AkgL;mxpl z!p^+JPwXczWL|zZUhq{AUi!1hjdTA)Ne_=(JXz(!BGGJS`88{ZTvPvY!yE&UzWk=C z7xj-gRhzU&-*ScMe$uR#dVB-zlAW^0dN*A<-bO zNpzBsdhB^m_whK9lu}%ps1SfcMg=^DU5ZgBNr-$&!Yul9?+wW)1xV4`^Fy=$svH&J`-_kK-bZhZLt_C?m&4T7U>!lP-L z8voqkU2&~s!hL4Gb-9lRiIr*p^4VBbfX zR6-Z>WZgbdPE)}C{+RWaMi$VlPF0IJrV0=4b^DTM{zm@&R>Co-yNFZnOcX7>Jn)l3 z>Rk0hQFvs!yqQr`M(niT?1?H#LSdZx`!cl#k-%&&R`cFQ{#MSJX8n9{_4B}OOQ|Th z8I&4+{Qn1!$jR+vy3>6GZv7amcjghpa~EITe3j@4S*?@jTKZ^kzi;Q*P4c}^&S}KP z#$k^C*8a3O`+S%9idr)%F_Z&3QWksFXL1m~?tDX!kOsYTi0yNd77krs zs}TE(AZ0!M_{Ba1CMDyh=LG1jy9XP8ye@fT)V;7ZEA`aBpb2hpd4EKhu8A_`AdgPj?MxnN4ZI z47jb?{iTH8p)_A|z9RfF^A_X#y_(od?)6rImmnV3d-@_Ua)OB9Z=F0tB7~RJ;-1&* zwiEKp*Uge`_kn9LdB^4BhoH4Kgem;!3_%vY_*lr_2BfG$JdWLP2co+9LoPif)IZJf z%Nu6HasKbB)J!d)drV7SGjR899TLc3;^kGJUpANTcW3ldH#G22C&Bd+$rttFO(L?s7A1gR{WqWR0f4UjkuTvR zVpzFPawh2|8_o>4!E?EvABQGlT+%B7y}=_wG#AC8ZR=d1!YV(ohuM)8+}I)JS_1*RXJWz4QFbXURA8L=B^8?G5a;Klxxxh7n zu%;ds_=y4VMpnD;LAE=M3Kbc`pse7e9|Wc1Q!^CDrf9s)|Yezw;w9=VycqCr;U( z`s(JkLHsBFf89xOAa1)N4iQVjuJd2@A(!h_D9@%cPHXr3k}fTb?S5!`kZ$xM2@e?~4n!xO+H28BM3O#U6E*)yl<_A_h@`M$rR1ZAeYeFx zNi}@HI&YYGUuNOtX)-{V?+twMIh-3N>Vo1W)eeJ9*7VW0vSdKk9eR%U6f-{9RoeZg zNC8erJZ#ZPpoH7P4kPjeD{M5$pE>!A3L04N`6m{W!BP9$OzXxXxapp1``oQvuJalg zK%w%mon@+2!>tUFj7<)sKZG#lSyG13HBoHy<59q35hb|2HN~V%N)RbZr^2|PizNnr zy&`|W0gT?EyjHiB!0&{!cG_+~*f7UkoMfI1o2lrez1Zb0Rz)r0sa6i`w*PH)%UcWV z=x~Z(UzQCUJUm&&A-9G~OF5cJ;smizaN@s%_l&TJdX5wcgCf2a6ciuzL=mgzecTF7 z-~oBQ2h58J;@~tO_+y!Z4!`b3V_{t8Snxn?$krn=+&?2P{V7HUtG1cU{xlWCL}T$o z`3+&r?k^BHwLk(xFKI$$FA9U9@?gT7G6ft`$Q5EONd<1X<7x_b7Kp4~$BdJrlsLk8 z{_}edIm}>JX{S(ah;>tB0~0>8<1qaT!sZkEakzo_htmoNaowosg(v3HaL>~>piRjE zr>r-LALlUzmVl*fLvdsL`D5uo%_V32lwV41={|xB=AA-wGdkErAg=e*T@ox%&%mHf zVTUyw*m<9~TLJH(TSbZk6@)n5= z-b_=ww1BQlKVzKw`xTXa%#Ufb7$s(8=8Zd+9}v0)l=~mdcA&1!gsC9bAtF#ImGo`+ zFj7`9JfNmLLa@<|-mPnHMHl}16`o*iBhoJ~uCs@eL*13Ws{L#;gaL=ZuX+Y6w07F) z4tFgdzFDe#SS^MeyiSHGeEW!r`Ft;*rXS5jA%pw_M~!ykCu4QslRPPCi|`wg5Z)%F zlB`8?)n*9Uj*gI#1Eio{-RMR+!UN=t&Wwf+x(Q9R#=x`tE?Z5cfoYxX$TL#2!H$jv zgbH8xUC^8(md6shBi%;`p4rTD8skNTl)kWn4pK3J_zS)YU!_9#Ga(D*htIi9eAWz4^vgOT?cwY-oTlNW?^R z@iPM_enX?pluJ5^wDpBG!>D?QcfkcVY1-^~&8>sQ;@Jpcu(6=^(5;AA5u>MPGDs!3 zR#l$qyYvvd*o14DGf?-F_O#TPS@flVd!1zaJE2fuI~h|&4-@HoXe$qsVIA^aJE6n{ zw$~tWp{ZirD7d=CHhwDWe_V^@L3BO z?B7PRLQ)ys&SW_1D%HB)r(r@>QENM_n+golyEwAQt`UQ57Y2tO_M=2gA-DD$BQt|X;$67I=b7P3UKsW~dV>8P7=JoAA!yJx5P z@!_>MJ7Xo2TmQ3OUs)^rXwWtFCr1@K>4nxI|Q_8lWTLV z6KZR86SdoXAjKtv3}*IFVryIl)f_Xxow&u3y8vXexPdu!j33{4P7mr$~?B!#DRl8MXVv@mf@ zzqm7r0;z`N z6EnxEVpov0>0+r{CpT<7(R}p8V+w8Uy>D2b@skiYUGd1cD+YghV^+52MS)T5jgWO( z5Ao+QQ>MuMw`)iJnvRhCTU6j`wRnpZHupLy)|Yo3oFl!gMm%MJ`yAfsgf> zFUdUY_=E$GJY1)N18GyN{g#YCBdFbm>eq=qIr%9O$+Gw>FJoi%X-aG|FFznh&VfOS zU)S!aJP7+zvOOFfC+g4m+-fsZ1GCCc?_MG<%(h1?IVY6{|4UN&VR85;(Ly(OK2wAn z6cns?#P$lqy}+zbeMffts&rcX$8s5gYV67d<4;uh@h8P&lS!*cZab2}-I@lByFKDQ zTTT)qfrbw9=UY(@--{0Woe|_vRJS0sz02F}chzn-QQ=~eUr!XGRq>MR)y>s1-fCmZUlp)s>S&QxP{eExKKgP0i)Zr#w^!&1%*g;IL=GDO!2 zF~*AIyB{^MM#=S^y9MmnIp>n1bx$cvLXd)e`S>hPAc zjBzE2Fu2zLt-bf08vYaizwS#@!+tbOA~-pNPki}0!k^X9~ zDvz{`MSdK+ie3yH69wBklT*&=$~aucZSJqv77-wQ%F}7z7V-R6I!#H)_uag8d$ZQc zg+E$^OQQEGy zG9?P`QRPq64hh3TC{N>%xe)mDNsM;UvO}$vBcpPwDP}QM6Lf3a-J8iBPMV*T#u~9V z*QYO&z(d)@R-ZI6%wVgNUcLtKE?f7b^8*bi6zr?KtF_x-iI+9y-)6=`QS@IASc${U zAEgQd8%mf)f5`{GQ^v`Of!l6Na&Yoev%&XFDqvfPHt#dV;dRl zz%Ra(>qxsL9Q4UDH_9@B=zV%~n_pyL(dai^aop_(fxb)SQ5~>`uz`u zCd|i~7o>6>g8oxSdq;QYQFhX8xyHWykQoJ-$nFq7|A>4jw+uFSxBIJ5o9B1Mmpxg_ymeS_U zgvy=4k{@AT5Ygj)zBuS7QZwv7G%`pEgv~39tLi@x;=N_}%zn2|ASZq%+JzM2>bJ!F zcZ$%LO!4zNwBL!Yn|aj&mMdt%y){eo(I`sqiuwKI?+;YvcI4gfmmBEl(rDBbvqy-v z%r{PJhXT6@q*<`dE+7$Q)`rdeQ6#&TzHl=20phJvc6cGQgz_gMryhrJz$RJu(>&^F z^z2P43+tskqE0g^qD8QmAj?(aqR?GO?#By`(fp1_%e%Re*|Lpnxp^AOU49dO{WPqX zs~3=B)zYrB9zHKS0C6_AIMK6mXF^ zFOF@1$-FL3{+{8a>o ze)ANFe&T_Lwo7?E{FGR+#LSl>zk$%|82-E1vWEH}+nui)sUo%~?rkcP?ZaKd(4}I} zhYzn#B~qo4V^b^bLMo#$%F>=R9sQw@ogxR>ha141$(EKo0Fi~kISmLrq z|Cwc=&CkQKi7eyD(17GS5mQg3v;;quEUZAP9uHVk-`piC)cF(Yxmt;g7%Y>=)Pz28 zu6zQ&VdOOUyGN#G`G4wqHK;V*n?wUd1#8od%(jScnJ-5_HW~t#_cM`-fi1)lE`7UQ zW)T$)GEcX+%%Zk?$3pKXwxf_5Z&C8mdPH01=PGDH2GfT#86J2ug4mWKTK~|<;Ep-ySrB;@yDJ=V|L2i zaC=A0`MN$me&1`rnWVqVW3lo6*_V`XJ*$-~!%q>s>686H(TEO{DbA=?hcV#msv%w? zPRqzJJh%5JKR1+#<;L;Qj}zLW&*?OZMM0!Tsd;b36tez$(q}z`1)E$p>rmcS#K6<4PSIY85??{T zK9Eh4N35X@@jnkQ%Ksytls{`R_2s}y@n=r-P?CV?NK~msodgz_QaE{IMhKR!bwT7+ zeZ1xuzZ24X1n5jsJi}ehaBXLxdi0tG2x$INlW{l#5zSg`1=gDQ9QWOvvl_e*Fg6hP zu4)hb;NN#rwMG);e^KyeTvx_74tr)>A7_I*)hS0E_ii9zwz?h9?`y=n@yuvX=6}LL&kA=O{4C z&!dgCqVNr$0AA>Qpc^XnnH<~9->0>hQNZ}%*9++aBS@d}Oqf{#1>B^2t)5#*3WjQz z2Mfa4;Kx5#ODB6NxNiPVcXWmgmRmU-%IoN1#eMesTnY_Do=)64PrVn5Ua#@W?jr}q zmEwCx{AZAmSZhs-+YrhmE3h685Qk@-_R&RNTS!v1NJ8Kq6^K%I?i-%|gGlRH1zBeZ6Nhi$!SksMbPxTN{Zu03CGtB1k>6Udd&BEE@XFqH)7AVEL;vNY4X_evX z%nE^hjwi3kC_#qtu&RorJbo;lJlN?ah8?1Ghhv9Taon#v&F}N*KqEX-aa=?U^7^~` zmrGUs)m2CIheovZU#ZpfAI1d5A0p$ z8hG@8C7$6jw9m{|!`c`1L$pupV_q?l;BXmTDCtNXmATIXtLlFDxn%cZwT7^J8z-e8 zPAKp6wPsZuu|wNnJ|zzghJTWDE(t)dRZ4xR`vSTXIr(mXye7Wb|EpzOUl_7O4hO%k zumqRIZTe4KBk1np_n^y%2LGpz9AQw*?r`{t92Uba>(9**d2ecrlzT`psT#NCxW*MC zyw-U6WL6R3ogG`V;aE#lJakS#eqYh(u@>08ynu{0tVlzrCs9|532lr=31M&7D^S@! zgHF6Yp0M|9Dx&*b`bajtj)+xlO_G(`>-%J+8I-Ce8Pua81=Js_Ps-NZ}{_q&G(>8BDVUZ|vHIsU}*n(QAisrG}9O6qDx#s6S zKuqH| zE@pUTSTz!Q&0Xr0wX{IviQDRKKSW&Vf*uM^bHs0%nLo1!E)$o<6}x1A&ZFeBj>BPj zvxMst^Y`QK^N4aHp-^e73w2Yx4>@KyN7xkxR$X1WN4N|$|0-A*MhE8NE;=oefmXEY z)X0gyL|0PP5bcZ{@Nu$z9E(^df*u)Ho>n7>II*G%UE$sD&kXi{XCMRj?r5<)mGt07 z&%7lAA|R!g<8$H)3z&z#KYQW!G_mvj^QI*Kdvy52Z9fl9Ry=t$m6G@I10>KPUUQLM z4bMBx+S^OR&9-JUal`WZ3Xt8M?Qa{thS zmg;=@E6n)XC^+o&OFyr+eA{|@9f3sy|_A9Dqw7s1s*k??k*o+KpS^Ie4|nq z0h8+?A;L`a=zNn}HNWrfyzgL>|HAn__|~A~T}S2(Lb|$qo7QNO$oNF1;TB_tW15^7 z@d7s%Q+=O*=oT4dRfsLSyHZ0BYdXiZrd`e}{Tax0M*>gzCqB&B5QLM=b3dc~DM0f5 zZ$2-BFNFF7y#R?DD+u{LJNLPR1kN2lB6VU?18>h3QSRO0!&Vu*Lx(Re66$ms8u9Jy zxMh3W+2t|9tKN@jO=-pnh8Ir<{=H?!`OF>X`4Jy}#7rN_wathf)q4{fHpoDt_oCY> zwkVM1!_nid~OX57x0E}TF;4?H|}3e<6qF#nwxGgkOP zyBtN=U;z?>=wc1MGq`0)SgK2sVv8&EMM3QR&}A2WnZc3?8|CbK$E>`JUIrJp9ZHr3 z$#9YjuX8!DT8TB*ksyO=Yu_NtpY%A?<+V6R;vA}?TDa+ByNwhL#!vT`s6uD#_g66% zE?DqfnBUjarr4CeNW)uE4)^Ibx_k8L<4dm8CSsc^;3~v6JO0@U(gj|`TsD=)_+C|r zyCg3Jsk|s=s^*8#qgv5F&x%8Kdha(X8wKpr$2G6@NC>*_9pouA{) Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 006/300] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 00000000000..e2ab583d10a --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da8953..613636a30ef 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc0641890..17c19240808 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_lammps(dgradflag): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_lammps(dgradflag): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afaa..74f00f9b526 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From 80da41efc9e3bcc0d7ed063902bb716b0b2130e6 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 007/300] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b526..e9899d1962a 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 008/300] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 00000000000..58e2592d61b --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From bc6a419dd4c6223bb1cc241ac2256b7d2d3c7a8c Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 009/300] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 00000000000..2953222216c --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 00000000000..b18ec13a4d9 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 00000000000..afe0a27f359 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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
+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` zdjtH`NniQC^DI@NZls%cd=srA=d9L&2bz?GjCQ;I&m+`uUD`+Mp6a%|eoB<`Q8Wn~ z6;YraiZ=Pg#=C>I($u?z?bS)juK)SYZ8wfmBT^1Ev*(3qhtJl;D>&|;4f@ROlvX-P z$*kvD0zFv@-bZw01xr##k3X>wm#1ja+fsk!W*?*U1wJ0My(mmOq?`0q+g6aa=Gvdl zKV!5gEAukLE7!GXzV}-F_MelbjdZR0a;aXGnw>FCHnH4G+uf74Qu>$?RjU0oWb@_y zw5T|p@bYoWXL2A}>_knL-qBLdE%4wC@ zLzKUE9yQssnQC3Nu19RAD3#MBRp+53OwH>x=B7}Rl$Os5G55eDw7C7w-M^frsrblG z{whqI6u*+@!q!xAn#LSsRn5#nTD!%R?wbHf+5tfe#;@xSQM`6F?}~1npyE~s`uKg= zK$}~^W;)KrMQOD0$r=>$&^j4ej|oMKP&|z_f&5n_Y37YVQ&zkR6vS@ikXqPIZM{`k zs#YUQ^LqK`>WjvQ)HOjT<^>)jO55T4;vP#ADopvah3YvSDqUvgf`_02WxM~FawwxA zReiZlNpt)hb>WidSb5!cTEvE%V!_VmC`od{r{T6P<)5;s>p!VU-8wO0n|5B9#{PA( z@*!gT;og&k7oDE_wf{CyuUQ3K7Ysyvs(|8remW|&b`cH*HdQx&@B z)YvJeP5D?4Nf z^(=I5e}ZX&l>Irks$qP2c9MNvH;FFa8$Q{(1flgxK_b)h@cxm-sS9G9l$?gaOtoP< zk=G5LTDF;uIx{K#sgi32#nQ)W92jat9%pQ@Ucbmoc`eTz=$Y6?DZM%5CU>EkY<&Mt zly)J9tUTP=DfwW8-2Xhlcf5Z$<@74HUx04}_| zSJ!MGZ=qIk`-{KLZ6yCVFE^MJgu}xi#nG*+IzhTrD#6U~l?EN}RtOdu`PZ6RtKt@4EHD`pBQM4K<5I^pfC+ zd_E(Ukg4@LS8N)}bvIhr%nDM6Z*E)9y=f36-*=gD(s(GnJ9i5*mNrm+vqx-0JpR8% z-8&rU@caL__ukoCR`yKpV~Ul?c518H14QzZH)%z=0&ZRnMm|$3qsLjF>(#g0rczaeK#vzI_TmAvqSKRI6KwmKhI)`ySiN- z-R@S!4w7?9U2~e4KcF=?*?=0ahmCf(sqx^kk5W39B4lu;-^`TxRyDC%(|*CcW{5zp zD_fiy^mu8-@`fHC6PE1bPqQ@oLexmHC(xVJA*JW7<8hwN#6ZvBGF{{fkr{aZ_(%c^ zCjHB&Rd+ZFs2?U$`%fJEpSsTO@a#)a*99(q0o~tHa#+0VZ{&3wJBacZkm$49Ac8&) zx@y|d0qfMSIS<*xxY+1Tg{pcdvDx{3Jnp1AKBs*>lYNK<8b4Cx?`4*T*(%>Rh1aEE z?M=+Htq;;za_LQ#q^>$#xKXYVtgZ}K_cwbRzY@bo>`~a6Z|ZnyF=Z-ZKm;2fSE~F% zFAK?~Npz9wn$Y)#Rk?;%0H-$@CKY8G25mnV-UN@>dsuWN<2#$t6v}v!m;OCUt`*B zAkSSaC+g}ty71g}PQ#lI3x>C!?4>t`qbXwKbA=MnbK}QC$1fhBb!>0u_@e>SlL3c? zqvY}X_=(y&MJ}w8_m=aD9vOaKVff`u;eOy&R9lKP7Qi*vWM3AY+=nCWrk$H&_d%)M zrBVN+JvhUpFUvVy6${UPzTiqFi-Ww$jrGrH;fEut^p}(bA%EN|Z%uF?{v92~oubbV z+lLv;-}oGW8z-3^d>ZNT=Ki;}EwajRtHSjC-?vOah}EV&7NUj-mhC5DNrI4BZv0+I zd5PfM>+MF&3gO`Hzt*unbigS!!Yao^2K9knrphNc@qM%9j+@mS*zv|8RrAH`Ab!7> zt>cY9SewShE;so?F(-AyP?!x|dFp38RI3ejN77&G6L!FtETyaXTpKR+1(L*_;l}=M zY)!RKw4fsYwxF_!5sbGO@zvVO!m!vXIcwMiV%^^{Fs;l6)8C6xwl@bT+)atJFINAr zju~%?2#=NCg0v|1etM_V|BaLUA1Ch)eQB1pF^()*_geQnf%93rf_V4X!MXaxd~RKL zJkioMMK&dZ72?j{uJ*Bo`w|Va-p+hjOsKTk-Ny;s=o}J)oe^v|40hTCy1=n5{f`NL zVQ`cv4_~BJ!OeRWO7=ZE3}UO__*1LAq0WSJbFN+vJ8XNvof$RUA2c&3-ys84vy$|^|9foa%cJ&S z;S)}3e&Y<*W9DH=k+#IHgZjx$r>r58Ghaf*M;X_WUhrsp?E@WMFQ45R(Z#Q;?VcBm z1pt$Vc4Ff%8?5m{km<}bQ<#R$yt;t=E&_!j;zj*cEIVk~)T!{$8C{6<-^WZrPQ1re_q3$} z7xo_QY(Dr)4YSP$_*_Yo!OrRVnmTjrP+k|PCH6)IR~LKE+~O9%dCs;~svL1p_33G< zW_}R#?Z0J*5<_9Oj`I(vqc3nQUr0)|0Z98k_}gnd6f`Jh-nvV8fkgaQvW6XV>^U|f z>7eBW#f;`LuD=5z&vJ6QbMiEpmgrF*bVXR8)3Rc5<_K^uZ|s$na)E@C%8I#)9Hc;HHSZN)dvL z=P!A3`;l3bk6`I1Ie70rQIv9Fg}5V=khjeGiD({S$*5(f#(#v%sx%Mjz}Yv0Tlp!B z*r+g{a@cH!&`J~UVOgbz&$Y6*Hor2#n&JWTZlPZ&Hd)|2p5?=WG4SW`pCw8!g#O9aW57RCl5cre_aSv1#_qI#bl8%XjAi2Gdjdp5>Z;FZ;GQG< zW3z`R(5EkVbeX@%;4H^Rm!gyhDY5)mUoJCa)6$9~3iW z&&{K}gR2Fytoi8dq}y!0)(#;$>gcGQv`Gk5y&gH%%z`~Eb>5BG(qf7ViC#D^tDj~GZjA|C8NSu-T?4QY<%6KMe)nDEGnxG20% zT$YXx_O+$Mc=dyYpaln}nBCrZ)-_5b{pcqhxgm~eS@Z|A$G@Tvk6w{qH$MlwOuwWI zUs{2Bl-RSamo{)&s5P_ly(DneJC3kF*$cV8rxK|70qAL@iu+@i5t-D}VPW+F^jAIZ zlyQg{v}c#s^xl+&kw<^MA}TsiS)*q^-|d&EQ?_x>fr)>}iSOs{Nt1OHsTfE`_L>70 zeBwEr)X*WI21k@Q+7pkyc-!>KQhfA?k$O5JydBVxB0YXkP+!>o^A z{F)SnbX6YlvuA8@v7E3PhsQjzr$+T<>SJvj`%HUXZ9y2)oaqIF*=3-xIbiFLq7)pY zB_kipL3pXpr84F)0Efq_;|EPkV8dGvzX!`5IPP%Gh zEr^e2bDnfEapDi09K2YL z)@L$ww?14g@U}dZ#ESngRGP)aa$sZg7fOD2m(Xm&OIt@%aV&k|73~2JURZBvMdUIE zfUMZnoNksCqfP6N8I@#E?4a^8pPn5%?SyQ5`jf(3IQ*Ga6owoxMGt#+O1NU>v+rsk z6JS`|z7%x1P6=1Cw>377>qD=% z--`pumSD*l7}VUP2R(F;m3|0{;lfiM(KYn)u!oP|TCGI|Ov>E#_SZB2SI5E4Ut)!F zZox`n8O3#p|IH)Tu7v?h&vkHwumOz&j~SMBQ1trv(is%<>3YI_9q_5tZm+{_SBTEV zJF_KIb|5C&aXoHn4?c3Ui~jwNE6B7jg|Y7bM$d{~qr*mSaMt@_Ahx&!?;Imz)28I{ zxYbi-VP;F1pd|IL{^Sj3h08BA9ovh4a}&o-_b6eyc+JWZV`VtO6?x#jrU@>)H2hAF zO%Ce_hWOvE-_@Ct+1T=V0Li*T^c-{o*h{LQ!A<~x42zPN1e*Z;?`KW!9R@&m_On4l zusPJ+`M@mQYJ_Jb5)5JzkHDR{TMo1Q(m3;9idjnpA0GSixs|@y350qQgQL<;;NzQC zUlR{&U=Qv$zHP2HAS1h9Fz~Yyj;L9t)ang@`l@M7vtC79yl826r0YD;+}ip)_u2+G zy0zYJlr(_}O)|!ClNl7AWzlxC)gAV&`F?I?P{jv3zBx|O%HyJ5R|_Q-9i02YHb^Yp z7LK>wUe|Zw2DKakcEgUnc#sfPf9bss@951-jfdHS!r1A;ZWldJHuWAN4>+*vKRQCg zPinx4vrEkF26~WvrP14hLK%;@r}i{_69LxnYL;N$lUaX-;84J8B z4?H$0iSHg=;`}PD4j*jk-6=1dLEGm|-HrLfc;3UTY2dyHOb4KA%qucj=O~I82$sP2 zgf9&U&;tJ6{#*LfYYS*m{g!a;u>rgqz2la+tpJR*rQ8YMufU5cpV^Z|0r2q#otN=V z2e7zMz!Kkd4klSt`M zxHte2tQ>dz`3V5$65~2Ief%vZPE8`# z-kXa5n@7CKTsHpJalwr?`Q%DUN_d^|Dy;t-FR&+^GVtkgB2;~=t)58^qcU^?BzB3C%o{=Jh37ZvoP5uG615?w^bZ%{$hm?6ne8c{sp6jr$Rc@iqkT4WE7kOdP> zzC|-GRfy5OVZP!#wA)vU`pGZrmo2eS;AkgL;mxpl z!p^+JPwXczWL|zZUhq{AUi!1hjdTA)Ne_=(JXz(!BGGJS`88{ZTvPvY!yE&UzWk=C z7xj-gRhzU&-*ScMe$uR#dVB-zlAW^0dN*A<-bO zNpzBsdhB^m_whK9lu}%ps1SfcMg=^DU5ZgBNr-$&!Yul9?+wW)1xV4`^Fy=$svH&J`-_kK-bZhZLt_C?m&4T7U>!lP-L z8voqkU2&~s!hL4Gb-9lRiIr*p^4VBbfX zR6-Z>WZgbdPE)}C{+RWaMi$VlPF0IJrV0=4b^DTM{zm@&R>Co-yNFZnOcX7>Jn)l3 z>Rk0hQFvs!yqQr`M(niT?1?H#LSdZx`!cl#k-%&&R`cFQ{#MSJX8n9{_4B}OOQ|Th z8I&4+{Qn1!$jR+vy3>6GZv7amcjghpa~EITe3j@4S*?@jTKZ^kzi;Q*P4c}^&S}KP z#$k^C*8a3O`+S%9idr)%F_Z&3QWksFXL1m~?tDX!kOsYTi0yNd77krs zs}TE(AZ0!M_{Ba1CMDyh=LG1jy9XP8ye@fT)V;7ZEA`aBpb2hpd4EKhu8A_`AdgPj?MxnN4ZI z47jb?{iTH8p)_A|z9RfF^A_X#y_(od?)6rImmnV3d-@_Ua)OB9Z=F0tB7~RJ;-1&* zwiEKp*Uge`_kn9LdB^4BhoH4Kgem;!3_%vY_*lr_2BfG$JdWLP2co+9LoPif)IZJf z%Nu6HasKbB)J!d)drV7SGjR899TLc3;^kGJUpANTcW3ldH#G22C&Bd+$rttFO(L?s7A1gR{WqWR0f4UjkuTvR zVpzFPawh2|8_o>4!E?EvABQGlT+%B7y}=_wG#AC8ZR=d1!YV(ohuM)8+}I)JS_1*RXJWz4QFbXURA8L=B^8?G5a;Klxxxh7n zu%;ds_=y4VMpnD;LAE=M3Kbc`pse7e9|Wc1Q!^CDrf9s)|Yezw;w9=VycqCr;U( z`s(JkLHsBFf89xOAa1)N4iQVjuJd2@A(!h_D9@%cPHXr3k}fTb?S5!`kZ$xM2@e?~4n!xO+H28BM3O#U6E*)yl<_A_h@`M$rR1ZAeYeFx zNi}@HI&YYGUuNOtX)-{V?+twMIh-3N>Vo1W)eeJ9*7VW0vSdKk9eR%U6f-{9RoeZg zNC8erJZ#ZPpoH7P4kPjeD{M5$pE>!A3L04N`6m{W!BP9$OzXxXxapp1``oQvuJalg zK%w%mon@+2!>tUFj7<)sKZG#lSyG13HBoHy<59q35hb|2HN~V%N)RbZr^2|PizNnr zy&`|W0gT?EyjHiB!0&{!cG_+~*f7UkoMfI1o2lrez1Zb0Rz)r0sa6i`w*PH)%UcWV z=x~Z(UzQCUJUm&&A-9G~OF5cJ;smizaN@s%_l&TJdX5wcgCf2a6ciuzL=mgzecTF7 z-~oBQ2h58J;@~tO_+y!Z4!`b3V_{t8Snxn?$krn=+&?2P{V7HUtG1cU{xlWCL}T$o z`3+&r?k^BHwLk(xFKI$$FA9U9@?gT7G6ft`$Q5EONd<1X<7x_b7Kp4~$BdJrlsLk8 z{_}edIm}>JX{S(ah;>tB0~0>8<1qaT!sZkEakzo_htmoNaowosg(v3HaL>~>piRjE zr>r-LALlUzmVl*fLvdsL`D5uo%_V32lwV41={|xB=AA-wGdkErAg=e*T@ox%&%mHf zVTUyw*m<9~TLJH(TSbZk6@)n5= z-b_=ww1BQlKVzKw`xTXa%#Ufb7$s(8=8Zd+9}v0)l=~mdcA&1!gsC9bAtF#ImGo`+ zFj7`9JfNmLLa@<|-mPnHMHl}16`o*iBhoJ~uCs@eL*13Ws{L#;gaL=ZuX+Y6w07F) z4tFgdzFDe#SS^MeyiSHGeEW!r`Ft;*rXS5jA%pw_M~!ykCu4QslRPPCi|`wg5Z)%F zlB`8?)n*9Uj*gI#1Eio{-RMR+!UN=t&Wwf+x(Q9R#=x`tE?Z5cfoYxX$TL#2!H$jv zgbH8xUC^8(md6shBi%;`p4rTD8skNTl)kWn4pK3J_zS)YU!_9#Ga(D*htIi9eAWz4^vgOT?cwY-oTlNW?^R z@iPM_enX?pluJ5^wDpBG!>D?QcfkcVY1-^~&8>sQ;@Jpcu(6=^(5;AA5u>MPGDs!3 zR#l$qyYvvd*o14DGf?-F_O#TPS@flVd!1zaJE2fuI~h|&4-@HoXe$qsVIA^aJE6n{ zw$~tWp{ZirD7d=CHhwDWe_V^@L3BO z?B7PRLQ)ys&SW_1D%HB)r(r@>QENM_n+golyEwAQt`UQ57Y2tO_M=2gA-DD$BQt|X;$67I=b7P3UKsW~dV>8P7=JoAA!yJx5P z@!_>MJ7Xo2TmQ3OUs)^rXwWtFCr1@K>4nxI|Q_8lWTLV z6KZR86SdoXAjKtv3}*IFVryIl)f_Xxow&u3y8vXexPdu!j33{4P7mr$~?B!#DRl8MXVv@mf@ zzqm7r0;z`N z6EnxEVpov0>0+r{CpT<7(R}p8V+w8Uy>D2b@skiYUGd1cD+YghV^+52MS)T5jgWO( z5Ao+QQ>MuMw`)iJnvRhCTU6j`wRnpZHupLy)|Yo3oFl!gMm%MJ`yAfsgf> zFUdUY_=E$GJY1)N18GyN{g#YCBdFbm>eq=qIr%9O$+Gw>FJoi%X-aG|FFznh&VfOS zU)S!aJP7+zvOOFfC+g4m+-fsZ1GCCc?_MG<%(h1?IVY6{|4UN&VR85;(Ly(OK2wAn z6cns?#P$lqy}+zbeMffts&rcX$8s5gYV67d<4;uh@h8P&lS!*cZab2}-I@lByFKDQ zTTT)qfrbw9=UY(@--{0Woe|_vRJS0sz02F}chzn-QQ=~eUr!XGRq>MR)y>s1-fCmZUlp)s>S&QxP{eExKKgP0i)Zr#w^!&1%*g;IL=GDO!2 zF~*AIyB{^MM#=S^y9MmnIp>n1bx$cvLXd)e`S>hPAc zjBzE2Fu2zLt-bf08vYaizwS#@!+tbOA~-pNPki}0!k^X9~ zDvz{`MSdK+ie3yH69wBklT*&=$~aucZSJqv77-wQ%F}7z7V-R6I!#H)_uag8d$ZQc zg+E$^OQQEGy zG9?P`QRPq64hh3TC{N>%xe)mDNsM;UvO}$vBcpPwDP}QM6Lf3a-J8iBPMV*T#u~9V z*QYO&z(d)@R-ZI6%wVgNUcLtKE?f7b^8*bi6zr?KtF_x-iI+9y-)6=`QS@IASc${U zAEgQd8%mf)f5`{GQ^v`Of!l6Na&Yoev%&XFDqvfPHt#dV;dRl zz%Ra(>qxsL9Q4UDH_9@B=zV%~n_pyL(dai^aop_(fxb)SQ5~>`uz`u zCd|i~7o>6>g8oxSdq;QYQFhX8xyHWykQoJ-$nFq7|A>4jw+uFSxBIJ5o9B1Mmpxg_ymeS_U zgvy=4k{@AT5Ygj)zBuS7QZwv7G%`pEgv~39tLi@x;=N_}%zn2|ASZq%+JzM2>bJ!F zcZ$%LO!4zNwBL!Yn|aj&mMdt%y){eo(I`sqiuwKI?+;YvcI4gfmmBEl(rDBbvqy-v z%r{PJhXT6@q*<`dE+7$Q)`rdeQ6#&TzHl=20phJvc6cGQgz_gMryhrJz$RJu(>&^F z^z2P43+tskqE0g^qD8QmAj?(aqR?GO?#By`(fp1_%e%Re*|Lpnxp^AOU49dO{WPqX zs~3=B)zYrB9zHKS0C6_AIMK6mXF^ zFOF@1$-FL3{+{8a>o ze)ANFe&T_Lwo7?E{FGR+#LSl>zk$%|82-E1vWEH}+nui)sUo%~?rkcP?ZaKd(4}I} zhYzn#B~qo4V^b^bLMo#$%F>=R9sQw@ogxR>ha141$(EKo0Fi~kISmLrq z|Cwc=&CkQKi7eyD(17GS5mQg3v;;quEUZAP9uHVk-`piC)cF(Yxmt;g7%Y>=)Pz28 zu6zQ&VdOOUyGN#G`G4wqHK;V*n?wUd1#8od%(jScnJ-5_HW~t#_cM`-fi1)lE`7UQ zW)T$)GEcX+%%Zk?$3pKXwxf_5Z&C8mdPH01=PGDH2GfT#86J2ug4mWKTK~|<;Ep-ySrB;@yDJ=V|L2i zaC=A0`MN$me&1`rnWVqVW3lo6*_V`XJ*$-~!%q>s>686H(TEO{DbA=?hcV#msv%w? zPRqzJJh%5JKR1+#<;L;Qj}zLW&*?OZMM0!Tsd;b36tez$(q}z`1)E$p>rmcS#K6<4PSIY85??{T zK9Eh4N35X@@jnkQ%Ksytls{`R_2s}y@n=r-P?CV?NK~msodgz_QaE{IMhKR!bwT7+ zeZ1xuzZ24X1n5jsJi}ehaBXLxdi0tG2x$INlW{l#5zSg`1=gDQ9QWOvvl_e*Fg6hP zu4)hb;NN#rwMG);e^KyeTvx_74tr)>A7_I*)hS0E_ii9zwz?h9?`y=n@yuvX=6}LL&kA=O{4C z&!dgCqVNr$0AA>Qpc^XnnH<~9->0>hQNZ}%*9++aBS@d}Oqf{#1>B^2t)5#*3WjQz z2Mfa4;Kx5#ODB6NxNiPVcXWmgmRmU-%IoN1#eMesTnY_Do=)64PrVn5Ua#@W?jr}q zmEwCx{AZAmSZhs-+YrhmE3h685Qk@-_R&RNTS!v1NJ8Kq6^K%I?i-%|gGlRH1zBeZ6Nhi$!SksMbPxTN{Zu03CGtB1k>6Udd&BEE@XFqH)7AVEL;vNY4X_evX z%nE^hjwi3kC_#qtu&RorJbo;lJlN?ah8?1Ghhv9Taon#v&F}N*KqEX-aa=?U^7^~` zmrGUs)m2CIheovZU#ZpfAI1d5A0p$ z8hG@8C7$6jw9m{|!`c`1L$pupV_q?l;BXmTDCtNXmATIXtLlFDxn%cZwT7^J8z-e8 zPAKp6wPsZuu|wNnJ|zzghJTWDE(t)dRZ4xR`vSTXIr(mXye7Wb|EpzOUl_7O4hO%k zumqRIZTe4KBk1np_n^y%2LGpz9AQw*?r`{t92Uba>(9**d2ecrlzT`psT#NCxW*MC zyw-U6WL6R3ogG`V;aE#lJakS#eqYh(u@>08ynu{0tVlzrCs9|532lr=31M&7D^S@! zgHF6Yp0M|9Dx&*b`bajtj)+xlO_G(`>-%J+8I-Ce8Pua81=Js_Ps-NZ}{_q&G(>8BDVUZ|vHIsU}*n(QAisrG}9O6qDx#s6S zKuqH| zE@pUTSTz!Q&0Xr0wX{IviQDRKKSW&Vf*uM^bHs0%nLo1!E)$o<6}x1A&ZFeBj>BPj zvxMst^Y`QK^N4aHp-^e73w2Yx4>@KyN7xkxR$X1WN4N|$|0-A*MhE8NE;=oefmXEY z)X0gyL|0PP5bcZ{@Nu$z9E(^df*u)Ho>n7>II*G%UE$sD&kXi{XCMRj?r5<)mGt07 z&%7lAA|R!g<8$H)3z&z#KYQW!G_mvj^QI*Kdvy52Z9fl9Ry=t$m6G@I10>KPUUQLM z4bMBx+S^OR&9-JUal`WZ3Xt8M?Qa{thS zmg;=@E6n)XC^+o&OFyr+eA{|@9f3sy|_A9Dqw7s1s*k??k*o+KpS^Ie4|nq z0h8+?A;L`a=zNn}HNWrfyzgL>|HAn__|~A~T}S2(Lb|$qo7QNO$oNF1;TB_tW15^7 z@d7s%Q+=O*=oT4dRfsLSyHZ0BYdXiZrd`e}{Tax0M*>gzCqB&B5QLM=b3dc~DM0f5 zZ$2-BFNFF7y#R?DD+u{LJNLPR1kN2lB6VU?18>h3QSRO0!&Vu*Lx(Re66$ms8u9Jy zxMh3W+2t|9tKN@jO=-pnh8Ir<{=H?!`OF>X`4Jy}#7rN_wathf)q4{fHpoDt_oCY> zwkVM1!_nid~OX57x0E}TF;4?H|}3e<6qF#nwxGgkOP zyBtN=U;z?>=wc1MGq`0)SgK2sVv8&EMM3QR&}A2WnZc3?8|CbK$E>`JUIrJp9ZHr3 z$#9YjuX8!DT8TB*ksyO=Yu_NtpY%A?<+V6R;vA}?TDa+ByNwhL#!vT`s6uD#_g66% zE?DqfnBUjarr4CeNW)uE4)^Ibx_k8L<4dm8CSsc^;3~v6JO0@U(gj|`TsD=)_+C|r zyCg3Jsk|s=s^*8#qgv5F&x%8Kdha(X8wKpr$2G6@NC>*_9pouA{) Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 010/300] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 00000000000..e2ab583d10a --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da8953..613636a30ef 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc0641890..17c19240808 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_lammps(dgradflag): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_lammps(dgradflag): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afaa..74f00f9b526 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From 079ab1946fb6143491fefd42446330cec9ec81af Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 011/300] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b526..e9899d1962a 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Sun, 16 Oct 2022 21:02:02 -0600 Subject: [PATCH 012/300] Adding other nstencil classes --- src/nstencil_bin.cpp | 5 +- src/nstencil_ghost_bin.cpp | 73 ++++++++++++++++++++ src/nstencil_ghost_bin.h | 69 +++++++++++++++++++ src/nstencil_multi.cpp | 133 +++++++++++++++++++++++++++++++++++++ src/nstencil_multi.h | 72 ++++++++++++++++++++ src/nstencil_multi_old.cpp | 85 ++++++++++++++++++++++++ src/nstencil_multi_old.h | 69 +++++++++++++++++++ 7 files changed, 503 insertions(+), 3 deletions(-) create mode 100644 src/nstencil_ghost_bin.cpp create mode 100644 src/nstencil_ghost_bin.h create mode 100644 src/nstencil_multi.cpp create mode 100644 src/nstencil_multi.h create mode 100644 src/nstencil_multi_old.cpp create mode 100644 src/nstencil_multi_old.h diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index 45908671fd2..22fdc335e4b 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -28,8 +28,7 @@ NStencilBin::NStencilBin(LAMMPS *lmp) : NStencil(lmp) {} template void NStencilBin::create() { - int i,j,k; - bool bin_include; + int i, j, k; // For half stencils, only the upper plane is needed int sy_min = sy; @@ -55,7 +54,7 @@ void NStencilBin::create() if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } } diff --git a/src/nstencil_ghost_bin.cpp b/src/nstencil_ghost_bin.cpp new file mode 100644 index 00000000000..7531a3ff329 --- /dev/null +++ b/src/nstencil_ghost_bin.cpp @@ -0,0 +1,73 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "nstencil_ghost_bin.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilGhostBin::create() +{ + int i, j, k; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + nstencil = 0; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance(i,j,k) < cutneighmaxsq) + stencilxyz[nstencil][0] = i; + stencilxyz[nstencil][1] = j; + stencilxyz[nstencil][2] = k; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilGhostBin<0,0,0>; +template class NStencilGhostBin<0,1,0>; +template class NStencilGhostBin<1,0,0>; +template class NStencilGhostBin<1,0,1>; +template class NStencilGhostBin<1,1,0>; +template class NStencilGhostBin<1,1,1>; +} diff --git a/src/nstencil_ghost_bin.h b/src/nstencil_ghost_bin.h new file mode 100644 index 00000000000..31268cc30d6 --- /dev/null +++ b/src/nstencil_ghost_bin.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 NSTENCIL_CLASS +// clang-format off +typedef NStencilGhostBin<0, 0, 0> NStencilFullGhostBin2d; +NStencilStyle(full/ghost/bin/2d, + NStencilFullGhostBin2d, + NS_FULL | NS_GhostBin | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilGhostBin<0, 1, 0> NStencilFullGhostBin3d; +NStencilStyle(full/ghost/bin/3d, + NStencilFullGhostBin3d, + NS_FULL | NS_GhostBin | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilGhostBin<1, 0, 0> NStencilHalfGhostBin2d; +NStencilStyle(half/ghost/bin/2d, + NStencilHalfGhostBin2d, + NS_HALF | NS_GhostBin | NS_2D | NS_ORTHO); + +typedef NStencilGhostBin<1, 0, 1> NStencilHalfGhostBin2dTri; +NStencilStyle(half/ghost/bin/2d/tri, + NStencilHalfGhostBin2dTri, + NS_HALF | NS_GhostBin | NS_2D | NS_TRI); + +typedef NStencilGhostBin<1, 1, 0> NStencilHalfGhostBin3d; +NStencilStyle(half/ghost/bin/3d, + NStencilHalfGhostBin3d, + NS_HALF | NS_GhostBin | NS_3D | NS_ORTHO); + +typedef NStencilGhostBin<1, 1, 1> NStencilHalfGhostBin3dTri; +NStencilStyle(half/ghost/bin/3d/tri, + NStencilHalfGhostBin3dTri, + NS_HALF | NS_GhostBin | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_GHOST_BIN_H +#define LMP_NSTENCIL_GHOST_BIN_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilGhostBin : public NStencil { + public: + NStencilGhostBin(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp new file mode 100644 index 00000000000..6b0688d9037 --- /dev/null +++ b/src/nstencil_multi.cpp @@ -0,0 +1,133 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "nstencil_multi.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilMulti::NStencilMulti(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- */ + +template +void NStencilMulti::set_stencil_properties() +{ + int n = ncollections; + int i, j; + + // FULL + // Always look up neighbor using full stencil and neighbor's bin + // Stencil cutoff set by i-j cutoff + + // HALF + // Cross collections: use full stencil, looking one way through hierarchy + // smaller -> larger => use full stencil in larger bin + // larger -> smaller => no nstencil required + // If cut offs are same, use half stencil + + for (i = 0; i < n; i++) { + for (j = 0; j < n; j++) { + if (HALF) + if (cutcollectionsq[i][i] > cutcollectionsq[j][j]) continue; + + flag_skip_multi[i][j] = false; + flag_half_multi[i][j] = false; + bin_collection_multi[i][j] = j; + + if (HALF) { + if (cutcollectionsq[i][i] == cutcollectionsq[j][j]) { + flag_half_multi[i][j] = true; + bin_collection_multi[i][j] = i; + } + } + } + } +} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilMulti::create() +{ + int icollection, jcollection, bin_collection, i, j, k, ns, half_flag; + int n = ncollections; + double cutsq; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + for (icollection = 0; icollection < n; icollection++) { + for (jcollection = 0; jcollection < n; jcollection++) { + if (flag_skip_multi[icollection][jcollection]) { + nstencil_multi[icollection][jcollection] = 0; + continue; + } + + ns = 0; + + sx = stencil_sx_multi[icollection][jcollection]; + sy = stencil_sy_multi[icollection][jcollection]; + sz = stencil_sz_multi[icollection][jcollection]; + + mbinx = stencil_mbinx_multi[icollection][jcollection]; + mbiny = stencil_mbiny_multi[icollection][jcollection]; + mbinz = stencil_mbinz_multi[icollection][jcollection]; + + bin_collection = bin_collection_multi[icollection][jcollection]; + cutsq = cutcollectionsq[icollection][jcollection]; + + half_flag = flag_half_multi[icollection][jcollection]; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (half_flag && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (half_flag && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (half_flag && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance_multi(i,j,k,bin_collection) < cutsq) + stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } + + nstencil_multi[icollection][jcollection] = ns; + } + } +} + +namespace LAMMPS_NS { +template class NStencilMulti<0,0,0>; +template class NStencilMulti<0,1,0>; +template class NStencilMulti<1,0,0>; +template class NStencilMulti<1,0,1>; +template class NStencilMulti<1,1,0>; +template class NStencilMulti<1,1,1>; +} diff --git a/src/nstencil_multi.h b/src/nstencil_multi.h new file mode 100644 index 00000000000..4747284f2da --- /dev/null +++ b/src/nstencil_multi.h @@ -0,0 +1,72 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 NSTENCIL_CLASS +// clang-format off +typedef NStencilMulti<0, 0, 0> NStencilFullMulti2d; +NStencilStyle(full/multi/2d, + NStencilFullMulti2d, + NS_FULL | NS_MULTI | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilMulti<0, 1, 0> NStencilFullMulti3d; +NStencilStyle(full/multi/3d, + NStencilFullMulti3d, + NS_FULL | NS_MULTI | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilMulti<1, 0, 0> NStencilHalfMulti2d; +NStencilStyle(half/multi/2d, + NStencilHalfMulti2d, + NS_HALF | NS_MULTI | NS_2D | NS_ORTHO); + +typedef NStencilMulti<1, 0, 1> NStencilHalfMulti2dTri; +NStencilStyle(half/multi/2d/tri, + NStencilHalfMulti2dTri, + NS_HALF | NS_MULTI | NS_2D | NS_TRI); + +typedef NStencilMulti<1, 1, 0> NStencilHalfMulti3d; +NStencilStyle(half/multi/3d, + NStencilHalfMulti3d, + NS_HALF | NS_MULTI | NS_3D | NS_ORTHO); + +typedef NStencilMulti<1, 1, 1> NStencilHalfMulti3dTri; +NStencilStyle(half/multi/3d/tri, + NStencilHalfMulti3dTri, + NS_HALF | NS_MULTI | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_MULTI_H +#define LMP_NSTENCIL_MULTI_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilMulti : public NStencil { + public: + NStencilMulti(class LAMMPS *); + void create() override; + + protected: + void set_stencil_properties() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/nstencil_multi_old.cpp b/src/nstencil_multi_old.cpp new file mode 100644 index 00000000000..b6b99374fab --- /dev/null +++ b/src/nstencil_multi_old.cpp @@ -0,0 +1,85 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "nstencil_multi_old.h" +#include "atom.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilMultiOld::NStencilMultiOld(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilMultiOld::create() +{ + int i, j, k, n, itype; + double rsq, typesq; + int *s; + double *distsq; + int ntypes = atom->ntypes; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + for (itype = 1; itype <= ntypes; itype++) { + + typesq = cuttypesq[itype]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + n = 0; + + // Half and ortho stencils include central bin first + // This preserves the historical order of the neighbor list + // as the old npair classes used to separately parse the central bin first + if (HALF && (!TRI)) s[n++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + rsq = bin_distance(i, j, 0); + if (rsq < typesq) { + distsq[n] = rsq; + s[n++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } + } + nstencil_multi_old[itype] = n; + } +} + +namespace LAMMPS_NS { +template class NStencilMultiOld<0,0,0>; +template class NStencilMultiOld<0,1,0>; +template class NStencilMultiOld<1,0,0>; +template class NStencilMultiOld<1,0,1>; +template class NStencilMultiOld<1,1,0>; +template class NStencilMultiOld<1,1,1>; +} diff --git a/src/nstencil_multi_old.h b/src/nstencil_multi_old.h new file mode 100644 index 00000000000..b5190b6736c --- /dev/null +++ b/src/nstencil_multi_old.h @@ -0,0 +1,69 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 NSTENCIL_CLASS +// clang-format off +typedef NStencilMultiOld<0, 0, 0> NStencilFullMultiOld2d; +NStencilStyle(full/multi/old/2d, + NStencilFullMultiOld2d, + NS_FULL | NS_MULTI_OLD | NS_2D | NS_ORTHO | NS_TRI); + +typedef NStencilMultiOld<0, 1, 0> NStencilFullMultiOld3d; +NStencilStyle(full/multi/old/3d, + NStencilFullMultiOld3d, + NS_FULL | NS_MULTI_OLD | NS_3D | NS_ORTHO | NS_TRI); + +typedef NStencilMultiOld<1, 0, 0> NStencilHalfMultiOld2d; +NStencilStyle(half/multi/old/2d, + NStencilHalfMultiOld2d, + NS_HALF | NS_MULTI_OLD | NS_2D | NS_ORTHO); + +typedef NStencilMultiOld<1, 0, 1> NStencilHalfMultiOld2dTri; +NStencilStyle(half/multi/old/2d/tri, + NStencilHalfMultiOld2dTri, + NS_HALF | NS_MULTI_OLD | NS_2D | NS_TRI); + +typedef NStencilMultiOld<1, 1, 0> NStencilHalfMultiOld3d; +NStencilStyle(half/multi/old/3d, + NStencilHalfMultiOld3d, + NS_HALF | NS_MULTI_OLD | NS_3D | NS_ORTHO); + +typedef NStencilMultiOld<1, 1, 1> NStencilHalfMultiOld3dTri; +NStencilStyle(half/multi/old/3d/tri, + NStencilHalfMultiOld3dTri, + NS_HALF | NS_MULTI_OLD | NS_3D | NS_TRI); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_MULTI_OLD_H +#define LMP_NSTENCIL_MULTI_OLD_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilMultiOld : public NStencil { + public: + NStencilMultiOld(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ From e8cd99289135cb3ae2b58ac9aadff3a4326583f3 Mon Sep 17 00:00:00 2001 From: Goff Date: Tue, 18 Oct 2022 17:29:56 -0600 Subject: [PATCH 013/300] fixed bug for bikflag 1 dgradflag 0 --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index e9899d1962a..c931d2aff5d 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -373,7 +373,7 @@ void ComputePACE::compute_array() int k = typeoffset_global; for (int icoeff = 0; icoeff < ncoeff; icoeff++){ - pace[0][k++] += Bs(icoeff); + pace[irow][k++] += Bs(icoeff); } } else { int k = 3; From 3a57f5185d8b0e7803702c485cf91bacc921c64b Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:07:50 -0600 Subject: [PATCH 014/300] add examples --- examples/test.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt new file mode 100644 index 00000000000..58e2592d61b --- /dev/null +++ b/examples/test.txt @@ -0,0 +1,2 @@ +this is a test + From 0159810cc8ef569393b09cc7437115c2019a4994 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 28 Sep 2022 13:08:56 -0600 Subject: [PATCH 015/300] add examples --- .../multi-elem/coupling_coefficients.yace | 294 ++++++++++++++++++ examples/pace/multi-elem/latte_cell_0.data | 172 ++++++++++ examples/pace/multi-elem/latte_cell_0.xyz | 163 ++++++++++ .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 0 -> 1424928 bytes examples/pace/multi-elem/loop.sh | 7 + examples/pace/multi-elem/test_en.py | 84 +++++ 6 files changed, 720 insertions(+) create mode 100644 examples/pace/multi-elem/coupling_coefficients.yace create mode 100644 examples/pace/multi-elem/latte_cell_0.data create mode 100644 examples/pace/multi-elem/latte_cell_0.xyz create mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy create mode 100755 examples/pace/multi-elem/loop.sh create mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/pace/multi-elem/coupling_coefficients.yace new file mode 100644 index 00000000000..2953222216c --- /dev/null +++ b/examples/pace/multi-elem/coupling_coefficients.yace @@ -0,0 +1,294 @@ +elements: [H, N, O] +E0: [0.000000, 0.000000, 0.000000] +deltaSplineBins: 0.001000 +embeddings: + 0: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 1: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} + 2: {ndensity: 1, FS_parameters: [1.0, 1.0], npoti: FinnisSinclair, rho_core_cutoff: 100000, drho_core_cutoff: 250} +bonds: + [0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.0, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [0, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 4.4, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [1, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 0]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 1]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.7, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} + [2, 2]: {nradmax: 2, lmax: 2, nradbasemax: 2, radbasename: ChebExpCos, radparameters: [3.3], radcoefficients: [[[1, 0], [1, 0], [1, 0]], [[0, 1], [0, 1], [0, 1]]], prehc: 0, lambdahc: 3.3, rcut: 5.5, dcut: 0.01, rcut_in: 0.1, dcut_in: 0.01, inner_cutoff_type: distance} +functions: + 0: + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 0, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 0, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 0, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 1: + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 1, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 1, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + 2: + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [1], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [1], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 1, ndensity: 1, num_ms_combs: 1, mus: [2], ns: [2], ls: [0], ms_combs: [0], ctildes: [1.0]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 1], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [2, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 1], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 0], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 1], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [0, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [1, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [1, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 1], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [2, 2], ns: [2, 2], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 0], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 1], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [1, 2], ns: [2, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 3, mus: [1, 2], ns: [2, 1], ls: [1, 1], ms_combs: [-1, 1, 0, 0, 1, -1], ctildes: [0.5773502691896257, -0.5773502691896257, 0.5773502691896257]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [0, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 2, ndensity: 1, num_ms_combs: 5, mus: [2, 2], ns: [1, 2], ls: [2, 2], ms_combs: [-2, 2, -1, 1, 0, 0, 1, -1, 2, -2], ctildes: [0.4472135954999579, -0.4472135954999579, 0.447213595499958, -0.4472135954999579, 0.4472135954999579]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 0], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 0, 1], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [2, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [0, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 2], ns: [1, 1, 1], ls: [1, 2, 1], ms_combs: [-1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -2, 1, 1, -1, 0, 1, 0, -1], ctildes: [0.10540925533894599, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.21081851067789198, -0.18257418583505536, 0.25819888974716115, -0.18257418583505536, 0.10540925533894599]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 1, 1], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [2, 1, 1], ms_combs: [-2, 1, 1, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 2, -1, -1], ctildes: [0.25819888974716115, -0.18257418583505536, -0.18257418583505536, 0.10540925533894599, 0.21081851067789198, 0.10540925533894599, -0.18257418583505536, -0.18257418583505536, 0.25819888974716115]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 9, mus: [1, 2, 2], ns: [1, 1, 1], ls: [1, 1, 2], ms_combs: [-1, -1, 2, -1, 0, 1, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 0, -1, 1, 1, -2], ctildes: [0.19999999999999998, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.16329931618554522, -0.1414213562373095, 0.08164965809277261, -0.1414213562373095, 0.19999999999999998]} + - {mu0: 2, rank: 3, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1], ns: [1, 1, 1], ls: [2, 2, 2], ms_combs: [-2, 0, 2, -2, 1, 1, -2, 2, 0, -1, -1, 2, -1, 0, 1, -1, 1, 0, -1, 2, -1, 0, -2, 2, 0, -1, 1, 0, 0, 0, 0, 1, -1, 0, 2, -2, 1, -2, 1, 1, -1, 0, 1, 0, -1, 1, 1, -2, 2, -2, 0, 2, -1, -1, 2, 0, -2], ctildes: [0.10690449676496976, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, 0.05345224838248488, -0.10690449676496976, 0.05345224838248488, 0.10690449676496976, -0.1309307341415954, 0.05345224838248488, 0.05345224838248488, -0.1309307341415954, 0.10690449676496976, -0.1309307341415954, 0.10690449676496976]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 0], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 0, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 0, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [0, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 1], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 1, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 1, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [1, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} + - {mu0: 2, rank: 4, ndensity: 1, num_ms_combs: 19, mus: [2, 2, 2, 2], ns: [1, 1, 1, 1], ls: [1, 1, 1, 1], ms_combs: [-1, -1, 1, 1, -1, 0, 0, 1, -1, 0, 1, 0, -1, 1, -1, 1, -1, 1, 0, 0, -1, 1, 1, -1, 0, -1, 0, 1, 0, -1, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 1, 0, -1, 1, -1, -1, 1, 1, -1, 0, 0, 1, -1, 1, -1, 1, 0, -1, 0, 1, 0, 0, -1, 1, 1, -1, -1], ctildes: [0.0, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, -0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0, 0.0, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.0, 0.0, 0.0]} diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/pace/multi-elem/latte_cell_0.data new file mode 100644 index 00000000000..b18ec13a4d9 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.data @@ -0,0 +1,172 @@ +latte_cell_0.data (written by ASE) + +161 atoms +3 atom types +0.0 12 xlo xhi +0.0 12 ylo yhi +0.0 12 zlo zhi + + +Atoms + + 1 3 1.2688096799999999 2.0079938400000001 2.7446829899999998 + 2 1 1.5343068200000001 2.0638766500000001 3.7105626900000002 + 3 1 1.7848279600000001 2.6755003400000001 2.2268847200000002 + 4 1 1.56251195 1.1089126899999999 2.3978115199999999 + 5 1 11.61728216 5.71881094 2.4732045999999999 + 6 2 6.5501865600000002 4.7439566800000001 3.6526025500000001 + 7 1 6.4564895299999998 4.1571673000000002 2.6975267999999999 + 8 2 2.0835561 1.59406078 8.5498047600000007 + 9 1 1.1041162499999999 1.4971771599999999 8.1507879200000009 + 10 1 2.60115534 2.2945960400000001 7.95374187 + 11 1 1.9817723300000001 2.0194066400000001 9.5128239400000005 + 12 1 0.99333338000000004 3.6983907299999998 8.1903947899999991 + 13 3 4.9484070999999998 5.3645501400000004 9.16152503 + 14 1 9.0716170599999995 9.3748453999999999 4.2276462400000003 + 15 2 0.30864418999999998 7.7136657499999997 2.9274995599999998 + 16 1 0.47661671 10.1807211 3.71160091 + 17 1 1.07465334 7.8226921999999997 3.5771466900000002 + 18 1 0.38402249999999999 8.3770493300000002 2.1748437100000002 + 19 1 11.435413410000001 7.7903735999999997 3.4040245499999999 + 20 3 6.1570384599999999 10.25988474 3.50899568 + 21 1 5.5932224399999999 9.5632944700000007 3.1446559000000001 + 22 2 1.7785569000000001 7.6312579300000003 9.1488452299999992 + 23 1 2.5594048599999999 6.96832838 9.3069700199999996 + 24 1 2.12441551 8.4547986999999996 8.6428622900000001 + 25 1 1.04552782 7.1697722800000001 8.5894244999999998 + 26 1 0.34824445999999998 10.17844028 9.1629463799999993 + 27 3 5.9638830399999998 10.723709400000001 9.4568803900000002 + 28 1 6.5890835699999997 10.926486110000001 8.7981925800000003 + 29 2 7.1065890400000002 1.83029753 3.3452543600000002 + 30 1 6.9229304999999997 1.8465022099999999 4.3089037100000001 + 31 1 8.0780433600000006 1.9303052199999999 3.2089521400000001 + 32 1 5.6795373600000003 10.471831630000001 4.3244390499999996 + 33 1 6.82999417 0.95850113000000003 2.9815288199999999 + 34 2 11.383805349999999 4.6301225199999996 2.5393688399999998 + 35 1 0.37927047000000003 4.1943216300000001 2.59073807 + 36 3 5.2376410099999999 1.91523463 9.7240636400000007 + 37 1 4.7887202499999999 2.7036936499999999 9.5698142300000004 + 38 1 9.8129906699999996 9.2075140700000002 4.08265499 + 39 1 4.7980879500000002 1.1403494700000001 9.6739962800000008 + 40 1 5.4455845600000004 2.0102099999999998 10.620773509999999 + 41 3 0.90954338999999995 4.6240093199999999 8.3108110600000007 + 42 1 11.909735319999999 4.7483814000000004 8.2500624600000005 + 43 2 7.3223424499999998 7.5866457 3.0245226500000002 + 44 1 7.4470362200000002 8.3169646700000008 3.7148003300000001 + 45 1 6.9073805300000002 7.9385021 2.1723768699999999 + 46 1 5.5542868500000004 5.1176065800000003 3.7655251999999999 + 47 1 6.8124309500000004 6.7778811599999997 3.3973232499999999 + 48 2 0.29575823000000001 11.04303794 3.1016142499999999 + 49 1 0.86490721999999998 11.83879228 3.6389974500000002 + 50 3 6.85201686 8.0846369300000003 8.8762878799999996 + 51 1 7.3351430100000004 7.4263498700000001 9.3821674799999997 + 52 1 6.7919613300000004 7.7595477199999996 7.9716174799999999 + 53 1 3.8990487699999998 6.4283490399999996 8.8832409600000002 + 54 1 5.95997296 9.9329723199999993 9.4746654699999997 + 55 3 11.403658979999999 10.371960359999999 9.2766092199999992 + 56 1 10.983666360000001 9.5157199800000001 9.1478757300000009 + 57 3 1.5223279700000001 5.3327331100000004 0.57537605999999997 + 58 1 2.3815113999999999 5.7251991200000001 0.77945295999999997 + 59 1 0.92079957000000001 6.0931282299999996 0.62203253000000003 + 60 3 11.23490924 2.9153355200000002 6.7585064099999999 + 61 1 10.792340190000001 2.9755225099999998 5.9000018399999998 + 62 1 10.751242059999999 2.1896156000000002 7.1807401500000001 + 63 3 11.39027944 7.3462855600000001 6.7258299499999996 + 64 1 10.92025679 6.69831954 7.2776696599999999 + 65 1 11.12238028 7.0632020999999998 5.8394107799999997 + 66 3 8.4684319499999994 10.71736286 10.60018556 + 67 1 8.5672201599999998 11.420466080000001 11.25794033 + 68 1 9.0803109800000001 10.04804949 10.9406517 + 69 3 6.5851757299999996 9.9940623399999993 6.5574614899999997 + 70 1 7.0276325799999997 10.76096604 6.1723333699999996 + 71 1 5.7419327400000002 10.384583920000001 6.8228822999999998 + 72 3 1.7600546399999999 1.01771919 5.4926787700000004 + 73 1 1.9704209100000001 1.01748419 6.4429703700000003 + 74 1 1.42973007 0.11076352 5.3470644900000002 + 75 1 2.61130613 9.7034123700000006 10.450306830000001 + 76 3 3.05086908 10.48131334 10.085189310000001 + 77 1 3.0032693199999998 10.93357295 9.3652121000000008 + 78 3 6.4631532199999997 8.7652058299999993 11.967847969999999 + 79 1 6.4506808400000004 9.6596595300000008 11.588956019999999 + 80 1 5.6611629700000003 8.3535737700000006 11.638443329999999 + 81 3 1.1745999300000001 5.2420690800000003 5.1001449699999997 + 82 1 1.31932881 5.5236392399999996 6.0128966300000002 + 83 1 0.58053834999999998 4.4898134599999997 5.2325565000000003 + 84 3 6.7275549699999999 0.78840874999999999 7.3817280900000002 + 85 1 6.3887965600000003 1.54670982 6.8634520400000003 + 86 1 7.6791783999999996 0.94039024000000004 7.2649461000000004 + 87 3 8.5476657199999995 0.0064750299999999997 5.0450514100000001 + 88 1 8.8736290899999997 11.10484108 4.8601807900000003 + 89 1 8.0477597599999999 0.20198361000000001 4.2357399400000002 + 90 3 1.2895030000000001 8.4280097900000008 11.82038504 + 91 1 1.4766666399999999 8.1087866399999999 10.87290333 + 92 1 2.10220669 8.1947620200000006 0.29510553 + 93 3 9.6797907599999995 6.4207335499999996 4.3469150599999997 + 94 1 8.9271530099999996 6.72940235 3.7974122399999999 + 95 1 10.20024126 5.9167739199999998 3.66976111 + 96 3 3.57411616 6.7041021699999996 3.8825478499999999 + 97 1 2.8894899500000002 6.1560529800000001 4.2980848099999998 + 98 1 4.3613707699999997 6.4304732400000004 4.3804965400000002 + 99 3 4.7506556 11.441853350000001 1.12537088 + 100 1 4.0861192800000001 10.748523670000001 1.1923347099999999 + 101 1 5.5035301600000004 10.965688249999999 0.73651277000000004 + 102 3 9.5254526399999992 4.8994443900000002 8.3732284099999994 + 103 1 8.7885959800000002 4.3508043900000004 8.6632831400000008 + 104 1 9.6149067499999994 4.6084911499999999 7.4540068699999997 + 105 3 4.1970746700000001 1.34592128 3.67401439 + 106 1 4.9437011999999996 0.74406280999999996 3.514068 + 107 1 4.1905534900000001 1.7730376000000001 2.7963049400000002 + 108 3 1.88232618 11.95451227 0.60024434000000004 + 109 1 2.0464587299999999 11.02454723 0.38329541 + 110 1 1.1518493700000001 0.17494340999999999 11.99928285 + 111 3 3.7593842199999998 11.01685511 6.4562050800000002 + 112 1 3.2125414299999999 10.4553747 5.8894917099999997 + 113 1 3.4166026899999999 10.821557670000001 7.3296563900000002 + 114 3 9.7039841399999993 3.95001545 11.894743249999999 + 115 1 10.461666060000001 3.9163117999999999 11.285435229999999 + 116 1 10.09834695 4.4026997400000001 0.68193007999999999 + 117 3 8.5639596400000002 3.5169507499999999 5.6224104199999996 + 118 1 8.3966650299999994 2.6262214699999999 5.2638164300000003 + 119 1 7.9695371399999999 4.0825059799999996 5.0049407400000003 + 120 3 9.6736245000000007 0.48030482000000002 7.9257577799999996 + 121 1 9.6131980400000003 11.883419180000001 7.1680923999999999 + 122 1 9.9784050299999993 11.90238635 8.63894187 + 123 3 3.9424153099999999 6.9650296699999998 11.60258943 + 124 1 4.2767152700000004 6.8460048999999996 10.670225220000001 + 125 1 4.6570638500000001 6.5129461500000003 0.091159879999999999 + 126 3 3.0570173199999999 9.6631958499999993 3.6611250599999998 + 127 1 2.5400490100000002 9.5743355000000001 2.8444047600000002 + 128 1 2.9314874400000002 8.7809807200000005 4.0425234200000002 + 129 3 7.4549612700000001 5.8430850799999998 11.011384720000001 + 130 1 8.1675884100000005 5.4639182799999997 10.47644287 + 131 1 6.7135573700000002 5.8393818399999997 10.361099749999999 + 132 3 9.8029139300000008 7.9578901699999998 10.21404942 + 133 1 10.38910242 8.3400641400000008 10.87949429 + 134 1 9.0637612000000001 7.6392374099999998 10.756928869999999 + 135 3 4.4963435599999997 4.1067935799999997 11.73387805 + 136 1 4.5473727899999998 4.9577970899999997 11.19223377 + 137 1 5.3588818399999996 4.1756111699999998 0.20355936999999999 + 138 3 9.5923448100000002 7.3418014600000001 1.34856172 + 139 1 8.8715593300000002 7.4776837199999999 2.05040471 + 140 1 9.0443221699999992 7.2732200799999998 0.54011714 + 141 3 7.0350963100000001 3.22348773 0.7070824 + 142 1 7.1784470499999999 4.1340314300000003 1.0184109699999999 + 143 1 7.7787854400000001 2.7888888399999998 1.15838887 + 144 3 9.2124107800000008 0.48085899999999998 1.21751966 + 145 1 9.6620436499999993 11.657271079999999 1.45318397 + 146 1 9.9404883900000005 1.11619136 1.18684594 + 147 3 1.19704207 9.5859959200000002 6.6190888899999996 + 148 1 0.25606413 9.6737366500000004 6.8319340899999998 + 149 1 1.2690051899999999 8.6249354900000004 6.5480112500000001 + 150 3 0.78256133999999999 2.6040609300000002 11.453408359999999 + 151 1 0.61502181 3.5607405999999999 11.40300991 + 152 1 1.55655312 2.5457368800000002 10.866733030000001 + 153 3 5.8627936099999998 7.1217054800000001 5.89173203 + 154 1 6.3432410700000004 7.9400136699999999 6.0855840299999997 + 155 1 5.5077296699999998 6.8468306800000001 6.7436875799999996 + 156 3 10.887828150000001 9.9637482500000001 0.51092815999999996 + 157 1 11.78841776 10.322043069999999 0.44704989000000001 + 158 1 11.02688182 9.2051906700000004 1.0976661299999999 + 159 3 3.93073389 4.1645674499999998 5.7137877000000001 + 160 1 4.6884062999999996 3.5788913299999998 5.5644605800000004 + 161 1 4.2956948500000003 4.7644888099999996 6.3801669700000003 diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/pace/multi-elem/latte_cell_0.xyz new file mode 100644 index 00000000000..afe0a27f359 --- /dev/null +++ b/examples/pace/multi-elem/latte_cell_0.xyz @@ -0,0 +1,163 @@ +161 +Lattice="12.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 12.0" Properties=species:S:1:pos:R:3 pbc="T T T" +O 1.26880968 2.00799384 2.74468299 +H 1.53430682 2.06387665 3.71056269 +H 1.78482796 2.67550034 2.22688472 +H 1.56251195 1.10891269 2.39781152 +H 11.61728216 5.71881094 2.47320460 +N 6.55018656 4.74395668 3.65260255 +H 6.45648953 4.15716730 2.69752680 +N 2.08355610 1.59406078 8.54980476 +H 1.10411625 1.49717716 8.15078792 +H 2.60115534 2.29459604 7.95374187 +H 1.98177233 2.01940664 9.51282394 +H 0.99333338 3.69839073 8.19039479 +O 4.94840710 5.36455014 9.16152503 +H 9.07161706 9.37484540 4.22764624 +N 0.30864419 7.71366575 2.92749956 +H 0.47661671 10.18072110 3.71160091 +H 1.07465334 7.82269220 3.57714669 +H 0.38402250 8.37704933 2.17484371 +H 11.43541341 7.79037360 3.40402455 +O 6.15703846 10.25988474 3.50899568 +H 5.59322244 9.56329447 3.14465590 +N 1.77855690 7.63125793 9.14884523 +H 2.55940486 6.96832838 9.30697002 +H 2.12441551 8.45479870 8.64286229 +H 1.04552782 7.16977228 8.58942450 +H 0.34824446 10.17844028 9.16294638 +O 5.96388304 10.72370940 9.45688039 +H 6.58908357 10.92648611 8.79819258 +N 7.10658904 1.83029753 3.34525436 +H 6.92293050 1.84650221 4.30890371 +H 8.07804336 1.93030522 3.20895214 +H 5.67953736 10.47183163 4.32443905 +H 6.82999417 0.95850113 2.98152882 +N 11.38380535 4.63012252 2.53936884 +H 0.37927047 4.19432163 2.59073807 +O 5.23764101 1.91523463 9.72406364 +H 4.78872025 2.70369365 9.56981423 +H 9.81299067 9.20751407 4.08265499 +H 4.79808795 1.14034947 9.67399628 +H 5.44558456 2.01021000 10.62077351 +O 0.90954339 4.62400932 8.31081106 +H 11.90973532 4.74838140 8.25006246 +N 7.32234245 7.58664570 3.02452265 +H 7.44703622 8.31696467 3.71480033 +H 6.90738053 7.93850210 2.17237687 +H 5.55428685 5.11760658 3.76552520 +H 6.81243095 6.77788116 3.39732325 +N 0.29575823 11.04303794 3.10161425 +H 0.86490722 11.83879228 3.63899745 +O 6.85201686 8.08463693 8.87628788 +H 7.33514301 7.42634987 9.38216748 +H 6.79196133 7.75954772 7.97161748 +H 3.89904877 6.42834904 8.88324096 +H 5.95997296 9.93297232 9.47466547 +O 11.40365898 10.37196036 9.27660922 +H 10.98366636 9.51571998 9.14787573 +O 1.52232797 5.33273311 0.57537606 +H 2.38151140 5.72519912 0.77945296 +H 0.92079957 6.09312823 0.62203253 +O 11.23490924 2.91533552 6.75850641 +H 10.79234019 2.97552251 5.90000184 +H 10.75124206 2.18961560 7.18074015 +O 11.39027944 7.34628556 6.72582995 +H 10.92025679 6.69831954 7.27766966 +H 11.12238028 7.06320210 5.83941078 +O 8.46843195 10.71736286 10.60018556 +H 8.56722016 11.42046608 11.25794033 +H 9.08031098 10.04804949 10.94065170 +O 6.58517573 9.99406234 6.55746149 +H 7.02763258 10.76096604 6.17233337 +H 5.74193274 10.38458392 6.82288230 +O 1.76005464 1.01771919 5.49267877 +H 1.97042091 1.01748419 6.44297037 +H 1.42973007 0.11076352 5.34706449 +H 2.61130613 9.70341237 10.45030683 +O 3.05086908 10.48131334 10.08518931 +H 3.00326932 10.93357295 9.36521210 +O 6.46315322 8.76520583 11.96784797 +H 6.45068084 9.65965953 11.58895602 +H 5.66116297 8.35357377 11.63844333 +O 1.17459993 5.24206908 5.10014497 +H 1.31932881 5.52363924 6.01289663 +H 0.58053835 4.48981346 5.23255650 +O 6.72755497 0.78840875 7.38172809 +H 6.38879656 1.54670982 6.86345204 +H 7.67917840 0.94039024 7.26494610 +O 8.54766572 0.00647503 5.04505141 +H 8.87362909 11.10484108 4.86018079 +H 8.04775976 0.20198361 4.23573994 +O 1.28950300 8.42800979 11.82038504 +H 1.47666664 8.10878664 10.87290333 +H 2.10220669 8.19476202 0.29510553 +O 9.67979076 6.42073355 4.34691506 +H 8.92715301 6.72940235 3.79741224 +H 10.20024126 5.91677392 3.66976111 +O 3.57411616 6.70410217 3.88254785 +H 2.88948995 6.15605298 4.29808481 +H 4.36137077 6.43047324 4.38049654 +O 4.75065560 11.44185335 1.12537088 +H 4.08611928 10.74852367 1.19233471 +H 5.50353016 10.96568825 0.73651277 +O 9.52545264 4.89944439 8.37322841 +H 8.78859598 4.35080439 8.66328314 +H 9.61490675 4.60849115 7.45400687 +O 4.19707467 1.34592128 3.67401439 +H 4.94370120 0.74406281 3.51406800 +H 4.19055349 1.77303760 2.79630494 +O 1.88232618 11.95451227 0.60024434 +H 2.04645873 11.02454723 0.38329541 +H 1.15184937 0.17494341 11.99928285 +O 3.75938422 11.01685511 6.45620508 +H 3.21254143 10.45537470 5.88949171 +H 3.41660269 10.82155767 7.32965639 +O 9.70398414 3.95001545 11.89474325 +H 10.46166606 3.91631180 11.28543523 +H 10.09834695 4.40269974 0.68193008 +O 8.56395964 3.51695075 5.62241042 +H 8.39666503 2.62622147 5.26381643 +H 7.96953714 4.08250598 5.00494074 +O 9.67362450 0.48030482 7.92575778 +H 9.61319804 11.88341918 7.16809240 +H 9.97840503 11.90238635 8.63894187 +O 3.94241531 6.96502967 11.60258943 +H 4.27671527 6.84600490 10.67022522 +H 4.65706385 6.51294615 0.09115988 +O 3.05701732 9.66319585 3.66112506 +H 2.54004901 9.57433550 2.84440476 +H 2.93148744 8.78098072 4.04252342 +O 7.45496127 5.84308508 11.01138472 +H 8.16758841 5.46391828 10.47644287 +H 6.71355737 5.83938184 10.36109975 +O 9.80291393 7.95789017 10.21404942 +H 10.38910242 8.34006414 10.87949429 +H 9.06376120 7.63923741 10.75692887 +O 4.49634356 4.10679358 11.73387805 +H 4.54737279 4.95779709 11.19223377 +H 5.35888184 4.17561117 0.20355937 +O 9.59234481 7.34180146 1.34856172 +H 8.87155933 7.47768372 2.05040471 +H 9.04432217 7.27322008 0.54011714 +O 7.03509631 3.22348773 0.70708240 +H 7.17844705 4.13403143 1.01841097 +H 7.77878544 2.78888884 1.15838887 +O 9.21241078 0.48085900 1.21751966 +H 9.66204365 11.65727108 1.45318397 +H 9.94048839 1.11619136 1.18684594 +O 1.19704207 9.58599592 6.61908889 +H 0.25606413 9.67373665 6.83193409 +H 1.26900519 8.62493549 6.54801125 +O 0.78256134 2.60406093 11.45340836 +H 0.61502181 3.56074060 11.40300991 +H 1.55655312 2.54573688 10.86673303 +O 5.86279361 7.12170548 5.89173203 +H 6.34324107 7.94001367 6.08558403 +H 5.50772967 6.84683068 6.74368758 +O 10.88782815 9.96374825 0.51092816 +H 11.78841776 10.32204307 0.44704989 +H 11.02688182 9.20519067 1.09766613 +O 3.93073389 4.16456745 5.71378770 +H 4.68840630 3.57889133 5.56446058 +H 4.29569485 4.76448881 6.38016697 diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy new file mode 100644 index 0000000000000000000000000000000000000000..27f08781454251ec44961a1f4a90ba6fb86797b0 GIT binary patch literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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
+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` 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 Date: Thu, 29 Sep 2022 10:07:22 -0600 Subject: [PATCH 016/300] Working multi-element example --- examples/pace/multi-elem/README.md | 5 ++++ examples/pace/multi-elem/loop.sh | 1 + examples/pace/multi-elem/test_en.py | 6 ++-- src/ML-PACE/compute_pace.cpp | 45 ++++++++++++++++++++--------- 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 examples/pace/multi-elem/README.md diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md new file mode 100644 index 00000000000..e2ab583d10a --- /dev/null +++ b/examples/pace/multi-elem/README.md @@ -0,0 +1,5 @@ +Check that seg fault doesn't occur by doing: + + ./loop.sh + +which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/loop.sh b/examples/pace/multi-elem/loop.sh index cd9f6da8953..613636a30ef 100755 --- a/examples/pace/multi-elem/loop.sh +++ b/examples/pace/multi-elem/loop.sh @@ -1,6 +1,7 @@ for (( ; ; )) do python test_en.py + # terminate loop if seg fault if [[ $? -eq 139 ]]; then break fi diff --git a/examples/pace/multi-elem/test_en.py b/examples/pace/multi-elem/test_en.py index b9dc0641890..17c19240808 100644 --- a/examples/pace/multi-elem/test_en.py +++ b/examples/pace/multi-elem/test_en.py @@ -19,6 +19,8 @@ def run_struct(f): cmds = ["-screen", "none", "-log", "none"] lmp = lammps(cmdargs = cmds) + print("Made LAMMPS instance") + def run_lammps(dgradflag): # simulation settings @@ -68,8 +70,9 @@ def run_lammps(dgradflag): nd = 91 dgradflag = 0 + run_lammps(dgradflag) - + lmp_pace = lmp.numpy.extract_compute("pace", LMP_STYLE_GLOBAL, LMP_TYPE_ARRAY) print ('global shape',np.shape(lmp_pace)) np.save('%s_chi_i.npy' % file_prefix,lmp_pace) @@ -77,7 +80,6 @@ def run_lammps(dgradflag): del lmp return None - import glob for f in sorted(glob.glob('*.xyz')): print ('running %s' % f) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 8c2b0b1afaa..74f00f9b526 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -38,7 +38,6 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : paceall(nullptr), pace_peratom(nullptr), basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) { - array_flag = 1; extarray = 0; bikflag = 0; @@ -54,40 +53,53 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + for (int i=0; icutoffmax; - double cutmax = basis_set->cutoffmax; + cutmax = basis_set->cutoffmax; double cuti; double radelemall = 0.5; + /* memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); + printf("----- looping over ntypes\n"); for (int i = 1; i <= ntypes; i++) { + printf("----- map[%d]: %d\n", i, map[i]); cuti = basis_set->radial_functions->cut(map[i], map[i]); if (cuti > cutmax) cutmax = cuti; cutsq[i][i] = cuti*cuti; for (int j = i+1; j <= ntypes; j++) { + //printf("----- j: %d\n", j); + printf("----- map[%d]: %d\n", j, map[j]); cuti = basis_set->radial_functions->cut(map[i], map[j]); cutsq[i][j] = cutsq[j][i] = cuti*cuti; } } + printf("----- looped over ntypes\n"); + */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - int nvalues = ncoeff; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- - nperdim = ncoeff; + //nperdim = ncoeff; + ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nperdim; - zoffset = 2*nperdim; + yoffset = nvalues; //nperdim; + zoffset = 2*nvalues; //nperdim; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -101,7 +113,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : lastcol = size_array_cols-1; ndims_peratom = ndims_force; - size_peratom = ndims_peratom*nperdim*atom->ntypes; + size_peratom = ndims_peratom*nvalues*atom->ntypes; nmax = 0; } @@ -123,9 +135,14 @@ void ComputePACE::init() { if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); + + printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + //if (basis_set->cutoffmax > force->pair->cutforce) + // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); + // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -249,8 +266,8 @@ void ComputePACE::compute_array() const int itype = type[i]; const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - const int typeoffset_local = ndims_peratom*nperdim*(itype-1); - const int typeoffset_global = nperdim*(itype-1); + const int typeoffset_local = ndims_peratom*nvalues*(itype-1); + const int typeoffset_global = nvalues*(itype-1); ace = new ACECTildeEvaluator(*basis_set); int n_r1, n_rp = 0; @@ -369,9 +386,9 @@ void ComputePACE::compute_array() // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { - const int typeoffset_local = ndims_peratom*nperdim*itype; - const int typeoffset_global = nperdim*itype; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + const int typeoffset_local = ndims_peratom*nvalues*itype; + const int typeoffset_global = nvalues*itype; + for (int icoeff = 0; icoeff < nvalues; icoeff++) { for (int i = 0; i < ntotal; i++) { double *pacedi = pace_peratom[i]+typeoffset_local; int iglobal = atom->tag[i]; @@ -462,7 +479,7 @@ void ComputePACE::dbdotr_compute() const int typeoffset_local = ndims_peratom*nvalues*itype; const int typeoffset_global = nvalues*itype; double *pacedi = pace_peratom[i]+typeoffset_local; - for (int icoeff = 0; icoeff < nperdim; icoeff++) { + for (int icoeff = 0; icoeff < nvalues; icoeff++) { double dbdx = pacedi[icoeff]; double dbdy = pacedi[icoeff+yoffset]; double dbdz = pacedi[icoeff+zoffset]; From e74b6769a9011945c92d2033e5082c5fc078846c Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 29 Sep 2022 10:53:28 -0600 Subject: [PATCH 017/300] No need to populate map in constructor --- src/ML-PACE/compute_pace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 74f00f9b526..e9899d1962a 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -56,9 +56,11 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : // map[i] = which element the Ith atom type is, -1 if not mapped // map[0] is not used memory->create(map,ntypes+1,"pace:map"); + /* for (int i=0; i Date: Tue, 18 Oct 2022 17:29:56 -0600 Subject: [PATCH 018/300] fixed bug for bikflag 1 dgradflag 0 --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index e9899d1962a..c931d2aff5d 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -373,7 +373,7 @@ void ComputePACE::compute_array() int k = typeoffset_global; for (int icoeff = 0; icoeff < ncoeff; icoeff++){ - pace[0][k++] += Bs(icoeff); + pace[irow][k++] += Bs(icoeff); } } else { int k = 3; From fcc47158b382440f6ca939f1bcbdfdd610a3e175 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 29 Oct 2022 20:35:04 -0600 Subject: [PATCH 019/300] Adding other npair classes --- src/npair_bin.cpp | 99 +++++++--- src/npair_bin.h | 35 +++- src/npair_bin_atomonly.cpp | 54 ++++-- src/npair_bin_atomonly.h | 37 +++- src/npair_bin_ghost.cpp | 188 +++++++++++++++++++ src/npair_bin_ghost.h | 53 ++++++ src/npair_halffull.cpp | 142 +++++++++++++++ src/npair_halffull.h | 115 ++++++++++++ src/npair_multi.cpp | 205 +++++++++++++++++++++ src/npair_multi.h | 85 +++++++++ src/npair_multi_old.cpp | 236 ++++++++++++++++++++++++ src/npair_multi_old.h | 85 +++++++++ src/npair_nsq.cpp | 205 +++++++++++++++++++++ src/npair_nsq.h | 76 ++++++++ src/npair_nsq_ghost.cpp | 176 ++++++++++++++++++ src/npair_nsq_ghost.h | 53 ++++++ src/npair_respa_bin.cpp | 240 +++++++++++++++++++++++++ src/npair_respa_bin.h | 58 ++++++ src/npair_respa_nsq.cpp | 214 ++++++++++++++++++++++ src/npair_respa_nsq.h | 53 ++++++ src/npair_skip.cpp | 102 +++++++++++ src/npair_skip.h | 59 ++++++ src/npair_skip_respa.cpp | 163 +++++++++++++++++ src/npair_skip_respa.h | 48 +++++ src/npair_skip_size_off2on.cpp | 100 +++++++++++ src/npair_skip_size_off2on.h | 48 +++++ src/npair_skip_size_off2on_oneside.cpp | 163 +++++++++++++++++ src/npair_skip_size_off2on_oneside.h | 48 +++++ src/nstencil_ghost_bin.h | 12 +- 29 files changed, 3099 insertions(+), 53 deletions(-) create mode 100644 src/npair_bin_ghost.cpp create mode 100644 src/npair_bin_ghost.h create mode 100644 src/npair_halffull.cpp create mode 100644 src/npair_halffull.h create mode 100644 src/npair_multi.cpp create mode 100644 src/npair_multi.h create mode 100644 src/npair_multi_old.cpp create mode 100644 src/npair_multi_old.h create mode 100644 src/npair_nsq.cpp create mode 100644 src/npair_nsq.h create mode 100644 src/npair_nsq_ghost.cpp create mode 100644 src/npair_nsq_ghost.h create mode 100644 src/npair_respa_bin.cpp create mode 100644 src/npair_respa_bin.h create mode 100644 src/npair_respa_nsq.cpp create mode 100644 src/npair_respa_nsq.h create mode 100644 src/npair_skip.cpp create mode 100644 src/npair_skip.h create mode 100644 src/npair_skip_respa.cpp create mode 100644 src/npair_skip_respa.h create mode 100644 src/npair_skip_size_off2on.cpp create mode 100644 src/npair_skip_size_off2on.h create mode 100644 src/npair_skip_size_off2on_oneside.cpp create mode 100644 src/npair_skip_size_off2on_oneside.h diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index 294336a03a6..83f8c53ecc3 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -27,23 +27,35 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBin::build(NeighList *list) +template +void NPairBin::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; int *neighptr; double **x = atom->x; + double *radius = atom->radius; int *type = atom->type; int *mask = atom->mask; tagint *tag = atom->tag; @@ -59,6 +71,9 @@ void NPairBin::build(NeighList *list) if (molecular == Atom::TEMPLATE) moltemplate = 1; else moltemplate = 0; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -141,22 +156,48 @@ void NPairBin::build(NeighList *list) 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 != Atom::ATOMIC) { - 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; + rsq = delx * delx + dely * dely + delz * delz; + + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } } } } @@ -174,8 +215,12 @@ void NPairBin::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBin<0,1,0>; -template class NPairBin<1,0,0>; -template class NPairBin<1,1,0>; -template class NPairBin<1,1,1>; +template class NPairBin<0,1,0,0>; +template class NPairBin<1,0,0,0>; +template class NPairBin<1,1,0,0>; +template class NPairBin<1,1,1,0>; +template class NPairBin<0,1,0,1>; +template class NPairBin<1,0,0,1>; +template class NPairBin<1,1,0,1>; +template class NPairBin<1,1,1,1>; } diff --git a/src/npair_bin.h b/src/npair_bin.h index af23880db78..92e32433971 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -13,26 +13,47 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBin<0, 1, 0> NPairFullBin; +typedef NPairBin<0, 1, 0, 0> NPairFullBin; NPairStyle(full/bin, NPairFullBin, NP_FULL | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 0, 0> NPairHalfBinNewtoff; +typedef NPairBin<1, 0, 0, 0> NPairHalfBinNewtoff; NPairStyle(half/bin/newtoff, NPairHalfBinNewtoff, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 1, 0> NPairHalfBinNewton; +typedef NPairBin<1, 1, 0, 0> NPairHalfBinNewton; NPairStyle(half/bin/newton, NPairHalfBinNewton, NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBin<1, 1, 1> NPairHalfBinNewtonTri; +typedef NPairBin<1, 1, 1, 0> NPairHalfBinNewtonTri; NPairStyle(half/bin/newton/tri, NPairHalfBinNewtonTri, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI); + NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBin<0, 1, 0, 1> NPairFullSizeBin; +NPairStyle(full/size/bin, + NPairFullSizeBin, + NP_FULL | NP_SIZE | NP_BIN | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 0, 0, 1> NPairHalfSizeBinNewtoff; +NPairStyle(half/size/bin/newtoff, + NPairHalfSizeBinNewtoff, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0, 1> NPairHalfSizeBinNewton; +NPairStyle(half/size/bin/newton, + NPairHalfSizeBinNewton, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1, 1> NPairHalfSizeBinNewtonTri; +NPairStyle(half/size/bin/newton/tri, + NPairHalfSizeBinNewtonTri, + NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -43,7 +64,7 @@ NPairStyle(half/bin/newton/tri, namespace LAMMPS_NS { -template +template class NPairBin : public NPair { public: NPairBin(class LAMMPS *); diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index aa66089fc5d..3b155802644 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -25,28 +25,43 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBinAtomonly::build(NeighList *list) +template +void NPairBinAtomonly::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin,bin_start; + int i,j,jh,k,n,itype,jtype,ibin,bin_start; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; int *neighptr; double **x = atom->x; + double *radius = atom->radius; int *type = atom->type; int *mask = atom->mask; tagint *molecule = atom->molecule; int nlocal = atom->nlocal; if (includegroup) nlocal = atom->nfirst; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -126,7 +141,20 @@ void NPairBinAtomonly::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } } } @@ -143,6 +171,12 @@ void NPairBinAtomonly::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBinAtomonly<0,1,0>; -template class NPairBinAtomonly<1,1,0>; +template class NPairBinAtomonly<0,1,0,0>; +template class NPairBinAtomonly<1,0,0,0>; +template class NPairBinAtomonly<1,1,0,0>; +template class NPairBinAtomonly<1,1,1,0>; +template class NPairBinAtomonly<0,1,0,1>; +template class NPairBinAtomonly<1,0,0,1>; +template class NPairBinAtomonly<1,1,0,1>; +template class NPairBinAtomonly<1,1,1,1>; } diff --git a/src/npair_bin_atomonly.h b/src/npair_bin_atomonly.h index ae648631380..581700af7d1 100644 --- a/src/npair_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -13,16 +13,47 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBinAtomonly<0, 1, 0> NPairFullBinAtomonly; +typedef NPairBinAtomonly<0, 1, 0, 0> NPairFullBinAtomonly; NPairStyle(full/bin/atomonly, NPairFullBinAtomonly, NP_FULL | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinAtomonly<1, 1, 0> NPairHalfBinAtomonlyNewton; +typedef NPairBinAtomonly<1, 0, 0, 0> NPairHalfBinAtomonlyNewtoff; +NPairStyle(half/bin/atomonly/newtoff, + NPairHalfBinAtomonlyNewtoff, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0, 0> NPairHalfBinAtomonlyNewton; NPairStyle(half/bin/atomonly/newton, NPairHalfBinAtomonlyNewton, NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonly<1, 1, 1, 0> NPairHalfBinAtomonlyNewtonTri; +NPairStyle(half/bin/atomonly/newton/tri, + NPairHalfBinAtomonlyNewtonTri, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinAtomonly<0, 1, 0, 1> NPairFullSizeBinAtomonly; +NPairStyle(full/size/bin/atomonly, + NPairFullSizeBinAtomonly, + NP_FULL | NP_SIZE | NP_BIN | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 0, 0, 1> NPairHalfSizeBinAtomonlyNewtoff; +NPairStyle(half/size/bin/atomonly/newtoff, + NPairHalfSizeBinAtomonlyNewtoff, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonly<1, 1, 0, 1> NPairHalfSizeBinAtomonlyNewton; +NPairStyle(half/size/bin/atomonly/newton, + NPairHalfSizeBinAtomonlyNewton, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonly<1, 1, 1, 1> NPairHalfSizeBinAtomonlyNewtonTri; +NPairStyle(half/size/bin/atomonly/newton/tri, + NPairHalfSizeBinAtomonlyNewtonTri, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -33,7 +64,7 @@ NPairStyle(half/bin/atomonly/newton, namespace LAMMPS_NS { -template +template class NPairBinAtomonly : public NPair { public: NPairBinAtomonly(class LAMMPS *); diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp new file mode 100644 index 00000000000..5be33520954 --- /dev/null +++ b/src/npair_bin_ghost.cpp @@ -0,0 +1,188 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_bin_ghost.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinGhost::NPairBinGhost(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + owned and ghost atoms check own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j +------------------------------------------------------------------------- */ + + +template +void NPairBinGhost::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int xbin,ybin,zbin,xbin2,ybin2,zbin2; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + // loop over owned & ghost atoms, storing neighbors + for (i = 0; i < nall; 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; + } + + if (i < nlocal) { + ibin = atom2bin[i]; + + // loop over all atoms in surrounding bins in stencil including self + // when i is a ghost atom, must check if stencil bin is out of bounds + // no molecular test when i = ghost atom + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + // stores ghost/ghost pairs only once + if (j <= i) continue; + } + + 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 != Atom::ATOMIC) { + 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; + } + } + } + } else { + ibin = coord2bin(x[i],xbin,ybin,zbin); + for (k = 0; k < nstencil; k++) { + xbin2 = xbin + stencilxyz[k][0]; + ybin2 = ybin + stencilxyz[k][1]; + zbin2 = zbin + stencilxyz[k][2]; + if (xbin2 < 0 || xbin2 >= mbinx || + ybin2 < 0 || ybin2 >= mbiny || + zbin2 < 0 || zbin2 >= mbinz) continue; + for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + if (!HALF) { + if (i == j) continue; + } else { + if (j <= i) continue; + } + + 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 <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } + } + } + + 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"); + } + + list->inum = atom->nlocal; + list->gnum = inum - atom->nlocal; +} + +namespace LAMMPS_NS { +template class NPairBinGhost<0>; +template class NPairBinGhost<1>; +} diff --git a/src/npair_bin_ghost.h b/src/npair_bin_ghost.h new file mode 100644 index 00000000000..602aaf986e3 --- /dev/null +++ b/src/npair_bin_ghost.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairBinGhost<0> NPairFullBinGhost; +NPairStyle(full/bin/ghost, + NPairFullBinGhost, + NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); + +typedef NPairBinGhost<1> NPairHalfBinGhostNewtoff; +NPairStyle(half/bin/ghost/newtoff, + NPairHalfBinGhostNewtoff, + NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_BIN_GHOST_H +#define LMP_NPAIR_BIN_GHOST_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinGhost : public NPair { + public: + NPairBinGhost(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_halffull.cpp b/src/npair_halffull.cpp new file mode 100644 index 00000000000..b9652484ceb --- /dev/null +++ b/src/npair_halffull.cpp @@ -0,0 +1,142 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_halffull.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairHalffull::NPairHalffull(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build half list from full list + pair stored once if i,j are both owned and i < j + works if full list is a skip list + + Newtoff: + pair stored by me if j is ghost (also stored by proc owning j) + works for owned (non-ghost) list, also for ghost list + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly + Newton: + if j is ghost, only store if j coords are "above and to the right" of i +------------------------------------------------------------------------- */ + +template +void NPairHalffull::build(NeighList *list) +{ + int i,j,ii,jj,n,jnum,joriginal; + int *neighptr,*jlist; + double xtmp,ytmp,ztmp; + double delx,dely,delz,rsq; + + double **x = atom->x; + int nlocal = atom->nlocal; + + 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; + if (!NEWTON) + if (list->ghost) inum_full += list->listfull->gnum; + + int inum = 0; + ipage->reset(); + + double cutsq_custom = cutoff_custom * cutoff_custom; + + // loop over atoms in full list + + for (ii = 0; ii < inum_full; ii++) { + n = 0; + neighptr = ipage->vget(); + + // loop over parent full list + + i = ilist_full[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + jlist = firstneigh_full[i]; + jnum = numneigh_full[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (NEWTON) { + if (j < nlocal) { + if (i > j) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; + } else { + if (j > i) { + if (TRIM) { + 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_custom) continue; + } + 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"); + } + + list->inum = inum; + if (!NEWTON) + if (list->ghost) list->gnum = list->listfull->gnum; +} + +namespace LAMMPS_NS { +template class NPairHalffull<0,0>; +template class NPairHalffull<1,0>; +template class NPairHalffull<0,1>; +template class NPairHalffull<1,1>; +} diff --git a/src/npair_halffull.h b/src/npair_halffull.h new file mode 100644 index 00000000000..519cb0ced14 --- /dev/null +++ b/src/npair_halffull.h @@ -0,0 +1,115 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/skip, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/ghost, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST); + +typedef NPairHalffull<0, 0> NPairHalffullNewtoff; +NPairStyle(halffull/newtoff/skip/ghost, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST); + +typedef NPairHalffull<1, 0> NPairHalffullNewton; +NPairStyle(halffull/newton, + NPairHalffullNewton, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI); + +typedef NPairHalffull<1, 0> NPairHalffullNewton; +NPairStyle(halffull/newton/skip, + NPairHalffullNewton, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/skip/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/ghost/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM); + +typedef NPairHalffull<0, 1> NPairHalffullNewtoffTrim; +NPairStyle(halffull/newtoff/skip/ghost/trim, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM); + +typedef NPairHalffull<1, 1> NPairHalffullNewtonTrim; +NPairStyle(halffull/newton/trim, + NPairHalffullNewtonTrim, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_TRIM); + +typedef NPairHalffull<1, 1> NPairHalffullNewtonTrim; +NPairStyle(halffull/newton/skip/trim, + NPairHalffullNewtonTrim, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_H +#define LMP_NPAIR_HALFFULL_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairHalffull : public NPair { + public: + NPairHalffull(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp new file mode 100644 index 00000000000..76e90ec6743 --- /dev/null +++ b/src/npair_multi.cpp @@ -0,0 +1,205 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_multi.h" +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neighbor.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairMulti::NPairMulti(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi stencil is icollection-jcollection dependent + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMulti::build(NeighList *list) +{ + int i,j,jh,js,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + + int *collection = neighbor->collection; + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + itype = type[i]; + icollection = collection[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; + } + + ibin = atom2bin[i]; + + // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { + + // if same collection use own bin + if (icollection == jcollection) jbin = ibin; + else jbin = coord2bin(x[i], jcollection); + + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; + + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 != Atom::ATOMIC) { + 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; + } + } + } + } + + 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"); + } + + list->inum = inum; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMulti<0,1,0,0>; +template class NPairMulti<1,0,0,0>; +template class NPairMulti<1,1,0,0>; +template class NPairMulti<1,1,1,0>; +template class NPairMulti<0,1,0,1>; +template class NPairMulti<1,0,0,1>; +template class NPairMulti<1,1,0,1>; +template class NPairMulti<1,1,1,1>; +} diff --git a/src/npair_multi.h b/src/npair_multi.h new file mode 100644 index 00000000000..288498dc006 --- /dev/null +++ b/src/npair_multi.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairMulti<0, 1, 0, 0> NPairFullMulti; +NPairStyle(full/Multi, + NPairFullMulti, + NP_FULL | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 0> NPairHalfMultiNewtoff; +NPairStyle(half/multi/newtoff, + NPairHalfMultiNewtoff, + NP_HALF | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 0> NPairHalfMultiNewton; +NPairStyle(half/multi/newton, + NPairHalfMultiNewton, + NP_HALF | NP_MULTI | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 0> NPairHalfMultiNewtonTri; +NPairStyle(half/multi/newton/tri, + NPairHalfMultiNewtonTri, + NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); + +typedef NPairMulti<0, 1, 0, 1> NPairFullSizeMulti; +NPairStyle(full/size/Multi, + NPairFullSizeMulti, + NP_FULL | NP_SIZE | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 1> NPairHalfSizeMultiNewtoff; +NPairStyle(half/size/multi/newtoff, + NPairHalfSizeMultiNewtoff, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 1> NPairHalfSizeMultiNewton; +NPairStyle(half/size/multi/newton, + NPairHalfSizeMultiNewton, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 1> NPairHalfSizeMultiNewtonTri; +NPairStyle(half/size/multi/newton/tri, + NPairHalfSizeMultiNewtonTri, + NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_H +#define LMP_NPAIR_MULTI_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMulti : public NPair { + public: + NPairMulti(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp new file mode 100644 index 00000000000..28efc167974 --- /dev/null +++ b/src/npair_multi_old.cpp @@ -0,0 +1,236 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_multi_old.h" + +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOld::NPairMultiOld(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi/old-type stencil is itype dependent and is distance checked + Full: + binned neighbor list construction for all neighbors + multi-type stencil is itype dependent and is distance checked + every neighbor pair appears in list of both atoms i and j + Half + newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + multi-type stencil is itype dependent and is distance checked + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + multi-type stencil is itype dependent and is distance checked + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOld::build(NeighList *list) +{ + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,ns,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + double *cutsq,*distsq; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; 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; + } + + ibin = atom2bin[i]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + cutsq = cutneighsq[itype]; + ns = nstencil_multi_old[itype]; + for (k = 0; k < ns; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (cutsq[jtype] < distsq[k]) continue; + if (i == j) continue; + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } + } + } + } + + 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"); + } + + list->inum = inum; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOld<0,1,0,0>; +template class NPairMultiOld<1,0,0,0>; +template class NPairMultiOld<1,1,0,0>; +template class NPairMultiOld<1,1,1,0>; +template class NPairMultiOld<0,1,0,1>; +template class NPairMultiOld<1,0,0,1>; +template class NPairMultiOld<1,1,0,1>; +template class NPairMultiOld<1,1,1,1>; +} diff --git a/src/npair_multi_old.h b/src/npair_multi_old.h new file mode 100644 index 00000000000..52b071ebc58 --- /dev/null +++ b/src/npair_multi_old.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairMultiOld<0, 1, 0, 0> NPairFullMultiOld; +NPairStyle(full/multi/old, + NPairFullMultiOld, + NP_FULL | NP_MULTI_OLD | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 0, 0, 0> NPairHalfMultiOldNewtoff; +NPairStyle(half/multi/old/newtoff, + NPairHalfMultiOldNewtoff, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 1, 0, 0> NPairHalfMultiOldNewton; +NPairStyle(half/multi/old/newton, + NPairHalfMultiOldNewton, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOld<1, 1, 1, 0> NPairHalfMultiOldNewtonTri; +NPairStyle(half/multi/old/newton/tri, + NPairHalfMultiOldNewtonTri, + NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairMultiOld<0, 1, 0, 1> NPairFullSizeMultiOld; +NPairStyle(full/size/multi/old, + NPairFullSizeMultiOld, + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoff; +NPairStyle(half/size/multi/old/newtoff, + NPairHalfSizeMultiOldNewtoff, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOld<1, 1, 0, 1> NPairHalfSizeMultiOldNewton; +NPairStyle(half/size/multi/old/newton, + NPairHalfSizeMultiOldNewton, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOld<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTri; +NPairStyle(half/size/multi/old/newton/tri, + NPairHalfSizeMultiOldNewtonTri, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OLD_H +#define LMP_NPAIR_MULTI_OLD_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOld : public NPair { + public: + NPairMultiOld(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_nsq.cpp b/src/npair_nsq.cpp new file mode 100644 index 00000000000..87a05e81365 --- /dev/null +++ b/src/npair_nsq.cpp @@ -0,0 +1,205 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_nsq.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairNsq::NPairNsq(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + N^2 search for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + every pair stored exactly once by some processor + decision on ghost atoms based on itag,jtag tests +------------------------------------------------------------------------- */ + +template +void NPairNsq::build(NeighList *list) +{ + int i,j,jh,jstart,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; + tagint itag,jtag,tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + for (i = 0; i < nlocal; i++) { + n = 0; + neighptr = ipage->vget(); + + itag = tag[i]; + 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; + } + + // Full: loop over all atoms, owned and ghost, skip i = j + // Half: loop over remaining atoms, owned and ghost + // Newtoff: only store pair if i < j + // Newton: itag = jtag is possible for long cutoffs that include images of self + + if (!HALF) jstart = 0; + else jstart = i + 1; + + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (!HALF) { + // Full neighbor list + if (i == j) continue; + } else if (NEWTON) { + // Half neighbor list, newton on + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } + } + } + + 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"); + } + + list->inum = inum; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairNsq<0,1,0>; +template class NPairNsq<1,0,0>; +template class NPairNsq<1,1,0>; +template class NPairNsq<0,1,1>; +template class NPairNsq<1,0,1>; +template class NPairNsq<1,1,1>; +} diff --git a/src/npair_nsq.h b/src/npair_nsq.h new file mode 100644 index 00000000000..4d616d33f26 --- /dev/null +++ b/src/npair_nsq.h @@ -0,0 +1,76 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairNsq<0, 1, 0> NPairFullNsq; +NPairStyle(full/nsq, + NPairFullNsq, + NP_FULL | NP_NSQ | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 0, 0> NPairHalfNsqNewtoff; +NPairStyle(half/nsq/newtoff, + NPairHalfNsqNewtoff, + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 1, 0> NPairHalfNsqNewton; +NPairStyle(half/nsq/newton, + NPairHalfNsqNewton, + NP_HALF | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + +typedef NPairNsq<0, 1, 1> NPairFullSizeNsq; +NPairStyle(full/size/nsq, + NPairFullSizeNsq, + NP_FULL | NP_SIZE | NP_NSQ | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 0, 1> NPairHalfSizeNsqNewtoff; +NPairStyle(half/size/nsq/newtoff, + NPairHalfSizeNsqNewtoff, + NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; +NPairStyle(half/size/nsq/newton, + NPairHalfSizeNsqNewton, + NP_HALF | NP_SIZE | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + +// clang-format on +#else + +#ifndef LMP_NPAIR_Nsq_H +#define LMP_NPAIR_Nsq_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsq : public NPair { + public: + NPairNsq(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp new file mode 100644 index 00000000000..4a733047c4a --- /dev/null +++ b/src/npair_nsq_ghost.cpp @@ -0,0 +1,176 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_nsq_ghost.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "molecule.h" +#include "neighbor.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace NeighConst; + +/* ---------------------------------------------------------------------- */ + +template +NPairNsqGhost::NPairNsqGhost(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + N^2 search for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j +------------------------------------------------------------------------- */ + + +template +void NPairNsqGhost::build(NeighList *list) +{ + int i,j,jstart,n,itype,jtype,which,bitmask,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int inum = 0; + ipage->reset(); + + // loop over owned & ghost atoms, storing neighbors + for (i = 0; i < nall; 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 all atoms, owned and ghost + // Full: + // skip i = j + // Half: + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs with owned atom only, on both procs + // stores ghost/ghost pairs only once + // no molecular test when i = ghost atom + + if (!HALF) jstart = 0; + else jstart = i + 1; + + if (i < nlocal) { + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; // JTC: missing in original full version + if (!HALF) { + if (i == j) continue; + } + + 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 != Atom::ATOMIC) { + 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; + } + } + } else { + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; // JTC: missing in original full version + if (!HALF) { + if (i == j) continue; + } + + 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]) neighptr[n++] = j; + } + } + + 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"); + } + + list->inum = atom->nlocal; + list->gnum = inum - atom->nlocal; +} + +namespace LAMMPS_NS { +template class NPairNsqGhost<0>; +template class NPairNsqGhost<1>; +} diff --git a/src/npair_nsq_ghost.h b/src/npair_nsq_ghost.h new file mode 100644 index 00000000000..d1f34969d5f --- /dev/null +++ b/src/npair_nsq_ghost.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairNsqGhost<0> NPairFullNsqGhost; +NPairStyle(full/nsq/ghost, + NPairFullNsqGhost, + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); + +typedef NPairNsqGhost<1> NPairHalfNsqGhostNewtoff; +NPairStyle(half/nsq/ghost/newtoff, + NPairHalfNsqGhostNewtoff, + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_NSQ_GHOST_H +#define LMP_NPAIR_NSQ_GHOST_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsqGhost : public NPair { + public: + NPairNsqGhost(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp new file mode 100644 index 00000000000..7e8f79df5f4 --- /dev/null +++ b/src/npair_respa_bin.cpp @@ -0,0 +1,240 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_respa_bin.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; + +/* ---------------------------------------------------------------------- */ + +template +NPairRespaBin::NPairRespaBin(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multiple respa lists + Newtoff + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and surrounding bins in non-Newton stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Newton + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairRespaBin::build(NeighList *list) +{ + int i,j,k,n,itype,jtype,ibin,bin_start,n_inner,n_middle,imol,iatom,moltemplate; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr,*neighptr_inner,*neighptr_middle; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + if (includegroup) nlocal = atom->nfirst; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + } + + int inum = 0; + int which = 0; + int minchange = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + for (i = 0; i < nlocal; i++) { + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->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; + } + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = binstart; j >= 0; j = bins[j]) { + if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 != Atom::ATOMIC) { + 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + + if (rsq < cut_inner_sq) { + if (which == 0) neighptr_inner[n_inner++] = j; + else if (minchange) neighptr_inner[n_inner++] = j; + else if (which > 0) + neighptr_inner[n_inner++] = j ^ (which << SBBITS); + } + + if (respamiddle && + rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { + if (which == 0) neighptr_middle[n_middle++] = j; + else if (minchange) neighptr_middle[n_middle++] = j; + else if (which > 0) + neighptr_middle[n_middle++] = j ^ (which << SBBITS); + } + } + } + } + + 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"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n_inner); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n_middle); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} + +namespace LAMMPS_NS { +template class NPairRespaBin<0,0>; +template class NPairRespaBin<1,0>; +template class NPairRespaBin<1,1>; +} diff --git a/src/npair_respa_bin.h b/src/npair_respa_bin.h new file mode 100644 index 00000000000..bf52ebcadc1 --- /dev/null +++ b/src/npair_respa_bin.h @@ -0,0 +1,58 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairRespaBin<0, 0> NPairHalfRespaBinNewtoff; +NPairStyle(half/respa/bin/newtoff, + NPairHalfRespaBinNewtoff, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaBin<1, 0> NPairHalfRespaBinNewton; +NPairStyle(half/respa/bin/newton, + NPairHalfRespaBinNewton, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_ORTHO); + +typedef NPairRespaBin<1, 1> NPairHalfRespaBinNewtonTri; +NPairStyle(half/respa/bin/newton/tri, + NPairHalfRespaBinNewtonTri, + NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_RESPA_BIN_H +#define LMP_NPAIR_RESPA_BIN_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairRespaBin : public NPair { + public: + NPairRespaBin(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_respa_nsq.cpp b/src/npair_respa_nsq.cpp new file mode 100644 index 00000000000..5587758cd41 --- /dev/null +++ b/src/npair_respa_nsq.cpp @@ -0,0 +1,214 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_respa_nsq.h" +#include "neigh_list.h" +#include "atom.h" +#include "atom_vec.h" +#include "group.h" +#include "molecule.h" +#include "domain.h" +#include "my_page.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairRespaNsq::NPairRespaNsq(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multiple respa lists + Newtoff + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + pair added if j is ghost (also stored by proc owning j) + Newton + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + if j is ghost only me or other proc adds pair + decision based on itag,jtag tests +------------------------------------------------------------------------- */ + +template +void NPairRespaNsq::build(NeighList *list) +{ + int i,j,n,itype,jtype,n_inner,n_middle,bitmask,imol,iatom,moltemplate; + tagint itag,jtag,tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *neighptr,*neighptr_inner,*neighptr_middle; + + double **x = atom->x; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + if (includegroup) { + nlocal = atom->nfirst; + bitmask = group->bitmask[includegroup]; + } + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + if (molecular == Atom::TEMPLATE) moltemplate = 1; + else moltemplate = 0; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + } + + int inum = 0; + int which = 0; + int minchange = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + for (i = 0; i < nlocal; i++) { + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->vget(); + } + + itype = type[i]; + itag = tag[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 remaining atoms, owned and ghost + + for (j = i+1; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (NEWTON) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 != Atom::ATOMIC) { + 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + + if (rsq < cut_inner_sq) { + if (which == 0) neighptr_inner[n_inner++] = j; + else if (minchange) neighptr_inner[n_inner++] = j; + else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); + } + + if (respamiddle && rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { + if (which == 0) neighptr_middle[n_middle++] = j; + else if (minchange) neighptr_middle[n_middle++] = j; + else if (which > 0) + neighptr_middle[n_middle++] = j ^ (which << SBBITS); + } + } + } + + 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"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n_inner); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n_middle); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} + +namespace LAMMPS_NS { +template class NPairRespaNsq<0>; +template class NPairRespaNsq<1>; +} diff --git a/src/npair_respa_nsq.h b/src/npair_respa_nsq.h new file mode 100644 index 00000000000..5d6ea604650 --- /dev/null +++ b/src/npair_respa_nsq.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +typedef NPairRespaNsq<0> NPairHalfRespaNsqNewtoff; +NPairStyle(half/respa/nsq/newtoff, + NPairHalfRespaNsqNewtoff, + NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaNsq<1> NPairHalfRespaNsqNewton; +NPairStyle(half/respa/nsq/newton, + NPairHalfRespaNsqNewton, + NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); //JTC: Originally didn't have TRI +// clang-format on +#else + +#ifndef LMP_NPAIR_RESPA_NSQ_H +#define LMP_NPAIR_RESPA_NSQ_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairRespaNsq : public NPair { + public: + NPairRespaNsq(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp new file mode 100644 index 00000000000..4ef0573dbb8 --- /dev/null +++ b/src/npair_skip.cpp @@ -0,0 +1,102 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_skip.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + works for half and full lists + works for owned (non-ghost) list, also for ghost list + iskip and ijskip flag which atom types and type pairs to skip + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly +------------------------------------------------------------------------- */ + +void NPairSkip::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal; + int *neighptr,*jlist; + + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int num_skip = list->listskip->inum; + if (list->ghost) num_skip += list->listskip->gnum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int inum = 0; + ipage->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < num_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = 0; + neighptr = ipage->vget(); + + // loop over parent non-skip list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + 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"); + } + + list->inum = inum; + if (list->ghost) { + int num = 0; + for (i = 0; i < inum; i++) + if (ilist[i] < nlocal) num++; + else break; + list->inum = num; + list->gnum = inum - num; + } +} diff --git a/src/npair_skip.h b/src/npair_skip.h new file mode 100644 index 00000000000..b2a07521177 --- /dev/null +++ b/src/npair_skip.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +NPairStyle(skip, + NPairSkip, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +NPairStyle(skip/ghost, + NPairSkip, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); + +NPairStyle(skip/half/size, + NPairSkip, + NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_H +#define LMP_NPAIR_SKIP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkip : public NPair { + public: + NPairSkip(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp new file mode 100644 index 00000000000..373fe3f8db7 --- /dev/null +++ b/src/npair_skip_respa.cpp @@ -0,0 +1,163 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_skip_respa.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + this is for respa lists, copy the inner/middle values from parent +------------------------------------------------------------------------- */ + +void NPairSkipRespa::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal,n_inner,n_middle; + int *neighptr,*jlist,*neighptr_inner,*neighptr_middle; + + int *type = atom->type; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int *ilist_inner = list->ilist_inner; + int *numneigh_inner = list->numneigh_inner; + int **firstneigh_inner = list->firstneigh_inner; + MyPage *ipage_inner = list->ipage_inner; + int *numneigh_inner_skip = list->listskip->numneigh_inner; + int **firstneigh_inner_skip = list->listskip->firstneigh_inner; + + int *ilist_middle,*numneigh_middle,**firstneigh_middle; + MyPage *ipage_middle; + int *numneigh_middle_skip,**firstneigh_middle_skip; + int respamiddle = list->respamiddle; + if (respamiddle) { + ilist_middle = list->ilist_middle; + numneigh_middle = list->numneigh_middle; + firstneigh_middle = list->firstneigh_middle; + ipage_middle = list->ipage_middle; + numneigh_middle_skip = list->listskip->numneigh_middle; + firstneigh_middle_skip = list->listskip->firstneigh_middle; + } + + int inum = 0; + ipage->reset(); + ipage_inner->reset(); + if (respamiddle) ipage_middle->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = n_inner = 0; + neighptr = ipage->vget(); + neighptr_inner = ipage_inner->vget(); + if (respamiddle) { + n_middle = 0; + neighptr_middle = ipage_middle->vget(); + } + + // loop over parent outer rRESPA list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr[n++] = joriginal; + } + + // loop over parent inner rRESPA list + + jlist = firstneigh_inner_skip[i]; + jnum = numneigh_inner_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr_inner[n_inner++] = joriginal; + } + + // loop over parent middle rRESPA list + + if (respamiddle) { + jlist = firstneigh_middle_skip[i]; + jnum = numneigh_middle_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + neighptr_middle[n_middle++] = 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"); + + ilist_inner[inum] = i; + firstneigh_inner[i] = neighptr_inner; + numneigh_inner[i] = n_inner; + ipage_inner->vgot(n); + if (ipage_inner->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + + if (respamiddle) { + ilist_middle[inum] = i; + firstneigh_middle[i] = neighptr_middle; + numneigh_middle[i] = n_middle; + ipage_middle->vgot(n); + if (ipage_middle->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + inum++; + } + + list->inum = inum; + list->inum_inner = inum; + if (respamiddle) list->inum_middle = inum; +} diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h new file mode 100644 index 00000000000..b0938287b5f --- /dev/null +++ b/src/npair_skip_respa.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +NPairStyle(skip/half/respa, + NPairSkipRespa, + NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_RESPA_H +#define LMP_NPAIR_SKIP_RESPA_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipRespa : public NPair { + public: + NPairSkipRespa(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp new file mode 100644 index 00000000000..e48ca345ff1 --- /dev/null +++ b/src/npair_skip_size_off2on.cpp @@ -0,0 +1,100 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_skip_size_off2on.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + parent non-skip list used newton off, this skip list is newton on +------------------------------------------------------------------------- */ + +void NPairSkipSizeOff2on::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal; + tagint itag,jtag; + int *neighptr,*jlist; + + tagint *tag = atom->tag; + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + int inum = 0; + ipage->reset(); + + // loop over atoms in other list + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + itag = tag[i]; + + n = 0; + neighptr = ipage->vget(); + + // loop over parent non-skip size list and optionally its history info + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // only keep I,J when J = ghost if Itag < Jtag + + jtag = tag[j]; + if (j >= nlocal && jtag < itag) continue; + + 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"); + } + + list->inum = inum; +} diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h new file mode 100644 index 00000000000..39aee76b095 --- /dev/null +++ b/src/npair_skip_size_off2on.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +NPairStyle(skip/size/off2on, + NPairSkipSizeOff2on, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_H +#define LMP_NPAIR_SKIP_SIZE_OFF2ON_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipSizeOff2on : public NPair { + public: + NPairSkipSizeOff2on(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp new file mode 100644 index 00000000000..1e4b4ac78df --- /dev/null +++ b/src/npair_skip_size_off2on_oneside.cpp @@ -0,0 +1,163 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "npair_skip_size_off2on_oneside.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : + NPair(lmp) {} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + iskip and ijskip flag which atom types and type pairs to skip + parent non-skip list used newton off and was not onesided, + this skip list is newton on and onesided +------------------------------------------------------------------------- */ + +void NPairSkipSizeOff2onOneside::build(NeighList *list) +{ + int i,j,ii,jj,n,itype,jnum,joriginal,flip,tmp; + int *surf,*jlist; + + int *type = atom->type; + int nlocal = atom->nlocal; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + + int *ilist_skip = list->listskip->ilist; + int *numneigh_skip = list->listskip->numneigh; + int **firstneigh_skip = list->listskip->firstneigh; + int inum_skip = list->listskip->inum; + + int *iskip = list->iskip; + int **ijskip = list->ijskip; + + if (domain->dimension == 2) surf = atom->line; + else surf = atom->tri; + + int inum = 0; + ipage->reset(); + + // two loops over parent list required, one to count, one to store + // because onesided constraint means pair I,J may be stored with I or J + // so don't know in advance how much space to alloc for each atom's neighs + + // first loop over atoms in other list to count neighbors + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (i = 0; i < nlocal; i++) numneigh[i] = 0; + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + n = 0; + + // loop over parent non-skip size list + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // flip I,J if necessary to satisfy onesided constraint + // do not keep if I is now ghost + + if (surf[i] >= 0) { + if (j >= nlocal) continue; + tmp = i; + i = j; + j = tmp; + flip = 1; + } else flip = 0; + + numneigh[i]++; + if (flip) i = j; + } + } + + // allocate all per-atom neigh list chunks + + for (i = 0; i < nlocal; i++) { + if (numneigh[i] == 0) continue; + n = numneigh[i]; + firstneigh[i] = ipage->get(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + // second loop over atoms in other list to store neighbors + // skip I atom entirely if iskip is set for type[I] + // skip I,J pair if ijskip is set for type[I],type[J] + + for (i = 0; i < nlocal; i++) numneigh[i] = 0; + + for (ii = 0; ii < inum_skip; ii++) { + i = ilist_skip[ii]; + itype = type[i]; + if (iskip[itype]) continue; + + // loop over parent non-skip size list and optionally its history info + + jlist = firstneigh_skip[i]; + jnum = numneigh_skip[i]; + + for (jj = 0; jj < jnum; jj++) { + joriginal = jlist[jj]; + j = joriginal & NEIGHMASK; + if (ijskip[itype][type[j]]) continue; + + // flip I,J if necessary to satisfy onesided constraint + // do not keep if I is now ghost + + if (surf[i] >= 0) { + if (j >= nlocal) continue; + tmp = i; + i = j; + j = tmp; + flip = 1; + } else flip = 0; + + // store j in neigh list, not joriginal, like other neigh methods + // OK, b/c there is no special list flagging for surfs + + firstneigh[i][numneigh[i]] = j; + numneigh[i]++; + if (flip) i = j; + } + + // only add atom I to ilist if it has neighbors + + if (numneigh[i]) ilist[inum++] = i; + } + + list->inum = inum; +} diff --git a/src/npair_skip_size_off2on_oneside.h b/src/npair_skip_size_off2on_oneside.h new file mode 100644 index 00000000000..3f1cd6ef340 --- /dev/null +++ b/src/npair_skip_size_off2on_oneside.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +NPairStyle(skip/size/off2on/oneside, + NPairSkipSizeOff2onOneside, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | + NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H +#define LMP_NPAIR_SKIP_SIZE_OFF2ON_ONESIDE_H + +#include "npair.h" + +namespace LAMMPS_NS { + +class NPairSkipSizeOff2onOneside : public NPair { + public: + NPairSkipSizeOff2onOneside(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Neighbor list overflow, boost neigh_modify one + +UNDOCUMENTED + +*/ diff --git a/src/nstencil_ghost_bin.h b/src/nstencil_ghost_bin.h index 31268cc30d6..cab6e6714c4 100644 --- a/src/nstencil_ghost_bin.h +++ b/src/nstencil_ghost_bin.h @@ -16,32 +16,32 @@ typedef NStencilGhostBin<0, 0, 0> NStencilFullGhostBin2d; NStencilStyle(full/ghost/bin/2d, NStencilFullGhostBin2d, - NS_FULL | NS_GhostBin | NS_2D | NS_ORTHO | NS_TRI); + NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); typedef NStencilGhostBin<0, 1, 0> NStencilFullGhostBin3d; NStencilStyle(full/ghost/bin/3d, NStencilFullGhostBin3d, - NS_FULL | NS_GhostBin | NS_3D | NS_ORTHO | NS_TRI); + NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); typedef NStencilGhostBin<1, 0, 0> NStencilHalfGhostBin2d; NStencilStyle(half/ghost/bin/2d, NStencilHalfGhostBin2d, - NS_HALF | NS_GhostBin | NS_2D | NS_ORTHO); + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO); typedef NStencilGhostBin<1, 0, 1> NStencilHalfGhostBin2dTri; NStencilStyle(half/ghost/bin/2d/tri, NStencilHalfGhostBin2dTri, - NS_HALF | NS_GhostBin | NS_2D | NS_TRI); + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_TRI); typedef NStencilGhostBin<1, 1, 0> NStencilHalfGhostBin3d; NStencilStyle(half/ghost/bin/3d, NStencilHalfGhostBin3d, - NS_HALF | NS_GhostBin | NS_3D | NS_ORTHO); + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO); typedef NStencilGhostBin<1, 1, 1> NStencilHalfGhostBin3dTri; NStencilStyle(half/ghost/bin/3d/tri, NStencilHalfGhostBin3dTri, - NS_HALF | NS_GhostBin | NS_3D | NS_TRI); + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_TRI); // clang-format on #else From 6544fbd248e9a8a6486ca01422610f054ddb09c3 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sun, 30 Oct 2022 21:04:31 -0600 Subject: [PATCH 020/300] Fixing compilation mistake, updating dev reference --- src/npair_bin.cpp | 4 ++-- src/npair_bin.h | 10 +--------- src/npair_bin_atomonly.cpp | 4 ++-- src/npair_bin_atomonly.h | 10 +--------- src/npair_multi_old.cpp | 10 +++++----- src/npair_nsq.cpp | 5 +++-- src/npair_nsq_ghost.cpp | 1 + src/npair_respa_bin.cpp | 4 ++-- 8 files changed, 17 insertions(+), 31 deletions(-) diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index 83f8c53ecc3..41f4575444f 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/npair_bin.h b/src/npair_bin.h index 92e32433971..e9cd65fa343 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -75,11 +75,3 @@ class NPairBin : public NPair { #endif #endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index 3b155802644..f658a44b605 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/npair_bin_atomonly.h b/src/npair_bin_atomonly.h index 581700af7d1..febe7c2f0e1 100644 --- a/src/npair_bin_atomonly.h +++ b/src/npair_bin_atomonly.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -75,11 +75,3 @@ class NPairBinAtomonly : public NPair { #endif #endif - -/* ERROR/WARNING messages: - -E: Neighbor list overflow, boost neigh_modify one - -UNDOCUMENTED - -*/ diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index 28efc167974..3c61d4ba292 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -56,7 +56,7 @@ void NPairMultiOld::build(NeighList *list) double xtmp,ytmp,ztmp,delx,dely,delz,rsq; double radsum,cut,cutsq; int *neighptr,*s; - double *cutsq,*distsq; + double *cutnsq,*distsq; double **x = atom->x; double *radius = atom->radius; @@ -103,7 +103,7 @@ void NPairMultiOld::build(NeighList *list) ibin = atom2bin[i]; s = stencil_multi_old[itype]; distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; + cutnsq = cutneighsq[itype]; ns = nstencil_multi_old[itype]; for (k = 0; k < ns; k++) { bin_start = binhead[ibin+stencil[k]]; @@ -158,7 +158,7 @@ void NPairMultiOld::build(NeighList *list) } jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; + if (cutnsq[jtype] < distsq[k]) continue; if (i == j) continue; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_nsq.cpp b/src/npair_nsq.cpp index 87a05e81365..77dafe61915 100644 --- a/src/npair_nsq.cpp +++ b/src/npair_nsq.cpp @@ -1,8 +1,8 @@ // clang-format off -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "group.h" #include "molecule.h" #include "neighbor.h" #include "domain.h" diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index 8ff34accf8f..e9cc732e7d6 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -16,6 +16,7 @@ #include "neigh_list.h" #include "atom.h" #include "atom_vec.h" +#include "group.h" #include "molecule.h" #include "neighbor.h" #include "domain.h" diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index 2f39ad547ca..a3bcbf51246 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -116,14 +116,14 @@ void NPairRespaBin::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { + if (NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; } } - for (j = binstart; j >= 0; j = bins[j]) { + for (j = bin_start; j >= 0; j = bins[j]) { if (!NEWTON) { // Half neighbor list, newton off // only store pair if i < j From 02370fa25ebe55efba6ace6a1547e77d22c9e405 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Wed, 2 Nov 2022 14:51:00 -0600 Subject: [PATCH 021/300] Include headers in ace-evaluator directory --- src/ML-PACE/compute_pace.cpp | 8 ++++---- src/ML-PACE/compute_pace.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index c931d2aff5d..23e0a147768 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -11,10 +11,10 @@ ------------------------------------------------------------------------- */ #include "compute_pace.h" -#include "ace_evaluator.h" -#include "ace_c_basis.h" -#include "ace_abstract_basis.h" -#include "ace_types.h" +#include "ace-evaluator/ace_evaluator.h" +#include "ace-evaluator/ace_c_basis.h" +#include "ace-evaluator/ace_abstract_basis.h" +#include "ace-evaluator/ace_types.h" #include #include diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index e806c65c160..44d92ca2804 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -21,9 +21,9 @@ ComputeStyle(pace,ComputePACE); #define LMP_COMPUTE_PACE_H #include "compute.h" -#include "ace_c_basis.h" -#include "ace_evaluator.h" -#include "ace_abstract_basis.h" +#include "ace-evaluator/ace_c_basis.h" +#include "ace-evaluator/ace_evaluator.h" +#include "ace-evaluator/ace_abstract_basis.h" namespace LAMMPS_NS { From 48a957f333178a45472833f0c37d2b1b90def7d9 Mon Sep 17 00:00:00 2001 From: rohskopf Date: Thu, 3 Nov 2022 09:04:50 -0600 Subject: [PATCH 022/300] Remove screen print --- src/ML-PACE/compute_pace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 23e0a147768..223b8b4b192 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -138,7 +138,7 @@ void ComputePACE::init() if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); - printf("----- cutoffmax: %f\n", cutmax); + //printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); From c5181bb7c80ee3c28d2aec63e602d7745e384ef5 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 11 Nov 2022 16:56:21 -0700 Subject: [PATCH 023/300] Fixing various oversights in npair classes --- src/npair_bin_atomonly.cpp | 2 +- src/npair_bin_ghost.cpp | 16 +++++------ src/npair_multi.cpp | 54 ++++++++++++++++++++++++++++---------- src/npair_multi.h | 4 +-- src/npair_multi_old.h | 16 +++++------ 5 files changed, 59 insertions(+), 33 deletions(-) diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index f658a44b605..100b521b92e 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -139,7 +139,7 @@ void NPairBinAtomonly::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (SIZE) { radsum = radius[i] + radius[j]; diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 615759508d5..4cf30f10f93 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -103,17 +103,17 @@ void NPairBinGhost::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; for (j = bin_start; j >= 0; j = bins[j]) { - if (!HALF) { - // Full neighbor list - // only skip i = j - if (i == j) continue; - } else { + if (HALF) { // Half neighbor list, newton off // only store pair if i < j // stores own/own pairs only once // stores own/ghost pairs on both procs // stores ghost/ghost pairs only once if (j <= i) continue; + } else { + // Full neighbor list + // only skip i = j + if (i == j) continue; } jtype = type[j]; @@ -151,10 +151,10 @@ void NPairBinGhost::build(NeighList *list) ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (!HALF) { - if (i == j) continue; - } else { + if (HALF) { if (j <= i) continue; + } else { + if (i == j) continue; } jtype = type[j]; diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 103f5a1845b..ab182f39c4a 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -162,20 +162,46 @@ void NPairMulti::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } } } } diff --git a/src/npair_multi.h b/src/npair_multi.h index 4bb13152000..f6a68711e21 100644 --- a/src/npair_multi.h +++ b/src/npair_multi.h @@ -14,7 +14,7 @@ #ifdef NPAIR_CLASS // clang-format off typedef NPairMulti<0, 1, 0, 0> NPairFullMulti; -NPairStyle(full/Multi, +NPairStyle(full/multi, NPairFullMulti, NP_FULL | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); @@ -35,7 +35,7 @@ NPairStyle(half/multi/newton/tri, NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); typedef NPairMulti<0, 1, 0, 1> NPairFullSizeMulti; -NPairStyle(full/size/Multi, +NPairStyle(full/size/multi, NPairFullSizeMulti, NP_FULL | NP_SIZE | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); diff --git a/src/npair_multi_old.h b/src/npair_multi_old.h index 8eb1cc3b00f..f01844ed571 100644 --- a/src/npair_multi_old.h +++ b/src/npair_multi_old.h @@ -16,44 +16,44 @@ typedef NPairMultiOld<0, 1, 0, 0> NPairFullMultiOld; NPairStyle(full/multi/old, NPairFullMultiOld, - NP_FULL | NP_MULTI_OLD | NP_MOLONLY | + NP_FULL | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 0, 0, 0> NPairHalfMultiOldNewtoff; NPairStyle(half/multi/old/newtoff, NPairHalfMultiOldNewtoff, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 1, 0, 0> NPairHalfMultiOldNewton; NPairStyle(half/multi/old/newton, NPairHalfMultiOldNewton, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); typedef NPairMultiOld<1, 1, 1, 0> NPairHalfMultiOldNewtonTri; NPairStyle(half/multi/old/newton/tri, NPairHalfMultiOldNewtonTri, - NP_HALF | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI); typedef NPairMultiOld<0, 1, 0, 1> NPairFullSizeMultiOld; NPairStyle(full/size/multi/old, NPairFullSizeMultiOld, - NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoff; NPairStyle(half/size/multi/old/newtoff, NPairHalfSizeMultiOldNewtoff, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairMultiOld<1, 1, 0, 1> NPairHalfSizeMultiOldNewton; NPairStyle(half/size/multi/old/newton, NPairHalfSizeMultiOldNewton, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_ORTHO); typedef NPairMultiOld<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTri; NPairStyle(half/size/multi/old/newton/tri, NPairHalfSizeMultiOldNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_MOLONLY | NP_NEWTON | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI); // clang-format on #else From 11f3195b0c5a582d933d01f44d5a7e32145401eb Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 11 Nov 2022 20:35:52 -0700 Subject: [PATCH 024/300] Fixing more oversights in npair classes --- src/npair_nsq.h | 14 ++++++-------- src/npair_nsq_ghost.cpp | 9 ++++++--- src/npair_nsq_ghost.h | 6 +++--- src/npair_respa_nsq.cpp | 4 ++-- src/npair_skip.h | 5 ----- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/npair_nsq.h b/src/npair_nsq.h index 505a72ea03a..749ea3a78c7 100644 --- a/src/npair_nsq.h +++ b/src/npair_nsq.h @@ -16,8 +16,7 @@ typedef NPairNsq<0, 1, 0> NPairFullNsq; NPairStyle(full/nsq, NPairFullNsq, - NP_FULL | NP_NSQ | NP_MOLONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairNsq<1, 0, 0> NPairHalfNsqNewtoff; NPairStyle(half/nsq/newtoff, @@ -27,13 +26,12 @@ NPairStyle(half/nsq/newtoff, typedef NPairNsq<1, 1, 0> NPairHalfNsqNewton; NPairStyle(half/nsq/newton, NPairHalfNsqNewton, - NP_HALF | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + NP_HALF | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); typedef NPairNsq<0, 1, 1> NPairFullSizeNsq; NPairStyle(full/size/nsq, NPairFullSizeNsq, - NP_FULL | NP_SIZE | NP_NSQ | NP_MOLONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_SIZE | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); typedef NPairNsq<1, 0, 1> NPairHalfSizeNsqNewtoff; NPairStyle(half/size/nsq/newtoff, @@ -43,13 +41,13 @@ NPairStyle(half/size/nsq/newtoff, typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; NPairStyle(half/size/nsq/newton, NPairHalfSizeNsqNewton, - NP_HALF | NP_SIZE | NP_NSQ | NP_MOLONLY | NP_NEWTON | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_Nsq_H -#define LMP_NPAIR_Nsq_H +#ifndef LMP_NPAIR_NSQ_H +#define LMP_NPAIR_NSQ_H #include "npair.h" diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index e9cc732e7d6..5e4185f9d6a 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -106,8 +106,8 @@ void NPairNsqGhost::build(NeighList *list) // stores ghost/ghost pairs only once // no molecular test when i = ghost atom - if (!HALF) jstart = 0; - else jstart = i + 1; + if (HALF) jstart = i + 1; + else jstart = 0; if (i < nlocal) { for (j = jstart; j < nall; j++) { @@ -155,7 +155,10 @@ void NPairNsqGhost::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx * delx + dely * dely + delz * delz; - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + if (HALF) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; } } diff --git a/src/npair_nsq_ghost.h b/src/npair_nsq_ghost.h index 79dfce0c9cb..516f0bd929d 100644 --- a/src/npair_nsq_ghost.h +++ b/src/npair_nsq_ghost.h @@ -18,9 +18,9 @@ NPairStyle(full/nsq/ghost, NPairFullNsqGhost, NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); -typedef NPairNsqGhost<1> NPairHalfNsqGhostNewtoff; -NPairStyle(half/nsq/ghost/newtoff, - NPairHalfNsqGhostNewtoff, +typedef NPairNsqGhost<1> NPairHalfNsqNewtoffGhost; +NPairStyle(half/nsq/newtoff/ghost, + NPairHalfNsqNewtoffGhost, NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_ORTHO | NP_TRI); // clang-format on #else diff --git a/src/npair_respa_nsq.cpp b/src/npair_respa_nsq.cpp index ce73d534c85..7c816f305be 100644 --- a/src/npair_respa_nsq.cpp +++ b/src/npair_respa_nsq.cpp @@ -119,14 +119,14 @@ void NPairRespaNsq::build(NeighList *list) // loop over remaining atoms, owned and ghost - for (j = i+1; j < nall; j++) { + for (j = i + 1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; if (NEWTON) { if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; + if ((itag + jtag) % 2 == 0) continue; } else if (itag < jtag) { if ((itag+jtag) % 2 == 1) continue; } else { diff --git a/src/npair_skip.h b/src/npair_skip.h index 6eaf03e1c53..4e851747301 100644 --- a/src/npair_skip.h +++ b/src/npair_skip.h @@ -24,11 +24,6 @@ NPairStyle(skip/ghost, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); - -NPairStyle(skip/half/size, - NPairSkip, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); // clang-format on #else From b0dcaa38231ed1188f89a04ac7e20ea5f01e4bab Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 12 Nov 2022 16:18:11 -0700 Subject: [PATCH 025/300] Updating OPENMP package --- src/OPENMP/npair_bin_atomonly_omp.cpp | 195 ++++++++++++++ src/OPENMP/npair_bin_atomonly_omp.h | 78 ++++++ ..._ghost_omp.cpp => npair_bin_ghost_omp.cpp} | 49 +++- ..._bin_ghost_omp.h => npair_bin_ghost_omp.h} | 18 +- src/OPENMP/npair_bin_omp.cpp | 237 +++++++++++++++++ src/OPENMP/npair_bin_omp.h | 77 ++++++ src/OPENMP/npair_full_bin_atomonly_omp.cpp | 106 -------- src/OPENMP/npair_full_bin_atomonly_omp.h | 39 --- src/OPENMP/npair_full_bin_omp.cpp | 135 ---------- src/OPENMP/npair_full_bin_omp.h | 39 --- src/OPENMP/npair_full_multi_old_omp.cpp | 144 ---------- src/OPENMP/npair_full_multi_old_omp.h | 39 --- src/OPENMP/npair_full_multi_omp.cpp | 154 ----------- src/OPENMP/npair_full_multi_omp.h | 39 --- src/OPENMP/npair_full_nsq_ghost_omp.h | 39 --- src/OPENMP/npair_full_nsq_omp.cpp | 134 ---------- src/OPENMP/npair_full_nsq_omp.h | 39 --- .../npair_half_bin_atomonly_newton_omp.cpp | 126 --------- .../npair_half_bin_atomonly_newton_omp.h | 38 --- .../npair_half_bin_newtoff_ghost_omp.cpp | 174 ------------ src/OPENMP/npair_half_bin_newtoff_ghost_omp.h | 39 --- src/OPENMP/npair_half_bin_newtoff_omp.cpp | 139 ---------- src/OPENMP/npair_half_bin_newtoff_omp.h | 38 --- src/OPENMP/npair_half_bin_newton_omp.cpp | 172 ------------ src/OPENMP/npair_half_bin_newton_omp.h | 38 --- src/OPENMP/npair_half_bin_newton_tri_omp.cpp | 145 ---------- src/OPENMP/npair_half_bin_newton_tri_omp.h | 38 --- src/OPENMP/npair_half_multi_newtoff_omp.cpp | 157 ----------- src/OPENMP/npair_half_multi_newtoff_omp.h | 38 --- src/OPENMP/npair_half_multi_newton_omp.cpp | 205 --------------- src/OPENMP/npair_half_multi_newton_omp.h | 38 --- .../npair_half_multi_newton_tri_omp.cpp | 171 ------------ src/OPENMP/npair_half_multi_newton_tri_omp.h | 38 --- .../npair_half_multi_old_newtoff_omp.cpp | 146 ----------- src/OPENMP/npair_half_multi_old_newtoff_omp.h | 38 --- .../npair_half_multi_old_newton_omp.cpp | 179 ------------- src/OPENMP/npair_half_multi_old_newton_omp.h | 38 --- .../npair_half_multi_old_newton_tri_omp.cpp | 155 ----------- .../npair_half_multi_old_newton_tri_omp.h | 38 --- .../npair_half_nsq_newtoff_ghost_omp.cpp | 158 ----------- src/OPENMP/npair_half_nsq_newtoff_omp.cpp | 134 ---------- src/OPENMP/npair_half_nsq_newtoff_omp.h | 38 --- src/OPENMP/npair_half_nsq_newton_omp.cpp | 152 ----------- src/OPENMP/npair_half_nsq_newton_omp.h | 38 --- .../npair_half_respa_bin_newtoff_omp.cpp | 203 -------------- src/OPENMP/npair_half_respa_bin_newtoff_omp.h | 39 --- .../npair_half_respa_bin_newton_tri_omp.cpp | 210 --------------- .../npair_half_respa_bin_newton_tri_omp.h | 38 --- src/OPENMP/npair_half_respa_nsq_newtoff_omp.h | 39 --- .../npair_half_respa_nsq_newton_omp.cpp | 216 --------------- .../npair_half_size_bin_newtoff_omp.cpp | 151 ----------- src/OPENMP/npair_half_size_bin_newtoff_omp.h | 39 --- src/OPENMP/npair_half_size_bin_newton_omp.cpp | 187 ------------- src/OPENMP/npair_half_size_bin_newton_omp.h | 38 --- .../npair_half_size_bin_newton_tri_omp.cpp | 158 ----------- .../npair_half_size_bin_newton_tri_omp.h | 38 --- .../npair_half_size_multi_newtoff_omp.cpp | 172 ------------ .../npair_half_size_multi_newtoff_omp.h | 38 --- .../npair_half_size_multi_newton_omp.cpp | 225 ---------------- src/OPENMP/npair_half_size_multi_newton_omp.h | 38 --- .../npair_half_size_multi_newton_tri_omp.cpp | 187 ------------- .../npair_half_size_multi_newton_tri_omp.h | 38 --- .../npair_half_size_multi_old_newtoff_omp.cpp | 158 ----------- .../npair_half_size_multi_old_newtoff_omp.h | 39 --- .../npair_half_size_multi_old_newton_omp.h | 38 --- ...air_half_size_multi_old_newton_tri_omp.cpp | 166 ------------ ...npair_half_size_multi_old_newton_tri_omp.h | 38 --- .../npair_half_size_nsq_newtoff_omp.cpp | 147 ----------- src/OPENMP/npair_half_size_nsq_newtoff_omp.h | 39 --- src/OPENMP/npair_half_size_nsq_newton_omp.cpp | 166 ------------ src/OPENMP/npair_half_size_nsq_newton_omp.h | 39 --- src/OPENMP/npair_halffull_newtoff_omp.cpp | 90 ------- src/OPENMP/npair_halffull_newtoff_omp.h | 44 ---- src/OPENMP/npair_halffull_newtoff_trim_omp.h | 44 ---- src/OPENMP/npair_halffull_newton_omp.cpp | 107 -------- src/OPENMP/npair_halffull_newton_omp.h | 44 ---- src/OPENMP/npair_halffull_newton_trim_omp.cpp | 120 --------- src/OPENMP/npair_halffull_newton_trim_omp.h | 44 ---- ...ff_trim_omp.cpp => npair_halffull_omp.cpp} | 73 ++++-- src/OPENMP/npair_halffull_omp.h | 107 ++++++++ src/OPENMP/npair_multi_old_omp.cpp | 243 +++++++++++++++++ src/OPENMP/npair_multi_old_omp.h | 77 ++++++ src/OPENMP/npair_multi_omp.cpp | 247 ++++++++++++++++++ src/OPENMP/npair_multi_omp.h | 75 ++++++ ..._ghost_omp.cpp => npair_nsq_ghost_omp.cpp} | 59 ++++- ...toff_ghost_omp.h => npair_nsq_ghost_omp.h} | 18 +- ...i_old_newton_omp.cpp => npair_nsq_omp.cpp} | 180 +++++++------ src/OPENMP/npair_nsq_omp.h | 66 +++++ ...newton_omp.cpp => npair_respa_bin_omp.cpp} | 126 ++++----- ...bin_newton_omp.h => npair_respa_bin_omp.h} | 22 +- ...ewtoff_omp.cpp => npair_respa_nsq_omp.cpp} | 48 +++- ...nsq_newton_omp.h => npair_respa_nsq_omp.h} | 18 +- src/npair_bin_ghost.cpp | 1 - src/npair_multi.cpp | 2 +- src/npair_multi_old.cpp | 1 - src/npair_nsq.h | 1 - src/npair_nsq_ghost.cpp | 2 +- src/npair_respa_bin.cpp | 2 +- 98 files changed, 1802 insertions(+), 7212 deletions(-) create mode 100644 src/OPENMP/npair_bin_atomonly_omp.cpp create mode 100644 src/OPENMP/npair_bin_atomonly_omp.h rename src/OPENMP/{npair_full_bin_ghost_omp.cpp => npair_bin_ghost_omp.cpp} (75%) rename src/OPENMP/{npair_full_bin_ghost_omp.h => npair_bin_ghost_omp.h} (67%) create mode 100644 src/OPENMP/npair_bin_omp.cpp create mode 100644 src/OPENMP/npair_bin_omp.h delete mode 100644 src/OPENMP/npair_full_bin_atomonly_omp.cpp delete mode 100644 src/OPENMP/npair_full_bin_atomonly_omp.h delete mode 100644 src/OPENMP/npair_full_bin_omp.cpp delete mode 100644 src/OPENMP/npair_full_bin_omp.h delete mode 100644 src/OPENMP/npair_full_multi_old_omp.cpp delete mode 100644 src/OPENMP/npair_full_multi_old_omp.h delete mode 100644 src/OPENMP/npair_full_multi_omp.cpp delete mode 100644 src/OPENMP/npair_full_multi_omp.h delete mode 100644 src/OPENMP/npair_full_nsq_ghost_omp.h delete mode 100644 src/OPENMP/npair_full_nsq_omp.cpp delete mode 100644 src/OPENMP/npair_full_nsq_omp.h delete mode 100644 src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_atomonly_newton_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newtoff_ghost_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newton_omp.h delete mode 100644 src/OPENMP/npair_half_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newton_omp.h delete mode 100644 src/OPENMP/npair_half_multi_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newton_omp.h delete mode 100644 src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_multi_old_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_nsq_newton_omp.h delete mode 100644 src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_respa_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_respa_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_respa_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_respa_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_bin_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_bin_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_old_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_omp.h delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h delete mode 100644 src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_nsq_newtoff_omp.h delete mode 100644 src/OPENMP/npair_half_size_nsq_newton_omp.cpp delete mode 100644 src/OPENMP/npair_half_size_nsq_newton_omp.h delete mode 100644 src/OPENMP/npair_halffull_newtoff_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newtoff_omp.h delete mode 100644 src/OPENMP/npair_halffull_newtoff_trim_omp.h delete mode 100644 src/OPENMP/npair_halffull_newton_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newton_omp.h delete mode 100644 src/OPENMP/npair_halffull_newton_trim_omp.cpp delete mode 100644 src/OPENMP/npair_halffull_newton_trim_omp.h rename src/OPENMP/{npair_halffull_newtoff_trim_omp.cpp => npair_halffull_omp.cpp} (59%) create mode 100644 src/OPENMP/npair_halffull_omp.h create mode 100644 src/OPENMP/npair_multi_old_omp.cpp create mode 100644 src/OPENMP/npair_multi_old_omp.h create mode 100644 src/OPENMP/npair_multi_omp.cpp create mode 100644 src/OPENMP/npair_multi_omp.h rename src/OPENMP/{npair_full_nsq_ghost_omp.cpp => npair_nsq_ghost_omp.cpp} (71%) rename src/OPENMP/{npair_half_nsq_newtoff_ghost_omp.h => npair_nsq_ghost_omp.h} (64%) rename src/OPENMP/{npair_half_size_multi_old_newton_omp.cpp => npair_nsq_omp.cpp} (51%) create mode 100644 src/OPENMP/npair_nsq_omp.h rename src/OPENMP/{npair_half_respa_bin_newton_omp.cpp => npair_respa_bin_omp.cpp} (67%) rename src/OPENMP/{npair_half_respa_bin_newton_omp.h => npair_respa_bin_omp.h} (55%) rename src/OPENMP/{npair_half_respa_nsq_newtoff_omp.cpp => npair_respa_nsq_omp.cpp} (81%) rename src/OPENMP/{npair_half_respa_nsq_newton_omp.h => npair_respa_nsq_omp.h} (63%) diff --git a/src/OPENMP/npair_bin_atomonly_omp.cpp b/src/OPENMP/npair_bin_atomonly_omp.cpp new file mode 100644 index 00000000000..2fe3baa0147 --- /dev/null +++ b/src/OPENMP/npair_bin_atomonly_omp.cpp @@ -0,0 +1,195 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_bin_atomonly_omp.h" + +#include "atom.h" +#include "error.h" +#include "my_page.h" +#include "neigh_list.h" +#include "npair_omp.h" + +#include "omp_compat.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinAtomonlyOmp::NPairBinAtomonlyOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairBinAtomonlyOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,k,n,itype,jtype,ibin,bin_start; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *molecule = atom->molecule; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over owned atoms, storing neighbors + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + // loop over all atoms in surrounding bins in stencil including self + // skip i = j + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinAtomonlyOmp<0,1,0,0>; +template class NPairBinAtomonlyOmp<1,0,0,0>; +template class NPairBinAtomonlyOmp<1,1,0,0>; +template class NPairBinAtomonlyOmp<1,1,1,0>; +template class NPairBinAtomonlyOmp<0,1,0,1>; +template class NPairBinAtomonlyOmp<1,0,0,1>; +template class NPairBinAtomonlyOmp<1,1,0,1>; +template class NPairBinAtomonlyOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_bin_atomonly_omp.h b/src/OPENMP/npair_bin_atomonly_omp.h new file mode 100644 index 00000000000..c4884868986 --- /dev/null +++ b/src/OPENMP/npair_bin_atomonly_omp.h @@ -0,0 +1,78 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairBinAtomonlyOmp<0, 1, 0, 0> NPairFullBinAtomonlyOmp; +NPairStyle(full/bin/atomonly/omp, + NPairFullBinAtomonlyOmp, + NP_FULL | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 0, 0, 0> NPairHalfBinNewtoffAtomonlyOmp; +NPairStyle(half/bin/newtoff/atomonly/omp, + NPairHalfBinNewtoffAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 1, 0, 0> NPairHalfBinNewtonAtomonlyOmp; +NPairStyle(half/bin/newton/atomonly/omp, + NPairHalfBinNewtonAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonlyOmp<1, 1, 1, 0> NPairHalfBinNewtonTriAtomonlyOmp; +NPairStyle(half/bin/newton/tri/atomonly/omp, + NPairHalfBinNewtonTriAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinAtomonlyOmp<0, 1, 0, 1> NPairFullSizeBinAtomonlyOmp; +NPairStyle(full/size/bin/atomonly/omp, + NPairFullSizeBinAtomonlyOmp, + NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffAtomonlyOmp; +NPairStyle(half/size/bin/newtoff/atomonly/omp, + NPairHalfSizeBinNewtoffAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinAtomonlyOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonAtomonlyOmp; +NPairStyle(half/size/bin/newton/atomonly/omp, + NPairHalfSizeBinNewtonAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinAtomonlyOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriAtomonlyOmp; +NPairStyle(half/size/bin/newton/tri/atomonly/omp, + NPairHalfSizeBinNewtonTriAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + + +#ifndef LMP_NPAIR_BIN_ATOMONLY_OMP_H +#define LMP_NPAIR_BIN_ATOMONLY_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinAtomonlyOmp : public NPair { + public: + NPairBinAtomonlyOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_bin_ghost_omp.cpp b/src/OPENMP/npair_bin_ghost_omp.cpp similarity index 75% rename from src/OPENMP/npair_full_bin_ghost_omp.cpp rename to src/OPENMP/npair_bin_ghost_omp.cpp index 5723a418f51..8f3105dc750 100644 --- a/src/OPENMP/npair_full_bin_ghost_omp.cpp +++ b/src/OPENMP/npair_bin_ghost_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_full_bin_ghost_omp.h" +#include "npair_bin_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,15 +27,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairFullBinGhostOmp::NPairFullBinGhostOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBinGhostOmp::NPairBinGhostOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j + Full: + binned neighbor list construction for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + owned and ghost atoms check own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ -void NPairFullBinGhostOmp::build(NeighList *list) +template +void NPairBinGhostOmp::build(NeighList *list) { const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; @@ -48,7 +58,7 @@ void NPairFullBinGhostOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nall); - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; + int i,j,k,n,itype,jtype,ibin,bin_start,which,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int xbin,ybin,zbin,xbin2,ybin2,zbin2; @@ -93,14 +103,24 @@ void NPairFullBinGhostOmp::build(NeighList *list) // loop over all atoms in surrounding bins in stencil including self // when i is a ghost atom, must check if stencil bin is out of bounds - // skip i = j // no molecular test when i = ghost atom if (i < nlocal) { ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + if (HALF) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + // stores ghost/ghost pairs only once + if (j <= i) continue; + } else { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -138,7 +158,11 @@ void NPairFullBinGhostOmp::build(NeighList *list) ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; + if (HALF) { + if (j <= i) continue; + } else { + if (i == j) continue; + } jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -164,3 +188,8 @@ void NPairFullBinGhostOmp::build(NeighList *list) list->inum = nlocal; list->gnum = nall - nlocal; } + +namespace LAMMPS_NS { +template class NPairBinGhostOmp<0>; +template class NPairBinGhostOmp<1>; +} diff --git a/src/OPENMP/npair_full_bin_ghost_omp.h b/src/OPENMP/npair_bin_ghost_omp.h similarity index 67% rename from src/OPENMP/npair_full_bin_ghost_omp.h rename to src/OPENMP/npair_bin_ghost_omp.h index 6de134dcf87..df18886e91e 100644 --- a/src/OPENMP/npair_full_bin_ghost_omp.h +++ b/src/OPENMP/npair_bin_ghost_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairBinGhostOmp<0> NPairFullBinGhostOmp; NPairStyle(full/bin/ghost/omp, NPairFullBinGhostOmp, - NP_FULL | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); + NP_FULL | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinGhostOmp<1> NPairHalfBinNewtoffGhostOmp; +NPairStyle(half/bin/newtoff/ghost/omp, + NPairHalfBinNewtoffGhostOmp, + NP_HALF | NP_BIN | NP_GHOST | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_GHOST_OMP_H -#define LMP_NPAIR_FULL_BIN_GHOST_OMP_H +#ifndef LMP_NPAIR_BIN_GHOST_OMP_H +#define LMP_NPAIR_BIN_GHOST_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairFullBinGhostOmp : public NPair { +template +class NPairBinGhostOmp : public NPair { public: - NPairFullBinGhostOmp(class LAMMPS *); + NPairBinGhostOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_bin_omp.cpp b/src/OPENMP/npair_bin_omp.cpp new file mode 100644 index 00000000000..7029f71df7c --- /dev/null +++ b/src/OPENMP/npair_bin_omp.cpp @@ -0,0 +1,237 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "omp_compat.h" +#include "npair_bin_omp.h" +#include "npair_omp.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; + +/* ---------------------------------------------------------------------- */ + +template +NPairBinOmp::NPairBinOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairBinOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,k,n,itype,jtype,ibin,bin_start,which,imol,iatom; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr; + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over owned atoms, storing neighbors + + for (i = ifrom; i < ito; 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 all atoms in surrounding bins in stencil including self + // skip i = j + + ibin = atom2bin[i]; + + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + if (!HALF) list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairBinOmp<0,1,0,0>; +template class NPairBinOmp<1,0,0,0>; +template class NPairBinOmp<1,1,0,0>; +template class NPairBinOmp<1,1,1,0>; +template class NPairBinOmp<0,1,0,1>; +template class NPairBinOmp<1,0,0,1>; +template class NPairBinOmp<1,1,0,1>; +template class NPairBinOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_bin_omp.h b/src/OPENMP/npair_bin_omp.h new file mode 100644 index 00000000000..595b789d92b --- /dev/null +++ b/src/OPENMP/npair_bin_omp.h @@ -0,0 +1,77 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairBinOmp<0, 1, 0, 0> NPairFullBinOmp; +NPairStyle(full/bin/omp, + NPairFullBinOmp, + NP_FULL | NP_BIN | NP_OMP | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 0> NPairHalfBinNewtoffOmp; +NPairStyle(half/bin/newtoff/omp, + NPairHalfBinNewtoffOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 0> NPairHalfBinNewtonOmp; +NPairStyle(half/bin/newton/omp, + NPairHalfBinNewtonOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 0> NPairHalfBinNewtonTriOmp; +NPairStyle(half/bin/newton/tri/omp, + NPairHalfBinNewtonTriOmp, + NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinOmp<0, 1, 0, 1> NPairFullSizeBinOmp; +NPairStyle(full/size/bin/omp, + NPairFullSizeBinOmp, + NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffOmp; +NPairStyle(half/size/bin/newtoff/omp, + NPairHalfSizeBinNewtoffOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonOmp; +NPairStyle(half/size/bin/newton/omp, + NPairHalfSizeBinNewtonOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriOmp; +NPairStyle(half/size/bin/newton/tri/omp, + NPairHalfSizeBinNewtonTriOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_BIN_OMP_H +#define LMP_NPAIR_BIN_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairBinOmp : public NPair { + public: + NPairBinOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_bin_atomonly_omp.cpp b/src/OPENMP/npair_full_bin_atomonly_omp.cpp deleted file mode 100644 index 0a37cca287b..00000000000 --- a/src/OPENMP/npair_full_bin_atomonly_omp.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_bin_atomonly_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinAtomonlyOmp::NPairFullBinAtomonlyOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinAtomonlyOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_bin_atomonly_omp.h b/src/OPENMP/npair_full_bin_atomonly_omp.h deleted file mode 100644 index 50b1aa753c6..00000000000 --- a/src/OPENMP/npair_full_bin_atomonly_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/atomonly/omp, - NPairFullBinAtomonlyOmp, - NP_FULL | NP_BIN | NP_ATOMONLY | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_ATOMONLY_OMP_H -#define LMP_NPAIR_FULL_BIN_ATOMONLY_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinAtomonlyOmp : public NPair { - public: - NPairFullBinAtomonlyOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_bin_omp.cpp b/src/OPENMP/npair_full_bin_omp.cpp deleted file mode 100644 index 94668002a9d..00000000000 --- a/src/OPENMP/npair_full_bin_omp.cpp +++ /dev/null @@ -1,135 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_bin_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinOmp::NPairFullBinOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; 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 all atoms in surrounding bins in stencil including self - // skip i = j - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_bin_omp.h b/src/OPENMP/npair_full_bin_omp.h deleted file mode 100644 index 333025a1fba..00000000000 --- a/src/OPENMP/npair_full_bin_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/omp, - NPairFullBinOmp, - NP_FULL | NP_BIN | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_OMP_H -#define LMP_NPAIR_FULL_BIN_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullBinOmp : public NPair { - public: - NPairFullBinOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_multi_old_omp.cpp b/src/OPENMP/npair_full_multi_old_omp.cpp deleted file mode 100644 index f0ed6360ab8..00000000000 --- a/src/OPENMP/npair_full_multi_old_omp.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_full_multi_old_omp.h" -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOldOmp::NPairFullMultiOldOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi-type stencil is itype dependent and is distance checked - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOldOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i, j, k, n, itype, jtype, ibin, which, ns, imol, iatom; - tagint tagprev; - double xtmp, ytmp, ztmp, delx, dely, delz, rsq; - int *neighptr, *s; - double *cutsq, *distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in other bins in stencil, including self - // skip if i,j neighbor cutoff is less than bin distance - // skip i = j - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin + s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_multi_old_omp.h b/src/OPENMP/npair_full_multi_old_omp.h deleted file mode 100644 index 5d9f4c2f88d..00000000000 --- a/src/OPENMP/npair_full_multi_old_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi/old/omp, - NPairFullMultiOldOmp, - NP_FULL | NP_MULTI_OLD | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OLD_OMP_H -#define LMP_NPAIR_FULL_MULTI_OLD_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOldOmp : public NPair { - public: - NPairFullMultiOldOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_multi_omp.cpp b/src/OPENMP/npair_full_multi_omp.cpp deleted file mode 100644 index 1e398383818..00000000000 --- a/src/OPENMP/npair_full_multi_omp.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_multi_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairFullMultiOmp::NPairFullMultiOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - multi stencil is icollection-jcollection dependent - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullMultiOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (i == j) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_multi_omp.h b/src/OPENMP/npair_full_multi_omp.h deleted file mode 100644 index 0d71bf7bc68..00000000000 --- a/src/OPENMP/npair_full_multi_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/multi/omp, - NPairFullMultiOmp, - NP_FULL | NP_MULTI | NP_OMP | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_MULTI_OMP_H -#define LMP_NPAIR_FULL_MULTI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullMultiOmp : public NPair { - public: - NPairFullMultiOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_nsq_ghost_omp.h b/src/OPENMP/npair_full_nsq_ghost_omp.h deleted file mode 100644 index 448354d4ba6..00000000000 --- a/src/OPENMP/npair_full_nsq_ghost_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq/ghost/omp, - NPairFullNsqGhostOmp, - NP_FULL | NP_NSQ | NP_GHOST | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_GHOST_OMP_H -#define LMP_NPAIR_FULL_NSQ_GHOST_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqGhostOmp : public NPair { - public: - NPairFullNsqGhostOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_full_nsq_omp.cpp b/src/OPENMP/npair_full_nsq_omp.cpp deleted file mode 100644 index 63499067712..00000000000 --- a/src/OPENMP/npair_full_nsq_omp.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_full_nsq_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullNsqOmp::NPairFullNsqOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 search for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullNsqOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int nall = atom->nlocal + atom->nghost; - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; 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 all atoms, owned and ghost - // skip i = j - - for (j = 0; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (i == j) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = 0; -} diff --git a/src/OPENMP/npair_full_nsq_omp.h b/src/OPENMP/npair_full_nsq_omp.h deleted file mode 100644 index 53e913a18c1..00000000000 --- a/src/OPENMP/npair_full_nsq_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/nsq/omp, - NPairFullNsqOmp, - NP_FULL | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_NSQ_OMP_H -#define LMP_NPAIR_FULL_NSQ_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairFullNsqOmp : public NPair { - public: - NPairFullNsqOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp b/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp deleted file mode 100644 index 1bc11996280..00000000000 --- a/src/OPENMP/npair_half_bin_atomonly_newton_omp.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_bin_atomonly_newton_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinAtomonlyNewtonOmp::NPairHalfBinAtomonlyNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinAtomonlyNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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]) neighptr[n++] = j; - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; 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]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_atomonly_newton_omp.h b/src/OPENMP/npair_half_bin_atomonly_newton_omp.h deleted file mode 100644 index dcec3aeee23..00000000000 --- a/src/OPENMP/npair_half_bin_atomonly_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/atomonly/newton/omp, - NPairHalfBinAtomonlyNewtonOmp, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_OMP_H -#define LMP_NPAIR_HALF_BIN_ATOMONLY_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinAtomonlyNewtonOmp : public NPair { - public: - NPairHalfBinAtomonlyNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp b/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp deleted file mode 100644 index 22550332043..00000000000 --- a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.cpp +++ /dev/null @@ -1,174 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newtoff_ghost_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffGhostOmp::NPairHalfBinNewtoffGhostOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - owned and ghost atoms check own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffGhostOmp::build(NeighList *list) -{ - const int nlocal = atom->nlocal; - const int nall = nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nall); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - int xbin,ybin,zbin,xbin2,ybin2,zbin2; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in other bins in stencil including self - // when i is a ghost atom, must check if stencil bin is out of bounds - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - } else { - ibin = coord2bin(x[i],xbin,ybin,zbin); - for (k = 0; k < nstencil; k++) { - xbin2 = xbin + stencilxyz[k][0]; - ybin2 = ybin + stencilxyz[k][1]; - zbin2 = zbin + stencilxyz[k][2]; - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->gnum = nall - atom->nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h b/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h deleted file mode 100644 index 0258320f88d..00000000000 --- a/src/OPENMP/npair_half_bin_newtoff_ghost_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff/ghost/omp, - NPairHalfBinNewtoffGhostOmp, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_GHOST | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_GHOST_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffGhostOmp : public NPair { - public: - NPairHalfBinNewtoffGhostOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_bin_newtoff_omp.cpp deleted file mode 100644 index 36997d9bcba..00000000000 --- a/src/OPENMP/npair_half_bin_newtoff_omp.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newtoff_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtoffOmp::NPairHalfBinNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newtoff_omp.h b/src/OPENMP/npair_half_bin_newtoff_omp.h deleted file mode 100644 index e5d3034667d..00000000000 --- a/src/OPENMP/npair_half_bin_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newtoff/omp, - NPairHalfBinNewtoffOmp, - NP_HALF | NP_BIN | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtoffOmp : public NPair { - public: - NPairHalfBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newton_omp.cpp b/src/OPENMP/npair_half_bin_newton_omp.cpp deleted file mode 100644 index 1663a2f14c9..00000000000 --- a/src/OPENMP/npair_half_bin_newton_omp.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newton_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonOmp::NPairHalfBinNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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 != Atom::ATOMIC) { - 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); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; 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 != Atom::ATOMIC) { - 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); - // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newton_omp.h b/src/OPENMP/npair_half_bin_newton_omp.h deleted file mode 100644 index 68064cdf450..00000000000 --- a/src/OPENMP/npair_half_bin_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/omp, - NPairHalfBinNewtonOmp, - NP_HALF | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonOmp : public NPair { - public: - NPairHalfBinNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_bin_newton_tri_omp.cpp deleted file mode 100644 index e754456ef1a..00000000000 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,145 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_bin_newton_tri_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTriOmp::NPairHalfBinNewtonTriOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_bin_newton_tri_omp.h b/src/OPENMP/npair_half_bin_newton_tri_omp.h deleted file mode 100644 index 90d5af5db12..00000000000 --- a/src/OPENMP/npair_half_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/tri/omp, - NPairHalfBinNewtonTriOmp, - NP_HALF | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonTriOmp : public NPair { - public: - NPairHalfBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newtoff_omp.cpp b/src/OPENMP/npair_half_multi_newtoff_omp.cpp deleted file mode 100644 index 1b65653f768..00000000000 --- a/src/OPENMP/npair_half_multi_newtoff_omp.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newtoff_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtoffOmp::NPairHalfMultiNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newtoff_omp.h b/src/OPENMP/npair_half_multi_newtoff_omp.h deleted file mode 100644 index 658f41f926f..00000000000 --- a/src/OPENMP/npair_half_multi_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newtoff/omp, - NPairHalfMultiNewtoffOmp, - NP_HALF | NP_MULTI | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtoffOmp : public NPair { - public: - NPairHalfMultiNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newton_omp.cpp b/src/OPENMP/npair_half_multi_newton_omp.cpp deleted file mode 100644 index 8add1d37032..00000000000 --- a/src/OPENMP/npair_half_multi_newton_omp.cpp +++ /dev/null @@ -1,205 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newton_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonOmp::NPairHalfMultiNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if (icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if ((icollection != jcollection) && (j < i)) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newton_omp.h b/src/OPENMP/npair_half_multi_newton_omp.h deleted file mode 100644 index 44bee84653a..00000000000 --- a/src/OPENMP/npair_half_multi_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton/omp, - NPairHalfMultiNewtonOmp, - NP_HALF | NP_MULTI | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonOmp : public NPair { - public: - NPairHalfMultiNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_newton_tri_omp.cpp deleted file mode 100644 index a152d011a78..00000000000 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_newton_tri_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiNewtonTriOmp::NPairHalfMultiNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,jbin,icollection,jcollection,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[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; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if (cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_newton_tri_omp.h b/src/OPENMP/npair_half_multi_newton_tri_omp.h deleted file mode 100644 index 21731f4f0b2..00000000000 --- a/src/OPENMP/npair_half_multi_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/newton/tri/omp, - NPairHalfMultiNewtonTriOmp, - NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_MULTI_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiNewtonTriOmp : public NPair { - public: - NPairHalfMultiNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp b/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp deleted file mode 100644 index ac5e9dae04f..00000000000 --- a/src/OPENMP/npair_half_multi_old_newtoff_omp.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newtoff_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtoffOmp::NPairHalfMultiOldNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newtoff_omp.h b/src/OPENMP/npair_half_multi_old_newtoff_omp.h deleted file mode 100644 index 26484d6c5b2..00000000000 --- a/src/OPENMP/npair_half_multi_old_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newtoff/omp, - NPairHalfMultiOldNewtoffOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtoffOmp : public NPair { - public: - NPairHalfMultiOldNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newton_omp.cpp b/src/OPENMP/npair_half_multi_old_newton_omp.cpp deleted file mode 100644 index baa9dd07249..00000000000 --- a/src/OPENMP/npair_half_multi_old_newton_omp.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newton_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonOmp::NPairHalfMultiOldNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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 != Atom::ATOMIC) { - 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 atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newton_omp.h b/src/OPENMP/npair_half_multi_old_newton_omp.h deleted file mode 100644 index 8182b49bd75..00000000000 --- a/src/OPENMP/npair_half_multi_old_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton/omp, - NPairHalfMultiOldNewtonOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonOmp : public NPair { - public: - NPairHalfMultiOldNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp deleted file mode 100644 index e4895ff1a97..00000000000 --- a/src/OPENMP/npair_half_multi_old_newton_tri_omp.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_multi_old_newton_tri_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfMultiOldNewtonTriOmp::NPairHalfMultiOldNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfMultiOldNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,which,ns,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*s; - double *cutsq,*distsq; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; 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 all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_multi_old_newton_tri_omp.h b/src/OPENMP/npair_half_multi_old_newton_tri_omp.h deleted file mode 100644 index 5efb007dc16..00000000000 --- a/src/OPENMP/npair_half_multi_old_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/multi/old/newton/tri/omp, - NPairHalfMultiOldNewtonTriOmp, - NP_HALF | NP_MULTI_OLD | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_MULTI_OLD_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfMultiOldNewtonTriOmp : public NPair { - public: - NPairHalfMultiOldNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp b/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp deleted file mode 100644 index 388e51e1af1..00000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newtoff_ghost_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffGhostOmp::NPairHalfNsqNewtoffGhostOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - include neighbors of ghost atoms, but no "special neighbors" for ghosts - pair stored once if i,j are both owned and i < j - pair stored by me if i owned and j ghost (also stored by proc owning j) - pair stored once if i,j are both ghost and i < j -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffGhostOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int nall = nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nall); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned & ghost atoms, storing neighbors - - for (i = ifrom; i < ito; 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 remaining atoms, owned and ghost - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs with owned atom only, on both procs - // stores ghost/ghost pairs only once - // no molecular test when i = ghost atom - - if (i < nlocal) { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - } else { - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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]) neighptr[n++] = j; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = atom->nlocal; - list->gnum = nall - atom->nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newtoff_omp.cpp b/src/OPENMP/npair_half_nsq_newtoff_omp.cpp deleted file mode 100644 index 002ea37e6b4..00000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_omp.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newtoff_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtoffOmp::NPairHalfNsqNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int nall = atom->nlocal + atom->nghost; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; 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 remaining atoms, owned and ghost - // only store pair if i < j - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - 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 != Atom::ATOMIC) { - 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; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newtoff_omp.h b/src/OPENMP/npair_half_nsq_newtoff_omp.h deleted file mode 100644 index 47a03750f70..00000000000 --- a/src/OPENMP/npair_half_nsq_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newtoff/omp, - NPairHalfNsqNewtoffOmp, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtoffOmp : public NPair { - public: - NPairHalfNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_nsq_newton_omp.cpp b/src/OPENMP/npair_half_nsq_newton_omp.cpp deleted file mode 100644 index cb08cb7f7ac..00000000000 --- a/src/OPENMP/npair_half_nsq_newton_omp.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_nsq_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfNsqNewtonOmp::NPairHalfNsqNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - every pair stored exactly once by some processor - decision on ghost atoms based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,itag,jtag,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itag = tag[i]; - 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 remaining atoms, owned and ghost - // itag = jtag is possible for long cutoffs that include images of self - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_nsq_newton_omp.h b/src/OPENMP/npair_half_nsq_newton_omp.h deleted file mode 100644 index 00e975d3899..00000000000 --- a/src/OPENMP/npair_half_nsq_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/nsq/newton/omp, - NPairHalfNsqNewtonOmp, - NP_HALF | NP_NSQ | NP_NEWTON | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfNsqNewtonOmp : public NPair { - public: - NPairHalfNsqNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp deleted file mode 100644 index c6be04419d8..00000000000 --- a/src/OPENMP/npair_half_respa_bin_newtoff_omp.cpp +++ /dev/null @@ -1,203 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_bin_newtoff_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtoffOmp::NPairHalfRespaBinNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_respa_bin_newtoff_omp.h b/src/OPENMP/npair_half_respa_bin_newtoff_omp.h deleted file mode 100644 index 8ad6209d212..00000000000 --- a/src/OPENMP/npair_half_respa_bin_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newtoff/omp, - NPairHalfRespaBinNewtoffOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtoffOmp : public NPair { - public: - NPairHalfRespaBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp deleted file mode 100644 index c998f712900..00000000000 --- a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_bin_newton_tri_omp.h" -#include "npair_omp.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; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaBinNewtonTriOmp::NPairHalfRespaBinNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->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 all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) - neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h b/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h deleted file mode 100644 index df453729601..00000000000 --- a/src/OPENMP/npair_half_respa_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/bin/newton/tri/omp, - NPairHalfRespaBinNewtonTriOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaBinNewtonTriOmp : public NPair { - public: - NPairHalfRespaBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h b/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h deleted file mode 100644 index abd28fd51b4..00000000000 --- a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/respa/nsq/newtoff/omp, - NPairHalfRespaNsqNewtoffOmp, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfRespaNsqNewtoffOmp : public NPair { - public: - NPairHalfRespaNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp b/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp deleted file mode 100644 index 6604861f749..00000000000 --- a/src/OPENMP/npair_half_respa_nsq_newton_omp.cpp +++ /dev/null @@ -1,216 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "omp_compat.h" -#include "npair_half_respa_nsq_newton_omp.h" -#include "npair_omp.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "group.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfRespaNsqNewtonOmp::NPairHalfRespaNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - multiple respa lists - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - - NPAIR_OMP_INIT; - - const int respamiddle = list->respamiddle; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,n,itype,jtype,itag,jtag,n_inner,n_middle,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *neighptr,*neighptr_inner,*neighptr_middle; - - // loop over each atom, storing neighbors - - double **x = atom->x; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - } - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - MyPage &ipage_inner = list->ipage_inner[tid]; - ipage.reset(); - ipage_inner.reset(); - - MyPage *ipage_middle; - if (respamiddle) { - ipage_middle = list->ipage_middle + tid; - ipage_middle->reset(); - } - - int which = 0; - int minchange = 0; - - for (i = ifrom; i < ito; i++) { - - n = n_inner = 0; - neighptr = ipage.vget(); - neighptr_inner = ipage_inner.vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - itag = tag[i]; - 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 remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); - } - - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - ilist_inner[i] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage.vgot(n_inner); - if (ipage_inner.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[i] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n_middle); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - list->inum_inner = nlocal; - if (respamiddle) list->inum_middle = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp b/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp deleted file mode 100644 index c205b675396..00000000000 --- a/src/OPENMP/npair_half_size_bin_newtoff_omp.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtoffOmp::NPairHalfSizeBinNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and surrounding bins in non-Newton stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - ibin = atom2bin[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in surrounding bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newtoff_omp.h b/src/OPENMP/npair_half_size_bin_newtoff_omp.h deleted file mode 100644 index a91836b1523..00000000000 --- a/src/OPENMP/npair_half_size_bin_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newtoff/omp, - NPairHalfSizeBinNewtoffOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtoffOmp : public NPair { - public: - NPairHalfSizeBinNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_bin_newton_omp.cpp b/src/OPENMP/npair_half_size_bin_newton_omp.cpp deleted file mode 100644 index 628057d41d8..00000000000 --- a/src/OPENMP/npair_half_size_bin_newton_omp.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonOmp::NPairHalfSizeBinNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newton_omp.h b/src/OPENMP/npair_half_size_bin_newton_omp.h deleted file mode 100644 index efc554bb3c4..00000000000 --- a/src/OPENMP/npair_half_size_bin_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton/omp, - NPairHalfSizeBinNewtonOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonOmp : public NPair { - public: - NPairHalfSizeBinNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp deleted file mode 100644 index c3202964428..00000000000 --- a/src/OPENMP/npair_half_size_bin_newton_tri_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_bin_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeBinNewtonTriOmp::NPairHalfSizeBinNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,ibin,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - // loop over each atom, storing neighbors - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins in stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_bin_newton_tri_omp.h b/src/OPENMP/npair_half_size_bin_newton_tri_omp.h deleted file mode 100644 index 65b46395ca2..00000000000 --- a/src/OPENMP/npair_half_size_bin_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/bin/newton/tri/omp, - NPairHalfSizeBinNewtonTriOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_BIN_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeBinNewtonTriOmp : public NPair { - public: - NPairHalfSizeBinNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp b/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp deleted file mode 100644 index 73564a150c1..00000000000 --- a/src/OPENMP/npair_half_size_multi_newtoff_omp.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtoffOmp::NPairHalfSizeMultiNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - // use full stencil for all collection combinations - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >=0; j = bins[j]) { - if (j <= i) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newtoff_omp.h b/src/OPENMP/npair_half_size_multi_newtoff_omp.h deleted file mode 100644 index 2e58d9ea389..00000000000 --- a/src/OPENMP/npair_half_size_multi_newtoff_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newtoff/omp, - NPairHalfSizeMultiNewtoffOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_OMP | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtoffOmp : public NPair { - public: - NPairHalfSizeMultiNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newton_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_omp.cpp deleted file mode 100644 index 0ed843ea0bf..00000000000 --- a/src/OPENMP/npair_half_size_multi_newton_omp.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonOmp::NPairHalfSizeMultiNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - // if same size: uses half stencil so check central bin - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - - if(icollection == jcollection) js = bins[i]; - else js = binhead_multi[jcollection][jbin]; - - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = js; j >= 0; j = bins[j]) { - if(icollection != jcollection && j < i) continue; - - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - // for all collections, loop over all atoms in other bins in stencil, store every pair - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - if (history && rsq < radsum*radsum) - j = j ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newton_omp.h b/src/OPENMP/npair_half_size_multi_newton_omp.h deleted file mode 100644 index 99f91749137..00000000000 --- a/src/OPENMP/npair_half_size_multi_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton/omp, - NPairHalfSizeMultiNewtonOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonOmp : public NPair { - public: - NPairHalfSizeMultiNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp deleted file mode 100644 index 9a0ead482ba..00000000000 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiNewtonTriOmp::NPairHalfSizeMultiNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - multi stencil is icollection-jcollection dependent - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,icollection,jcollection,ibin,jbin,ns; - int which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - int js; - - // loop over each atom, storing neighbors - - int *collection = neighbor->collection; - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - icollection = collection[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - ibin = atom2bin[i]; - - // loop through stencils for all collections - for (jcollection = 0; jcollection < ncollections; jcollection++) { - - // if same collection use own bin - if(icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); - - - // loop over all atoms in bins in stencil - // stencil is empty if i larger than j - // stencil is half if i same size as j - // stencil is full if i smaller than j - // if half: pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - s = stencil_multi[icollection][jcollection]; - ns = nstencil_multi[icollection][jcollection]; - - for (k = 0; k < ns; k++) { - js = binhead_multi[jcollection][jbin + s[k]]; - for (j = js; j >= 0; j = bins[j]) { - - // if same size (same collection), use half stencil - if(cutcollectionsq[icollection][icollection] == cutcollectionsq[jcollection][jcollection]){ - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_newton_tri_omp.h b/src/OPENMP/npair_half_size_multi_newton_tri_omp.h deleted file mode 100644 index d4f6eacc272..00000000000 --- a/src/OPENMP/npair_half_size_multi_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/newton/tri/omp, - NPairHalfSizeMultiNewtonTriOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiNewtonTriOmp : public NPair { - public: - NPairHalfSizeMultiNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp b/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp deleted file mode 100644 index c368e71095c..00000000000 --- a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtoffOmp::NPairHalfSizeMultiOldNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - multi-type stencil is itype dependent and is distance checked - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in other bins in stencil including self - // only store pair if i < j - // skip if i,j neighbor cutoff is less than bin distance - // stores own/own pairs only once - // stores own/ghost pairs on both procs - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - if (j <= i) continue; - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h b/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h deleted file mode 100644 index 05eb0a52691..00000000000 --- a/src/OPENMP/npair_half_size_multi_old_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newtoff/omp, - NPairHalfSizeMultiOldNewtoffOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtoffOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newton_omp.h b/src/OPENMP/npair_half_size_multi_old_newton_omp.h deleted file mode 100644 index 70ae082dbbe..00000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton/omp, - NPairHalfSizeMultiOldNewtonOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_OMP | NP_ORTHO); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp deleted file mode 100644 index c74b191f66c..00000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_multi_old_newton_tri_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeMultiOldNewtonTriOmp::NPairHalfSizeMultiOldNewtonTriOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over all atoms in bins, including self, in stencil - // skip if i,j neighbor cutoff is less than bin distance - // bins below self are excluded from stencil - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h b/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h deleted file mode 100644 index 3c1765b668f..00000000000 --- a/src/OPENMP/npair_half_size_multi_old_newton_tri_omp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/multi/old/newton/tri/omp, - NPairHalfSizeMultiOldNewtonTriOmp, - NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_NEWTON | NP_TRI | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_OMP_H -#define LMP_NPAIR_HALF_SIZE_MULTI_OLD_NEWTON_TRI_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeMultiOldNewtonTriOmp : public NPair { - public: - NPairHalfSizeMultiOldNewtonTriOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp b/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp deleted file mode 100644 index 020551bd8e2..00000000000 --- a/src/OPENMP/npair_half_size_nsq_newtoff_omp.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newtoff_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtoffOmp::NPairHalfSizeNsqNewtoffOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - shear history must be accounted for when a neighbor pair is added - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtoffOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,n,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int nall = atom->nlocal + atom->nghost; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_nsq_newtoff_omp.h b/src/OPENMP/npair_half_size_nsq_newtoff_omp.h deleted file mode 100644 index 93f038eed4b..00000000000 --- a/src/OPENMP/npair_half_size_nsq_newtoff_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newtoff/omp, - NPairHalfSizeNsqNewtoffOmp, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTOFF | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_OMP_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtoffOmp : public NPair { - public: - NPairHalfSizeNsqNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp b/src/OPENMP/npair_half_size_nsq_newton_omp.cpp deleted file mode 100644 index 35dc42ec5b2..00000000000 --- a/src/OPENMP/npair_half_size_nsq_newton_omp.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_half_size_nsq_newton_omp.h" - -#include "atom.h" -#include "atom_vec.h" -#include "domain.h" -#include "error.h" -#include "molecule.h" -#include "group.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfSizeNsqNewtonOmp::NPairHalfSizeNsqNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - size particles - N^2 / 2 search for neighbor pairs with full Newton's 3rd law - shear history must be accounted for when a neighbor pair is added - pair added to list if atoms i and j are both owned and i < j - if j is ghost only me or other proc adds pair - decision based on itag,jtag tests -------------------------------------------------------------------------- */ - -void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; - const int molecular = atom->molecular; - const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i,j,jh,n,itag,jtag,which,imol,iatom; - tagint tagprev; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - tagint *tag = atom->tag; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - tagint **special = atom->special; - int **nspecial = atom->nspecial; - - int *molindex = atom->molindex; - int *molatom = atom->molatom; - Molecule **onemols = atom->avec->onemols; - - int nall = atom->nlocal + atom->nghost; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - for (i = ifrom; i < ito; i++) { - - n = 0; - neighptr = ipage.vget(); - - itag = tag[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } - - // loop over remaining atoms, owned and ghost - - for (j = i+1; j < nall; j++) { - if (includegroup && !(mask[j] & bitmask)) continue; - - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - - if (exclude && exclusion(i,j,type[i],type[j],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; - radsum = radi + radius[j]; - cutsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; -} diff --git a/src/OPENMP/npair_half_size_nsq_newton_omp.h b/src/OPENMP/npair_half_size_nsq_newton_omp.h deleted file mode 100644 index 9a7e9120079..00000000000 --- a/src/OPENMP/npair_half_size_nsq_newton_omp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/size/nsq/newton/omp, - NPairHalfSizeNsqNewtonOmp, - NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_OMP | - NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_SIZE_NSQ_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalfSizeNsqNewtonOmp : public NPair { - public: - NPairHalfSizeNsqNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_omp.cpp b/src/OPENMP/npair_halffull_newtoff_omp.cpp deleted file mode 100644 index 379ae149f8a..00000000000 --- a/src/OPENMP/npair_halffull_newtoff_omp.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newtoff_omp.h" - -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtoffOmp::NPairHalffullNewtoffOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtoffOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; - -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over atoms in full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - // loop over parent full list - - i = ilist_full[ii]; - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j > i) neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newtoff_omp.h b/src/OPENMP/npair_halffull_newtoff_omp.h deleted file mode 100644 index f0ff24dcf98..00000000000 --- a/src/OPENMP/npair_halffull_newtoff_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/omp, - NPairHalffullNewtoffOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI |NP_OMP); - -NPairStyle(halffull/newtoff/skip/omp, - NPairHalffullNewtoffOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoffOmp : public NPair { - public: - NPairHalffullNewtoffOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_trim_omp.h b/src/OPENMP/npair_halffull_newtoff_trim_omp.h deleted file mode 100644 index 19e1c55eeb0..00000000000 --- a/src/OPENMP/npair_halffull_newtoff_trim_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/trim/omp, - NPairHalffullNewtoffTrimOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(halffull/newtoff/skip/trim/omp, - NPairHalffullNewtoffTrimOmp, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTOFF_TRIM_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTOFF_TRIM_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtoffTrimOmp : public NPair { - public: - NPairHalffullNewtoffTrimOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newton_omp.cpp b/src/OPENMP/npair_halffull_newton_omp.cpp deleted file mode 100644 index abd5f7eacb7..00000000000 --- a/src/OPENMP/npair_halffull_newton_omp.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonOmp::NPairHalffullNewtonOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list - 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 NPairHalffullNewtonOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - - double **x = atom->x; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // 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; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newton_omp.h b/src/OPENMP/npair_halffull_newton_omp.h deleted file mode 100644 index 3ce9fd9ebe1..00000000000 --- a/src/OPENMP/npair_halffull_newton_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/omp, - NPairHalffullNewtonOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI| NP_OMP); - -NPairStyle(halffull/newton/skip/omp, - NPairHalffullNewtonOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTON_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtonOmp : public NPair { - public: - NPairHalffullNewtonOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newton_trim_omp.cpp b/src/OPENMP/npair_halffull_newton_trim_omp.cpp deleted file mode 100644 index 14461750134..00000000000 --- a/src/OPENMP/npair_halffull_newton_trim_omp.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_trim_omp.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" - -#include "omp_compat.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonTrimOmp::NPairHalffullNewtonTrimOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list and trim to shorter cutoff - 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 NPairHalffullNewtonTrimOmp::build(NeighList *list) -{ - const int inum_full = list->listfull->inum; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(inum_full); - - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - double xtmp,ytmp,ztmp; - double delx,dely,delz,rsq; - - double **x = atom->x; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over parent full list - - for (ii = ifrom; ii < ito; ii++) { - - n = 0; - neighptr = ipage.vget(); - - i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // 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; - } else { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - - // trim to shorter cutoff - - 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_custom) continue; - - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = inum_full; -} diff --git a/src/OPENMP/npair_halffull_newton_trim_omp.h b/src/OPENMP/npair_halffull_newton_trim_omp.h deleted file mode 100644 index 4cb84f1b3a5..00000000000 --- a/src/OPENMP/npair_halffull_newton_trim_omp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/trim/omp, - NPairHalffullNewtonTrimOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI| NP_TRIM | NP_OMP); - -NPairStyle(halffull/newton/skip/trim/omp, - NPairHalffullNewtonTrimOmp, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_TRIM_OMP_H -#define LMP_NPAIR_HALFFULL_NEWTON_TRIM_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtonTrimOmp : public NPair { - public: - NPairHalffullNewtonTrimOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_halffull_newtoff_trim_omp.cpp b/src/OPENMP/npair_halffull_omp.cpp similarity index 59% rename from src/OPENMP/npair_halffull_newtoff_trim_omp.cpp rename to src/OPENMP/npair_halffull_omp.cpp index d35b3b2ee83..559d8910b1f 100644 --- a/src/OPENMP/npair_halffull_newtoff_trim_omp.cpp +++ b/src/OPENMP/npair_halffull_omp.cpp @@ -12,7 +12,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_halffull_newtoff_trim_omp.h" +#include "npair_halffull_omp.h" #include "atom.h" #include "error.h" @@ -26,16 +26,24 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalffullNewtoffTrimOmp::NPairHalffullNewtoffTrimOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairHalffullOmp::NPairHalffullOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - build half list from full list and trim to shorter cutoff + build half list from full list pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) works if full list is a skip list + + Newtoff: + pair stored by me if j is ghost (also stored by proc owning j) + works for owned (non-ghost) list, also for ghost list + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly + Newton: + if j is ghost, only store if j coords are "above and to the right" of i ------------------------------------------------------------------------- */ -void NPairHalffullNewtoffTrimOmp::build(NeighList *list) +template +void NPairHalffullOmp::build(NeighList *list) { const int inum_full = list->listfull->inum; @@ -52,6 +60,7 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) double delx,dely,delz,rsq; double **x = atom->x; + int nlocal = atom->nlocal; int *ilist = list->ilist; int *numneigh = list->numneigh; @@ -76,10 +85,6 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) // loop over parent full list i = ilist_full[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - jlist = firstneigh_full[i]; jnum = numneigh_full[i]; @@ -87,16 +92,39 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; - // trim to shorter cutoff - - 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_custom) continue; - - if (j > i) neighptr[n++] = joriginal; + if (NEWTON) { + if (j < nlocal) { + if (i > j) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; + } else { + if (j > i) { + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; + } + } } ilist[ii] = i; @@ -109,3 +137,10 @@ void NPairHalffullNewtoffTrimOmp::build(NeighList *list) NPAIR_OMP_CLOSE; list->inum = inum_full; } + +namespace LAMMPS_NS { +template class NPairHalffullOmp<0,0>; +template class NPairHalffullOmp<1,0>; +template class NPairHalffullOmp<0,1>; +template class NPairHalffullOmp<1,1>; +} diff --git a/src/OPENMP/npair_halffull_omp.h b/src/OPENMP/npair_halffull_omp.h new file mode 100644 index 00000000000..fca7fe37e8e --- /dev/null +++ b/src/OPENMP/npair_halffull_omp.h @@ -0,0 +1,107 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/skip/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/ghost/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_OMP); + +typedef NPairHalffullOmp<0, 0> NPairHalffullOmpNewtoffOmp; +NPairStyle(halffull/newtoff/skip/ghost/omp, + NPairHalffullOmpNewtoffOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_OMP); + +typedef NPairHalffullOmp<1, 0> NPairHalffullOmpNewtonOmp; +NPairStyle(halffull/newton/omp, + NPairHalffullOmpNewtonOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_OMP); + +typedef NPairHalffullOmp<1, 0> NPairHalffullOmpNewtonOmp; +NPairStyle(halffull/newton/skip/omp, + NPairHalffullOmpNewtonOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/skip/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/ghost/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<0, 1> NPairHalffullOmpNewtoffTrimOmp; +NPairStyle(halffull/newtoff/skip/ghost/trim/omp, + NPairHalffullOmpNewtoffTrimOmp, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<1, 1> NPairHalffullOmpNewtonTrimOmp; +NPairStyle(halffull/newton/trim/omp, + NPairHalffullOmpNewtonTrimOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +typedef NPairHalffullOmp<1, 1> NPairHalffullOmpNewtonTrimOmp; +NPairStyle(halffull/newton/skip/trim/omp, + NPairHalffullOmpNewtonTrimOmp, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_OMP); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_OMP_H +#define LMP_NPAIR_HALFFULL_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairHalffullOmp : public NPair { + public: + NPairHalffullOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp new file mode 100644 index 00000000000..1c2e86df805 --- /dev/null +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -0,0 +1,243 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "npair_multi_old_omp.h" +#include "atom.h" +#include "atom_vec.h" +#include "domain.h" +#include "error.h" +#include "molecule.h" +#include "my_page.h" +#include "neigh_list.h" +#include "npair_omp.h" +#include "omp_compat.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOldOmp::NPairMultiOldOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi/old-type stencil is itype dependent and is distance checked + Full: + binned neighbor list construction for all neighbors + multi-type stencil is itype dependent and is distance checked + every neighbor pair appears in list of both atoms i and j + Half + newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + multi-type stencil is itype dependent and is distance checked + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + multi-type stencil is itype dependent and is distance checked + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOldOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i, j, jh, k, n, itype, jtype, ibin, bin_start, which, ns, imol, iatom; + tagint tagprev; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; + double radsum,cut,cutsq; + int *neighptr, *s; + double *cutnsq, *distsq; + + // loop over each atom, storing neighbors + + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + for (i = ifrom; i < ito; 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; + } + + ibin = atom2bin[i]; + s = stencil_multi_old[itype]; + distsq = distsq_multi_old[itype]; + cutnsq = cutneighsq[itype]; + ns = nstencil_multi_old[itype]; + for (k = 0; k < ns; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (HALF && NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; + } + } + + for (j = bin_start; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + jtype = type[j]; + if (cutnsq[jtype] < distsq[k]) continue; + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOldOmp<0,1,0,0>; +template class NPairMultiOldOmp<1,0,0,0>; +template class NPairMultiOldOmp<1,1,0,0>; +template class NPairMultiOldOmp<1,1,1,0>; +template class NPairMultiOldOmp<0,1,0,1>; +template class NPairMultiOldOmp<1,0,0,1>; +template class NPairMultiOldOmp<1,1,0,1>; +template class NPairMultiOldOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_multi_old_omp.h b/src/OPENMP/npair_multi_old_omp.h new file mode 100644 index 00000000000..4251c6ed482 --- /dev/null +++ b/src/OPENMP/npair_multi_old_omp.h @@ -0,0 +1,77 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMultiOldOmp<0, 1, 0, 0> NPairFullMultiOldOmp; +NPairStyle(full/multi/old/omp, + NPairFullMultiOldOmp, + NP_FULL | NP_MULTI_OLD | NP_OMP | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 0, 0, 0> NPairHalfMultiOldNewtoffOmp; +NPairStyle(half/multi/old/newtoff/omp, + NPairHalfMultiOldNewtoffOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 1, 0, 0> NPairHalfMultiOldNewtonOmp; +NPairStyle(half/multi/old/newton/omp, + NPairHalfMultiOldNewtonOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOldOmp<1, 1, 1, 0> NPairHalfMultiOldNewtonTriOmp; +NPairStyle(half/multi/old/newton/tri/omp, + NPairHalfMultiOldNewtonTriOmp, + NP_HALF | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOldOmp<0, 1, 0, 1> NPairFullSizeMultiOldOmp; +NPairStyle(full/size/multi/old/omp, + NPairFullSizeMultiOldOmp, + NP_FULL | NP_SIZE | NP_MULTI_OLD | NP_OMP | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 0, 0, 1> NPairHalfSizeMultiOldNewtoffOmp; +NPairStyle(half/size/multi/old/newtoff/omp, + NPairHalfSizeMultiOldNewtoffOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOldOmp<1, 1, 0, 1> NPairHalfSizeMultiOldNewtonOmp; +NPairStyle(half/size/multi/old/newton/omp, + NPairHalfSizeMultiOldNewtonOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOldOmp<1, 1, 1, 1> NPairHalfSizeMultiOldNewtonTriOmp; +NPairStyle(half/size/multi/old/newton/tri/omp, + NPairHalfSizeMultiOldNewtonTriOmp, + NP_HALF | NP_SIZE | NP_MULTI_OLD | NP_OMP | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OLD_OMP_H +#define LMP_NPAIR_MULTI_OLD_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOldOmp : public NPair { + public: + NPairMultiOldOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp new file mode 100644 index 00000000000..bbdce96ffca --- /dev/null +++ b/src/OPENMP/npair_multi_omp.cpp @@ -0,0 +1,247 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "omp_compat.h" +#include "npair_multi_omp.h" +#include "npair_omp.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; + +/* ---------------------------------------------------------------------- */ + +template +NPairMultiOmp::NPairMultiOmp(LAMMPS *lmp) : NPair(lmp) {} + +/* ---------------------------------------------------------------------- + multi stencil is icollection-jcollection dependent + Full: + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and other bins in stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairMultiOmp::build(NeighList *list) +{ + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int molecular = atom->molecular; + const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; + + NPAIR_OMP_INIT; +#if defined(_OPENMP) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) +#endif + NPAIR_OMP_SETUP(nlocal); + + int i,j,jh,js,k,n,itype,jtype,icollection,jcollection,ibin,jbin,which,ns,imol,iatom; + tagint tagprev; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double radsum,cut,cutsq; + int *neighptr,*s; + + // loop over each atom, storing neighbors + + int *collection = neighbor->collection; + double **x = atom->x; + double *radius = atom->radius; + int *type = atom->type; + int *mask = atom->mask; + tagint *tag = atom->tag; + tagint *molecule = atom->molecule; + tagint **special = atom->special; + int **nspecial = atom->nspecial; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int history = list->history; + int mask_history = 1 << HISTBITS; + + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + for (i = ifrom; i < ito; i++) { + + n = 0; + neighptr = ipage.vget(); + + itype = type[i]; + icollection = collection[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; + } + + ibin = atom2bin[i]; + + // loop through stencils for all collections + for (jcollection = 0; jcollection < ncollections; jcollection++) { + + // if same collection use own bin + if (icollection == jcollection) jbin = ibin; + else jbin = coord2bin(x[i], jcollection); + + // loop over all atoms in surrounding bins in stencil including self + // skip i = j + // use full stencil for all collection combinations + + s = stencil_multi[icollection][jcollection]; + ns = nstencil_multi[icollection][jcollection]; + + for (k = 0; k < ns; k++) { + js = binhead_multi[jcollection][jbin + s[k]]; + for (j = js; j >= 0; j = bins[j]) { + if (!HALF) { + // Full neighbor list + // only skip i = j + if (i == j) continue; + } else if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + + 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 (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = jh; + else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); + } else neighptr[n++] = jh; + } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } + } + } + } + } + + ilist[i] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + NPAIR_OMP_CLOSE; + list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairMultiOmp<0,1,0,0>; +template class NPairMultiOmp<1,0,0,0>; +template class NPairMultiOmp<1,1,0,0>; +template class NPairMultiOmp<1,1,1,0>; +template class NPairMultiOmp<0,1,0,1>; +template class NPairMultiOmp<1,0,0,1>; +template class NPairMultiOmp<1,1,0,1>; +template class NPairMultiOmp<1,1,1,1>; +} diff --git a/src/OPENMP/npair_multi_omp.h b/src/OPENMP/npair_multi_omp.h new file mode 100644 index 00000000000..dd85ca8a8e2 --- /dev/null +++ b/src/OPENMP/npair_multi_omp.h @@ -0,0 +1,75 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off +typedef NPairMultiOmp<0, 1, 0, 0> NPairFullMultiOmp; +NPairStyle(full/multi/omp, + NPairFullMultiOmp, + NP_FULL | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 0> NPairHalfMultiNewtoffOmp; +NPairStyle(half/multi/newtoff/omp, + NPairHalfMultiNewtoffOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 0> NPairHalfMultiNewtonOmp; +NPairStyle(half/multi/newton/omp, + NPairHalfMultiNewtonOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 0> NPairHalfMultiNewtonTriOmp; +NPairStyle(half/multi/newton/tri/omp, + NPairHalfMultiNewtonTriOmp, + NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOmp<0, 1, 0, 1> NPairFullSizeMultiOmp; +NPairStyle(full/size/multi/omp, + NPairFullSizeMultiOmp, + NP_FULL | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 1> NPairHalfSizeMultiNewtoffOmp; +NPairStyle(half/size/multi/newtoff/omp, + NPairHalfSizeMultiNewtoffOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 1> NPairHalfSizeMultiNewtonOmp; +NPairStyle(half/size/multi/newton/omp, + NPairHalfSizeMultiNewtonOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 1> NPairHalfSizeMultiNewtonTriOmp; +NPairStyle(half/size/multi/newton/tri/omp, + NPairHalfSizeMultiNewtonTriOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_MULTI_OMP_H +#define LMP_NPAIR_MULTI_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairMultiOmp : public NPair { + public: + NPairMultiOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_full_nsq_ghost_omp.cpp b/src/OPENMP/npair_nsq_ghost_omp.cpp similarity index 71% rename from src/OPENMP/npair_full_nsq_ghost_omp.cpp rename to src/OPENMP/npair_nsq_ghost_omp.cpp index 05f402a99d2..e1e82fb3ff7 100644 --- a/src/OPENMP/npair_full_nsq_ghost_omp.cpp +++ b/src/OPENMP/npair_nsq_ghost_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_full_nsq_ghost_omp.h" +#include "npair_nsq_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,15 +27,24 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairFullNsqGhostOmp::NPairFullNsqGhostOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairNsqGhostOmp::NPairNsqGhostOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - N^2 search for all neighbors - include neighbors of ghost atoms, but no "special neighbors" for ghosts - every neighbor pair appears in list of both atoms i and j + Full: + N^2 search for all neighbors + include neighbors of ghost atoms, but no "special neighbors" for ghosts + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + include neighbors of ghost atoms, but no "special neighbors" for ghosts + pair stored once if i,j are both owned and i < j + pair stored by me if i owned and j ghost (also stored by proc owning j) + pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ -void NPairFullNsqGhostOmp::build(NeighList *list) +template +void NPairNsqGhostOmp::build(NeighList *list) { const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; @@ -48,7 +57,7 @@ void NPairFullNsqGhostOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nall); - int i,j,n,itype,jtype,which,imol,iatom; + int i,j,jstart,n,itype,jtype,which,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr; @@ -91,12 +100,24 @@ void NPairFullNsqGhostOmp::build(NeighList *list) } // loop over all atoms, owned and ghost - // skip i = j + // Full: + // skip i = j + // Half: + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs with owned atom only, on both procs + // stores ghost/ghost pairs only once // no molecular test when i = ghost atom + if (HALF) jstart = i + 1; + else jstart = 0; + if (i < nlocal) { - for (j = 0; j < nall; j++) { - if (i == j) continue; + for (j = jstart; j < nall; j++) { + if (!HALF) { + if (i == j) continue; + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -121,8 +142,11 @@ void NPairFullNsqGhostOmp::build(NeighList *list) } } } else { - for (j = 0; j < nall; j++) { - if (i == j) continue; + for (j = jstart; j < nall; j++) { + if (!HALF) { + if (i == j) continue; + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -131,7 +155,11 @@ void NPairFullNsqGhostOmp::build(NeighList *list) delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + if (HALF) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } } } @@ -146,3 +174,8 @@ void NPairFullNsqGhostOmp::build(NeighList *list) list->inum = nlocal; list->gnum = nall - nlocal; } + +namespace LAMMPS_NS { +template class NPairNsqGhostOmp<0>; +template class NPairNsqGhostOmp<1>; +} diff --git a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h b/src/OPENMP/npair_nsq_ghost_omp.h similarity index 64% rename from src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h rename to src/OPENMP/npair_nsq_ghost_omp.h index 4df15104c37..1d33758bac2 100644 --- a/src/OPENMP/npair_half_nsq_newtoff_ghost_omp.h +++ b/src/OPENMP/npair_nsq_ghost_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairNsqGhostOmp<0> NPairFullNsqGhostOmp; +NPairStyle(full/nsq/ghost/omp, + NPairFullNsqGhostOmp, + NP_FULL | NP_NSQ | NP_NEWTON | NP_NEWTOFF | NP_GHOST | NP_OMP | NP_ORTHO | NP_TRI); + +typedef NPairNsqGhostOmp<1> NPairHalfNsqNewtoffGhostOmp; NPairStyle(half/nsq/newtoff/ghost/omp, NPairHalfNsqNewtoffGhostOmp, - NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_OMP | - NP_ORTHO | NP_TRI); + NP_HALF | NP_NSQ | NP_NEWTOFF | NP_GHOST | NP_OMP | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_OMP_H -#define LMP_NPAIR_HALF_NSQ_NEWTOFF_GHOST_OMP_H +#ifndef LMP_NPAIR_NSQ_GHOST_OMP_H +#define LMP_NPAIR_NSQ_GHOST_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfNsqNewtoffGhostOmp : public NPair { +template +class NPairNsqGhostOmp : public NPair { public: - NPairHalfNsqNewtoffGhostOmp(class LAMMPS *); + NPairNsqGhostOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_half_size_multi_old_newton_omp.cpp b/src/OPENMP/npair_nsq_omp.cpp similarity index 51% rename from src/OPENMP/npair_half_size_multi_old_newton_omp.cpp rename to src/OPENMP/npair_nsq_omp.cpp index 187efe04d1f..232fee2d428 100644 --- a/src/OPENMP/npair_half_size_multi_old_newton_omp.cpp +++ b/src/OPENMP/npair_nsq_omp.cpp @@ -12,40 +12,48 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "npair_half_size_multi_old_newton_omp.h" - +#include "omp_compat.h" +#include "npair_nsq_omp.h" +#include "npair_omp.h" +#include "neigh_list.h" +#include "neighbor.h" #include "atom.h" #include "atom_vec.h" -#include "domain.h" -#include "error.h" +#include "group.h" #include "molecule.h" +#include "domain.h" #include "my_page.h" -#include "neigh_list.h" -#include "npair_omp.h" +#include "error.h" -#include "omp_compat.h" using namespace LAMMPS_NS; +using namespace NeighConst; /* ---------------------------------------------------------------------- */ -NPairHalfSizeMultiOldNewtonOmp::NPairHalfSizeMultiOldNewtonOmp(LAMMPS *lmp) : - NPair(lmp) {} +template +NPairNsqOmp::NPairNsqOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- - size particles - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - multi-type stencil is itype dependent and is distance checked - every pair stored exactly once by some processor + Full: + N^2 search for all neighbors + every neighbor pair appears in list of both atoms i and j + Half + Newtoff: + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Half + Newton: + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + every pair stored exactly once by some processor + decision on ghost atoms based on itag,jtag tests ------------------------------------------------------------------------- */ -void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) +template +void NPairNsqOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; const int molecular = atom->molecular; const int moltemplate = (molecular == Atom::TEMPLATE) ? 1 : 0; - const int history = list->history; - const int mask_history = 1 << HISTBITS; NPAIR_OMP_INIT; #if defined(_OPENMP) @@ -53,12 +61,11 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,jh,k,n,itype,jtype,ibin,ns,which,imol,iatom; - tagint tagprev; + int i,j,jh,jstart,n,itype,jtype,which,imol,iatom; + tagint itag,jtag,tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - double radi,radsum,cutdistsq; - int *neighptr,*s; - double *cutsq,*distsq; + double radsum,cut,cutsq; + int *neighptr; double **x = atom->x; double *radius = atom->radius; @@ -69,10 +76,14 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) tagint **special = atom->special; int **nspecial = atom->nspecial; + int nall = atom->nlocal + atom->nghost; int *molindex = atom->molindex; int *molatom = atom->molatom; Molecule **onemols = atom->avec->onemols; + int history = list->history; + int mask_history = 1 << HISTBITS; + int *ilist = list->ilist; int *numneigh = list->numneigh; int **firstneigh = list->firstneigh; @@ -81,6 +92,8 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) MyPage &ipage = list->ipage[tid]; ipage.reset(); + // loop over owned atoms, storing neighbors + for (i = ifrom; i < ito; i++) { n = 0; @@ -90,87 +103,66 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; - radi = radius[i]; if (moltemplate) { imol = molindex[i]; iatom = molatom[i]; tagprev = tag[i] - iatom - 1; } - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // Full: loop over all atoms, owned and ghost, skip i = j + // Half: loop over remaining atoms, owned and ghost + // Newtoff: only store pair if i < j + // Newton: itag = jtag is possible for long cutoffs that include images of self + + if (!HALF) jstart = 0; + else jstart = i + 1; + + for (j = jstart; j < nall; j++) { + if (includegroup && !(mask[j] & bitmask)) continue; + + if (!HALF) { + // Full neighbor list + if (i == j) continue; + } else if (NEWTON) { + // Half neighbor list, newton on + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } } } 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { - jh = j; - if (history && rsq < radsum*radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = jh; - else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); - } else neighptr[n++] = jh; - } - } - // loop over all atoms in other bins in stencil, store every pair - // skip if i,j neighbor cutoff is less than bin distance - - ibin = atom2bin[i]; - s = stencil_multi_old[itype]; - distsq = distsq_multi_old[itype]; - cutsq = cutneighsq[itype]; - ns = nstencil_multi_old[itype]; - for (k = 0; k < ns; k++) { - for (j = binhead[ibin+s[k]]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (cutsq[jtype] < distsq[k]) continue; - - 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; - radsum = radi + radius[j]; - cutdistsq = (radsum+skin) * (radsum+skin); - - if (rsq <= cutdistsq) { + if (SIZE) { + radsum = radius[i] + radius[j]; + cut = radsum + skin; + cutsq = cut * cut; + + if (rsq <= cutsq) { jh = j; - if (history && rsq < radsum*radsum) + if (history && rsq < radsum * radsum) jh = jh ^ mask_history; if (molecular != Atom::ATOMIC) { if (!moltemplate) which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >=0) + else if (imol >= 0) which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j]-tagprev); @@ -181,6 +173,22 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) else if (which > 0) neighptr[n++] = jh ^ (which << SBBITS); } else neighptr[n++] = jh; } + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; + } } } @@ -193,4 +201,14 @@ void NPairHalfSizeMultiOldNewtonOmp::build(NeighList *list) } NPAIR_OMP_CLOSE; list->inum = nlocal; + list->gnum = 0; +} + +namespace LAMMPS_NS { +template class NPairNsqOmp<0,1,0>; +template class NPairNsqOmp<1,0,0>; +template class NPairNsqOmp<1,1,0>; +template class NPairNsqOmp<0,1,1>; +template class NPairNsqOmp<1,0,1>; +template class NPairNsqOmp<1,1,1>; } diff --git a/src/OPENMP/npair_nsq_omp.h b/src/OPENMP/npair_nsq_omp.h new file mode 100644 index 00000000000..150ac143ad6 --- /dev/null +++ b/src/OPENMP/npair_nsq_omp.h @@ -0,0 +1,66 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NPAIR_CLASS +// clang-format off + +typedef NPairNsqOmp<0, 1, 0> NPairFullNsqOmp; +NPairStyle(full/nsq/omp, + NPairFullNsqOmp, + NP_FULL | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 0, 0> NPairHalfNsqNewtoffOmp; +NPairStyle(half/nsq/newtoff/omp, + NPairHalfNsqNewtoffOmp, + NP_HALF | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 1, 0> NPairHalfNsqNewtonOmp; +NPairStyle(half/nsq/newton/omp, + NPairHalfNsqNewtonOmp, + NP_HALF | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<0, 1, 1> NPairFullSizeNsqOmp; +NPairStyle(full/size/nsq/omp, + NPairFullSizeNsqOmp, + NP_FULL | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 0, 1> NPairHalfSizeNsqNewtoffOmp; +NPairStyle(half/size/nsq/newtoff/omp, + NPairHalfSizeNsqNewtoffOmp, + NP_HALF | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairNsqOmp<1, 1, 1> NPairHalfSizeNsqNewtonOmp; +NPairStyle(half/size/nsq/newton/omp, + NPairHalfSizeNsqNewtonOmp, + NP_HALF | NP_SIZE | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); +// clang-format on +#else + +#ifndef LMP_NPAIR_NSQ_OMP_H +#define LMP_NPAIR_NSQ_OMP_H + +#include "npair.h" + +namespace LAMMPS_NS { + +template +class NPairNsqOmp : public NPair { + public: + NPairNsqOmp(class LAMMPS *); + void build(class NeighList *) override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/npair_half_respa_bin_newton_omp.cpp b/src/OPENMP/npair_respa_bin_omp.cpp similarity index 67% rename from src/OPENMP/npair_half_respa_bin_newton_omp.cpp rename to src/OPENMP/npair_respa_bin_omp.cpp index 51fc7a2ed84..877f368083a 100644 --- a/src/OPENMP/npair_half_respa_bin_newton_omp.cpp +++ b/src/OPENMP/npair_respa_bin_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_half_respa_bin_newton_omp.h" +#include "npair_respa_bin_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -27,17 +27,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfRespaBinNewtonOmp::NPairHalfRespaBinNewtonOmp(LAMMPS *lmp) : +template +NPairRespaBinOmp::NPairRespaBinOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multiple respa lists - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor + Newtoff + binned neighbor list construction with partial Newton's 3rd law + each owned atom i checks own bin and surrounding bins in non-Newton stencil + pair stored once if i,j are both owned and i < j + pair stored by me if j is ghost (also stored by proc owning j) + Newton + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -void NPairHalfRespaBinNewtonOmp::build(NeighList *list) +template +void NPairRespaBinOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; @@ -52,7 +60,7 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) #endif NPAIR_OMP_SETUP(nlocal); - int i,j,k,n,itype,jtype,ibin,n_inner,n_middle,imol,iatom; + int i,j,k,n,itype,jtype,ibin,bin_start,n_inner,n_middle,imol,iatom; tagint tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; @@ -115,76 +123,68 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; + ibin = atom2bin[i]; if (moltemplate) { imol = molindex[i]; iatom = molatom[i]; tagprev = tag[i] - iatom - 1; } - // loop over rest of atoms in i's bin, ghosts are at end of linked list - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i - - for (j = bins[i]; j >= 0; j = bins[j]) { - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + for (k = 0; k < nstencil; k++) { + bin_start = binhead[ibin+stencil[k]]; + if (stencil[k] == 0) { + if (NEWTON && (!TRI)) { + // Half neighbor list, newton on, orthonormal + // loop over rest of atoms in i's bin, ghosts are at end of linked list + bin_start = bins[i]; } } - 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 != Atom::ATOMIC) { - 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 ((minchange = domain->minimum_image_check(delx,dely,delz))) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - - if (rsq < cut_inner_sq) { - if (which == 0) neighptr_inner[n_inner++] = j; - else if (minchange) neighptr_inner[n_inner++] = j; - else if (which > 0) neighptr_inner[n_inner++] = j ^ (which << SBBITS); + for (j = bin_start; j >= 0; j = bins[j]) { + if (!NEWTON) { + // Half neighbor list, newton off + // only store pair if i < j + // stores own/own pairs only once + // stores own/ghost pairs on both procs + if (j <= i) continue; + } else if (TRI) { + // Half neighbor list, newton on, triclinic + // pairs for atoms j "below" i are excluded + // below = lower z or (equal z and lower y) or (equal zy and lower x) + // (equal zyx and j <= i) + // latter excludes self-self interaction but allows superposed atoms + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } + } + } else { + // Half neighbor list, newton on, orthonormal + // store every pair for every bin in stencil,except for i's bin + + if (stencil[k] == 0) { + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the "right" of i + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } } - if (respamiddle && - rsq < cut_middle_sq && rsq > cut_middle_inside_sq) { - if (which == 0) neighptr_middle[n_middle++] = j; - else if (minchange) neighptr_middle[n_middle++] = j; - else if (which > 0) - neighptr_middle[n_middle++] = j ^ (which << SBBITS); - } - } - } - - // loop over all atoms in other bins in stencil, store every pair - - ibin = atom2bin[i]; - for (k = 0; k < nstencil; 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; + rsq = delx * delx + dely * dely + delz * delz; if (rsq <= cutneighsq[itype][jtype]) { if (molecular != Atom::ATOMIC) { @@ -247,3 +247,9 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) list->inum_inner = nlocal; if (respamiddle) list->inum_middle = nlocal; } + +namespace LAMMPS_NS { +template class NPairRespaBinOmp<0,0>; +template class NPairRespaBinOmp<1,0>; +template class NPairRespaBinOmp<1,1>; +} diff --git a/src/OPENMP/npair_half_respa_bin_newton_omp.h b/src/OPENMP/npair_respa_bin_omp.h similarity index 55% rename from src/OPENMP/npair_half_respa_bin_newton_omp.h rename to src/OPENMP/npair_respa_bin_omp.h index 695d0ce6270..23daacbb8ff 100644 --- a/src/OPENMP/npair_half_respa_bin_newton_omp.h +++ b/src/OPENMP/npair_respa_bin_omp.h @@ -13,22 +13,34 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairRespaBinOmp<0, 0> NPairHalfRespaBinNewtoffOmp; +NPairStyle(half/respa/bin/newtoff, + NPairHalfRespaBinNewtoffOmp, + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaBinOmp<1, 0> NPairHalfRespaBinNewtonOmp; NPairStyle(half/respa/bin/newton/omp, NPairHalfRespaBinNewtonOmp, - NP_HALF | NP_RESPA | NP_BIN | NP_NEWTON | NP_OMP | NP_ORTHO); + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairRespaBinOmp<1, 1> NPairHalfRespaBinNewtonTriOmp; +NPairStyle(half/respa/bin/newton/tri/omp, + NPairHalfRespaBinNewtonTriOmp, + NP_HALF | NP_RESPA | NP_BIN | NP_OMP | NP_NEWTON | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_RESPA_BIN_NEWTON_OMP_H -#define LMP_NPAIR_HALF_RESPA_BIN_NEWTON_OMP_H +#ifndef LMP_NPAIR_RESPA_BIN_OMP_H +#define LMP_NPAIR_RESPA_BIN_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfRespaBinNewtonOmp : public NPair { +template +class NPairRespaBinOmp : public NPair { public: - NPairHalfRespaBinNewtonOmp(class LAMMPS *); + NPairRespaBinOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp b/src/OPENMP/npair_respa_nsq_omp.cpp similarity index 81% rename from src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp rename to src/OPENMP/npair_respa_nsq_omp.cpp index 1167a7601b2..7464f705703 100644 --- a/src/OPENMP/npair_half_respa_nsq_newtoff_omp.cpp +++ b/src/OPENMP/npair_respa_nsq_omp.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ #include "omp_compat.h" -#include "npair_half_respa_nsq_newtoff_omp.h" +#include "npair_respa_nsq_omp.h" #include "npair_omp.h" #include "neigh_list.h" #include "atom.h" @@ -28,17 +28,25 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfRespaNsqNewtoffOmp::NPairHalfRespaNsqNewtoffOmp(LAMMPS *lmp) : +template +NPairRespaNsqOmp::NPairRespaNsqOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multiple respa lists - N^2 / 2 search for neighbor pairs with partial Newton's 3rd law - pair added to list if atoms i and j are both owned and i < j - pair added if j is ghost (also stored by proc owning j) + Newtoff + N^2 / 2 search for neighbor pairs with partial Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + pair added if j is ghost (also stored by proc owning j) + Newton + N^2 / 2 search for neighbor pairs with full Newton's 3rd law + pair added to list if atoms i and j are both owned and i < j + if j is ghost only me or other proc adds pair + decision based on itag,jtag tests ------------------------------------------------------------------------- */ -void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) +template +void NPairRespaNsqOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int bitmask = (includegroup) ? group->bitmask[includegroup] : 0; @@ -55,7 +63,7 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) NPAIR_OMP_SETUP(nlocal); int i,j,n,itype,jtype,n_inner,n_middle,imol,iatom; - tagint tagprev; + tagint itag, jtag, tagprev; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *neighptr,*neighptr_inner,*neighptr_middle; @@ -116,6 +124,7 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) } itype = type[i]; + itag = tag[i]; xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; @@ -127,8 +136,26 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) // loop over remaining atoms, owned and ghost - for (j = i+1; j < nall; j++) { + for (j = i + 1; j < nall; j++) { if (includegroup && !(mask[j] & bitmask)) continue; + + if (NEWTON) { + if (j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + } + jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -195,3 +222,8 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) list->inum_inner = nlocal; if (respamiddle) list->inum_middle = nlocal; } + +namespace LAMMPS_NS { +template class NPairRespaNsqOmp<0>; +template class NPairRespaNsqOmp<1>; +} diff --git a/src/OPENMP/npair_half_respa_nsq_newton_omp.h b/src/OPENMP/npair_respa_nsq_omp.h similarity index 63% rename from src/OPENMP/npair_half_respa_nsq_newton_omp.h rename to src/OPENMP/npair_respa_nsq_omp.h index d949ef7e936..66b0f634cd8 100644 --- a/src/OPENMP/npair_half_respa_nsq_newton_omp.h +++ b/src/OPENMP/npair_respa_nsq_omp.h @@ -13,23 +13,29 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairRespaNsqOmp<0> NPairHalfRespaNsqNewtoffOmp; +NPairStyle(half/respa/nsq/newtoff/omp, + NPairHalfRespaNsqNewtoff, + NP_HALF | NP_RESPA | NP_NSQ | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairRespaNsqOmp<1> NPairHalfRespaNsqNewtonOmp; NPairStyle(half/respa/nsq/newton/omp, NPairHalfRespaNsqNewtonOmp, - NP_HALF | NP_RESPA | NP_NSQ | NP_NEWTON | NP_OMP | - NP_ORTHO | NP_TRI); + NP_HALF | NP_RESPA | NP_NSQ | NP_OMP | NP_NEWTON | NP_ORTHO | NP_TRI); // clang-format on #else -#ifndef LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_OMP_H -#define LMP_NPAIR_HALF_RESPA_NSQ_NEWTON_OMP_H +#ifndef LMP_NPAIR_RESPA_NSQ_OMP_H +#define LMP_NPAIR_RESPA_NSQ_OMP_H #include "npair.h" namespace LAMMPS_NS { -class NPairHalfRespaNsqNewtonOmp : public NPair { +template +class NPairRespaNsqOmp : public NPair { public: - NPairHalfRespaNsqNewtonOmp(class LAMMPS *); + NPairRespaNsqOmp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 4cf30f10f93..45e2cd0358d 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -44,7 +44,6 @@ NPairBinGhost::NPairBinGhost(LAMMPS *lmp) : NPair(lmp) {} pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ - template void NPairBinGhost::build(NeighList *list) { diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index ab182f39c4a..ba703691cd2 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -105,7 +105,7 @@ void NPairMulti::build(NeighList *list) // if same collection use own bin if (icollection == jcollection) jbin = ibin; - else jbin = coord2bin(x[i], jcollection); + else jbin = coord2bin(x[i], jcollection); s = stencil_multi[icollection][jcollection]; ns = nstencil_multi[icollection][jcollection]; diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index 3c61d4ba292..967a366cf49 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -159,7 +159,6 @@ void NPairMultiOld::build(NeighList *list) jtype = type[j]; if (cutnsq[jtype] < distsq[k]) continue; - if (i == j) continue; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/npair_nsq.h b/src/npair_nsq.h index 749ea3a78c7..df6e332865a 100644 --- a/src/npair_nsq.h +++ b/src/npair_nsq.h @@ -42,7 +42,6 @@ typedef NPairNsq<1, 1, 1> NPairHalfSizeNsqNewton; NPairStyle(half/size/nsq/newton, NPairHalfSizeNsqNewton, NP_HALF | NP_SIZE | NP_NSQ | NP_NEWTON | NP_ORTHO | NP_TRI); - // clang-format on #else diff --git a/src/npair_nsq_ghost.cpp b/src/npair_nsq_ghost.cpp index 5e4185f9d6a..47009deff78 100644 --- a/src/npair_nsq_ghost.cpp +++ b/src/npair_nsq_ghost.cpp @@ -44,7 +44,6 @@ NPairNsqGhost::NPairNsqGhost(LAMMPS *lmp) : NPair(lmp) {} pair stored once if i,j are both ghost and i < j ------------------------------------------------------------------------- */ - template void NPairNsqGhost::build(NeighList *list) { @@ -159,6 +158,7 @@ void NPairNsqGhost::build(NeighList *list) if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; } else { if (rsq <= cutneighghostsq[itype][jtype]) neighptr[n++] = j; + } } } diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index a3bcbf51246..7710a9d8abd 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -167,7 +167,7 @@ void NPairRespaBin::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (rsq <= cutneighsq[itype][jtype]) { if (molecular != Atom::ATOMIC) { From b3e6a0bfa3c471e93bb4e047a5678a9c793e21ee Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 12 Nov 2022 20:44:45 -0700 Subject: [PATCH 026/300] Fixing mistake in multi stencil --- src/npair_multi.cpp | 2 +- src/nstencil_multi.cpp | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index ba703691cd2..9f719f403ae 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -160,7 +160,7 @@ void NPairMulti::build(NeighList *list) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (SIZE) { radsum = radius[i] + radius[j]; diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index 76329db12d0..6e9fefea1e7 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -68,12 +68,6 @@ void NStencilMulti::create() int n = ncollections; double cutsq; - // For half stencils, only the upper plane is needed - int sy_min = sy; - int sz_min = sz; - if (HALF && (!DIM_3D)) sy_min = 0; - if (HALF && DIM_3D) sz_min = 0; - for (icollection = 0; icollection < n; icollection++) { for (jcollection = 0; jcollection < n; jcollection++) { if (flag_skip_multi[icollection][jcollection]) { @@ -101,15 +95,25 @@ void NStencilMulti::create() // as the old npair classes used to separately parse the central bin first if (half_flag && (!TRI)) stencil[nstencil++] = 0; + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF) { + if (half_flag && (!DIM_3D)) sy_min = 0; + if (half_flag && DIM_3D) sz_min = 0; + } + for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { // Now only include "upper right" bins for half and ortho stencils - if (half_flag && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (half_flag && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (HALF) { + if (half_flag && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (half_flag && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + } if (bin_distance_multi(i,j,k,bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; From f3d5941301a4b5db55b04fbd263194147f854fc6 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 14 Nov 2022 20:48:02 -0700 Subject: [PATCH 027/300] Updating logic for multi --- src/OPENMP/npair_multi_omp.cpp | 57 +++++++++++++++++++++------------- src/npair.cpp | 2 ++ src/npair.h | 1 + src/npair_multi.cpp | 50 +++++++++++++++++++---------- src/nstencil_multi.cpp | 19 ++++++------ 5 files changed, 82 insertions(+), 47 deletions(-) diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index bbdce96ffca..e5db08e1578 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -118,15 +118,16 @@ void NPairMultiOmp::build(NeighList *list) if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - // use full stencil for all collection combinations - s = stencil_multi[icollection][jcollection]; ns = nstencil_multi[icollection][jcollection]; for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; + + // own-bin for half stencil + if (HALF) + if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + for (j = js; j >= 0; j = bins[j]) { if (!HALF) { // Full neighbor list @@ -144,40 +145,52 @@ void NPairMultiOmp::build(NeighList *list) // below = lower z or (equal z and lower y) or (equal zy and lower x) // (equal zyx and j <= i) // latter excludes self-self interaction but allows superposed atoms - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + // if same size (same collection), use half stencil + if (flag_half_multi[icollection][jcollection]) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } } } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin - - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // if same size: uses half stencil so includes a check of the central bin + if (flag_half_multi[icollection][jcollection]){ + if (s[k] == 0) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i + + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i + + if ((icollection != jcollection) && (j < i)) continue; + + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } } } } } jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + 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 (SIZE) { radsum = radius[i] + radius[j]; cut = radsum + skin; diff --git a/src/npair.cpp b/src/npair.cpp index c1615411c01..6fddcfef546 100644 --- a/src/npair.cpp +++ b/src/npair.cpp @@ -174,6 +174,8 @@ void NPair::copy_stencil_info() nstencil_multi = ns->nstencil_multi; stencil_multi = ns->stencil_multi; + + flag_half_multi = ns->flag_half_multi; } /* ---------------------------------------------------------------------- diff --git a/src/npair.h b/src/npair.h index 3eeb1d48f4f..661196e5866 100644 --- a/src/npair.h +++ b/src/npair.h @@ -96,6 +96,7 @@ class NPair : protected Pointers { int *nstencil_multi_old; int **stencil_multi_old; double **distsq_multi_old; + bool **flag_half_multi; int **nstencil_multi; int ***stencil_multi; diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 9f719f403ae..76f6d90f6e6 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -112,6 +112,11 @@ void NPairMulti::build(NeighList *list) for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; + + // own-bin for half stencil + if (HALF) + if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + for (j = js; j >= 0; j = bins[j]) { if (!HALF) { // Full neighbor list @@ -129,26 +134,39 @@ void NPairMulti::build(NeighList *list) // below = lower z or (equal z and lower y) or (equal zy and lower x) // (equal zyx and j <= i) // latter excludes self-self interaction but allows superposed atoms - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; + + // if same size (same collection), use half stencil + if (flag_half_multi[icollection][jcollection]) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp) { + if (x[j][0] < xtmp) continue; + if (x[j][0] == xtmp && j <= i) continue; + } } } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin - - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + // if same size: uses half stencil so includes a check of the central bin + if (flag_half_multi[icollection][jcollection]) { + if (s[k] == 0) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i + + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i + + if ((icollection != jcollection) && (j < i)) continue; + + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } } } } diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index 6e9fefea1e7..202dace29d1 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -87,13 +87,13 @@ void NStencilMulti::create() bin_collection = bin_collection_multi[icollection][jcollection]; cutsq = cutcollectionsq[icollection][jcollection]; - half_flag = flag_half_multi[icollection][jcollection]; // Half and ortho stencils include central bin first // This preserves the historical order of the neighbor list // as the old npair classes used to separately parse the central bin first - if (half_flag && (!TRI)) stencil[nstencil++] = 0; + if (HALF && (!TRI)) + if (half_flag) stencil_multi[icollection][jcollection][ns++] = 0; // For half stencils, only the upper plane is needed int sy_min = sy; @@ -106,15 +106,16 @@ void NStencilMulti::create() for (k = -sz_min; k <= sz; k++) { for (j = -sy_min; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - // Now only include "upper right" bins for half and ortho stencils - if (HALF) { - if (half_flag && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (half_flag && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (HALF && (!TRI)) { + if (half_flag) { + if (DIM_3D) { + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + } else { + if (! (j > 0 || (j == 0 && i > 0))) continue; + } + } } - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; } From 8f81cd80b65ff594e0bfaf7fecd1c687b05a650a Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 22 Nov 2022 21:31:31 -0700 Subject: [PATCH 028/300] Fixing a few errors in npair/stencil classes --- src/npair_bin_ghost.cpp | 2 +- src/npair_multi.cpp | 2 +- src/nstencil_ghost_bin.cpp | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/npair_bin_ghost.cpp b/src/npair_bin_ghost.cpp index 45e2cd0358d..f3b96492dc2 100644 --- a/src/npair_bin_ghost.cpp +++ b/src/npair_bin_ghost.cpp @@ -149,7 +149,7 @@ void NPairBinGhost::build(NeighList *list) if (xbin2 < 0 || xbin2 >= mbinx || ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + for (j = binhead[ibin + stencil[k]]; j >= 0; j = bins[j]) { if (HALF) { if (j <= i) continue; } else { diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 76f6d90f6e6..c05aa7fc5cf 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -114,7 +114,7 @@ void NPairMulti::build(NeighList *list) js = binhead_multi[jcollection][jbin + s[k]]; // own-bin for half stencil - if (HALF) + if (HALF && !TRI) if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { diff --git a/src/nstencil_ghost_bin.cpp b/src/nstencil_ghost_bin.cpp index d5c7c1a463c..b83a0ffd46a 100644 --- a/src/nstencil_ghost_bin.cpp +++ b/src/nstencil_ghost_bin.cpp @@ -18,7 +18,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ template -NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) {} +NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) +{ + xyzflag = 1; +} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -52,11 +55,12 @@ void NStencilGhostBin::create() if (HALF && DIM_3D && (!TRI)) if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = k; stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } } } } From 58f9553bf10520f3641d6e2a196e1aa92c6889a5 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Wed, 23 Nov 2022 08:52:21 -0700 Subject: [PATCH 029/300] Copying fixes to omp --- src/OPENMP/npair_bin_ghost_omp.cpp | 2 +- src/OPENMP/npair_multi_omp.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OPENMP/npair_bin_ghost_omp.cpp b/src/OPENMP/npair_bin_ghost_omp.cpp index 8f3105dc750..dbdabbe8698 100644 --- a/src/OPENMP/npair_bin_ghost_omp.cpp +++ b/src/OPENMP/npair_bin_ghost_omp.cpp @@ -108,7 +108,7 @@ void NPairBinGhostOmp::build(NeighList *list) if (i < nlocal) { ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + for (j = binhead[ibin + stencil[k]]; j >= 0; j = bins[j]) { if (HALF) { // Half neighbor list, newton off // only store pair if i < j diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index e5db08e1578..5e29b174f90 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -125,7 +125,7 @@ void NPairMultiOmp::build(NeighList *list) js = binhead_multi[jcollection][jbin + s[k]]; // own-bin for half stencil - if (HALF) + if (HALF && !TRI) if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { From c4676aabfdda3781ec8b246866327a39ed9a7527 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Wed, 23 Nov 2022 09:58:46 -0700 Subject: [PATCH 030/300] Adding missing variables from omp npair halffull --- src/OPENMP/npair_bin_atomonly_omp.cpp | 8 ++------ src/OPENMP/npair_halffull_omp.cpp | 4 ++++ src/npair_bin_atomonly.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/OPENMP/npair_bin_atomonly_omp.cpp b/src/OPENMP/npair_bin_atomonly_omp.cpp index 2fe3baa0147..2e948bf2b9b 100644 --- a/src/OPENMP/npair_bin_atomonly_omp.cpp +++ b/src/OPENMP/npair_bin_atomonly_omp.cpp @@ -80,7 +80,6 @@ void NPairBinAtomonlyOmp::build(NeighList *list) // loop over owned atoms, storing neighbors for (i = ifrom; i < ito; i++) { - n = 0; neighptr = ipage.vget(); @@ -89,13 +88,10 @@ void NPairBinAtomonlyOmp::build(NeighList *list) ytmp = x[i][1]; ztmp = x[i][2]; - // loop over all atoms in surrounding bins in stencil including self - // skip i = j - ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; + bin_start = binhead[ibin + stencil[k]]; if (stencil[k] == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal @@ -131,7 +127,7 @@ void NPairBinAtomonlyOmp::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list diff --git a/src/OPENMP/npair_halffull_omp.cpp b/src/OPENMP/npair_halffull_omp.cpp index 559d8910b1f..d23325630ab 100644 --- a/src/OPENMP/npair_halffull_omp.cpp +++ b/src/OPENMP/npair_halffull_omp.cpp @@ -85,6 +85,10 @@ void NPairHalffullOmp::build(NeighList *list) // loop over parent full list i = ilist_full[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh_full[i]; jnum = numneigh_full[i]; diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp index 100b521b92e..5e3be0e8b00 100644 --- a/src/npair_bin_atomonly.cpp +++ b/src/npair_bin_atomonly.cpp @@ -82,7 +82,7 @@ void NPairBinAtomonly::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; + bin_start = binhead[ibin + stencil[k]]; if (stencil[k] == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal @@ -118,7 +118,7 @@ void NPairBinAtomonly::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list From 781eb934c17935af8e381418bdcaa30612b7290b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 27 Mar 2023 16:37:11 -0600 Subject: [PATCH 031/300] Adding mass to python numpy unittest of KE --- unittest/python/python-numpy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/unittest/python/python-numpy.py b/unittest/python/python-numpy.py index f8e65bcd858..839e5d03af8 100644 --- a/unittest/python/python-numpy.py +++ b/unittest/python/python-numpy.py @@ -108,6 +108,7 @@ def testExtractComputePerAtomVector(self): self.lmp.command("create_box 1 box") self.lmp.command("create_atoms 1 single 1.0 1.0 1.0") self.lmp.command("create_atoms 1 single 1.0 1.0 1.5") + self.lmp.command("mass 1 1.0") self.lmp.command("compute ke all ke/atom") natoms = self.lmp.get_natoms() self.assertEqual(natoms,2) From b456beb62fdda6cd70f1886523835cf80c5c9a01 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 28 Mar 2023 13:55:12 -0600 Subject: [PATCH 032/300] Reorganizing intel npair to work with cmake, adding intel stencil --- ...st_intel.cpp => npair_bin_ghost_intel.cpp} | 2 +- ..._ghost_intel.h => npair_bin_ghost_intel.h} | 4 +- src/INTEL/npair_bin_intel.cpp | 298 ++++++++++++++++++ ...n_newton_tri_intel.h => npair_bin_intel.h} | 31 +- src/INTEL/npair_full_bin_intel.cpp | 134 -------- src/INTEL/npair_full_bin_intel.h | 44 --- src/INTEL/npair_half_bin_newton_intel.cpp | 108 ------- src/INTEL/npair_half_bin_newton_intel.h | 43 --- src/INTEL/npair_half_bin_newton_tri_intel.cpp | 108 ------- ...rim_intel.cpp => npair_halffull_intel.cpp} | 202 +++++++++++- src/INTEL/npair_halffull_intel.h | 128 ++++++++ src/INTEL/npair_halffull_newtoff_intel.h | 44 --- src/INTEL/npair_halffull_newtoff_trim_intel.h | 44 --- src/INTEL/npair_halffull_newton_intel.cpp | 226 ------------- src/INTEL/npair_halffull_newton_intel.h | 61 ---- src/INTEL/npair_halffull_newton_trim_intel.h | 61 ---- src/INTEL/nstencil_bin_intel.cpp | 70 ++++ src/INTEL/nstencil_bin_intel.h | 65 ++++ src/neighbor.cpp | 1 + src/neighbor.h | 5 +- 20 files changed, 797 insertions(+), 882 deletions(-) rename src/INTEL/{npair_full_bin_ghost_intel.cpp => npair_bin_ghost_intel.cpp} (99%) rename src/INTEL/{npair_full_bin_ghost_intel.h => npair_bin_ghost_intel.h} (95%) create mode 100644 src/INTEL/npair_bin_intel.cpp rename src/INTEL/{npair_half_bin_newton_tri_intel.h => npair_bin_intel.h} (59%) delete mode 100644 src/INTEL/npair_full_bin_intel.cpp delete mode 100644 src/INTEL/npair_full_bin_intel.h delete mode 100644 src/INTEL/npair_half_bin_newton_intel.cpp delete mode 100644 src/INTEL/npair_half_bin_newton_intel.h delete mode 100644 src/INTEL/npair_half_bin_newton_tri_intel.cpp rename src/INTEL/{npair_halffull_newton_trim_intel.cpp => npair_halffull_intel.cpp} (56%) create mode 100644 src/INTEL/npair_halffull_intel.h delete mode 100644 src/INTEL/npair_halffull_newtoff_intel.h delete mode 100644 src/INTEL/npair_halffull_newtoff_trim_intel.h delete mode 100644 src/INTEL/npair_halffull_newton_intel.cpp delete mode 100644 src/INTEL/npair_halffull_newton_intel.h delete mode 100644 src/INTEL/npair_halffull_newton_trim_intel.h create mode 100644 src/INTEL/nstencil_bin_intel.cpp create mode 100644 src/INTEL/nstencil_bin_intel.h diff --git a/src/INTEL/npair_full_bin_ghost_intel.cpp b/src/INTEL/npair_bin_ghost_intel.cpp similarity index 99% rename from src/INTEL/npair_full_bin_ghost_intel.cpp rename to src/INTEL/npair_bin_ghost_intel.cpp index b7b9ee4aea2..47c3b5bd206 100644 --- a/src/INTEL/npair_full_bin_ghost_intel.cpp +++ b/src/INTEL/npair_bin_ghost_intel.cpp @@ -16,7 +16,7 @@ Contributing authors: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ -#include "npair_full_bin_ghost_intel.h" +#include "npair_bin_ghost_intel.h" #include "atom.h" #include "comm.h" diff --git a/src/INTEL/npair_full_bin_ghost_intel.h b/src/INTEL/npair_bin_ghost_intel.h similarity index 95% rename from src/INTEL/npair_full_bin_ghost_intel.h rename to src/INTEL/npair_bin_ghost_intel.h index 4ae5ddad5f1..eada3237bc1 100644 --- a/src/INTEL/npair_full_bin_ghost_intel.h +++ b/src/INTEL/npair_bin_ghost_intel.h @@ -25,8 +25,8 @@ NPairStyle(full/bin/ghost/intel, // clang-format on #else -#ifndef LMP_NPAIR_FULL_BIN_GHOST_INTEL_H -#define LMP_NPAIR_FULL_BIN_GHOST_INTEL_H +#ifndef LMP_NPAIR_BIN_GHOST_INTEL_H +#define LMP_NPAIR_BIN_GHOST_INTEL_H #include "npair_intel.h" diff --git a/src/INTEL/npair_bin_intel.cpp b/src/INTEL/npair_bin_intel.cpp new file mode 100644 index 00000000000..f4942022ec6 --- /dev/null +++ b/src/INTEL/npair_bin_intel.cpp @@ -0,0 +1,298 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: W. Michael Brown (Intel) +------------------------------------------------------------------------- */ + +#include "npair_bin_intel.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "neigh_list.h" +#include "neighbor.h" + +using namespace LAMMPS_NS; + + +/* ---------------------------------------------------------------------- */ + +NPairHalfBinNewtonIntel::NPairHalfBinNewtonIntel(LAMMPS *lmp) : + NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction with full Newton's 3rd law + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +void NPairHalfBinNewtonIntel::build(NeighList *list) +{ + if (nstencil / 2 > INTEL_MAX_STENCIL_CHECK) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + hbni(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + hbni(list, _fix->get_double_buffers()); + else + hbni(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairHalfBinNewtonIntel:: +hbni(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + + int host_start = _fix->host_start_neighbor(); + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + #else + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + #endif +} + + +/* ---------------------------------------------------------------------- */ + +NPairHalfBinNewtonTriIntel::NPairHalfBinNewtonTriIntel(LAMMPS *lmp) : + NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction with Newton's 3rd law for triclinic + each owned atom i checks its own bin and other bins in triclinic stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +void NPairHalfBinNewtonTriIntel::build(NeighList *list) +{ + if (nstencil > INTEL_MAX_STENCIL) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + hbnti(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + hbnti(list, _fix->get_double_buffers()); + else + hbnti(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairHalfBinNewtonTriIntel:: +hbnti(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + + int host_start = _fix->host_start_neighbor(); + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, + off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + #else + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + #endif +} + +/* ---------------------------------------------------------------------- */ + +NPairFullBinIntel::NPairFullBinIntel(LAMMPS *lmp) : NPairIntel(lmp) {} + +/* ---------------------------------------------------------------------- + binned neighbor list construction for all neighbors + every neighbor pair appears in list of both atoms i and j +------------------------------------------------------------------------- */ + +void NPairFullBinIntel::build(NeighList *list) +{ + if (nstencil > INTEL_MAX_STENCIL_CHECK) + error->all(FLERR, "Too many neighbor bins for INTEL package."); + + #ifdef _LMP_INTEL_OFFLOAD + if (exclude) + error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); + #endif + + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + fbi(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + fbi(list, _fix->get_double_buffers()); + else + fbi(list, _fix->get_single_buffers()); + + _fix->stop_watch(TIME_HOST_NEIGHBOR); +} + +template +void NPairFullBinIntel:: +fbi(NeighList *list, IntelBuffers *buffers) { + const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; + list->inum = nlocal; + list->gnum = 0; + + int host_start = _fix->host_start_neighbor();; + const int off_end = _fix->offload_end_neighbor(); + + #ifdef _LMP_INTEL_OFFLOAD + if (off_end) grow_stencil(); + if (_fix->full_host_list()) host_start = 0; + int offload_noghost = _fix->offload_noghost(); + #endif + + buffers->grow_list(list, atom->nlocal, comm->nthreads, + _fix->three_body_neighbor(), off_end, + _fix->nbor_pack_width()); + + int need_ic = 0; + if (atom->molecular != Atom::ATOMIC) + dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, + neighbor->cutneighmax); + + #ifdef _LMP_INTEL_OFFLOAD + if (_fix->three_body_neighbor()) { + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + } else { + if (need_ic) { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } else { + if (offload_noghost) { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal, off_end); + } else { + bin_newton(1, list, buffers, 0, off_end); + bin_newton(0, list, buffers, host_start, nlocal); + } + } + } + #else + if (_fix->three_body_neighbor()) { + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + } else { + if (need_ic) + bin_newton(0, list, buffers, host_start, nlocal); + else + bin_newton(0, list, buffers, host_start, nlocal); + } + #endif +} diff --git a/src/INTEL/npair_half_bin_newton_tri_intel.h b/src/INTEL/npair_bin_intel.h similarity index 59% rename from src/INTEL/npair_half_bin_newton_tri_intel.h rename to src/INTEL/npair_bin_intel.h index 8ef65c12e51..fd18f20be59 100644 --- a/src/INTEL/npair_half_bin_newton_tri_intel.h +++ b/src/INTEL/npair_bin_intel.h @@ -14,20 +14,38 @@ #ifdef NPAIR_CLASS // clang-format off +NPairStyle(half/bin/newton/intel, + NPairHalfBinNewtonIntel, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_INTEL); + NPairStyle(half/bin/newton/tri/intel, NPairHalfBinNewtonTriIntel, NP_HALF | NP_BIN | NP_NEWTON | NP_TRI | NP_INTEL); + +NPairStyle(full/bin/intel, + NPairFullBinIntel, + NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | + NP_INTEL); // clang-format on #else -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_INTEL_TRI_H -#define LMP_NPAIR_HALF_BIN_NEWTON_INTEL_TRI_H +#ifndef LMP_NPAIR_BIN_INTEL_H +#define LMP_NPAIR_BIN_INTEL_H #include "fix_intel.h" #include "npair_intel.h" namespace LAMMPS_NS { +class NPairHalfBinNewtonIntel : public NPairIntel { + public: + NPairHalfBinNewtonIntel(class LAMMPS *); + void build(class NeighList *) override; + + private: + template void hbni(NeighList *, IntelBuffers *); +}; + class NPairHalfBinNewtonTriIntel : public NPairIntel { public: NPairHalfBinNewtonTriIntel(class LAMMPS *); @@ -37,6 +55,15 @@ class NPairHalfBinNewtonTriIntel : public NPairIntel { template void hbnti(NeighList *, IntelBuffers *); }; +class NPairFullBinIntel : public NPairIntel { + public: + NPairFullBinIntel(class LAMMPS *); + void build(class NeighList *) override; + + private: + template void fbi(NeighList *, IntelBuffers *); +}; + } // namespace LAMMPS_NS #endif diff --git a/src/INTEL/npair_full_bin_intel.cpp b/src/INTEL/npair_full_bin_intel.cpp deleted file mode 100644 index 2f8af4c8af4..00000000000 --- a/src/INTEL/npair_full_bin_intel.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_full_bin_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairFullBinIntel::NPairFullBinIntel(LAMMPS *lmp) : NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j -------------------------------------------------------------------------- */ - -void NPairFullBinIntel::build(NeighList *list) -{ - if (nstencil > INTEL_MAX_STENCIL_CHECK) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - fbi(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - fbi(list, _fix->get_double_buffers()); - else - fbi(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairFullBinIntel:: -fbi(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - list->gnum = 0; - - int host_start = _fix->host_start_neighbor();; - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, - _fix->three_body_neighbor(), off_end, - _fix->nbor_pack_width()); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (_fix->three_body_neighbor()) { - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - } else { - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - } - #else - if (_fix->three_body_neighbor()) { - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - } else { - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - } - #endif -} diff --git a/src/INTEL/npair_full_bin_intel.h b/src/INTEL/npair_full_bin_intel.h deleted file mode 100644 index 58ff21d22c2..00000000000 --- a/src/INTEL/npair_full_bin_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(full/bin/intel, - NPairFullBinIntel, - NP_FULL | NP_BIN | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | - NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_FULL_BIN_INTEL_H -#define LMP_NPAIR_FULL_BIN_INTEL_H - -#include "fix_intel.h" -#include "npair_intel.h" - -namespace LAMMPS_NS { - -class NPairFullBinIntel : public NPairIntel { - public: - NPairFullBinIntel(class LAMMPS *); - void build(class NeighList *) override; - - private: - template void fbi(NeighList *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_half_bin_newton_intel.cpp b/src/INTEL/npair_half_bin_newton_intel.cpp deleted file mode 100644 index 24e8b015729..00000000000 --- a/src/INTEL/npair_half_bin_newton_intel.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonIntel::NPairHalfBinNewtonIntel(LAMMPS *lmp) : - NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonIntel::build(NeighList *list) -{ - if (nstencil / 2 > INTEL_MAX_STENCIL_CHECK) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - hbni(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - hbni(list, _fix->get_double_buffers()); - else - hbni(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairHalfBinNewtonIntel:: -hbni(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - - int host_start = _fix->host_start_neighbor(); - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - #else - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - #endif -} diff --git a/src/INTEL/npair_half_bin_newton_intel.h b/src/INTEL/npair_half_bin_newton_intel.h deleted file mode 100644 index 092d4f21011..00000000000 --- a/src/INTEL/npair_half_bin_newton_intel.h +++ /dev/null @@ -1,43 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(half/bin/newton/intel, - NPairHalfBinNewtonIntel, - NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALF_BIN_NEWTON_INTEL_H -#define LMP_NPAIR_HALF_BIN_NEWTON_INTEL_H - -#include "fix_intel.h" -#include "npair_intel.h" - -namespace LAMMPS_NS { - -class NPairHalfBinNewtonIntel : public NPairIntel { - public: - NPairHalfBinNewtonIntel(class LAMMPS *); - void build(class NeighList *) override; - - private: - template void hbni(NeighList *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_half_bin_newton_tri_intel.cpp b/src/INTEL/npair_half_bin_newton_tri_intel.cpp deleted file mode 100644 index a903ef8e9a7..00000000000 --- a/src/INTEL/npair_half_bin_newton_tri_intel.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_half_bin_newton_tri_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "neigh_list.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalfBinNewtonTriIntel::NPairHalfBinNewtonTriIntel(LAMMPS *lmp) : - NPairIntel(lmp) {} - -/* ---------------------------------------------------------------------- - binned neighbor list construction with Newton's 3rd law for triclinic - each owned atom i checks its own bin and other bins in triclinic stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -void NPairHalfBinNewtonTriIntel::build(NeighList *list) -{ - if (nstencil > INTEL_MAX_STENCIL) - error->all(FLERR, "Too many neighbor bins for INTEL package."); - - #ifdef _LMP_INTEL_OFFLOAD - if (exclude) - error->all(FLERR, "Exclusion lists not yet supported for Intel offload"); - #endif - - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - hbnti(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - hbnti(list, _fix->get_double_buffers()); - else - hbnti(list, _fix->get_single_buffers()); - - _fix->stop_watch(TIME_HOST_NEIGHBOR); -} - -template -void NPairHalfBinNewtonTriIntel:: -hbnti(NeighList *list, IntelBuffers *buffers) { - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - list->inum = nlocal; - - int host_start = _fix->host_start_neighbor(); - const int off_end = _fix->offload_end_neighbor(); - - #ifdef _LMP_INTEL_OFFLOAD - if (off_end) grow_stencil(); - if (_fix->full_host_list()) host_start = 0; - int offload_noghost = _fix->offload_noghost(); - #endif - - buffers->grow_list(list, atom->nlocal, comm->nthreads, 0, off_end); - - int need_ic = 0; - if (atom->molecular != Atom::ATOMIC) - dminimum_image_check(need_ic, neighbor->cutneighmax, neighbor->cutneighmax, - neighbor->cutneighmax); - - #ifdef _LMP_INTEL_OFFLOAD - if (need_ic) { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } else { - if (offload_noghost) { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal, - off_end); - } else { - bin_newton(1, list, buffers, 0, off_end); - bin_newton(0, list, buffers, host_start, nlocal); - } - } - #else - if (need_ic) - bin_newton(0, list, buffers, host_start, nlocal); - else - bin_newton(0, list, buffers, host_start, nlocal); - #endif -} diff --git a/src/INTEL/npair_halffull_newton_trim_intel.cpp b/src/INTEL/npair_halffull_intel.cpp similarity index 56% rename from src/INTEL/npair_halffull_newton_trim_intel.cpp rename to src/INTEL/npair_halffull_intel.cpp index e38375f750d..42ecb716f5e 100644 --- a/src/INTEL/npair_halffull_newton_trim_intel.cpp +++ b/src/INTEL/npair_halffull_intel.cpp @@ -13,10 +13,10 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) + Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ -#include "npair_halffull_newton_trim_intel.h" +#include "npair_halffull_intel.h" #include "atom.h" #include "comm.h" @@ -29,6 +29,204 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ +NPairHalffullNewtonIntel::NPairHalffullNewtonIntel(LAMMPS *lmp) : NPair(lmp) { + _fix = static_cast(modify->get_fix_by_id("package_intel")); + if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); +} + +/* ---------------------------------------------------------------------- + build half list from full list + 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 +------------------------------------------------------------------------- */ + +template +void NPairHalffullNewtonIntel::build_t(NeighList *list, + IntelBuffers *buffers) +{ + const int inum_full = list->listfull->inum; + const int nlocal = atom->nlocal; + const int e_nall = nlocal + atom->nghost; + const ATOM_T * _noalias const x = buffers->get_x(); + int * _noalias const ilist = list->ilist; + int * _noalias const numneigh = list->numneigh; + int ** _noalias const firstneigh = list->firstneigh; + const int * _noalias const ilist_full = list->listfull->ilist; + const int * _noalias const numneigh_full = list->listfull->numneigh; + const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT + + #if defined(_OPENMP) + #pragma omp parallel + #endif + { + int tid, ifrom, ito; + IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, comm->nthreads); + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over parent full list + for (int ii = ifrom; ii < ito; ii++) { + int n = 0; + int *neighptr = ipage.vget(); + + const int i = ilist_full[ii]; + const flt_t xtmp = x[i].x; + const flt_t ytmp = x[i].y; + const flt_t ztmp = x[i].z; + + // loop over full neighbor list + + const int * _noalias const jlist = firstneigh_full[i]; + const int jnum = numneigh_full[i]; + + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + int addme = 1; + if (j < nlocal) { + if (i > j) addme = 0; + } else { + if (x[j].z < ztmp) addme = 0; + if (x[j].z == ztmp) { + if (x[j].y < ytmp) addme = 0; + if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; + } + } + if (addme) + neighptr[n++] = joriginal; + } + + ilist[ii] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + + int pad_end = n; + IP_PRE_neighbor_pad(pad_end, 0); + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ + avg=INTEL_COMPILE_WIDTH/2 + #endif + for ( ; n < pad_end; n++) + neighptr[n] = e_nall; + + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + } + list->inum = inum_full; +} + +/* ---------------------------------------------------------------------- + build half list from full 3-body list + half list is already stored as first part of 3-body list +------------------------------------------------------------------------- */ + +template +void NPairHalffullNewtonIntel::build_t3(NeighList *list, int *numhalf) +{ + const int inum_full = list->listfull->inum; + const int e_nall = atom->nlocal + atom->nghost; + int * _noalias const ilist = list->ilist; + int * _noalias const numneigh = list->numneigh; + int ** _noalias const firstneigh = list->firstneigh; + const int * _noalias const ilist_full = list->listfull->ilist; + const int * _noalias const numneigh_full = numhalf; + const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT + + int packthreads = 1; + if (comm->nthreads > INTEL_HTHREADS) packthreads = comm->nthreads; + + #if defined(_OPENMP) + #pragma omp parallel if (packthreads > 1) + #endif + { + int tid, ifrom, ito; + IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, packthreads); + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + // loop over parent full list + for (int ii = ifrom; ii < ito; ii++) { + int n = 0; + int *neighptr = ipage.vget(); + + const int i = ilist_full[ii]; + + // loop over full neighbor list + + const int * _noalias const jlist = firstneigh_full[i]; + const int jnum = numneigh_full[ii]; + + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + neighptr[n++] = joriginal; + } + + ilist[ii] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + + int pad_end = n; + IP_PRE_neighbor_pad(pad_end, 0); + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ + avg=INTEL_COMPILE_WIDTH/2 + #endif + for ( ; n < pad_end; n++) + neighptr[n] = e_nall; + + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + } + list->inum = inum_full; +} + +/* ---------------------------------------------------------------------- */ + +void NPairHalffullNewtonIntel::build(NeighList *list) +{ + if (_fix->three_body_neighbor() == 0) { + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + build_t(list, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + build_t(list, _fix->get_double_buffers()); + else + build_t(list, _fix->get_single_buffers()); + } else { + int *nhalf, *cnum; + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { + _fix->get_mixed_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { + _fix->get_double_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } else { + _fix->get_single_buffers()->get_list_data3(list->listfull, nhalf, cnum); + build_t3(list, nhalf); + } + } +} + +/* ---------------------------------------------------------------------- */ + NPairHalffullNewtonTrimIntel::NPairHalffullNewtonTrimIntel(LAMMPS *lmp) : NPair(lmp) { _fix = static_cast(modify->get_fix_by_id("package_intel")); if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); diff --git a/src/INTEL/npair_halffull_intel.h b/src/INTEL/npair_halffull_intel.h new file mode 100644 index 00000000000..08c9312fff7 --- /dev/null +++ b/src/INTEL/npair_halffull_intel.h @@ -0,0 +1,128 @@ +// clang-format off +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: W. Michael Brown (Intel) +------------------------------------------------------------------------- */ + +// For Newton off, only used for hybrid to generate list for non-intel style. +// Use standard routines. + +#ifdef NPAIR_CLASS +// clang-format off +NPairStyle(halffull/newton/intel, + NPairHalffullNewtonIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI| NP_INTEL); + +NPairStyle(halffull/newton/skip/intel, + NPairHalffullNewtonIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); + +NPairStyle(halffull/newtoff/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); + +NPairStyle(halffull/newtoff/ghost/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/ghost/intel, + NPairHalffullNewtoff, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_INTEL); + + +NPairStyle(halffull/newton/trim/intel, + NPairHalffullNewtonTrimIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI| NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newton/skip/trim/intel, + NPairHalffullNewtonTrimIntel, + NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/ghost/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_INTEL); + +NPairStyle(halffull/newtoff/skip/ghost/trim/intel, + NPairHalffullNewtoffTrim, + NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | + NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_INTEL); +// clang-format on +#else + +#ifndef LMP_NPAIR_HALFFULL_INTEL_H +#define LMP_NPAIR_HALFFULL_INTEL_H + +#include "fix_intel.h" +#include "npair.h" + +#if defined(_OPENMP) +#include +#endif + +namespace LAMMPS_NS { + +class NPairHalffullNewtonIntel : public NPair { + public: + NPairHalffullNewtonIntel(class LAMMPS *); + void build(class NeighList *) override; + + protected: + FixIntel *_fix; + + template void build_t(NeighList *, IntelBuffers *); + + template void build_t3(NeighList *, int *); +}; + +class NPairHalffullNewtonTrimIntel : public NPair { + public: + NPairHalffullNewtonTrimIntel(class LAMMPS *); + void build(class NeighList *) override; + + protected: + FixIntel *_fix; + + template void build_t(NeighList *, IntelBuffers *); + + template void build_t3(NeighList *, int *, IntelBuffers *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/INTEL/npair_halffull_newtoff_intel.h b/src/INTEL/npair_halffull_newtoff_intel.h deleted file mode 100644 index f77ddb74d6e..00000000000 --- a/src/INTEL/npair_halffull_newtoff_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -// Only used for hybrid to generate list for non-intel style. Use -// standard routines. - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); - -NPairStyle(halffull/newtoff/ghost/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/ghost/intel, - NPairHalffullNewtoff, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_INTEL); -// clang-format on -#endif diff --git a/src/INTEL/npair_halffull_newtoff_trim_intel.h b/src/INTEL/npair_halffull_newtoff_trim_intel.h deleted file mode 100644 index d8594ce3b8d..00000000000 --- a/src/INTEL/npair_halffull_newtoff_trim_intel.h +++ /dev/null @@ -1,44 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) -------------------------------------------------------------------------- */ - -// Only used for hybrid to generate list for non-intel style. Use -// standard routines. - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newtoff/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/ghost/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newtoff/skip/ghost/trim/intel, - NPairHalffullNewtoffTrim, - NP_HALF_FULL | NP_NEWTOFF | NP_NSQ | NP_BIN | NP_MULTI | NP_HALF | - NP_ORTHO | NP_TRI | NP_SKIP | NP_GHOST | NP_TRIM | NP_INTEL); -// clang-format on -#endif diff --git a/src/INTEL/npair_halffull_newton_intel.cpp b/src/INTEL/npair_halffull_newton_intel.cpp deleted file mode 100644 index cd05d5f97a3..00000000000 --- a/src/INTEL/npair_halffull_newton_intel.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "modify.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonIntel::NPairHalffullNewtonIntel(LAMMPS *lmp) : NPair(lmp) { - _fix = static_cast(modify->get_fix_by_id("package_intel")); - if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); -} - -/* ---------------------------------------------------------------------- - build half list from full list - 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 -------------------------------------------------------------------------- */ - -template -void NPairHalffullNewtonIntel::build_t(NeighList *list, - IntelBuffers *buffers) -{ - const int inum_full = list->listfull->inum; - const int nlocal = atom->nlocal; - const int e_nall = nlocal + atom->nghost; - const ATOM_T * _noalias const x = buffers->get_x(); - int * _noalias const ilist = list->ilist; - int * _noalias const numneigh = list->numneigh; - int ** _noalias const firstneigh = list->firstneigh; - const int * _noalias const ilist_full = list->listfull->ilist; - const int * _noalias const numneigh_full = list->listfull->numneigh; - const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT - - #if defined(_OPENMP) - #pragma omp parallel - #endif - { - int tid, ifrom, ito; - IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, comm->nthreads); - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - for (int ii = ifrom; ii < ito; ii++) { - int n = 0; - int *neighptr = ipage.vget(); - - const int i = ilist_full[ii]; - const flt_t xtmp = x[i].x; - const flt_t ytmp = x[i].y; - const flt_t ztmp = x[i].z; - - // loop over full neighbor list - - const int * _noalias const jlist = firstneigh_full[i]; - const int jnum = numneigh_full[i]; - - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - int addme = 1; - if (j < nlocal) { - if (i > j) addme = 0; - } else { - if (x[j].z < ztmp) addme = 0; - if (x[j].z == ztmp) { - if (x[j].y < ytmp) addme = 0; - if (x[j].y == ytmp && x[j].x < xtmp) addme = 0; - } - } - if (addme) - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - - int pad_end = n; - IP_PRE_neighbor_pad(pad_end, 0); - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ - avg=INTEL_COMPILE_WIDTH/2 - #endif - for ( ; n < pad_end; n++) - neighptr[n] = e_nall; - - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - list->inum = inum_full; -} - -/* ---------------------------------------------------------------------- - build half list from full 3-body list - half list is already stored as first part of 3-body list -------------------------------------------------------------------------- */ - -template -void NPairHalffullNewtonIntel::build_t3(NeighList *list, int *numhalf) -{ - const int inum_full = list->listfull->inum; - const int e_nall = atom->nlocal + atom->nghost; - int * _noalias const ilist = list->ilist; - int * _noalias const numneigh = list->numneigh; - int ** _noalias const firstneigh = list->firstneigh; - const int * _noalias const ilist_full = list->listfull->ilist; - const int * _noalias const numneigh_full = numhalf; - const int ** _noalias const firstneigh_full = (const int ** const)list->listfull->firstneigh; // NOLINT - - int packthreads = 1; - if (comm->nthreads > INTEL_HTHREADS) packthreads = comm->nthreads; - - #if defined(_OPENMP) - #pragma omp parallel if (packthreads > 1) - #endif - { - int tid, ifrom, ito; - IP_PRE_omp_range_id(ifrom, ito, tid, inum_full, packthreads); - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over parent full list - for (int ii = ifrom; ii < ito; ii++) { - int n = 0; - int *neighptr = ipage.vget(); - - const int i = ilist_full[ii]; - - // loop over full neighbor list - - const int * _noalias const jlist = firstneigh_full[i]; - const int jnum = numneigh_full[ii]; - - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - neighptr[n++] = joriginal; - } - - ilist[ii] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - - int pad_end = n; - IP_PRE_neighbor_pad(pad_end, 0); - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ - avg=INTEL_COMPILE_WIDTH/2 - #endif - for ( ; n < pad_end; n++) - neighptr[n] = e_nall; - - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - } - list->inum = inum_full; -} - -/* ---------------------------------------------------------------------- */ - -void NPairHalffullNewtonIntel::build(NeighList *list) -{ - if (_fix->three_body_neighbor() == 0) { - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - build_t(list, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - build_t(list, _fix->get_double_buffers()); - else - build_t(list, _fix->get_single_buffers()); - } else { - int *nhalf, *cnum; - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { - _fix->get_mixed_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - _fix->get_double_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } else { - _fix->get_single_buffers()->get_list_data3(list->listfull, nhalf, cnum); - build_t3(list, nhalf); - } - } -} diff --git a/src/INTEL/npair_halffull_newton_intel.h b/src/INTEL/npair_halffull_newton_intel.h deleted file mode 100644 index 149983d08e4..00000000000 --- a/src/INTEL/npair_halffull_newton_intel.h +++ /dev/null @@ -1,61 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/intel, - NPairHalffullNewtonIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI| NP_INTEL); - -NPairStyle(halffull/newton/skip/intel, - NPairHalffullNewtonIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI | NP_SKIP | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_INTEL_H -#define LMP_NPAIR_HALFFULL_NEWTON_INTEL_H - -#include "fix_intel.h" -#include "npair.h" - -#if defined(_OPENMP) -#include -#endif - -namespace LAMMPS_NS { - -class NPairHalffullNewtonIntel : public NPair { - public: - NPairHalffullNewtonIntel(class LAMMPS *); - void build(class NeighList *) override; - - protected: - FixIntel *_fix; - - template void build_t(NeighList *, IntelBuffers *); - - template void build_t3(NeighList *, int *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/npair_halffull_newton_trim_intel.h b/src/INTEL/npair_halffull_newton_trim_intel.h deleted file mode 100644 index 0ca551d682e..00000000000 --- a/src/INTEL/npair_halffull_newton_trim_intel.h +++ /dev/null @@ -1,61 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(halffull/newton/trim/intel, - NPairHalffullNewtonTrimIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI| NP_TRIM | NP_INTEL); - -NPairStyle(halffull/newton/skip/trim/intel, - NPairHalffullNewtonTrimIntel, - NP_HALF_FULL | NP_NEWTON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | - NP_ORTHO | NP_TRI | NP_SKIP | NP_TRIM | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_TRIM_INTEL_H -#define LMP_NPAIR_HALFFULL_NEWTON_TRIM_INTEL_H - -#include "fix_intel.h" -#include "npair.h" - -#if defined(_OPENMP) -#include -#endif - -namespace LAMMPS_NS { - -class NPairHalffullNewtonTrimIntel : public NPair { - public: - NPairHalffullNewtonTrimIntel(class LAMMPS *); - void build(class NeighList *) override; - - protected: - FixIntel *_fix; - - template void build_t(NeighList *, IntelBuffers *); - - template void build_t3(NeighList *, int *, IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/INTEL/nstencil_bin_intel.cpp b/src/INTEL/nstencil_bin_intel.cpp new file mode 100644 index 00000000000..36a79e29976 --- /dev/null +++ b/src/INTEL/nstencil_bin_intel.cpp @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_bin_intel.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilBinIntel::NStencilBinIntel(LAMMPS *lmp) : NStencil(lmp) {} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilBinIntel::create() +{ + int i, j, k; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + nstencil = 0; + + // For Intel, half and ortho stencils do not include central bin + // as, historically, this was never included in a stencil. + // Non-Intel npair classes were updated to account for this change, + // but the Intel npair classes have not yet been updated + // if (HALF && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance(i,j,k) < cutneighmaxsq) + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilBinIntel<0,0,0>; +template class NStencilBinIntel<0,1,0>; +template class NStencilBinIntel<1,0,0>; +template class NStencilBinIntel<1,0,1>; +template class NStencilBinIntel<1,1,0>; +template class NStencilBinIntel<1,1,1>; +} diff --git a/src/INTEL/nstencil_bin_intel.h b/src/INTEL/nstencil_bin_intel.h new file mode 100644 index 00000000000..e377db5fe58 --- /dev/null +++ b/src/INTEL/nstencil_bin_intel.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilBinIntel<0, 0, 0> NStencilFullBin2dIntel; +NStencilStyle(full/bin/2d/intel, + NStencilFullBin2dIntel, + NS_FULL | NS_BIN | NS_2D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<0, 1, 0> NStencilFullBin3dIntel; +NStencilStyle(full/bin/3d/intel, + NStencilFullBin3dIntel, + NS_FULL | NS_BIN | NS_3D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<1, 0, 0> NStencilHalfBin2dIntel; +NStencilStyle(half/bin/2d/intel, + NStencilHalfBin2dIntel, + NS_HALF | NS_BIN | NS_2D | NS_ORTHO | NS_INTEL); + +typedef NStencilBinIntel<1, 0, 1> NStencilHalfBin2dTriIntel; +NStencilStyle(half/bin/2d/tri/intel, + NStencilHalfBin2dTriIntel, + NS_HALF | NS_BIN | NS_2D | NS_TRI | NS_INTEL); + +typedef NStencilBinIntel<1, 1, 0> NStencilHalfBin3dIntel; +NStencilStyle(half/bin/3d/intel, + NStencilHalfBin3dIntel, + NS_HALF | NS_BIN | NS_3D | NS_ORTHO | NS_INTEL); + +typedef NStencilBinIntel<1, 1, 1> NStencilHalfBin3dTriIntel; +NStencilStyle(half/bin/3d/tri/intel, + NStencilHalfBin3dTriIntel, + NS_HALF | NS_BIN | NS_3D | NS_TRI | NS_INTEL); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_BIN_INTEL_H +#define LMP_NSTENCIL_BIN_INTEL_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilBinIntel : public NStencil { + public: + NStencilBinIntel(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 006101da647..52979ed83eb 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1991,6 +1991,7 @@ int Neighbor::choose_stencil(NeighRequest *rq) // require match of these request flags and mask bits // (!A != !B) is effectively a logical xor + if (!rq->intel != !(mask & NS_INTEL)) continue; if (!rq->ghost != !(mask & NS_GHOST)) continue; if (!rq->ssa != !(mask & NS_SSA)) continue; diff --git a/src/neighbor.h b/src/neighbor.h index 9c51361aa80..fe2aea0779d 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -302,8 +302,9 @@ namespace NeighConst { NS_ORTHO = 1 << 6, NS_TRI = 1 << 7, NS_GHOST = 1 << 8, - NS_SSA = 1 << 9, - NS_MULTI_OLD = 1 << 10 + NS_INTEL = 1 << 9, + NS_SSA = 1 << 10, + NS_MULTI_OLD = 1 << 11 }; enum { From 85765a2bf3242a2f6deb14a2d8c7084ec13076b4 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 12 Jun 2023 12:45:52 +0300 Subject: [PATCH 033/300] Include born_matrix() definition in bond_gaussian.h --- src/EXTRA-MOLECULE/bond_gaussian.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.h b/src/EXTRA-MOLECULE/bond_gaussian.h index 7af6f1f4d92..e466df47d41 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.h +++ b/src/EXTRA-MOLECULE/bond_gaussian.h @@ -35,6 +35,7 @@ class BondGaussian : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: int *nterms; From a05fcc326efd1f7ebef08516ddf15b262c155215 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 12 Jun 2023 12:47:21 +0300 Subject: [PATCH 034/300] Implement born_matrix() in bond_gaussian.cpp --- src/EXTRA-MOLECULE/bond_gaussian.cpp | 45 +++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.cpp b/src/EXTRA-MOLECULE/bond_gaussian.cpp index baca0b6e1af..816ab515161 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.cpp +++ b/src/EXTRA-MOLECULE/bond_gaussian.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ #include "bond_gaussian.h" - +#include #include "atom.h" #include "comm.h" #include "error.h" @@ -35,6 +35,7 @@ BondGaussian::BondGaussian(LAMMPS *lmp) : Bond(lmp), nterms(nullptr), bond_temperature(nullptr), alpha(nullptr), width(nullptr), r0(nullptr) { + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -294,3 +295,45 @@ double BondGaussian::single(int type, double rsq, int /*i*/, int /*j*/, double & return -(force->boltz * bond_temperature[type]) * log(sum_g_i); } + +/* ---------------------------------------------------------------------- */ + +void BondGaussian::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + double r = sqrt(rsq); + + // first derivative of energy with respect to distance + double sum_g_i = 0.0; + double sum_numerator = 0.0; + for (int i = 0; i < nterms[type]; i++) { + double dr = r - r0[type][i]; + double prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); + double exponent = -2 * dr * dr / (width[type][i] * width[type][i]); + double g_i = prefactor * exp(exponent); + sum_g_i += g_i; + sum_numerator += g_i * dr / (width[type][i] * width[type][i]); + } + + if (sum_g_i < SMALL) sum_g_i = SMALL; + du = 4.0 * (force->boltz * bond_temperature[type]) * (sum_numerator / sum_g_i); + + // second derivative of energy with respect to distance + sum_g_i = 0.0; + double sum_dg_i = 0.0; + double sum_d2g_i = 0.0; + for (int i = 0; i < nterms[type]; i++) { + double dr = r - r0[type][i]; + double prefactor = (alpha[type][i] / (width[type][i] * sqrt(MY_PI2))); + double exponent = -2 * dr * dr / (width[type][i] * width[type][i]); + double g_i = prefactor * exp(exponent); + sum_g_i += g_i; + sum_dg_i -= 4.0 * g_i * dr / pow(width[type][i], 2); + sum_d2g_i += 4.0 * g_i * (4.0 * pow(r0[type][i], 2) - 8.0 * r0[type][i] * r - pow(width[type][i], 2) + 4.0 * r * r) / pow(width[type][i], 4) ; + } + + if (sum_g_i < SMALL) sum_g_i = SMALL; + double numerator = sum_d2g_i*sum_g_i - sum_dg_i*sum_dg_i; + double denominator = sum_g_i * sum_g_i; + + du2 = - (force->boltz * bond_temperature[type]) * numerator / denominator; +} From 25f5e74e9a7b240fe123f59c7749714d7304af46 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 15:51:59 -0600 Subject: [PATCH 035/300] updating args and D2min calculation in nonaffine fix --- doc/src/compute.rst | 1 + doc/src/compute_contact_atom.rst | 10 +- doc/src/compute_rattlers.rst | 74 +++ doc/src/fix.rst | 1 + doc/src/fix_nonaffine_displacement.rst | 140 +++++ src/GRANULAR/compute_contact_atom.cpp | 56 +- src/GRANULAR/compute_contact_atom.h | 4 + src/compute_rattlers.cpp | 308 ++++++++++ src/compute_rattlers.h | 52 ++ src/fix_nonaffine_displacement.cpp | 740 +++++++++++++++++++++++++ src/fix_nonaffine_displacement.h | 70 +++ 11 files changed, 1432 insertions(+), 24 deletions(-) create mode 100644 doc/src/compute_rattlers.rst create mode 100644 doc/src/fix_nonaffine_displacement.rst create mode 100755 src/compute_rattlers.cpp create mode 100755 src/compute_rattlers.h create mode 100755 src/fix_nonaffine_displacement.cpp create mode 100755 src/fix_nonaffine_displacement.h diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 6fdedbbb958..0f6bfa75d9b 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -254,6 +254,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`property/chunk ` - extract various per-chunk attributes * :doc:`property/local ` - convert local attributes to localvectors/arrays * :doc:`ptm/atom ` - determines the local lattice structure based on the Polyhedral Template Matching method +* :doc:`rattlers ` - identify undercoordinated rattler atoms * :doc:`rdf ` - radial distribution function g(r) histogram of group of atoms * :doc:`reduce ` - combine per-atom quantities into a single global value * :doc:`reduce/chunk ` - reduce per-atom quantities within each chunk diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 20dcbfae293..c26f2b4252a 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -8,10 +8,11 @@ Syntax .. parsed-literal:: - compute ID group-ID contact/atom + compute ID group-ID contact/atom group2-ID * ID, group-ID are documented in :doc:`compute ` command * contact/atom = style name of this compute command +* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) Examples """""""" @@ -19,6 +20,7 @@ Examples .. code-block:: LAMMPS compute 1 all contact/atom + compute 1 all contact/atom mygroup Description """"""""""" @@ -34,6 +36,9 @@ sum of the radii of the two particles. The value of the contact number will be 0.0 for atoms not in the specified compute group. +The optional *group2-ID* argument allows to specify from which group atoms +contribute to the coordination number. Default setting is group 'all'. + Output info """"""""""" @@ -63,4 +68,7 @@ Related commands Default """"""" +*group2-ID* = all + + none diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst new file mode 100644 index 00000000000..c26f2b4252a --- /dev/null +++ b/doc/src/compute_rattlers.rst @@ -0,0 +1,74 @@ +.. index:: compute contact/atom + +compute contact/atom command +============================ + +Syntax +"""""" + +.. parsed-literal:: + + compute ID group-ID contact/atom group2-ID + +* ID, group-ID are documented in :doc:`compute ` command +* contact/atom = style name of this compute command +* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all contact/atom + compute 1 all contact/atom mygroup + +Description +""""""""""" + +Define a computation that calculates the number of contacts +for each atom in a group. + +The contact number is defined for finite-size spherical particles as +the number of neighbor atoms which overlap the central particle, +meaning that their distance of separation is less than or equal to the +sum of the radii of the two particles. + +The value of the contact number will be 0.0 for atoms not in the +specified compute group. + +The optional *group2-ID* argument allows to specify from which group atoms +contribute to the coordination number. Default setting is group 'all'. + +Output info +""""""""""" + +This compute calculates a per-atom vector, whose values can be +accessed by any command that uses per-atom values from a compute as +input. See the :doc:`Howto output ` page for an +overview of LAMMPS output options. + +The per-atom vector values will be a number >= 0.0, as explained +above. + +Restrictions +"""""""""""" + +This compute is part of the GRANULAR package. It is only enabled if +LAMMPS was built with that package. See the +:doc:`Build package ` page for more info. + +This compute requires that atoms store a radius as defined by the +:doc:`atom_style sphere ` command. + +Related commands +"""""""""""""""" + +:doc:`compute coord/atom ` + +Default +""""""" + +*group2-ID* = all + + +none diff --git a/doc/src/fix.rst b/doc/src/fix.rst index b0ec47fbe6f..b07aa2770e4 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -259,6 +259,7 @@ accelerated styles exist. * :doc:`mvv/tdpd ` - constant temperature DPD using the modified velocity-Verlet algorithm * :doc:`neb ` - nudged elastic band (NEB) spring forces * :doc:`neb/spin ` - nudged elastic band (NEB) spring forces for spins +* :doc:`nonaffine/displacement ` - calculate nonaffined displacement of atoms * :doc:`nph ` - constant NPH time integration via Nose/Hoover * :doc:`nph/asphere ` - NPH for aspherical particles * :doc:`nph/body ` - NPH for body particles diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst new file mode 100644 index 00000000000..7b0f7669ed4 --- /dev/null +++ b/doc/src/fix_nonaffine_displacement.rst @@ -0,0 +1,140 @@ +.. index:: fix gravity +.. index:: fix gravity/omp +.. index:: fix gravity/kk + +fix gravity command +=================== + +Accelerator Variants: *gravity/omp*, *gravity/kk* + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group gravity magnitude style args + +* ID, group are documented in :doc:`fix ` command +* gravity = style name of this fix command +* magnitude = size of acceleration (force/mass units) +* magnitude can be a variable (see below) +* style = *chute* or *spherical* or *gradient* or *vector* + + .. parsed-literal:: + + *chute* args = angle + angle = angle in +x away from -z or -y axis in 3d/2d (in degrees) + angle can be a variable (see below) + *spherical* args = phi theta + phi = azimuthal angle from +x axis (in degrees) + theta = angle from +z or +y axis in 3d/2d (in degrees) + phi or theta can be a variable (see below) + *vector* args = x y z + x y z = vector direction to apply the acceleration + x or y or z can be a variable (see below) + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all gravity 1.0 chute 24.0 + fix 1 all gravity v_increase chute 24.0 + fix 1 all gravity 1.0 spherical 0.0 -180.0 + fix 1 all gravity 10.0 spherical v_phi v_theta + fix 1 all gravity 100.0 vector 1 1 0 + +Description +""""""""""" + +Impose an additional acceleration on each particle in the group. This +fix is typically used with granular systems to include a "gravity" +term acting on the macroscopic particles. More generally, it can +represent any kind of driving field, e.g. a pressure gradient inducing +a Poiseuille flow in a fluid. Note that this fix operates differently +than the :doc:`fix addforce ` command. The addforce fix +adds the same force to each atom, independent of its mass. This +command imparts the same acceleration to each atom (force/mass). + +The *magnitude* of the acceleration is specified in force/mass units. +For granular systems (LJ units) this is typically 1.0. See the +:doc:`units ` command for details. + +Style *chute* is typically used for simulations of chute flow where +the specified *angle* is the chute angle, with flow occurring in the +x +direction. For 3d systems, the tilt is away from the z axis; for 2d +systems, the tilt is away from the y axis. + +Style *spherical* allows an arbitrary 3d direction to be specified for +the acceleration vector. *Phi* and *theta* are defined in the usual +spherical coordinates. Thus for acceleration acting in the -z +direction, *theta* would be 180.0 (or -180.0). *Theta* = 90.0 and +*phi* = -90.0 would mean acceleration acts in the -y direction. For +2d systems, *phi* is ignored and *theta* is an angle in the xy plane +where *theta* = 0.0 is the y-axis. + +Style *vector* imposes an acceleration in the vector direction given +by (x,y,z). Only the direction of the vector is important; it's +length is ignored. For 2d systems, the *z* component is ignored. + +Any of the quantities *magnitude*, *angle*, *phi*, *theta*, *x*, *y*, +*z* which define the gravitational magnitude and direction, can be +specified as an equal-style :doc:`variable `. If the value is +a variable, it should be specified as v_name, where name is the +variable name. In this case, the variable will be evaluated each +timestep, and its value used to determine the quantity. You should +insure that the variable calculates a result in the appropriate units, +e.g. force/mass or degrees. + +Equal-style variables can specify formulas with various mathematical +functions, and include :doc:`thermo_style ` command +keywords for the simulation box parameters and timestep and elapsed +time. Thus it is easy to specify a time-dependent gravitational +field. + +---------- + +.. include:: accel_styles.rst + +---------- + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +No information about this fix is written to :doc:`binary restart files `. + +The :doc:`fix_modify ` *energy* option is supported by +this fix to add the gravitational potential energy of the system to +the global potential energy of the system as part of +:doc:`thermodynamic output `. The default setting for +this fix is :doc:`fix_modify energy no `. + +The :doc:`fix_modify ` *respa* option is supported by this +fix. This allows to set at which level of the :doc:`r-RESPA +` integrator the fix is adding its forces. Default is the +outermost level. + +This fix computes a global scalar which can be accessed by various +:doc:`output commands `. This scalar is the +gravitational potential energy of the particles in the defined field, +namely mass \* (g dot x) for each particles, where x and mass are the +particles position and mass, and g is the gravitational field. The +scalar value calculated by this fix is "extensive". + +No parameter of this fix can be used with the *start/stop* keywords of +the :doc:`run ` command. This fix is not invoked during +:doc:`energy minimization `. + +Restrictions +"""""""""""" + none + +Related commands +"""""""""""""""" + +:doc:`atom_style sphere `, :doc:`fix addforce ` + +Default +""""""" + +none diff --git a/src/GRANULAR/compute_contact_atom.cpp b/src/GRANULAR/compute_contact_atom.cpp index 5a07d14eb8e..26018f7bfb0 100644 --- a/src/GRANULAR/compute_contact_atom.cpp +++ b/src/GRANULAR/compute_contact_atom.cpp @@ -18,6 +18,7 @@ #include "comm.h" #include "error.h" #include "force.h" +#include "group.h" #include "memory.h" #include "modify.h" #include "neigh_list.h" @@ -34,7 +35,16 @@ ComputeContactAtom::ComputeContactAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), contact(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute contact/atom command"); + if (narg != 3 && narg != 4) error->all(FLERR,"Illegal compute contact/atom command"); + + jgroup = group->find("all"); + jgroupbit = group->bitmask[jgroup]; + if (narg == 4) { + group2 = utils::strdup(arg[3]); + jgroup = group->find(group2); + if (jgroup == -1) error->all(FLERR, "Compute contact/atom group2 ID does not exist"); + jgroupbit = group->bitmask[jgroup]; + } peratom_flag = 1; size_peratom_cols = 0; @@ -120,28 +130,28 @@ void ComputeContactAtom::compute_peratom() for (ii = 0; ii < inum; ii++) { i = ilist[ii]; - if (mask[i] & groupbit) { - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - radi = radius[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - radsum = radi + radius[j]; - radsumsq = radsum*radsum; - if (rsq <= radsumsq) { - contact[i] += 1.0; - contact[j] += 1.0; - } + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + radi = radius[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + radsum = radi + radius[j]; + radsumsq = radsum * radsum; + if (rsq <= radsumsq) { + // Only tally for atoms in compute group (groupbit) if neighbor is in group2 (jgroupbit) + if ((mask[i] & groupbit) && (mask[j] & jgroupbit)) contact[i] += 1.0; + if ((mask[j] & groupbit) && (mask[i] & jgroupbit)) contact[j] += 1.0; } } } diff --git a/src/GRANULAR/compute_contact_atom.h b/src/GRANULAR/compute_contact_atom.h index f01815e6662..5262c1b29b4 100644 --- a/src/GRANULAR/compute_contact_atom.h +++ b/src/GRANULAR/compute_contact_atom.h @@ -37,6 +37,10 @@ class ComputeContactAtom : public Compute { private: int nmax; + + char *group2; + int jgroup, jgroupbit; + class NeighList *list; double *contact; }; diff --git a/src/compute_rattlers.cpp b/src/compute_rattlers.cpp new file mode 100755 index 00000000000..5a6d2b022db --- /dev/null +++ b/src/compute_rattlers.cpp @@ -0,0 +1,308 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "compute_rattlers.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "update.h" +#include "utils.h" + +#include +#include + +using namespace LAMMPS_NS; + +enum { TYPE, RADIUS }; + +/* ---------------------------------------------------------------------- */ + +ComputeRattlers::ComputeRattlers(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), ncontacts(nullptr), rattler(nullptr) +{ + if (narg != 6) error->all(FLERR, "Illegal compute fabric command"); + + if (strcmp(arg[3], "type") == 0) + cutstyle = TYPE; + else if (strcmp(arg[3], "radius") == 0) + cutstyle = RADIUS; + else + error->all(FLERR, "Illegal compute fabric command"); + + if (cutstyle == RADIUS && !atom->radius_flag) + error->all(FLERR, "Compute fabric radius style requires atom attribute radius"); + + ncontacts_rattler = utils::inumeric(FLERR, arg[4], false, lmp); + max_tries = utils::inumeric(FLERR, arg[5], false, lmp); + + nmax = 0; + invoked_peratom = -1; + + scalar_flag = 1; + extscalar = 1; + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + comm_reverse = 1; +} + +/* ---------------------------------------------------------------------- */ + +ComputeRattlers::~ComputeRattlers() +{ + memory->destroy(ncontacts); + memory->destroy(rattler); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::init() +{ + if (force->pair == nullptr) error->all(FLERR, "No pair style is defined for compute rattlers"); + + // Cannot calculate distance from radii for JKR/DMT + if (force->pair->beyond_contact) + error->all(FLERR, "Compute rattlers does not currently support pair styles that extend beyond contact"); + + // need an occasional half neighbor list + // set size to same value as request made by force->pair + // this should enable it to always be a copy list (e.g. for granular pstyle) + + auto pairrequest = neighbor->find_request(force->pair); + if (pairrequest && pairrequest->get_size()) + neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); + else + neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::compute_peratom() +{ + if (invoked_peratom == update->ntimestep) return; + invoked_peratom = update->ntimestep; + + int i, j, ii, jj, inum, jnum, itype, jtype, tmp_flag; + tagint itag, jtag; + double xtmp, ytmp, ztmp, delx, dely, delz; + double r, rinv, rsq, radsum; + + if (nmax < atom->nmax) { + nmax = atom->nmax; + memory->destroy(ncontacts); + memory->destroy(rattler); + memory->create(ncontacts, nmax, "rattlers:ncontacts"); + memory->create(rattler, nmax, "rattlers:rattler"); + vector_atom = rattler; + } + + for (i = 0; i < nmax; i++) rattler[i] = 0; + + int *ilist, *jlist, *numneigh, **firstneigh; + + double **x = atom->x; + double *radius = atom->radius; + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + // invoke half neighbor list (will copy or build if necessary) + neighbor->build_one(list); + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + Pair *pair = force->pair; + double **cutsq = force->pair->cutsq; + + int change_flag = 1; + int ntry = 0; + while (ntry < max_tries) { + // Quit when answer stops evolving + if (change_flag == 0) break; + change_flag = 0; + + for (i = 0; i < nmax; i++) ncontacts[i] = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + if (rattler[i] == 1) continue; + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itag = tag[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + if (rattler[j] == 1) continue; + + // itag = jtag is possible for long cutoffs that include images of self + + if (newton_pair == 0 && j >= nlocal) { + jtag = tag[j]; + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag + jtag) % 2 == 1) continue; + } else { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; + } + } + } + + 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 (cutstyle == TYPE) { + if (rsq >= cutsq[itype][jtype]) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq >= radsum * radsum) continue; + } + ncontacts[i] += 1; + if (newton_pair || j < nlocal) + ncontacts[j] += 1; + } + } + + // add contributions from ghosts + if (force->newton_pair) comm->reverse_comm(this); + + // Set flags for rattlers + for (i = 0; i < atom->nlocal; i++) { + if (ncontacts[i] < ncontacts_rattler && rattler[i] == 0) { + rattler[i] = 1; + change_flag = 1; + } + } + + comm->forward_comm(this); + + MPI_Allreduce(&change_flag, &tmp_flag, 1, MPI_INT, MPI_MAX, world); + change_flag = tmp_flag; + + ntry += 1; + } + + if (change_flag == 1) + error->warning(FLERR, "Rattler calculation failed to converge within max tries"); +} + +/* ---------------------------------------------------------------------- */ + +double ComputeRattlers::compute_scalar() { + if (invoked_peratom != update->ntimestep) + compute_peratom(); + + invoked_scalar = update->ntimestep; + + double total_rattlers = 0; + for (int i = 0; i < atom->nlocal; i++) { + if (rattler[i] == 1) { + total_rattlers += 1; + } + } + + //Total across processors + MPI_Allreduce(&total_rattlers, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); + return scalar; +} + +/* ---------------------------------------------------------------------- */ + +int ComputeRattlers::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++] = ubuf(ncontacts[i]).d; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + ncontacts[j] += (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeRattlers::pack_forward_comm(int n, int *list, double *buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rattler[j]; + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeRattlers::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rattler[i] = buf[m++]; + } +} diff --git a/src/compute_rattlers.h b/src/compute_rattlers.h new file mode 100755 index 00000000000..08f8d7e71d2 --- /dev/null +++ b/src/compute_rattlers.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +ComputeStyle(rattlers,ComputeRattlers); +// clang-format on +#else + +#ifndef LMP_COMPUTE_RATTLERS_H +#define LMP_COMPUTE_RATTLERS_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeRattlers : public Compute { + public: + ComputeRattlers(class LAMMPS *, int, char **); + ~ComputeRattlers() override; + void init() override; + void init_list(int, class NeighList *) override; + void compute_peratom() override; + double compute_scalar() override; + int pack_forward_comm(int, int *, double *, int, int *) override; + void unpack_forward_comm(int, int, double *) override; + int pack_reverse_comm(int, int, double *) override; + void unpack_reverse_comm(int, int *, double *) override; + + private: + int pstyle, cutstyle; + int ncontacts_rattler, max_tries, nmax, invoked_peratom; + int *ncontacts; + double *rattler; + class NeighList *list; + +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp new file mode 100755 index 00000000000..15c678f83dc --- /dev/null +++ b/src/fix_nonaffine_displacement.cpp @@ -0,0 +1,740 @@ +// clang-format off +/* ---------------------------------------------------------------------- + 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 "fix_nonaffine_displacement.h" + +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "group.h" +#include "math_extra.h" +#include "memory.h" +#include "modify.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathExtra; + +enum { TYPE, RADIUS, CUSTOM }; +enum { INTEGRATED, D2MIN }; +enum { FIXED, OFFSET, UPDATE }; + +static const char cite_nonaffine_d2min[] = + "@article{PhysRevE.57.7192,\n" + " title = {Dynamics of viscoplastic deformation in amorphous solids},\n" + " author = {Falk, M. L. and Langer, J. S.},\n" + " journal = {Phys. Rev. E},\n" + " volume = {57},\n" + " issue = {6},\n" + " pages = {7192--7205},\n" + " numpages = {0},\n" + " year = {1998},\n" + " month = {Jun},\n" + " publisher = {American Physical Society},\n" + " doi = {10.1103/PhysRevE.57.7192},\n" + "url = {https://link.aps.org/doi/10.1103/PhysRevE.57.7192}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm (nullptr) +{ + if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + + int iarg = 3; + if (strcmp(arg[iarg], "integrated") == 0) { + nad_style = INTEGRATED; + nevery = 1; + iarg += 1; + } else if (strcmp(arg[iarg], "d2min") == 0) { + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + + nad_style = D2MIN; + nevery = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); + + if (strcmp(arg[iarg + 2], "type") == 0) { + cut_style = TYPE; + } else if (strcmp(arg[iarg + 2], "radius") == 0) { + cut_style = RADIUS; + } else if (strcmp(arg[iarg + 2], "custom") == 0) { + if (iarg + 3 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + cut_style = CUSTOM; + cutoff_custom = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + cutsq_custom = cutoff_custom * cutoff_custom; + if (cutoff_custom <= 0) + error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 3]); + iarg += 1; + } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 2]); + iarg += 3; + } + + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + if (strcmp(arg[iarg], "fixed") == 0) { + reference_style = FIXED; + reference_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (update_timestep < 0) + error->all(FLERR, "Illegal reference timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else if (strcmp(arg[iarg], "update") == 0) { + reference_style = UPDATE; + update_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (update_timestep < 0) + error->all(FLERR, "Illegal update timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else if (strcmp(arg[iarg], "offset") == 0) { + reference_style = OFFSET; + offset_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (offset_timestep < 0) + error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); + } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); + + if (cut_style == RADIUS && (!atom->radius_flag)) + error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + + peratom_flag = 1; + peratom_freq = nevery; + nmax = -1; + reference_saved = 0; + restart_global = 1; + + size_peratom_cols = 3; + comm_reverse = 0; + comm_forward = 0; + if (nad_style == D2MIN) { + comm_reverse = 18; + comm_forward = 9; + } + + if (nad_style == D2MIN && lmp->citeme) lmp->citeme->add(cite_nonaffine_d2min); +} + +/* ---------------------------------------------------------------------- */ + +FixNonaffineDisplacement::~FixNonaffineDisplacement() +{ + if (new_fix_id && modify->nfix) modify->delete_fix(new_fix_id); + delete[] new_fix_id; + + if (nad_style == D2MIN) { + memory->destroy(X); + memory->destroy(Y); + memory->destroy(F); + memory->destroy(norm); + memory->destroy(array_atom); + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::post_constructor() +{ + // Create persistent peratom storage for either an integrated velocity or reference position + // Ghost atoms need reference coordinates for D2min + std::string ghost_status = "no"; + if (nad_style == D2MIN) ghost_status = "yes"; + + new_fix_id = utils::strdup(id + std::string("_FIX_PA")); + modify->add_fix(fmt::format("{} {} property/atom d2_nad 3 ghost {}", new_fix_id, group->names[igroup], ghost_status)); + int tmp1, tmp2; + nad_index = atom->find_custom("nad",tmp1,tmp2); + + if (nad_style == INTEGRATED) { + double **nad = atom->darray[nad_index]; + array_atom = nad; + } + + if (nad_style == D2MIN) { + grow_arrays(atom->nmax); + for (int i = 0; i < atom->nlocal; i++) + for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::init() +{ + dtv = update->dt; + + if (!reference_saved && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) + error->all(FLERR, "Initial timestep exceeds that of the reference state in fix nonaffine/displacement"); + + if (nad_style == D2MIN) { + if (!force->pair && (cut_style == TYPE)) + error->all(FLERR,"Fix nonaffine/displacement D2Min option requires a pair style be defined " + "or cutoff specified"); + + if (cut_style == CUSTOM) { + double skin = neighbor->skin; + mycutneigh = cutoff_custom + skin; + + double cutghost; // as computed by Neighbor and Comm + if (force->pair) + cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (mycutneigh > cutghost) + error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); + } + + // need an occasional half neighbor list + + if (cut_style == RADIUS) { + auto req = neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); + } else { + auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); + if (cut_style == CUSTOM) req->set_cutoff(mycutneigh); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::setup(int vflag) +{ + post_force(0); // Save state if needed before starting the 1st timestep +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::post_force(int /*vflag*/) +{ + if (reference_style == FIXED) + if (update->ntimestep == reference_timestep) + save_reference_state(); + + if (reference_style == UPDATE) + if ((update->ntimestep % update_timestep) == 0) + save_reference_state(); + + if (reference_style == OFFSET) + if (((update->ntimestep - offset_timestep) % nevery) == 0) + save_reference_state(); + + if (update->setupflag) return; + + if (reference_style == FIXED && (update->ntimestep < reference_timestep)) return; + + if (nad_style == INTEGRATED) { + integrate_velocity(); + } else { + if ((update->ntimestep % nevery) == 0) calculate_D2Min(); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::write_restart(FILE *fp) +{ + if (comm->me == 0) { + int size = sizeof(int); + fwrite(&size, sizeof(int), 1, fp); + fwrite(&reference_saved, sizeof(int), 1, fp); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::restart(char *buf) +{ + reference_saved = (int) ubuf(buf[0]).i; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::integrate_velocity() +{ + int i,n; + dtv = update->dt; + + double **v = atom->v; + + int *mask = atom->mask; + int nlocal = atom->nlocal; + double **nad = atom->darray[nad_index]; + + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + nad[i][m] += dtv * v[i][m]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::save_reference_state() +{ + int i, n; + double **x = atom->x; + + int *mask = atom->mask; + int nlocal = atom->nlocal; + double **nad = atom->darray[nad_index]; + + if (nad_style == D2MIN) { + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) nad[i][m] = x[i][m]; + } + } + } else { + for (int m = 0; m < 3; m++) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) nad[i][m] = 0.0; + } + } + } + + if (nad_style == D2MIN) { + xprd0 = domain->xprd; + yprd0 = domain->yprd; + zprd0 = domain->zprd; + xprd0_half = domain->xprd_half; + yprd0_half = domain->yprd_half; + zprd0_half = domain->zprd_half; + xy0 = domain->xy; + xz0 = domain->xz; + yz0 = domain->yz; + } + + reference_saved = 1; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::calculate_D2Min() +{ + if (!reference_saved) { + error->warning(FLERR, "Calculating D2Min without a saved reference state"); + return; + } + + // invoke half neighbor list (will copy or build if necessary) + neighbor->build_one(list); + + if (atom->nmax > nmax) + grow_arrays(atom->nmax); + + int i, j, k, l, ii, jj, inum, jnum, itype, jtype; + double evol, j2, edev; + double r[3], r0[3], rsq, rsq0, radsum, temp[3]; + double X_tmp[3][3], Y_tmp[3][3], F_tmp[3][3], E[3][3]; + double Y_inv[3][3] = {0.0}; // Zero for 2d since not all entries used + int *ilist, *jlist, *numneigh, **firstneigh; + + double **x = atom->x; + double **x0 = atom->darray[nad_index]; + double *radius = atom->radius; + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + Pair *pair = force->pair; + double **cutsq; + if (pair) cutsq = force->pair->cutsq; + + for (i = 0; i < nmax; i++) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[i][k][l] = 0.0; + Y[i][k][l] = 0.0; + } + } + norm[i] = 0; + array_atom[i][0] = 0; + } + + // First loop through neighbors + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + + jtype = type[j]; + r[0] = x[i][0] - x[j][0]; + r[1] = x[i][1] - x[j][1]; + r[2] = x[i][2] - x[j][2]; + rsq = lensq3(r); + + // Only include contributions from atoms that are CURRENTLY neighbors + if (cut_style == TYPE) { + if (rsq > cutsq[itype][jtype]) continue; + } else if (cut_style == CUSTOM) { + if (rsq > cutsq_custom) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq > radsum * radsum) continue; + } + + r0[0] = x0[i][0] - x0[j][0]; + r0[1] = x0[i][1] - x0[j][1]; + r0[2] = x0[i][2] - x0[j][2]; + minimum_image0(r0); + + // Using notation from Falk & Langer 1998 + outer3(r, r0, X_tmp); + outer3(r0, r0, Y_tmp); + + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[i][k][l] += X_tmp[k][l]; + Y[i][k][l] += Y_tmp[k][l]; + } + } + + if (newton_pair || j < nlocal) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[j][k][l] += X_tmp[k][l]; + Y[j][k][l] += Y_tmp[k][l]; + } + } + } + } + } + + comm_flag = 0; + if (newton_pair) comm->reverse_comm(this); + + // Calculate contributions to strain tensor + double denom; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) { + Y_tmp[j][k] = Y[i][j][k]; + X_tmp[j][k] = X[i][j][k]; + } + } + + if (domain->dimension == 3) { + invert3(Y_tmp, Y_inv); + } else { + denom = Y_tmp[0][0] * Y_tmp[1][1] - Y_tmp[0][1] * Y_tmp[1][0]; + if (denom != 0.0) denom = 1.0 / denom; + Y_inv[0][0] = Y_tmp[1][1] * denom; + Y_inv[0][1] = -Y_tmp[0][1] * denom; + Y_inv[1][0] = -Y_tmp[1][0] * denom; + Y_inv[1][1] = Y_tmp[0][0] * denom; + } + + times3(X_tmp, Y_inv, F_tmp); + + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) { + F[i][j][k] = F_tmp[j][k]; + } + } + } + + comm->forward_comm(this); + + // Second loop through neighbors + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbit)) continue; + + jtype = type[j]; + r[0] = x[i][0] - x[j][0]; + r[1] = x[i][1] - x[j][1]; + r[2] = x[i][2] - x[j][2]; + rsq = lensq3(r); + + // Only include contributions from atoms that are CURRENTLY neighbors + if (cut_style == TYPE) { + if (rsq >= cutsq[itype][jtype]) continue; + } else if (cut_style == CUSTOM) { + if (rsq >= cutsq_custom) continue; + } else { + radsum = radius[i] + radius[j]; + if (rsq >= radsum * radsum) continue; + } + + r0[0] = x0[i][0] - x0[j][0]; + r0[1] = x0[i][1] - x0[j][1]; + r0[2] = x0[i][2] - x0[j][2]; + minimum_image0(r0); + + // E * r0 + for (k = 0; k < 3; k++) { + temp[k] = 0.0; + for (l = 0; l < 3; l++) + temp[k] += F[i][k][l] * r0[l]; + } + + sub3(r, temp, temp); + array_atom[i][0] += lensq3(temp); + norm[i] += 1; + + if (newton_pair || j < nlocal) { + for (k = 0; k < 3; k++) { + temp[k] = 0.0; + for (l = 0; l < 3; l++) + temp[k] += F[j][k][l] * r0[l]; + } + + sub3(r, temp, temp); + array_atom[j][0] += lensq3(temp); + norm[j] += 1; + } + } + } + + comm_flag = 1; + if (newton_pair) comm->reverse_comm(this, 2); + + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + if (norm[i] != 0) + array_atom[i][0] /= norm[i]; + else + array_atom[i][0] = 0.0; + + for (j = 0; j < 3; j++) + for (k = 0; k < 3; k++) + F_tmp[j][k] = F[i][j][k]; + + transpose_times3(F_tmp, F_tmp, E); + for (j = 0; j < 3; j++) E[j][j] -= 1.0; + + evol = (E[0][0] + E[1][1] + E[2][2]) / domain->dimension; + + // Calculate deviatoric strain + for (j = 0; j < 3; j++) E[j][j] -= evol; + j2 = 0.0; + for (j = 0; j < 3; j++) + for (k = 0; k < 3; k++) + j2 += E[j][k] * E[j][k]; + + edev = sqrt(0.5 * j2); + + array_atom[i][1] = evol; + array_atom[i][2] = edev; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::pack_reverse_comm(int n, int first, double *buf) +{ + int i, m, last, k, l; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (comm_flag == 0) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + buf[m++] = X[i][k][l]; + buf[m++] = Y[i][k][l]; + } + } + } else { + buf[m++] = array_atom[i][0]; + buf[m++] = ubuf(norm[i]).d; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i, j, m, k, l; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + if (comm_flag == 0) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l++) { + X[j][k][l] += buf[m++]; + Y[j][k][l] += buf[m++]; + } + } + } else { + array_atom[j][0] += buf[m++]; + norm[j] += (int) ubuf(buf[m++]).i; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int FixNonaffineDisplacement::pack_forward_comm(int n, int *list, double *buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + int i, j, m, k, l; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l ++) { + buf[m++] = F[j][k][l]; + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m, last, k, l; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + for (k = 0; k < 3; k++) { + for (l = 0; l < 3; l ++) { + F[i][k][l] = buf[m++]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::minimum_image0(double *delta) +{ + if (domain->triclinic == 0) { + if (domain->xperiodic) { + while (fabs(delta[0]) > xprd0_half) { + if (delta[0] < 0.0) delta[0] += xprd0; + else delta[0] -= xprd0; + } + } + if (domain->yperiodic) { + while (fabs(delta[1]) > yprd0_half) { + if (delta[1] < 0.0) delta[1] += yprd0; + else delta[1] -= yprd0; + } + } + if (domain->zperiodic) { + while (fabs(delta[2]) > zprd0_half) { + if (delta[2] < 0.0) delta[2] += zprd0; + else delta[2] -= zprd0; + } + } + + } else { + if (domain->zperiodic) { + while (fabs(delta[2]) > zprd0_half) { + if (delta[2] < 0.0) { + delta[2] += zprd0; + delta[1] += yz0; + delta[0] += xz0; + } else { + delta[2] -= zprd0; + delta[1] -= yz0; + delta[0] -= xz0; + } + } + } + if (domain->yperiodic) { + while (fabs(delta[1]) > yprd0_half) { + if (delta[1] < 0.0) { + delta[1] += yprd0; + delta[0] += xy0; + } else { + delta[1] -= yprd0; + delta[0] -= xy0; + } + } + } + if (domain->xperiodic) { + while (fabs(delta[0]) > xprd0_half) { + if (delta[0] < 0.0) delta[0] += xprd0; + else delta[0] -= xprd0; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNonaffineDisplacement::grow_arrays(int nmax_new) +{ + nmax = nmax_new; + memory->destroy(array_atom); + memory->destroy(X); + memory->destroy(Y); + memory->destroy(F); + memory->destroy(norm); + memory->create(array_atom, nmax, 3, "fix_nonaffine_displacement:array_atom"); + memory->create(X, nmax, 3, 3, "fix_nonaffine_displacement:X"); + memory->create(Y, nmax, 3, 3, "fix_nonaffine_displacement:Y"); + memory->create(F, nmax, 3, 3, "fix_nonaffine_displacement:F"); + memory->create(norm, nmax, "fix_nonaffine_displacement:norm"); +} diff --git a/src/fix_nonaffine_displacement.h b/src/fix_nonaffine_displacement.h new file mode 100755 index 00000000000..9a914cf5df7 --- /dev/null +++ b/src/fix_nonaffine_displacement.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 FIX_CLASS +// clang-format off +FixStyle(nonaffine/displacement,FixNonaffineDisplacement) +// clang-format on +#else + +#ifndef LMP_FIX_NONAFFINE_DISPLACEMENT_H +#define LMP_FIX_NONAFFINE_DISPLACEMENT_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixNonaffineDisplacement : public Fix { + public: + FixNonaffineDisplacement(class LAMMPS *, int, char **); + ~FixNonaffineDisplacement() override; + int setmask() override; + void post_constructor() override; + void init() override; + void init_list(int, class NeighList *) override; + void setup(int); + void post_force(int) override; + void write_restart(FILE *fp) override; + void restart(char *buf) override; + int pack_forward_comm(int, int *, double *, int, int *) override; + void unpack_forward_comm(int, int, double *) override; + int pack_reverse_comm(int, int, double *) override; + void unpack_reverse_comm(int, int *, double *) override; + + private: + double dtv; + char *new_fix_id; + int nad_index, nmax, comm_flag; + int nad_style, cut_style; + int reference_style, offset_timestep, reference_timestep, update_timestep; + int reference_saved; + double cutoff_custom, cutsq_custom, mycutneigh; + double xprd0, yprd0, zprd0, xprd0_half, yprd0_half, zprd0_half, xy0, xz0, yz0; + + double ***X, ***Y, ***F; + int *norm; + + class NeighList *list; // half neighbor list + + + void integrate_velocity(); + void calculate_D2Min(); + void save_reference_state(); + void minimum_image0(double *); + void grow_arrays(int); +}; + +} // namespace LAMMPS_NS + +#endif +#endif From 2fbaeb4fc7033484f5498c541e3c41430b9873a8 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 16:03:30 -0600 Subject: [PATCH 036/300] Fixing merge conflict --- doc/src/compute_contact_atom.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 8e94460877c..384ede290fd 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -50,9 +50,6 @@ overview of LAMMPS output options. The per-atom vector values will be a number :math:`\ge 0.0`, as explained above. -The optional *group2-ID* argument allows to specify from which group atoms -contribute to the coordination number. Default setting is group 'all.' - Restrictions """""""""""" From 7012e6ddd466684806832b5f2bbbd253d491048b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 19:06:14 -0600 Subject: [PATCH 037/300] Debugging and cleaning up D2min calculation --- src/fix_nonaffine_displacement.cpp | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index 15c678f83dc..e5c5eba4e2d 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -105,7 +105,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * } else if (strcmp(arg[iarg], "offset") == 0) { reference_style = OFFSET; offset_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (offset_timestep < 0) + if ((offset_timestep <= 0) || (offset_timestep > nevery)) error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); @@ -237,6 +237,14 @@ void FixNonaffineDisplacement::setup(int vflag) void FixNonaffineDisplacement::post_force(int /*vflag*/) { + if (reference_saved && !update->setupflag) { + if (nad_style == INTEGRATED) { + integrate_velocity(); + } else { + if ((update->ntimestep % nevery) == 0) calculate_D2Min(); + } + } + if (reference_style == FIXED) if (update->ntimestep == reference_timestep) save_reference_state(); @@ -246,18 +254,8 @@ void FixNonaffineDisplacement::post_force(int /*vflag*/) save_reference_state(); if (reference_style == OFFSET) - if (((update->ntimestep - offset_timestep) % nevery) == 0) + if (((update->ntimestep + offset_timestep) % nevery) == 0) save_reference_state(); - - if (update->setupflag) return; - - if (reference_style == FIXED && (update->ntimestep < reference_timestep)) return; - - if (nad_style == INTEGRATED) { - integrate_velocity(); - } else { - if ((update->ntimestep % nevery) == 0) calculate_D2Min(); - } } /* ---------------------------------------------------------------------- */ @@ -309,17 +307,18 @@ void FixNonaffineDisplacement::save_reference_state() int *mask = atom->mask; int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; double **nad = atom->darray[nad_index]; if (nad_style == D2MIN) { for (int m = 0; m < 3; m++) { - for (int i = 0; i < nlocal; i++) { + for (int i = 0; i < nall; i++) { if (mask[i] & groupbit) nad[i][m] = x[i][m]; } } } else { for (int m = 0; m < 3; m++) { - for (int i = 0; i < nlocal; i++) { + for (int i = 0; i < nall; i++) { if (mask[i] & groupbit) nad[i][m] = 0.0; } } @@ -370,6 +369,7 @@ void FixNonaffineDisplacement::calculate_D2Min() int *mask = atom->mask; int nlocal = atom->nlocal; int newton_pair = force->newton_pair; + int dim = domain->dimension; inum = list->inum; ilist = list->ilist; @@ -450,7 +450,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } comm_flag = 0; - if (newton_pair) comm->reverse_comm(this); + if (newton_pair) comm->reverse_comm(this, 18); // Calculate contributions to strain tensor double denom; @@ -463,7 +463,7 @@ void FixNonaffineDisplacement::calculate_D2Min() } } - if (domain->dimension == 3) { + if (dim == 3) { invert3(Y_tmp, Y_inv); } else { denom = Y_tmp[0][0] * Y_tmp[1][1] - Y_tmp[0][1] * Y_tmp[1][0]; @@ -562,12 +562,12 @@ void FixNonaffineDisplacement::calculate_D2Min() F_tmp[j][k] = F[i][j][k]; transpose_times3(F_tmp, F_tmp, E); - for (j = 0; j < 3; j++) E[j][j] -= 1.0; + for (j = 0; j < dim; j++) E[j][j] -= 1.0; - evol = (E[0][0] + E[1][1] + E[2][2]) / domain->dimension; + evol = (E[0][0] + E[1][1] + E[2][2]) / dim; // Calculate deviatoric strain - for (j = 0; j < 3; j++) E[j][j] -= evol; + for (j = 0; j < dim; j++) E[j][j] -= evol; j2 = 0.0; for (j = 0; j < 3; j++) for (k = 0; k < 3; k++) From a1513a7d3b04c760fff222a275c7e18d09afd540 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 15 Jun 2023 23:06:50 -0600 Subject: [PATCH 038/300] rattler documentation --- doc/src/compute_contact_atom.rst | 3 -- doc/src/compute_rattlers.rst | 65 +++++++++++++------------- doc/src/fix_nonaffine_displacement.rst | 10 ++-- 3 files changed, 36 insertions(+), 42 deletions(-) diff --git a/doc/src/compute_contact_atom.rst b/doc/src/compute_contact_atom.rst index 384ede290fd..b7ed062ff67 100644 --- a/doc/src/compute_contact_atom.rst +++ b/doc/src/compute_contact_atom.rst @@ -69,6 +69,3 @@ Default """"""" *group2-ID* = all - - -none diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index c26f2b4252a..a4ae2d3d161 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -1,6 +1,6 @@ -.. index:: compute contact/atom +.. index:: compute rattlers -compute contact/atom command +compute rattlers command ============================ Syntax @@ -8,67 +8,68 @@ Syntax .. parsed-literal:: - compute ID group-ID contact/atom group2-ID + compute ID group-ID rattlers cutoff zmin ntries * ID, group-ID are documented in :doc:`compute ` command -* contact/atom = style name of this compute command -* group2-ID = optional argument select group-ID to restrict which atoms to consider for contacts (see below) +* rattlers = style name of this compute command +* cutoff = *type* or *radius* + + .. parsed-literal:: + + *type* = cutoffs determined based on atom types + *radius* = cutoffs determined based on atom diameters (atom style sphere) + +* zmin = minimum coordination for a non-rattler particle +* ntries = maximum number of interations to remove rattlers Examples """""""" .. code-block:: LAMMPS - compute 1 all contact/atom - compute 1 all contact/atom mygroup + compute 1 all rattlers type 4 10 Description """"""""""" -Define a computation that calculates the number of contacts -for each atom in a group. - -The contact number is defined for finite-size spherical particles as -the number of neighbor atoms which overlap the central particle, -meaning that their distance of separation is less than or equal to the -sum of the radii of the two particles. - -The value of the contact number will be 0.0 for atoms not in the -specified compute group. - -The optional *group2-ID* argument allows to specify from which group atoms -contribute to the coordination number. Default setting is group 'all'. +Define a compute that identifies rattlers in a system. Rattlers are +identified using an interative approach. The coordination number of +all atoms is first calculated. The *type* and *radius* settings are +used to select whether interactions cutoffs are determined by atom +types or by the sum of atomic radii (atom style sphere), respectively. +Rattlers are then identified as particles with a coordination number +less than *zmin* and are removed from consideration. A coordination +number is then recalaculated, excluding previously identified rattlers, +to identify new rattlers. This process is looped, up to a maximum +of *ntries*, until no new rattlers are identified and the remaining +atoms form a stable network of contacts. Output info """"""""""" -This compute calculates a per-atom vector, whose values can be -accessed by any command that uses per-atom values from a compute as -input. See the :doc:`Howto output ` page for an +This compute calculates a per-atom vector and a global scalar. The vector +designates which atoms are rattlers, indicated by a value 1. Non-rattlers +have a value of 0. The global scalar returns the total number of rattlers +in the system. See the :doc:`Howto output ` page for an overview of LAMMPS output options. -The per-atom vector values will be a number >= 0.0, as explained -above. - Restrictions """""""""""" -This compute is part of the GRANULAR package. It is only enabled if +This compute is part of the EXTRA-COMPUTE package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -This compute requires that atoms store a radius as defined by the -:doc:`atom_style sphere ` command. +The *radius* cutoff option requires that atoms store a radius as defined by the +:doc:`atom_style sphere ` or similar commands. Related commands """""""""""""""" :doc:`compute coord/atom ` +:doc:`compute contact/atom ` Default """"""" -*group2-ID* = all - - none diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 7b0f7669ed4..51084c95019 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -1,18 +1,14 @@ -.. index:: fix gravity -.. index:: fix gravity/omp -.. index:: fix gravity/kk +.. index:: fix nonaffine/displacement -fix gravity command +fix nonaffine/displacement command =================== -Accelerator Variants: *gravity/omp*, *gravity/kk* - Syntax """""" .. parsed-literal:: - fix ID group gravity magnitude style args + fix ID group nonaffine/displacement style args reference/style args * ID, group are documented in :doc:`fix ` command * gravity = style name of this fix command From ca636ffa7d44de7f218c2c439ed3133c861aaccc Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 16 Jun 2023 16:28:48 -0600 Subject: [PATCH 039/300] Adding d2min doc --- doc/src/fix_nonaffine_displacement.rst | 161 +++++++++++-------------- src/GRANULAR/compute_fabric.cpp | 4 + src/compute_rattlers.cpp | 4 + src/fix_nonaffine_displacement.cpp | 29 +++-- 4 files changed, 97 insertions(+), 101 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 51084c95019..fc3a51b1b62 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -8,129 +8,114 @@ Syntax .. parsed-literal:: - fix ID group nonaffine/displacement style args reference/style args + fix ID group nonaffine/displacement style args reference/style nstep * ID, group are documented in :doc:`fix ` command -* gravity = style name of this fix command -* magnitude = size of acceleration (force/mass units) -* magnitude can be a variable (see below) -* style = *chute* or *spherical* or *gradient* or *vector* +* nonaffine/displacement = style name of this fix command +* nevery = calculate nonaffine displacement every this many timesteps +* style = *d2min* or *integrated* .. parsed-literal:: - *chute* args = angle - angle = angle in +x away from -z or -y axis in 3d/2d (in degrees) - angle can be a variable (see below) - *spherical* args = phi theta - phi = azimuthal angle from +x axis (in degrees) - theta = angle from +z or +y axis in 3d/2d (in degrees) - phi or theta can be a variable (see below) - *vector* args = x y z - x y z = vector direction to apply the acceleration - x or y or z can be a variable (see below) + *d2min* args = cutoff args + cutoff = *type* or *radius* or *custom* + *type* args = none, cutoffs determined by atom types + *radius* args = none, cutoffs determined based on atom diameters (atom style sphere) + *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* + *integrated* args = none + +* reference/style = *fixed* or *update* or *offset* + + .. parsed-literal:: + + *fixed* = use a fixed reference frame at *nstep* + *update* = update the reference frame every *nstep* timesteps + *offset* = update the reference frame *nstep* timesteps before calculating the non/affine displacement Examples """""""" .. code-block:: LAMMPS - fix 1 all gravity 1.0 chute 24.0 - fix 1 all gravity v_increase chute 24.0 - fix 1 all gravity 1.0 spherical 0.0 -180.0 - fix 1 all gravity 10.0 spherical v_phi v_theta - fix 1 all gravity 100.0 vector 1 1 0 + fix 1 all nonaffine/displacement 100 integrated update 100 + fix 1 all nonaffine/displacement 1000 d2min type fixed 0 + fix 1 all nonaffine/displacement 1000 d2min custom 2.0 offset 100 Description """"""""""" -Impose an additional acceleration on each particle in the group. This -fix is typically used with granular systems to include a "gravity" -term acting on the macroscopic particles. More generally, it can -represent any kind of driving field, e.g. a pressure gradient inducing -a Poiseuille flow in a fluid. Note that this fix operates differently -than the :doc:`fix addforce ` command. The addforce fix -adds the same force to each atom, independent of its mass. This -command imparts the same acceleration to each atom (force/mass). - -The *magnitude* of the acceleration is specified in force/mass units. -For granular systems (LJ units) this is typically 1.0. See the -:doc:`units ` command for details. - -Style *chute* is typically used for simulations of chute flow where -the specified *angle* is the chute angle, with flow occurring in the +x -direction. For 3d systems, the tilt is away from the z axis; for 2d -systems, the tilt is away from the y axis. - -Style *spherical* allows an arbitrary 3d direction to be specified for -the acceleration vector. *Phi* and *theta* are defined in the usual -spherical coordinates. Thus for acceleration acting in the -z -direction, *theta* would be 180.0 (or -180.0). *Theta* = 90.0 and -*phi* = -90.0 would mean acceleration acts in the -y direction. For -2d systems, *phi* is ignored and *theta* is an angle in the xy plane -where *theta* = 0.0 is the y-axis. - -Style *vector* imposes an acceleration in the vector direction given -by (x,y,z). Only the direction of the vector is important; it's -length is ignored. For 2d systems, the *z* component is ignored. - -Any of the quantities *magnitude*, *angle*, *phi*, *theta*, *x*, *y*, -*z* which define the gravitational magnitude and direction, can be -specified as an equal-style :doc:`variable `. If the value is -a variable, it should be specified as v_name, where name is the -variable name. In this case, the variable will be evaluated each -timestep, and its value used to determine the quantity. You should -insure that the variable calculates a result in the appropriate units, -e.g. force/mass or degrees. - -Equal-style variables can specify formulas with various mathematical -functions, and include :doc:`thermo_style ` command -keywords for the simulation box parameters and timestep and elapsed -time. Thus it is easy to specify a time-dependent gravitational -field. +This fix computes different metrics of the nonaffine displacement of +particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}` +nonaffine displacement by Falk and Langer in :ref:`(Falk) `. +For each atom, the fix computes the two tensors ----------- +.. math:: + + X = \sum_{\mathrm{neighbors}} \vec{r} \left(\vec{r}_{0} \right)^T + +and + +.. math:: + + Y = \sum_{\mathrm{neighbors}} \vec{r}_0 \left(\vec{r}_{0} \right)^T + +where the neighbors include all other atoms within the distance criterion +set by the cutoff option, discussed below, :math:`\vec{r}` is the current +displacement between particles, and :math:`\vec{r}_0` is the reference +displacement. A deformation gradient tensor is then calculated as +:math:`F = X Y^{-1}` from which -.. include:: accel_styles.rst +.. math:: + + D^2_\mathrm{min} = \sum_{\mathrm{neighbors}} \left| \vec{r} - F \vec{r}_0 \right|^2 + +and a strain tensor is calculated :math:`E = F F^{T} - I` where :math:`I` +is the identity tensor. + +The *integrated* style simply integrates the velocity of particles +every timestep to calculate a displacement. This style only works if +used in conjunction with another fix that deforms the box and displaces +atom positions such as :doc:`the remap x option of fix deform `, +:doc:`fix press/berendsen `, or :doc:`fix nh `. ---------- Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -No information about this fix is written to :doc:`binary restart files `. +The reference state is saved to :doc:`binary restart files `. -The :doc:`fix_modify ` *energy* option is supported by -this fix to add the gravitational potential energy of the system to -the global potential energy of the system as part of -:doc:`thermodynamic output `. The default setting for -this fix is :doc:`fix_modify energy no `. +None of the :doc:`fix_modify ` options are relevant to this +fix. -The :doc:`fix_modify ` *respa* option is supported by this -fix. This allows to set at which level of the :doc:`r-RESPA -` integrator the fix is adding its forces. Default is the -outermost level. +This fix computes a peratom array with 3 columns, which can be accessed +by indices 1-3 using any command that uses per-atom values from a fix +as input. -This fix computes a global scalar which can be accessed by various -:doc:`output commands `. This scalar is the -gravitational potential energy of the particles in the defined field, -namely mass \* (g dot x) for each particles, where x and mass are the -particles position and mass, and g is the gravitational field. The -scalar value calculated by this fix is "extensive". - -No parameter of this fix can be used with the *start/stop* keywords of -the :doc:`run ` command. This fix is not invoked during -:doc:`energy minimization `. +For the *integrated* style, the three columns are the nonaffine +displacements in the x, y, and z directions. For the *d2min* style, +the three columns are the calculated :math:`D^2_\mathrm{min}`, the +volumetric strain, and the deviatoric strain. Restrictions """""""""""" - none + +This compute is part of the EXTRA-FIX package. It is only enabled if +LAMMPS was built with that package. See the +:doc:`Build package ` page for more info. Related commands """""""""""""""" -:doc:`atom_style sphere `, :doc:`fix addforce ` +none Default """"""" none + +---------- + +.. _nh-Martyna: + +**(Martyna)** Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). \ No newline at end of file diff --git a/src/GRANULAR/compute_fabric.cpp b/src/GRANULAR/compute_fabric.cpp index fb95a8b446c..adaf242c926 100644 --- a/src/GRANULAR/compute_fabric.cpp +++ b/src/GRANULAR/compute_fabric.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "compute_fabric.h" #include "atom.h" diff --git a/src/compute_rattlers.cpp b/src/compute_rattlers.cpp index 5a6d2b022db..e7e99a74715 100755 --- a/src/compute_rattlers.cpp +++ b/src/compute_rattlers.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "compute_rattlers.h" #include "atom.h" diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index e5c5eba4e2d..425800fb453 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -12,6 +12,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) +------------------------------------------------------------------------- */ + #include "fix_nonaffine_displacement.h" #include "atom.h" @@ -63,31 +67,30 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * { if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); - int iarg = 3; + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); + + int iarg = 4; if (strcmp(arg[iarg], "integrated") == 0) { nad_style = INTEGRATED; nevery = 1; iarg += 1; } else if (strcmp(arg[iarg], "d2min") == 0) { - if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); - + if (iarg + 1 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); nad_style = D2MIN; - nevery = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); - - if (strcmp(arg[iarg + 2], "type") == 0) { + if (strcmp(arg[iarg + 1], "type") == 0) { cut_style = TYPE; - } else if (strcmp(arg[iarg + 2], "radius") == 0) { + } else if (strcmp(arg[iarg + 1], "radius") == 0) { cut_style = RADIUS; - } else if (strcmp(arg[iarg + 2], "custom") == 0) { - if (iarg + 3 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); + } else if (strcmp(arg[iarg + 1], "custom") == 0) { + if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); cut_style = CUSTOM; - cutoff_custom = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + cutoff_custom = utils::numeric(FLERR, arg[iarg + 2], false, lmp); cutsq_custom = cutoff_custom * cutoff_custom; if (cutoff_custom <= 0) - error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 3]); + error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 2]); iarg += 1; - } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 2]); + } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 1]); iarg += 3; } From 2a432bdaf1957df008e548f18744c787ee8ffe71 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Fri, 16 Jun 2023 16:32:15 -0600 Subject: [PATCH 040/300] Clarifying output as sqrt --- doc/src/fix_nonaffine_displacement.rst | 4 ++-- src/fix_nonaffine_displacement.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index fc3a51b1b62..892a33bb642 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -21,7 +21,7 @@ Syntax cutoff = *type* or *radius* or *custom* *type* args = none, cutoffs determined by atom types *radius* args = none, cutoffs determined based on atom diameters (atom style sphere) - *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* + *custom* args = *rmax*, cutoff set by a constant numeric value *rmax* (distance units) *integrated* args = none * reference/style = *fixed* or *update* or *offset* @@ -94,7 +94,7 @@ as input. For the *integrated* style, the three columns are the nonaffine displacements in the x, y, and z directions. For the *d2min* style, -the three columns are the calculated :math:`D^2_\mathrm{min}`, the +the three columns are the calculated :math:`\sqrt{D^2_\mathrm{min}}`, the volumetric strain, and the deviatoric strain. Restrictions diff --git a/src/fix_nonaffine_displacement.cpp b/src/fix_nonaffine_displacement.cpp index 425800fb453..24f7b2e70bf 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/fix_nonaffine_displacement.cpp @@ -559,6 +559,7 @@ void FixNonaffineDisplacement::calculate_D2Min() array_atom[i][0] /= norm[i]; else array_atom[i][0] = 0.0; + array_atom[i][0] = sqrt(array_atom[i][0]); for (j = 0; j < 3; j++) for (k = 0; k < 3; k++) From 42c843ff4f783069d409404be42fa89c43f60ccc Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:24:24 +0300 Subject: [PATCH 041/300] remove iostream from bond_gaussian.cpp --- src/EXTRA-MOLECULE/bond_gaussian.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_gaussian.cpp b/src/EXTRA-MOLECULE/bond_gaussian.cpp index 816ab515161..9a8546e2786 100644 --- a/src/EXTRA-MOLECULE/bond_gaussian.cpp +++ b/src/EXTRA-MOLECULE/bond_gaussian.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ #include "bond_gaussian.h" -#include + #include "atom.h" #include "comm.h" #include "error.h" From 4e17cc551e93faf1433bb002bfbde9838684c2eb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:25:35 +0300 Subject: [PATCH 042/300] inlcude born_matrix() definition in in angle_quartic.h --- src/EXTRA-MOLECULE/angle_quartic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_quartic.h b/src/EXTRA-MOLECULE/angle_quartic.h index 3f0396f27bb..7de51b24d1f 100644 --- a/src/EXTRA-MOLECULE/angle_quartic.h +++ b/src/EXTRA-MOLECULE/angle_quartic.h @@ -35,6 +35,7 @@ class AngleQuartic : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *k2, *k3, *k4, *theta0; From eb8512ba2a988b9baea384fe96aa935c28e6005a Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:26:48 +0300 Subject: [PATCH 043/300] implementation of born_matrix() for angle_quartic.cpp --- src/EXTRA-MOLECULE/angle_quartic.cpp | 41 +++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/angle_quartic.cpp b/src/EXTRA-MOLECULE/angle_quartic.cpp index f28e209a77a..eaccdbe6083 100644 --- a/src/EXTRA-MOLECULE/angle_quartic.cpp +++ b/src/EXTRA-MOLECULE/angle_quartic.cpp @@ -37,7 +37,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -AngleQuartic::AngleQuartic(LAMMPS *lmp) : Angle(lmp) {} +AngleQuartic::AngleQuartic(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -286,3 +289,39 @@ double AngleQuartic::single(int type, int i1, int i2, int i3) double dtheta4 = dtheta3 * dtheta; return k2[type] * dtheta2 + k3[type] * dtheta3 + k4[type] * dtheta4; } + +/* ---------------------------------------------------------------------- */ + +void AngleQuartic::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + + double dtheta = theta - theta0[type]; + double dtheta2 = dtheta * dtheta; + double dtheta3 = dtheta2 * dtheta; + + du = -(2.0 * k2[type] * dtheta + 3.0 * k3[type] * dtheta2 + 4.0 * k4[type] * dtheta3) / s; + du2 = (2.0 * k2[type] + 6.0 * k3[type] * dtheta + 12.0 * k4[type] * dtheta2) / (s*s) - + (2.0 * k2[type] * dtheta + 3.0 * k3[type] * dtheta2 + 4.0 * k4[type] * dtheta3) * c / (s*s*s); +} From 365f4bc55945506de57e44dc0c6ec7102fa2d000 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Sun, 18 Jun 2023 18:44:28 +0300 Subject: [PATCH 044/300] non-zero born_matrix_enable flag in angle_fourier.cpp --- src/EXTRA-MOLECULE/angle_fourier.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_fourier.cpp b/src/EXTRA-MOLECULE/angle_fourier.cpp index 549da0c1965..c7eb3d4fe48 100644 --- a/src/EXTRA-MOLECULE/angle_fourier.cpp +++ b/src/EXTRA-MOLECULE/angle_fourier.cpp @@ -39,6 +39,7 @@ using namespace MathConst; AngleFourier::AngleFourier(LAMMPS *lmp) : Angle(lmp) { + born_matrix_enable = 1; k = nullptr; C0 = nullptr; C1 = nullptr; From 2f227614615219d13538481646563c2a8111f251 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 16:38:34 +0300 Subject: [PATCH 045/300] born_matrix() method in bond_mm3.h --- src/YAFF/bond_mm3.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/YAFF/bond_mm3.h b/src/YAFF/bond_mm3.h index 302c4052d02..ea89ac826d0 100644 --- a/src/YAFF/bond_mm3.h +++ b/src/YAFF/bond_mm3.h @@ -35,6 +35,7 @@ class BondMM3 : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: double *r0, *k2; From bfc969d5c5ee4da4e9062bffe7f96d55ffb318ab Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 16:39:49 +0300 Subject: [PATCH 046/300] implementation of born_matrix in bond_mm3.cpp --- src/YAFF/bond_mm3.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/YAFF/bond_mm3.cpp b/src/YAFF/bond_mm3.cpp index a5ef6fb8bc8..31ce2dad3e9 100644 --- a/src/YAFF/bond_mm3.cpp +++ b/src/YAFF/bond_mm3.cpp @@ -31,7 +31,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -BondMM3::BondMM3(LAMMPS *lmp) : Bond(lmp) {} +BondMM3::BondMM3(LAMMPS *lmp) : Bond(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -219,3 +222,19 @@ double BondMM3::single(int type, double rsq, else fforce = 0.0; return k2[type]*dr2*(1.0+K3*dr+K4*dr2); } + +/* ---------------------------------------------------------------------- */ + +void BondMM3::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + double r = sqrt(rsq); + double dr = r - r0[type]; + double dr2 = dr * dr; + double dr3 = dr2 * dr; + + double K3 = -2.55 * k2[type] /force->angstrom; + double K4 = 7.0 * k2[type] * 2.55 * 2.55 / (12.0 * force->angstrom * force->angstrom); + + du = 2.0 * k2[type] * dr + 3.0 * K3 * dr2 + 4.0 * K4 * dr3; + du2 = 2.0 * k2[type] + 6.0 * K3 * dr + 12.0 * K4 * dr2; +} From 6c9d42b7c363a66fa56739f7d3ba3dbc5a1952c2 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:38:50 +0300 Subject: [PATCH 047/300] Include born_matrix() definition in bond_harmonic_shift_cut.h --- src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h index 752ac010d9b..09d6ab53309 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.h @@ -35,6 +35,7 @@ class BondHarmonicShiftCut : public Bond { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, double, int, int, double &) override; + void born_matrix(int, double, int, int, double &, double &) override; protected: double *k, *r0, *r1; From f6b259b1866d9d5316d6464eae7d551fea9fc760 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:40:11 +0300 Subject: [PATCH 048/300] Implementing born_matrix in bond_harmonic_shift_cut.cpp --- .../bond_harmonic_shift_cut.cpp | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp index fedcb95ee88..ebcfdb0258c 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift_cut.cpp @@ -31,7 +31,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -BondHarmonicShiftCut::BondHarmonicShiftCut(LAMMPS *lmp) : Bond(lmp) {} +BondHarmonicShiftCut::BondHarmonicShiftCut(LAMMPS *lmp) : Bond(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -219,3 +222,19 @@ double BondHarmonicShiftCut::single(int type, double rsq, int /*i*/, int /*j*/, fforce = -2.0*k[type]*dr/r; return k[type]*(dr*dr - dr2*dr2); } + +/* ---------------------------------------------------------------------- */ + +void BondHarmonicShiftCut::born_matrix(int type, double rsq, int /*i*/, int /*j*/, double &du, double &du2) +{ + du = 0.0; + du2 = 0.0; + + double r = sqrt(rsq); + if (r>r1[type]) return; + + double dr = r - r0[type]; + + du2 = 2 * k[type]; + if (r > 0.0) du = du2 * dr; +} From ad3752431fe9711ef40f2d53cd28d7ab83153b73 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:42:01 +0300 Subject: [PATCH 049/300] Regular pointer for coord and coordp in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 2b0ffef0f85..1b5b3a911f6 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -49,7 +49,7 @@ class ComputeStressMopProfile : public Compute { int originflag; double origin, delta, offset, invdelta; int nbins; - double **coord, **coordp; + double *coord, *coordp; double **values_local, **values_global; double **bond_local, **bond_global; double **local_contribution; From dc1eb43cf2f15c61c0b44bb872407c4b5091e135 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Mon, 19 Jun 2023 19:47:34 +0300 Subject: [PATCH 050/300] Cleaning coord and coordp vectors in compute_stress_mop_profile.cpp --- .../compute_stress_mop_profile.cpp | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 1f1dc307337..3a85869f3c0 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -258,7 +258,7 @@ void ComputeStressMopProfile::compute_array() MPI_Allreduce(&bond_local[0][0],&bond_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); for (int ibin=0; ibin ((hi-lo) * invdelta + 1.5); //allocate bin arrays - memory->create(coord,nbins,1,"stress/mop/profile:coord"); - memory->create(coordp,nbins,1,"stress/mop/profile:coordp"); + memory->create(coord,nbins,"stress/mop/profile:coord"); + memory->create(coordp,nbins,"stress/mop/profile:coordp"); memory->create(values_local,nbins,nvalues,"stress/mop/profile:values_local"); memory->create(values_global,nbins,nvalues,"stress/mop/profile:values_global"); memory->create(bond_local,nbins,nvalues,"stress/mop/profile:bond_local"); @@ -652,11 +652,11 @@ void ComputeStressMopProfile::setup_bins() // set bin coordinates for (i = 0; i < nbins; i++) { - coord[i][0] = offset + i*delta; - if (coord[i][0] < (domain->boxlo[dir]+domain->prd_half[dir])) { - coordp[i][0] = coord[i][0] + domain->prd[dir]; + coord[i] = offset + i*delta; + if (coord[i] < (domain->boxlo[dir]+domain->prd_half[dir])) { + coordp[i] = coord[i] + domain->prd[dir]; } else { - coordp[i][0] = coord[i][0] - domain->prd[dir]; + coordp[i] = coord[i] - domain->prd[dir]; } } } From 2631a159affeedef3dd2eeaaa1c3ca0529396b97 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 15:41:09 +0300 Subject: [PATCH 051/300] define born_matrix in angle_mm3.h --- src/YAFF/angle_mm3.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/YAFF/angle_mm3.h b/src/YAFF/angle_mm3.h index 95009a9cf64..22f5bd746cd 100644 --- a/src/YAFF/angle_mm3.h +++ b/src/YAFF/angle_mm3.h @@ -35,6 +35,7 @@ class AngleMM3 : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *theta0, *k2; From bb2d691e7863e5b4746da6fd8f6a951581cbde51 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 15:42:47 +0300 Subject: [PATCH 052/300] implement born_matrix in angle_mm3.cpp --- src/YAFF/angle_mm3.cpp | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/YAFF/angle_mm3.cpp b/src/YAFF/angle_mm3.cpp index c75a0d83084..af199f6fe98 100644 --- a/src/YAFF/angle_mm3.cpp +++ b/src/YAFF/angle_mm3.cpp @@ -36,7 +36,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -AngleMM3::AngleMM3(LAMMPS *lmp) : Angle(lmp) {} +AngleMM3::AngleMM3(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -284,3 +287,43 @@ double AngleMM3::single(int type, int i1, int i2, int i3) return energy; } + +/* ---------------------------------------------------------------------- */ + +void AngleMM3::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + double dtheta = theta - theta0[type]; + double dtheta2 = dtheta*dtheta; + double dtheta3 = dtheta2*dtheta; + double dtheta4 = dtheta3*dtheta; + double dtheta5 = dtheta4*dtheta; + double df = 2.0 * dtheta - 2.406423 * dtheta2 + 0.735348 * dtheta3 - 0.65832 * dtheta4 + 1.42254 * dtheta5; + double d2f = 2.0 - 4.812846 * dtheta + 2.206044 * dtheta2 - 2.63328 * dtheta3 + 7.1127 * dtheta4; + + du = -k2[type] * df / s; + du2 = k2[type] * (d2f - df * c / s) / (s * s) ; +} From 345a834c7e0693770e37a13005118ad29e19ff7b Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 16:20:57 +0300 Subject: [PATCH 053/300] Include definition of born_matrix() in angle_cosine_periodic.h --- src/EXTRA-MOLECULE/angle_cosine_periodic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/angle_cosine_periodic.h b/src/EXTRA-MOLECULE/angle_cosine_periodic.h index 4e584b4543e..f04ed047841 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_periodic.h +++ b/src/EXTRA-MOLECULE/angle_cosine_periodic.h @@ -35,6 +35,7 @@ class AngleCosinePeriodic : public Angle { void read_restart(FILE *) override; void write_data(FILE *) override; double single(int, int, int, int) override; + void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override; protected: double *k; From 7f3a930d8923a13fb14c02e85d56edb703b1c2cd Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 20 Jun 2023 16:21:57 +0300 Subject: [PATCH 054/300] Implement born_matrix() in angle_cosine_periodic.cpp --- src/EXTRA-MOLECULE/angle_cosine_periodic.cpp | 40 +++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp index 15d0575f6d4..34a8e9d8e53 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_periodic.cpp @@ -38,7 +38,10 @@ using namespace MathSpecial; /* ---------------------------------------------------------------------- */ -AngleCosinePeriodic::AngleCosinePeriodic(LAMMPS *lmp) : Angle(lmp) {} +AngleCosinePeriodic::AngleCosinePeriodic(LAMMPS *lmp) : Angle(lmp) +{ + born_matrix_enable = 1; +} /* ---------------------------------------------------------------------- */ @@ -298,3 +301,38 @@ double AngleCosinePeriodic::single(int type, int i1, int i2, int i3) c = cos(acos(c)*multiplicity[type]); return 2.0*k[type]*(1.0-b[type]*powsign(multiplicity[type])*c); } + +/* ---------------------------------------------------------------------- */ + +void AngleCosinePeriodic::born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) +{ + double **x = atom->x; + + double delx1 = x[i1][0] - x[i2][0]; + double dely1 = x[i1][1] - x[i2][1]; + double delz1 = x[i1][2] - x[i2][2]; + domain->minimum_image(delx1,dely1,delz1); + double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + + double delx2 = x[i3][0] - x[i2][0]; + double dely2 = x[i3][1] - x[i2][1]; + double delz2 = x[i3][2] - x[i2][2]; + domain->minimum_image(delx2,dely2,delz2); + double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + + double c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + double theta = acos(c); + + double s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + double m_angle = multiplicity[type] * theta; + double prefactor = -2.0 * k[type] * b[type] * powsign(multiplicity[type]) * multiplicity[type]; + + du = prefactor * sin(m_angle) / s; + du2 = prefactor * (c * sin(m_angle) - s * cos(m_angle) * multiplicity[type]) / (s * s * s); +} From fb31ffe17cbff6854bc60870a8be54258df7ed07 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 21 Jun 2023 10:56:53 +0300 Subject: [PATCH 055/300] Definition of born_matrix() in dihedral_helix.h --- src/EXTRA-MOLECULE/dihedral_helix.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/dihedral_helix.h b/src/EXTRA-MOLECULE/dihedral_helix.h index 436895c5c33..172a8c3469a 100644 --- a/src/EXTRA-MOLECULE/dihedral_helix.h +++ b/src/EXTRA-MOLECULE/dihedral_helix.h @@ -33,6 +33,7 @@ class DihedralHelix : public Dihedral { void write_restart(FILE *) override; void read_restart(FILE *) override; void write_data(FILE *) override; + void born_matrix(int, int, int, int, int, double &, double &) override; protected: double *aphi, *bphi, *cphi; From 7ab9da0212f1f3601f7238fe2997f9313d8cc923 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 21 Jun 2023 10:59:13 +0300 Subject: [PATCH 056/300] Implementation of born_matrix in dihedral_helix.cpp --- src/EXTRA-MOLECULE/dihedral_helix.cpp | 106 ++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/src/EXTRA-MOLECULE/dihedral_helix.cpp b/src/EXTRA-MOLECULE/dihedral_helix.cpp index 059bef74a48..1d99de6ba90 100644 --- a/src/EXTRA-MOLECULE/dihedral_helix.cpp +++ b/src/EXTRA-MOLECULE/dihedral_helix.cpp @@ -41,6 +41,7 @@ using namespace MathConst; DihedralHelix::DihedralHelix(LAMMPS *lmp) : Dihedral(lmp) { writedata = 1; + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -324,3 +325,108 @@ void DihedralHelix::write_data(FILE *fp) for (int i = 1; i <= atom->ndihedraltypes; i++) fprintf(fp,"%d %g %g %g\n",i,aphi[i],bphi[i],cphi[i]); } + +/* ----------------------------------------------------------------------*/ + +void DihedralHelix::born_matrix(int nd, int i1, int i2, int i3, int i4, + double &du, double &du2) +{ + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double sb1,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s12,c; + double cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + int **dihedrallist = neighbor->dihedrallist; + double **x = atom->x; + + int type = dihedrallist[nd][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + phi = acos(c); + if (dx > 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + du = -aphi[type] + 3.0*bphi[type]*sin(3.0*phi)*siinv + + cphi[type]*sin(phi + MY_PI4)*siinv; + du2 = -(9.0*bphi[type]*cos(3.0*phi) + cphi[type]*cos(phi + MY_PI4))*siinv*siinv + + (3.0*bphi[type]*sin(3.0*phi) + cphi[type]*sin(phi + MY_PI4))*c*siinv*siinv*siinv; +} From ae96c9bd47e52d3c3066b40914b8e27ab6b042eb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 22 Jun 2023 16:58:00 +0300 Subject: [PATCH 057/300] Define born_matrix() in dihedral_quadratic.h --- src/EXTRA-MOLECULE/dihedral_quadratic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-MOLECULE/dihedral_quadratic.h b/src/EXTRA-MOLECULE/dihedral_quadratic.h index 90d8c3be6e2..89f6fa3b250 100644 --- a/src/EXTRA-MOLECULE/dihedral_quadratic.h +++ b/src/EXTRA-MOLECULE/dihedral_quadratic.h @@ -33,6 +33,7 @@ class DihedralQuadratic : public Dihedral { void write_restart(FILE *) override; void read_restart(FILE *) override; void write_data(FILE *) override; + void born_matrix(int, int, int, int, int, double &, double &) override; protected: double *k, *phi0; From 8e1711c8031699756ba3b5d84fa4582ad161a357 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 22 Jun 2023 17:00:10 +0300 Subject: [PATCH 058/300] Implement born_matrix in dihedral_quadratic.cpp --- src/EXTRA-MOLECULE/dihedral_quadratic.cpp | 110 ++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp index cbe9e3e3a28..f576e6efdd9 100644 --- a/src/EXTRA-MOLECULE/dihedral_quadratic.cpp +++ b/src/EXTRA-MOLECULE/dihedral_quadratic.cpp @@ -41,6 +41,7 @@ using namespace MathConst; DihedralQuadratic::DihedralQuadratic(LAMMPS *lmp) : Dihedral(lmp) { writedata = 1; + born_matrix_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -327,3 +328,112 @@ void DihedralQuadratic::write_data(FILE *fp) for (int i = 1; i <= atom->ndihedraltypes; i++) fprintf(fp,"%d %g %g \n",i,k[i],phi0[i]*180.0/MY_PI); } + +/* ----------------------------------------------------------------------*/ + +void DihedralQuadratic::born_matrix(int nd, int i1, int i2, int i3, int i4, + double &du, double &du2) +{ + double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; + double sb1,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2; + double b2mag,b3mag2,b3mag,ctmp,r12c1,c1mag,r12c2; + double c2mag,sc1,sc2,s12,c; + double s1,s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; + + int **dihedrallist = neighbor->dihedrallist; + double **x = atom->x; + + int type = dihedrallist[nd][4]; + + // 1st bond + + vb1x = x[i1][0] - x[i2][0]; + vb1y = x[i1][1] - x[i2][1]; + vb1z = x[i1][2] - x[i2][2]; + + // 2nd bond + + vb2x = x[i3][0] - x[i2][0]; + vb2y = x[i3][1] - x[i2][1]; + vb2z = x[i3][2] - x[i2][2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // 3rd bond + vb3x = x[i4][0] - x[i3][0]; + vb3y = x[i4][1] - x[i3][1]; + vb3z = x[i4][2] - x[i3][2]; + + // c0 calculation + + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + + // 1st and 2nd angle + + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + cx = vb1y*vb2z - vb1z*vb2y; + cy = vb1z*vb2x - vb1x*vb2z; + cz = vb1x*vb2y - vb1y*vb2x; + cmag = sqrt(cx*cx + cy*cy + cz*cz); + dx = (cx*vb3x + cy*vb3y + cz*vb3z)/cmag/b3mag; + + // error check + + if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) + problem(FLERR, i1, i2, i3, i4); + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + phi = acos(c); + if (dx > 0.0) phi *= -1.0; + si = sin(phi); + if (fabs(si) < SMALLER) si = SMALLER; + siinv = 1.0/si; + + double dphi = phi-phi0[type]; + if (dphi > MY_PI) dphi -= 2*MY_PI; + else if (dphi < -MY_PI) dphi += 2*MY_PI; + + du = - 2.0 * k[type] * dphi * siinv; + du2 = 2.0 * k[type] * siinv * siinv * ( 1.0 - dphi * c * siinv) ; +} From 6e32d2932275271ced51152b3c849318c8956601 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 29 Jun 2023 08:53:50 +0300 Subject: [PATCH 059/300] clean up of originflag variable in compute_stress_mop_profile.cpp --- .../compute_stress_mop_profile.cpp | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 3a85869f3c0..d37a941fdea 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -38,7 +38,6 @@ using namespace LAMMPS_NS; enum { X, Y, Z }; -enum { LOWER, CENTER, UPPER, COORD }; enum { TOTAL, CONF, KIN, PAIR, BOND }; // clang-format off @@ -63,11 +62,15 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a // bin parameters - if (strcmp(arg[4],"lower") == 0) originflag = LOWER; - else if (strcmp(arg[4],"center") == 0) originflag = CENTER; - else if (strcmp(arg[4],"upper") == 0) originflag = UPPER; - else originflag = COORD; - if (originflag == COORD) origin = utils::numeric(FLERR,arg[4],false,lmp); + if (strcmp(arg[4],"lower") == 0) { + origin = domain->boxlo[dir]; + } else if (strcmp(arg[4],"center") == 0) { + origin = 0.5 * (domain->boxlo[dir] + domain->boxhi[dir]); + } else if (strcmp(arg[4],"upper") == 0) { + origin = domain->boxhi[dir]; + } else { + origin = utils::numeric(FLERR,arg[4],false,lmp); + } delta = utils::numeric(FLERR,arg[5],false,lmp); invdelta = 1.0/delta; @@ -620,23 +623,14 @@ void ComputeStressMopProfile::setup_bins() boxlo = domain->boxlo; boxhi = domain->boxhi; - if (originflag == LOWER) origin = boxlo[dir]; - else if (originflag == UPPER) origin = boxhi[dir]; - else if (originflag == CENTER) - origin = 0.5 * (boxlo[dir] + boxhi[dir]); - - if (origin < boxlo[dir]) { - error->all(FLERR,"Origin of bins for compute stress/mop/profile is out of bounds" ); - } else { - n = static_cast ((origin - boxlo[dir]) * invdelta); - lo = origin - n*delta; - } - if (origin < boxhi[dir]) { - n = static_cast ((boxhi[dir] - origin) * invdelta); - hi = origin + n*delta; - } else { + if ((origin > domain->boxhi[dir]) || (origin < domain->boxlo[dir])) error->all(FLERR,"Origin of bins for compute stress/mop/profile is out of bounds" ); - } + + n = static_cast ((origin - boxlo[dir]) * invdelta); + lo = origin - n*delta; + + n = static_cast ((boxhi[dir] - origin) * invdelta); + hi = origin + n*delta; offset = lo; nbins = static_cast ((hi-lo) * invdelta + 1.5); From 484e7ad0e3c295514f063e1e7933f3683e93f383 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 29 Jun 2023 08:54:30 +0300 Subject: [PATCH 060/300] clean up of originflag from compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 1b5b3a911f6..5890505d718 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -46,7 +46,6 @@ class ComputeStressMopProfile : public Compute { int bondflag; - int originflag; double origin, delta, offset, invdelta; int nbins; double *coord, *coordp; From 005c15c07b3d4dd445ba276e8f3615852fdb7e71 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 13:26:47 +0300 Subject: [PATCH 061/300] compute kinetic contribution without assuming orthogonal geometry --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index 98e3bf70437..18e6ec61155 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -422,6 +422,11 @@ void ComputeStressMop::compute_pairs() xi[1] = atom->x[i][1]; xi[2] = atom->x[i][2]; + // minimum image of xi with respect to the plane + xi[dir] -= pos; + domain->minimum_image(xi[0], xi[1], xi[2]); + xi[dir] += pos; + //velocities at t vi[0] = atom->v[i][0]; vi[1] = atom->v[i][1]; @@ -447,10 +452,8 @@ void ComputeStressMop::compute_pairs() // at each timestep, must check atoms going through the // image of the plane that is closest to the box - double pos_temp = pos+copysign(1.0,domain->prd_half[dir]-pos)*domain->prd[dir]; - if (fabs(xi[dir]-pos)= 0)) { // sgn = copysign(1.0,vi[dir]-vcm[dir]); sgn = copysign(1.0,vi[dir]); From 94fa2f51c9189874ab84661519f0047cd1f0c9db Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 13:38:56 +0300 Subject: [PATCH 062/300] compute kinetic contribution without assuming orthogonal geometry --- .../compute_stress_mop_profile.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index d37a941fdea..c8793586ea6 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -453,7 +453,22 @@ void ComputeStressMopProfile::compute_pairs() pos = coord[ibin]; pos1 = coordp[ibin]; - if (((xi[dir]-pos)*(xj[dir]-pos)*(xi[dir]-pos1)*(xj[dir]-pos1)<0)) { + // minimum image of xi with respect to the plane + xi[dir] -= pos; + domain->minimum_image(xi[0], xi[1], xi[2]); + xi[dir] += pos; + + // minimum image of xj with respect to xi + xj[0] -= xi[0]; + xj[1] -= xi[1]; + xj[2] -= xi[2]; + domain->minimum_image(xi[0], xi[1], xi[2]); + xj[0] += xi[0]; + xj[1] += xi[1]; + xj[2] += xi[2]; + + double tau = (xi[dir] - pos) / (xi[dir] - xj[dir]); + if ((tau <= 1) && (tau >= 0)) { sgn = copysign(1.0,vi[dir]); From 79ed2d9e8bb1bd5fefbf6fcd24eff5fd2d452381 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:35:25 +0300 Subject: [PATCH 063/300] Definition of compute_angle and related variables in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index 5890505d718..c7214c055cd 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -39,18 +39,20 @@ class ComputeStressMopProfile : public Compute { private: void compute_pairs(); void compute_bonds(); + void compute_angles(); void setup_bins(); int nvalues, dir; int *which; - int bondflag; + int bondflag, angleflag; double origin, delta, offset, invdelta; int nbins; double *coord, *coordp; double **values_local, **values_global; double **bond_local, **bond_global; + double **angle_local, **angle_global; double **local_contribution; double dt, nktv2p, ftm2v; From 9aa9bdd3ba4bd6f59cbe2723bedc46936cf77b62 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:45:53 +0300 Subject: [PATCH 064/300] Implementation of compute_angles in compute_stress_mop_profile.cpp and related adjustments to flags/memory allocations --- .../compute_stress_mop_profile.cpp | 227 +++++++++++++++++- 1 file changed, 221 insertions(+), 6 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index c8793586ea6..dabbbc4781f 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -13,7 +13,7 @@ /*------------------------------------------------------------------------ Contributing Authors : Romain Vermorel (LFCR), Laurent Joly (ULyon) - Support for bonds added by : Evangelos Voyiatzis (NovaMechanics) + Support for bonds and angles added by : Evangelos Voyiatzis (NovaMechanics) --------------------------------------------------------------------------*/ #include "compute_stress_mop_profile.h" @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; enum { X, Y, Z }; -enum { TOTAL, CONF, KIN, PAIR, BOND }; +enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE }; // clang-format off /* ---------------------------------------------------------------------- */ @@ -107,6 +107,11 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a which[nvalues] = BOND; nvalues++; } + } else if (strcmp(arg[iarg],"angle") == 0) { + for (i=0; i<3; i++) { + which[nvalues] = ANGLE; + nvalues++; + } } else error->all(FLERR, "Illegal compute stress/mop/profile command"); //break; iarg++; @@ -131,6 +136,8 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a values_local = values_global = array = nullptr; bond_local = nullptr; bond_global = nullptr; + angle_local = nullptr; + angle_global = nullptr; local_contribution = nullptr; // bin setup @@ -159,6 +166,8 @@ ComputeStressMopProfile::~ComputeStressMopProfile() memory->destroy(values_global); memory->destroy(bond_local); memory->destroy(bond_global); + memory->destroy(angle_local); + memory->destroy(angle_global); memory->destroy(local_contribution); memory->destroy(array); } @@ -206,9 +215,14 @@ void ComputeStressMopProfile::init() if (force->bond) bondflag = 1; - if (force->angle) - if ((strcmp(force->angle_style, "zero") != 0) && (strcmp(force->angle_style, "none") != 0)) - error->all(FLERR,"compute stress/mop/profile does not account for angle potentials"); + if (force->angle) { + if (force->angle->born_matrix_enable == 0) { + if ((strcmp(force->angle_style, "zero") != 0) && (strcmp(force->angle_style, "none") != 0)) + error->all(FLERR,"compute stress/mop/profile does not account for angle potentials"); + } else { + angleflag = 1; + } + } if (force->dihedral) if ((strcmp(force->dihedral_style, "zero") != 0) && (strcmp(force->dihedral_style, "none") != 0)) error->all(FLERR,"compute stress/mop/profile does not account for dihedral potentials"); @@ -260,13 +274,27 @@ void ComputeStressMopProfile::compute_array() // sum bond contribution over all procs MPI_Allreduce(&bond_local[0][0],&bond_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + if (angleflag) { + //Compute angle contribution on separate procs + compute_angles(); + } else { + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + angle_local[m][i] = 0.0; + } + } + } + + // sum angle contribution over all procs + MPI_Allreduce(&angle_local[0][0],&angle_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + for (int ibin=0; ibinx; + tagint *tag = atom->tag; + int *num_angle = atom->num_angle; + tagint **angle_atom1 = atom->angle_atom1; + tagint **angle_atom2 = atom->angle_atom2; + tagint **angle_atom3 = atom->angle_atom3; + int **angle_type = atom->angle_type; + int *mask = atom->mask; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int nlocal = atom->nlocal; + int molecular = atom->molecular; + + // loop over all atoms and their angles + Angle *angle = force->angle; + + double duang, du2ang; + double dx[3] = {0.0, 0.0, 0.0}; + double dx_left[3] = {0.0, 0.0, 0.0}; + double dx_right[3] = {0.0, 0.0, 0.0}; + double x_angle_left[3] = {0.0, 0.0, 0.0}; + double x_angle_middle[3] = {0.0, 0.0, 0.0}; + double x_angle_right[3] = {0.0, 0.0, 0.0}; + double dcos_theta[3] = {0.0, 0.0, 0.0}; + + // initialization + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + angle_local[m][i] = 0.0; + } + local_contribution[m][0] = 0.0; + local_contribution[m][1] = 0.0; + local_contribution[m][2] = 0.0; + } + + + for (atom2 = 0; atom2 < nlocal; atom2++) { + if (!(mask[atom2] & groupbit)) continue; + + if (molecular == 1) + na = num_angle[atom2]; + else { + if (molindex[atom2] < 0) continue; + imol = molindex[atom2]; + iatom = molatom[atom2]; + na = onemols[imol]->num_angle[iatom]; + } + + for (int i = 0; i < na; i++) { + if (molecular == 1) { + if (tag[atom2] != angle_atom2[atom2][i]) continue; + atype = angle_type[atom2][i]; + atom1 = atom->map(angle_atom1[atom2][i]); + atom3 = atom->map(angle_atom3[atom2][i]); + } else { + if (tag[atom2] != onemols[imol]->angle_atom2[atom2][i]) continue; + atype = onemols[imol]->angle_type[atom2][i]; + tagprev = tag[atom2] - iatom - 1; + atom1 = atom->map(onemols[imol]->angle_atom1[atom2][i] + tagprev); + atom3 = atom->map(onemols[imol]->angle_atom3[atom2][i] + tagprev); + } + + if (atom1 < 0 || !(mask[atom1] & groupbit)) continue; + if (atom3 < 0 || !(mask[atom3] & groupbit)) continue; + if (atype <= 0) continue; + + for (int ibin = 0; ibinminimum_image(dx[0], dx[1], dx[2]); + x_angle_left[0] = dx[0]; + x_angle_left[1] = dx[1]; + x_angle_left[2] = dx[2]; + x_angle_left[dir] += pos; + + // minimum image of atom2 with respect to atom1 + dx_left[0] = x[atom2][0] - x_angle_left[0]; + dx_left[1] = x[atom2][1] - x_angle_left[1]; + dx_left[2] = x[atom2][2] - x_angle_left[2]; + domain->minimum_image(dx_left[0], dx_left[1], dx_left[2]); + x_angle_middle[0] = x_angle_left[0] + dx_left[0]; + x_angle_middle[1] = x_angle_left[1] + dx_left[1]; + x_angle_middle[2] = x_angle_left[2] + dx_left[2]; + + // minimum image of atom3 with respect to atom2 + dx_right[0] = x[atom3][0] - x_angle_middle[0]; + dx_right[1] = x[atom3][1] - x_angle_middle[1]; + dx_right[2] = x[atom3][2] - x_angle_middle[2]; + domain->minimum_image(dx_right[0], dx_right[1], dx_right[2]); + x_angle_right[0] = x_angle_middle[0] + dx_right[0]; + x_angle_right[1] = x_angle_middle[1] + dx_right[1]; + x_angle_right[2] = x_angle_middle[2] + dx_right[2]; + + // check if any bond vector crosses the plane of interest + double tau_right = (x_angle_right[dir] - pos) / (x_angle_right[dir] - x_angle_middle[dir]); + double tau_left = (x_angle_middle[dir] - pos) / (x_angle_middle[dir] - x_angle_left[dir]); + bool right_cross = ((tau_right >=0) && (tau_right <= 1)); + bool left_cross = ((tau_left >=0) && (tau_left <= 1)); + + // no bonds crossing the plane + if (!right_cross && !left_cross) continue; + + // compute the cos(theta) of the angle + r1 = sqrt(dx_left[0]*dx_left[0] + dx_left[1]*dx_left[1] + dx_left[2]*dx_left[2]); + r2 = sqrt(dx_right[0]*dx_right[0] + dx_right[1]*dx_right[1] + dx_right[2]*dx_right[2]); + cos_theta = -(dx_right[0]*dx_left[0] + dx_right[1]*dx_left[1] + dx_right[2]*dx_left[2])/(r1*r2); + + if (cos_theta > 1.0) cos_theta = 1.0; + if (cos_theta < -1.0) cos_theta = -1.0; + + // The method returns derivative with regards to cos(theta) + angle->born_matrix(atype, atom1, atom2, atom3, duang, du2ang); + // only right bond crossing the plane + if (right_cross && !left_cross) + { + double sgn = copysign(1.0, x_angle_right[dir] - pos); + dcos_theta[0] = sgn*(dx_right[0]*cos_theta/r2 + dx_left[0]/r1)/r2; + dcos_theta[1] = sgn*(dx_right[1]*cos_theta/r2 + dx_left[1]/r1)/r2; + dcos_theta[2] = sgn*(dx_right[2]*cos_theta/r2 + dx_left[2]/r1)/r2; + } + + // only left bond crossing the plane + if (!right_cross && left_cross) + { + double sgn = copysign(1.0, x_angle_left[dir] - pos); + dcos_theta[0] = -sgn*(dx_left[0]*cos_theta/r1 + dx_right[0]/r2)/r1; + dcos_theta[1] = -sgn*(dx_left[1]*cos_theta/r1 + dx_right[1]/r2)/r1; + dcos_theta[2] = -sgn*(dx_left[2]*cos_theta/r1 + dx_right[2]/r2)/r1; + } + + // both bonds crossing the plane + if (right_cross && left_cross) + { + // due to right bond + double sgn = copysign(1.0, x_angle_middle[dir] - pos); + dcos_theta[0] = -sgn*(dx_right[0]*cos_theta/r2 + dx_left[0]/r1)/r2; + dcos_theta[1] = -sgn*(dx_right[1]*cos_theta/r2 + dx_left[1]/r1)/r2; + dcos_theta[2] = -sgn*(dx_right[2]*cos_theta/r2 + dx_left[2]/r1)/r2; + + // due to left bond + dcos_theta[0] += sgn*(dx_left[0]*cos_theta/r1 + dx_right[0]/r2)/r1; + dcos_theta[1] += sgn*(dx_left[1]*cos_theta/r1 + dx_right[1]/r2)/r1; + dcos_theta[2] += sgn*(dx_left[2]*cos_theta/r1 + dx_right[2]/r2)/r1; + } + + // final contribution of the given angle term + local_contribution[ibin][0] += duang*dcos_theta[0]/area*nktv2p; + local_contribution[ibin][1] += duang*dcos_theta[1]/area*nktv2p; + local_contribution[ibin][2] += duang*dcos_theta[2]/area*nktv2p; + } + } + } + + // loop over the keywords and if necessary add the angle contribution + int m = 0; + while (m < nvalues) { + if (which[m] == CONF || which[m] == TOTAL || which[m] == ANGLE) { + for (int ibin = 0; ibin < nbins; ibin++) { + angle_local[ibin][m] = local_contribution[ibin][0]; + angle_local[ibin][m+1] = local_contribution[ibin][1]; + angle_local[ibin][m+2] = local_contribution[ibin][2]; + } + } + m += 3; + } +} + /* ---------------------------------------------------------------------- setup 1d bins and their extent and coordinates called at init() @@ -657,6 +870,8 @@ void ComputeStressMopProfile::setup_bins() memory->create(values_global,nbins,nvalues,"stress/mop/profile:values_global"); memory->create(bond_local,nbins,nvalues,"stress/mop/profile:bond_local"); memory->create(bond_global,nbins,nvalues,"stress/mop/profile:bond_global"); + memory->create(angle_local,nbins,nvalues,"stress/mop/profile:angle_local"); + memory->create(angle_global,nbins,nvalues,"stress/mop/profile:angle_global"); memory->create(local_contribution,nbins,3,"stress/mop/profile:local_contribution"); // set bin coordinates From 78f4e4f1a15061991a7a0073566df2ed43712715 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:51:41 +0300 Subject: [PATCH 065/300] Update compute_stress_mop.rst --- doc/src/compute_stress_mop.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/src/compute_stress_mop.rst b/doc/src/compute_stress_mop.rst index 21c29635450..70986862fe3 100644 --- a/doc/src/compute_stress_mop.rst +++ b/doc/src/compute_stress_mop.rst @@ -74,9 +74,7 @@ Between one and six keywords can be used to indicate which contributions to the stress must be computed: total stress (total), kinetic stress (kin), configurational stress (conf), stress due to bond stretching (bond), stress due to angle bending (angle) and/or due to pairwise -non-bonded interactions (pair). The angle keyword is currently -available only for the *stress/mop* command and **not** the -*stress/mop/profile* command. +non-bonded interactions (pair). NOTE 1: The configurational stress is computed considering all pairs of atoms where at least one atom belongs to group group-ID. @@ -136,7 +134,7 @@ requires the class method ``Pair::single()`` to be implemented, which is not possible for manybody potentials. In particular, compute *stress/mop/profile* does not work with more than two-body pair interactions, long range (kspace) interactions and -angle/dihedral/improper intramolecular interactions. Similarly, compute +dihedral/improper intramolecular interactions. Similarly, compute *stress/mop* does not work with more than two-body pair interactions, long range (kspace) interactions and dihedral/improper intramolecular interactions but works with all bond interactions with the class method From 9fde61fc4e358e44854cf73f8d5cb230b3bf7e7c Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 5 Jul 2023 16:59:02 +0300 Subject: [PATCH 066/300] Update compute_stress_mop_profile.cpp --- src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index dabbbc4781f..2dee2bf60fc 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -18,6 +18,7 @@ #include "compute_stress_mop_profile.h" +#include "angle.h" #include "atom.h" #include "atom_vec.h" #include "bond.h" From 7fa1f4b3b4e5d8b908526a4246ce540413e93272 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 15 Jul 2023 22:10:19 -0600 Subject: [PATCH 067/300] Various clean ups, moving files --- src/{ => EXTRA-COMPUTE}/compute_rattlers.cpp | 8 +-- src/{ => EXTRA-COMPUTE}/compute_rattlers.h | 0 .../fix_nonaffine_displacement.cpp | 51 ++++++++++--------- .../fix_nonaffine_displacement.h | 0 4 files changed, 30 insertions(+), 29 deletions(-) rename src/{ => EXTRA-COMPUTE}/compute_rattlers.cpp (98%) rename src/{ => EXTRA-COMPUTE}/compute_rattlers.h (100%) rename src/{ => EXTRA-FIX}/fix_nonaffine_displacement.cpp (94%) rename src/{ => EXTRA-FIX}/fix_nonaffine_displacement.h (100%) diff --git a/src/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp similarity index 98% rename from src/compute_rattlers.cpp rename to src/EXTRA-COMPUTE/compute_rattlers.cpp index e7e99a74715..5613afb7071 100755 --- a/src/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers.cpp @@ -113,7 +113,7 @@ void ComputeRattlers::compute_peratom() int i, j, ii, jj, inum, jnum, itype, jtype, tmp_flag; tagint itag, jtag; double xtmp, ytmp, ztmp, delx, dely, delz; - double r, rinv, rsq, radsum; + double rsq, radsum; if (nmax < atom->nmax) { nmax = atom->nmax; @@ -150,8 +150,6 @@ void ComputeRattlers::compute_peratom() int change_flag = 1; int ntry = 0; while (ntry < max_tries) { - // Quit when answer stops evolving - if (change_flag == 0) break; change_flag = 0; for (i = 0; i < nmax; i++) ncontacts[i] = 0; @@ -227,6 +225,7 @@ void ComputeRattlers::compute_peratom() MPI_Allreduce(&change_flag, &tmp_flag, 1, MPI_INT, MPI_MAX, world); change_flag = tmp_flag; + if (change_flag == 0) break; ntry += 1; } @@ -237,7 +236,8 @@ void ComputeRattlers::compute_peratom() /* ---------------------------------------------------------------------- */ -double ComputeRattlers::compute_scalar() { +double ComputeRattlers::compute_scalar() +{ if (invoked_peratom != update->ntimestep) compute_peratom(); diff --git a/src/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers.h similarity index 100% rename from src/compute_rattlers.h rename to src/EXTRA-COMPUTE/compute_rattlers.h diff --git a/src/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp similarity index 94% rename from src/fix_nonaffine_displacement.cpp rename to src/EXTRA-FIX/fix_nonaffine_displacement.cpp index 24f7b2e70bf..f18fdd2c4ae 100755 --- a/src/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -63,7 +63,7 @@ static const char cite_nonaffine_d2min[] = /* ---------------------------------------------------------------------- */ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm (nullptr) + Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm(nullptr) { if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); @@ -91,8 +91,8 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * error->all(FLERR, "Illegal custom cutoff length {}", arg[iarg + 2]); iarg += 1; } else error->all(FLERR,"Illegal cutoff style {} in fix nonaffine/displacement", arg[iarg + 1]); - iarg += 3; - } + iarg += 2; + } else error->all(FLERR,"Illegal nonaffine displacement style {} in fix nonaffine/displacement", arg[iarg]); if (iarg + 2 > narg) error->all(FLERR,"Illegal fix nonaffine/displacement command"); if (strcmp(arg[iarg], "fixed") == 0) { @@ -112,8 +112,9 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * error->all(FLERR, "Illegal offset timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else error->all(FLERR,"Illegal reference style {} in fix nonaffine/displacement", arg[iarg]); - if (cut_style == RADIUS && (!atom->radius_flag)) - error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + if (nad_style == D2MIN) + if (cut_style == RADIUS && (!atom->radius_flag)) + error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); peratom_flag = 1; peratom_freq = nevery; @@ -169,7 +170,7 @@ void FixNonaffineDisplacement::post_constructor() new_fix_id = utils::strdup(id + std::string("_FIX_PA")); modify->add_fix(fmt::format("{} {} property/atom d2_nad 3 ghost {}", new_fix_id, group->names[igroup], ghost_status)); int tmp1, tmp2; - nad_index = atom->find_custom("nad",tmp1,tmp2); + nad_index = atom->find_custom("nad", tmp1, tmp2); if (nad_style == INTEGRATED) { double **nad = atom->darray[nad_index]; @@ -189,35 +190,35 @@ void FixNonaffineDisplacement::init() { dtv = update->dt; - if (!reference_saved && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) + if ((!reference_saved) && (reference_style == FIXED) && (update->ntimestep > reference_timestep)) error->all(FLERR, "Initial timestep exceeds that of the reference state in fix nonaffine/displacement"); if (nad_style == D2MIN) { - if (!force->pair && (cut_style == TYPE)) + if ((!force->pair) && (cut_style == TYPE)) error->all(FLERR,"Fix nonaffine/displacement D2Min option requires a pair style be defined " "or cutoff specified"); - if (cut_style == CUSTOM) { - double skin = neighbor->skin; - mycutneigh = cutoff_custom + skin; - - double cutghost; // as computed by Neighbor and Comm - if (force->pair) - cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); - else - cutghost = comm->cutghostuser; - - if (mycutneigh > cutghost) - error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); - } - // need an occasional half neighbor list if (cut_style == RADIUS) { auto req = neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_OCCASIONAL); } else { auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); - if (cut_style == CUSTOM) req->set_cutoff(mycutneigh); + if (cut_style == CUSTOM) { + double skin = neighbor->skin; + mycutneigh = cutoff_custom + skin; + + double cutghost; // as computed by Neighbor and Comm + if (force->pair) + cutghost = MAX(force->pair->cutforce + skin, comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (mycutneigh > cutghost) + error->all(FLERR,"Fix nonaffine/displacement D2Min option cutoff exceeds ghost atom range - use comm_modify cutoff command"); + + req->set_cutoff(mycutneigh); + } } } } @@ -240,7 +241,7 @@ void FixNonaffineDisplacement::setup(int vflag) void FixNonaffineDisplacement::post_force(int /*vflag*/) { - if (reference_saved && !update->setupflag) { + if (reference_saved && (!update->setupflag)) { if (nad_style == INTEGRATED) { integrate_velocity(); } else { @@ -422,7 +423,7 @@ void FixNonaffineDisplacement::calculate_D2Min() if (rsq > cutsq_custom) continue; } else { radsum = radius[i] + radius[j]; - if (rsq > radsum * radsum) continue; + if (rsq > (radsum * radsum)) continue; } r0[0] = x0[i][0] - x0[j][0]; diff --git a/src/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h similarity index 100% rename from src/fix_nonaffine_displacement.h rename to src/EXTRA-FIX/fix_nonaffine_displacement.h From a80739c537f9711c88900bae784ab1ad8e01b8fc Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 15 Jul 2023 22:12:10 -0600 Subject: [PATCH 068/300] Doc and gitignore updates --- doc/src/compute_rattlers.rst | 10 +++++----- doc/src/fix_nonaffine_displacement.rst | 2 +- src/.gitignore | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index a4ae2d3d161..a0f0d1b54a3 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -20,7 +20,7 @@ Syntax *radius* = cutoffs determined based on atom diameters (atom style sphere) * zmin = minimum coordination for a non-rattler particle -* ntries = maximum number of interations to remove rattlers +* ntries = maximum number of iterations to remove rattlers Examples """""""" @@ -35,12 +35,12 @@ Description Define a compute that identifies rattlers in a system. Rattlers are identified using an interative approach. The coordination number of all atoms is first calculated. The *type* and *radius* settings are -used to select whether interactions cutoffs are determined by atom +used to select whether interaction cutoffs are determined by atom types or by the sum of atomic radii (atom style sphere), respectively. Rattlers are then identified as particles with a coordination number -less than *zmin* and are removed from consideration. A coordination -number is then recalaculated, excluding previously identified rattlers, -to identify new rattlers. This process is looped, up to a maximum +less than *zmin* and are removed from consideration. Atomic coordination +numbers are then recalculated, excluding previously identified rattlers, +to identify a new set of rattlers. This process is iterated, up to a maximum of *ntries*, until no new rattlers are identified and the remaining atoms form a stable network of contacts. diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 892a33bb642..466a7b1ab05 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -30,7 +30,7 @@ Syntax *fixed* = use a fixed reference frame at *nstep* *update* = update the reference frame every *nstep* timesteps - *offset* = update the reference frame *nstep* timesteps before calculating the non/affine displacement + *offset* = update the reference frame *nstep* timesteps before calculating the nonaffine displacement Examples """""""" diff --git a/src/.gitignore b/src/.gitignore index 2cb2fd315b2..006b468c08a 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -598,6 +598,8 @@ /compute_pressure_grem.h /compute_ptm_atom.cpp /compute_ptm_atom.h +/compute_rattlers.cpp +/compute_rattlers.h /compute_rigid_local.cpp /compute_rigid_local.h /compute_smd_triangle_vertices.cpp @@ -889,6 +891,8 @@ /fix_nvt_sllod_eff.h /fix_nve_tri.cpp /fix_nve_tri.h +/fix_nonaffine_displacement.cpp +/fix_nonaffine_displacement.h /fix_oneway.cpp /fix_oneway.h /fix_orient_bcc.cpp From f4000efd8a43e8131a3669e445da62699e253c6e Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 11:52:06 -0600 Subject: [PATCH 069/300] Adding reference section to doc pages, update misc error messages --- doc/src/fix_nonaffine_displacement.rst | 12 +++++++++++- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 8 +++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 466a7b1ab05..99d98b451bc 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -70,7 +70,9 @@ displacement. A deformation gradient tensor is then calculated as D^2_\mathrm{min} = \sum_{\mathrm{neighbors}} \left| \vec{r} - F \vec{r}_0 \right|^2 and a strain tensor is calculated :math:`E = F F^{T} - I` where :math:`I` -is the identity tensor. +is the identity tensor. This calculation is only performed on timesteps that +are a multiple of *nevery* (including timestep zero). Data accessed before +this occurs will simply be zeroed. The *integrated* style simply integrates the velocity of particles every timestep to calculate a displacement. This style only works if @@ -78,6 +80,14 @@ used in conjunction with another fix that deforms the box and displaces atom positions such as :doc:`the remap x option of fix deform `, :doc:`fix press/berendsen `, or :doc:`fix nh `. +Both of these methods require defining a reference state. With the *fixed* reference +style, the user picks a specific timestep *nstep* from which particle positions are saved. +If peratom data is accessed from this compute prior to this timestep, it will simply be +zeroed. The *update* reference style implies the reference state will be updated every +*nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will +update the reference state *nstep* timesteps before a multiple of *nevery* timesteps. + + ---------- Restart, fix_modify, output, run start/stop, minimize info diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index f18fdd2c4ae..bb5c2ca0c37 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -116,6 +116,9 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * if (cut_style == RADIUS && (!atom->radius_flag)) error->all(FLERR, "Fix nonaffine/displacement radius style requires atom attribute radius"); + if (nad_style == INTEGRATED && reference_style == OFFSET) + error->all(FLERR, "Fix nonaffine/displacement cannot use the integrated style with an offset reference state"); + peratom_flag = 1; peratom_freq = nevery; nmax = -1; @@ -347,11 +350,6 @@ void FixNonaffineDisplacement::save_reference_state() void FixNonaffineDisplacement::calculate_D2Min() { - if (!reference_saved) { - error->warning(FLERR, "Calculating D2Min without a saved reference state"); - return; - } - // invoke half neighbor list (will copy or build if necessary) neighbor->build_one(list); From 1ffb2289be15a40757f39855f9d8a0301bbcb04b Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 11:59:50 -0600 Subject: [PATCH 070/300] explicitly zeroing arrays --- doc/src/fix_nonaffine_displacement.rst | 2 +- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 99d98b451bc..85f51b24198 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -81,7 +81,7 @@ atom positions such as :doc:`the remap x option of fix deform `, :doc:`fix press/berendsen `, or :doc:`fix nh `. Both of these methods require defining a reference state. With the *fixed* reference -style, the user picks a specific timestep *nstep* from which particle positions are saved. +style, the user picks a specific timestep *nstep* at which particle positions are saved. If peratom data is accessed from this compute prior to this timestep, it will simply be zeroed. The *update* reference style implies the reference state will be updated every *nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index bb5c2ca0c37..5572aab1bf8 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -180,11 +180,11 @@ void FixNonaffineDisplacement::post_constructor() array_atom = nad; } - if (nad_style == D2MIN) { + if (nad_style == D2MIN) grow_arrays(atom->nmax); - for (int i = 0; i < atom->nlocal; i++) - for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; - } + + for (int i = 0; i < atom->nlocal; i++) + for (int j = 0; j < 3; j++) array_atom[i][j] = 0.0; } /* ---------------------------------------------------------------------- */ From 2d897ac8f3eda1352210721c83d3640e3dff3686 Mon Sep 17 00:00:00 2001 From: Joel Thomas Clemmer Date: Mon, 17 Jul 2023 14:22:22 -0600 Subject: [PATCH 071/300] Fixing doc build errors --- doc/src/Commands_compute.rst | 1 + doc/src/Commands_fix.rst | 1 + doc/src/compute_rattlers.rst | 2 +- doc/src/fix_nonaffine_displacement.rst | 8 ++++---- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 755000c976c..712391c5749 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -114,6 +114,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`property/grid ` * :doc:`property/local ` * :doc:`ptm/atom ` + * :doc:`rattlers ` * :doc:`rdf ` * :doc:`reduce ` * :doc:`reduce/chunk ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 6fe321e3c98..3ab4533c809 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -123,6 +123,7 @@ OPT. * :doc:`mvv/tdpd ` * :doc:`neb ` * :doc:`neb/spin ` + * :doc:`nonaffine/displacement ` * :doc:`nph (ko) ` * :doc:`nph/asphere (o) ` * :doc:`nph/body ` diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index a0f0d1b54a3..f873a65dbff 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -1,7 +1,7 @@ .. index:: compute rattlers compute rattlers command -============================ +======================== Syntax """""" diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 85f51b24198..7764b640666 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -1,7 +1,7 @@ .. index:: fix nonaffine/displacement fix nonaffine/displacement command -=================== +================================== Syntax """""" @@ -77,7 +77,7 @@ this occurs will simply be zeroed. The *integrated* style simply integrates the velocity of particles every timestep to calculate a displacement. This style only works if used in conjunction with another fix that deforms the box and displaces -atom positions such as :doc:`the remap x option of fix deform `, +atom positions such as :doc:`fix deform ` with remap x, :doc:`fix press/berendsen `, or :doc:`fix nh `. Both of these methods require defining a reference state. With the *fixed* reference @@ -126,6 +126,6 @@ none ---------- -.. _nh-Martyna: +.. _d2min-Falk: -**(Martyna)** Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). \ No newline at end of file +**(Falk)** Falk and Langer PRE, 57, 7192 (1998). \ No newline at end of file From e9223fc5af8bb9b0b5dd8fc945c40dfa73417f5c Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 17 Jul 2023 14:34:46 -0600 Subject: [PATCH 072/300] Fixing LAMMPS headers --- src/EXTRA-COMPUTE/compute_rattlers.cpp | 3 ++- src/EXTRA-COMPUTE/compute_rattlers.h | 2 +- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 4 ++-- src/EXTRA-FIX/fix_nonaffine_displacement.h | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp index 5613afb7071..5de246f990f 100755 --- a/src/EXTRA-COMPUTE/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers.cpp @@ -1,7 +1,8 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-COMPUTE/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers.h index 08f8d7e71d2..5ed0cd5882f 100755 --- a/src/EXTRA-COMPUTE/compute_rattlers.h +++ b/src/EXTRA-COMPUTE/compute_rattlers.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index 5572aab1bf8..704ac93382d 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -1,8 +1,8 @@ // clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h index 9a914cf5df7..5bbc3358922 100755 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.h +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains From bb2c286f2728391f8d8e35d45592a54c47f51173 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2023 06:46:10 -0400 Subject: [PATCH 073/300] fix whitespace --- doc/src/fix_nonaffine_displacement.rst | 2 +- src/GRANULAR/gran_sub_mod_normal.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 7764b640666..1936f44bdef 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -128,4 +128,4 @@ none .. _d2min-Falk: -**(Falk)** Falk and Langer PRE, 57, 7192 (1998). \ No newline at end of file +**(Falk)** Falk and Langer PRE, 57, 7192 (1998). diff --git a/src/GRANULAR/gran_sub_mod_normal.h b/src/GRANULAR/gran_sub_mod_normal.h index c1511fdfa5b..6f2f3aabbe4 100644 --- a/src/GRANULAR/gran_sub_mod_normal.h +++ b/src/GRANULAR/gran_sub_mod_normal.h @@ -94,7 +94,7 @@ namespace Granular_NS { void coeffs_to_local() override; void mix_coeffs(double *, double *) override; private: - int mixed_coefficients; + int mixed_coefficients; }; /* ---------------------------------------------------------------------- */ @@ -110,7 +110,7 @@ namespace Granular_NS { protected: double k, cohesion; double F_pulloff, Fne; - int mixed_coefficients; + int mixed_coefficients; }; /* ---------------------------------------------------------------------- */ @@ -129,7 +129,7 @@ namespace Granular_NS { protected: double k, cohesion; double Emix, F_pulloff, Fne; - int mixed_coefficients; + int mixed_coefficients; }; } // namespace Granular_NS From 67f42fa84f723dd6cc08f6269f3ccd0537ff2588 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2023 06:52:21 -0400 Subject: [PATCH 074/300] add version tags, sort out spelling issues --- doc/src/compute.rst | 2 +- doc/src/compute_rattlers.rst | 4 +++- doc/src/fix.rst | 2 +- doc/src/fix_nonaffine_displacement.rst | 2 ++ doc/utils/sphinx-config/false_positives.txt | 4 ++++ 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 5dcef4dd0e8..6667f9c2b42 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -268,7 +268,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`property/grid ` - convert per-grid attributes to per-grid vectors/arrays * :doc:`property/local ` - convert local attributes to local vectors/arrays * :doc:`ptm/atom ` - determines the local lattice structure based on the Polyhedral Template Matching method -* :doc:`rattlers ` - identify undercoordinated rattler atoms +* :doc:`rattlers ` - identify under-coordinated rattler atoms * :doc:`rdf ` - radial distribution function :math:`g(r)` histogram of group of atoms * :doc:`reduce ` - combine per-atom quantities into a single global value * :doc:`reduce/chunk ` - reduce per-atom quantities within each chunk diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst index f873a65dbff..58dba3a126e 100644 --- a/doc/src/compute_rattlers.rst +++ b/doc/src/compute_rattlers.rst @@ -32,8 +32,10 @@ Examples Description """"""""""" +.. versionadded:: TBD + Define a compute that identifies rattlers in a system. Rattlers are -identified using an interative approach. The coordination number of +identified using an interactive approach. The coordination number of all atoms is first calculated. The *type* and *radius* settings are used to select whether interaction cutoffs are determined by atom types or by the sum of atomic radii (atom style sphere), respectively. diff --git a/doc/src/fix.rst b/doc/src/fix.rst index f05c7927c17..23346ccf67c 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -275,7 +275,7 @@ accelerated styles exist. * :doc:`mvv/tdpd ` - constant temperature DPD using the modified velocity-Verlet algorithm * :doc:`neb ` - nudged elastic band (NEB) spring forces * :doc:`neb/spin ` - nudged elastic band (NEB) spring forces for spins -* :doc:`nonaffine/displacement ` - calculate nonaffined displacement of atoms +* :doc:`nonaffine/displacement ` - calculate nonaffine displacement of atoms * :doc:`nph ` - constant NPH time integration via Nose/Hoover * :doc:`nph/asphere ` - NPH for aspherical particles * :doc:`nph/body ` - NPH for body particles diff --git a/doc/src/fix_nonaffine_displacement.rst b/doc/src/fix_nonaffine_displacement.rst index 1936f44bdef..363b0a747a6 100644 --- a/doc/src/fix_nonaffine_displacement.rst +++ b/doc/src/fix_nonaffine_displacement.rst @@ -44,6 +44,8 @@ Examples Description """"""""""" +.. versionadded:: TBD + This fix computes different metrics of the nonaffine displacement of particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}` nonaffine displacement by Falk and Langer in :ref:`(Falk) `. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c7b73c9f140..82901ad6491 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1073,6 +1073,7 @@ facesets factorizable factorizations Fahrenberger +Falk Faken Farago Fasolino @@ -1816,6 +1817,7 @@ Lanczos Lande Landron Landsgesell +Langer langevin Langevin Langston @@ -2491,6 +2493,7 @@ noforce noguess Noid nolib +nonaffine nonequilibrium nongauss nonGaussian @@ -2563,6 +2566,7 @@ nthreads ntimestep Ntptask Ntriples +ntries ntris Ntype ntypes From 9702a7a9d437d1cf59ef5e506fb157c3609b6b4c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2023 06:56:14 -0400 Subject: [PATCH 075/300] don't need to list utils.h as include as it is always included for styles --- src/EXTRA-COMPUTE/compute_rattlers.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp index 5de246f990f..7a3771cdf5e 100755 --- a/src/EXTRA-COMPUTE/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers.cpp @@ -28,7 +28,6 @@ #include "neighbor.h" #include "pair.h" #include "update.h" -#include "utils.h" #include #include From 9ab79c745b631403351de442be523fc1a4cf765c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2023 07:03:02 -0400 Subject: [PATCH 076/300] no executable permissions on source code --- src/EXTRA-COMPUTE/compute_rattlers.cpp | 0 src/EXTRA-COMPUTE/compute_rattlers.h | 0 src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 0 src/EXTRA-FIX/fix_nonaffine_displacement.h | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/EXTRA-COMPUTE/compute_rattlers.cpp mode change 100755 => 100644 src/EXTRA-COMPUTE/compute_rattlers.h mode change 100755 => 100644 src/EXTRA-FIX/fix_nonaffine_displacement.cpp mode change 100755 => 100644 src/EXTRA-FIX/fix_nonaffine_displacement.h diff --git a/src/EXTRA-COMPUTE/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers.cpp old mode 100755 new mode 100644 diff --git a/src/EXTRA-COMPUTE/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers.h old mode 100755 new mode 100644 diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp old mode 100755 new mode 100644 diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h old mode 100755 new mode 100644 From 1b86d647deb2c9082c9fb79dcff98bbf7b395e4d Mon Sep 17 00:00:00 2001 From: James Michael Goff Date: Thu, 24 Aug 2023 17:08:31 -0600 Subject: [PATCH 077/300] cleaned up headers and used PIMPL namespace instead, fixed whitespace, fixed homepage --- src/ML-PACE/compute_pace.cpp | 58 ++++++++++++++++++++++-------------- src/ML-PACE/compute_pace.h | 8 ++--- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 223b8b4b192..f9e5ff8a303 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -2,7 +2,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. This software is distributed under @@ -30,13 +30,25 @@ #include "memory.h" #include "error.h" +namespace LAMMPS_NS { +struct ACECimpl { + ACECimpl() : basis_set(nullptr), ace(nullptr) {} + ~ACECimpl() + { + delete basis_set; + delete ace; + } + ACECTildeBasisSet *basis_set; + ACECTildeEvaluator *ace; +}; +} + using namespace LAMMPS_NS; enum{SCALAR,VECTOR,ARRAY}; ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), - paceall(nullptr), pace_peratom(nullptr), - basis_set(nullptr), ace(nullptr), map(nullptr), cg(nullptr) + paceall(nullptr), pace_peratom(nullptr), map(nullptr), cg(nullptr) { array_flag = 1; extarray = 0; @@ -46,6 +58,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : int ntypes = atom->ntypes; int nargmin = 4; + acecimpl = new ACECimpl; if (narg < nargmin) error->all(FLERR,"Illegal compute pace command"); bikflag = utils::inumeric(FLERR, arg[4], false, lmp); @@ -63,9 +76,10 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : */ //read in file with CG coefficients or c_tilde coefficients - basis_set = new ACECTildeBasisSet(arg[3]); - double cut = basis_set->cutoffmax; - cutmax = basis_set->cutoffmax; + auto potential_file_name = utils::get_potential_file_path(arg[3]); + acecimpl -> basis_set = new ACECTildeBasisSet(potential_file_name); + double cut = acecimpl -> basis_set->cutoffmax; + cutmax = acecimpl -> basis_set->cutoffmax; double cuti; double radelemall = 0.5; /* @@ -87,8 +101,8 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : */ //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; - n_r1 = basis_set->total_basis_size_rank1[0]; - n_rp = basis_set->total_basis_size[0]; + n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; + n_rp = acecimpl -> basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; //int nvalues = ncoeff; @@ -229,10 +243,10 @@ void ComputePACE::compute_array() SPECIES_TYPE *mus; NS_TYPE *ns; LS_TYPE *ls; - + int n_r1, n_rp = 0; - n_r1 = basis_set->total_basis_size_rank1[0]; - n_rp = basis_set->total_basis_size[0]; + n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; + n_rp = acecimpl -> basis_set->total_basis_size[0]; const int inum = list->inum; const int* const ilist = list->ilist; @@ -271,21 +285,21 @@ void ComputePACE::compute_array() const int typeoffset_local = ndims_peratom*nvalues*(itype-1); const int typeoffset_global = nvalues*(itype-1); - ace = new ACECTildeEvaluator(*basis_set); + acecimpl -> ace = new ACECTildeEvaluator(*acecimpl -> basis_set); int n_r1, n_rp = 0; n_r1 = basis_set->total_basis_size_rank1[0]; n_rp = basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - ace->element_type_mapping.init(ntypes+1); + acecimpl -> ace->element_type_mapping.init(ntypes+1); for (int ik = 1; ik <= ntypes; ik++) { for(int mu = 0; mu < basis_set->nelements; mu++){ if (mu != -1) { if (mu == ik - 1) { map[ik] = mu; - ace->element_type_mapping(ik) = mu; + acecimpl -> ace->element_type_mapping(ik) = mu; } - } + } } } @@ -320,18 +334,18 @@ void ComputePACE::compute_array() } // resize the neighbor cache after setting the basis - ace->resize_neighbours_cache(max_jnum); - ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); + acecimpl -> ace->resize_neighbours_cache(max_jnum); + acecimpl -> ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); Array1D Bs =ace->B_all; for (int jj = 0; jj < jnum; jj++) { const int j = jlist[jj]; //replace mapping of jj to j - if (!dgradflag) { + if (!dgradflag) { double *pacedi = pace_peratom[i]+typeoffset_local; double *pacedj = pace_peratom[j]+typeoffset_local; - Array3D fs = ace->neighbours_dB; + Array3D fs = acecimpl -> ace->neighbours_dB; //force array in (func_ind,neighbour_ind,xyz_ind) format // dimension: (n_descriptors,max_jnum,3) //example to access entries for neighbour jj after running compute_atom for atom i: @@ -348,7 +362,7 @@ void ComputePACE::compute_array() } } else { //printf("inside dBi/dRj logical : ncoeff = %d \n", ncoeff); - Array3D fs = ace->neighbours_dB; + Array3D fs = acecimpl -> ace->neighbours_dB; for (int iicoeff = 0; iicoeff < ncoeff; iicoeff++) { // add to pace array for this proc @@ -381,10 +395,10 @@ void ComputePACE::compute_array() pace[irow][k++] += Bs(icoeff); } } - delete ace; + delete acecimpl -> ace; } //group bit } // for ii loop - delete basis_set; + delete acecimpl -> basis_set; // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index 44d92ca2804..266b16c6150 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains @@ -21,9 +21,6 @@ ComputeStyle(pace,ComputePACE); #define LMP_COMPUTE_PACE_H #include "compute.h" -#include "ace-evaluator/ace_c_basis.h" -#include "ace-evaluator/ace_evaluator.h" -#include "ace-evaluator/ace_abstract_basis.h" namespace LAMMPS_NS { @@ -49,13 +46,12 @@ class ComputePACE : public Compute { int nelements, chemflag; int bikflag, bik_rows, dgradflag, dgrad_rows; double *cg; - class ACECTildeEvaluator *ace; - class ACECTildeBasisSet *basis_set; double cutmax; Compute *c_pe; Compute *c_virial; void dbdotr_compute(); + struct ACECimpl *acecimpl; }; } // namespace LAMMPS_NS From db4f55b76fcc6bfb6049e1ba2751eb7994ff73a8 Mon Sep 17 00:00:00 2001 From: James Michael Goff Date: Tue, 19 Sep 2023 17:24:15 -0600 Subject: [PATCH 078/300] compatibility with new lammps-user-pace library and cleanup --- examples/PACKAGES/pace/README.md | 9 ++ examples/PACKAGES/pace/compute/README.md | 0 .../pace/compute}/coupling_coefficients.yace | 0 examples/PACKAGES/pace/compute/in.lammps | 22 +++++ .../pace/compute}/latte_cell_0.data | 0 .../pace/compute}/latte_cell_0.xyz | 0 examples/pace/multi-elem/README.md | 5 - .../pace/multi-elem/latte_cell_0_chi_i.npy | Bin 1424928 -> 0 bytes examples/pace/multi-elem/loop.sh | 8 -- examples/pace/multi-elem/test_en.py | 86 ------------------ src/ML-PACE/compute_pace.cpp | 33 +++---- 11 files changed, 46 insertions(+), 117 deletions(-) create mode 100644 examples/PACKAGES/pace/README.md create mode 100644 examples/PACKAGES/pace/compute/README.md rename examples/{pace/multi-elem => PACKAGES/pace/compute}/coupling_coefficients.yace (100%) create mode 100644 examples/PACKAGES/pace/compute/in.lammps rename examples/{pace/multi-elem => PACKAGES/pace/compute}/latte_cell_0.data (100%) rename examples/{pace/multi-elem => PACKAGES/pace/compute}/latte_cell_0.xyz (100%) delete mode 100644 examples/pace/multi-elem/README.md delete mode 100644 examples/pace/multi-elem/latte_cell_0_chi_i.npy delete mode 100755 examples/pace/multi-elem/loop.sh delete mode 100644 examples/pace/multi-elem/test_en.py diff --git a/examples/PACKAGES/pace/README.md b/examples/PACKAGES/pace/README.md new file mode 100644 index 00000000000..ab2d3a54f55 --- /dev/null +++ b/examples/PACKAGES/pace/README.md @@ -0,0 +1,9 @@ +# This folder contains examples for pace in LAMMPS + + +## Compute pace usage +compute/latte_cell_0.data # lammps data file with C-H-O structure +compute/latte_cell_0.xyz # xyz file with C-H-O structure +compute/coupling_coefficients.yace # .yace file containing coupling coefficients (or ACE potential parameters) +compute/in.lammps # input file for calling `compute pace` + diff --git a/examples/PACKAGES/pace/compute/README.md b/examples/PACKAGES/pace/compute/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/examples/pace/multi-elem/coupling_coefficients.yace b/examples/PACKAGES/pace/compute/coupling_coefficients.yace similarity index 100% rename from examples/pace/multi-elem/coupling_coefficients.yace rename to examples/PACKAGES/pace/compute/coupling_coefficients.yace diff --git a/examples/PACKAGES/pace/compute/in.lammps b/examples/PACKAGES/pace/compute/in.lammps new file mode 100644 index 00000000000..a0ef25f6061 --- /dev/null +++ b/examples/PACKAGES/pace/compute/in.lammps @@ -0,0 +1,22 @@ +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +boundary p p p +read_data latte_cell_0.data +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + + # potential settings + +pair_style zero 5.7 +pair_coeff * * + +compute pace all pace coupling_coefficients.yace 1 0 + +thermo 1 +thermo_style custom step temp c_pace[1][183] + +run 0 diff --git a/examples/pace/multi-elem/latte_cell_0.data b/examples/PACKAGES/pace/compute/latte_cell_0.data similarity index 100% rename from examples/pace/multi-elem/latte_cell_0.data rename to examples/PACKAGES/pace/compute/latte_cell_0.data diff --git a/examples/pace/multi-elem/latte_cell_0.xyz b/examples/PACKAGES/pace/compute/latte_cell_0.xyz similarity index 100% rename from examples/pace/multi-elem/latte_cell_0.xyz rename to examples/PACKAGES/pace/compute/latte_cell_0.xyz diff --git a/examples/pace/multi-elem/README.md b/examples/pace/multi-elem/README.md deleted file mode 100644 index e2ab583d10a..00000000000 --- a/examples/pace/multi-elem/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Check that seg fault doesn't occur by doing: - - ./loop.sh - -which will loop through many runs of `python test_en.py`. diff --git a/examples/pace/multi-elem/latte_cell_0_chi_i.npy b/examples/pace/multi-elem/latte_cell_0_chi_i.npy deleted file mode 100644 index 27f08781454251ec44961a1f4a90ba6fb86797b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424928 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

o|Jmr*db`bVxoqTNcpc^Ec?=Q4ptAJ49Z7Yrx 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

3JoLIkB--U#3^GpX2I9rB7_eTRe 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
+Q^=l9&c^f(N^wG~LD;N)OIwdUv=61wUK0 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 z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu` z00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG0 z1yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`00mG01yBG5Pyhu`;QzlsN4adU z#&d5<#+OOGP2Y(6ub-&A-a?9DpA_vKUvcx(wJNlFlPvEmZs#dw`Rng*4r|aH7U9Q` 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 basis_set; acecimpl -> basis_set = new ACECTildeBasisSet(potential_file_name); double cut = acecimpl -> basis_set->cutoffmax; cutmax = acecimpl -> basis_set->cutoffmax; @@ -138,6 +139,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : ComputePACE::~ComputePACE() { + delete acecimpl; memory->destroy(pace); memory->destroy(paceall); memory->destroy(cutsq); @@ -244,10 +246,6 @@ void ComputePACE::compute_array() NS_TYPE *ns; LS_TYPE *ls; - int n_r1, n_rp = 0; - n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; - n_rp = acecimpl -> basis_set->total_basis_size[0]; - const int inum = list->inum; const int* const ilist = list->ilist; const int* const numneigh = list->numneigh; @@ -285,15 +283,18 @@ void ComputePACE::compute_array() const int typeoffset_local = ndims_peratom*nvalues*(itype-1); const int typeoffset_global = nvalues*(itype-1); + delete acecimpl -> ace; acecimpl -> ace = new ACECTildeEvaluator(*acecimpl -> basis_set); + acecimpl -> ace->compute_projections = 1; + acecimpl -> ace->compute_b_grad = 1; int n_r1, n_rp = 0; - n_r1 = basis_set->total_basis_size_rank1[0]; - n_rp = basis_set->total_basis_size[0]; + n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; + n_rp = acecimpl -> basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; acecimpl -> ace->element_type_mapping.init(ntypes+1); for (int ik = 1; ik <= ntypes; ik++) { - for(int mu = 0; mu < basis_set->nelements; mu++){ + for(int mu = 0; mu < acecimpl -> basis_set ->nelements; mu++){ if (mu != -1) { if (mu == ik - 1) { map[ik] = mu; @@ -336,7 +337,7 @@ void ComputePACE::compute_array() // resize the neighbor cache after setting the basis acecimpl -> ace->resize_neighbours_cache(max_jnum); acecimpl -> ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); - Array1D Bs =ace->B_all; + Array1D Bs = acecimpl -> ace -> projections; for (int jj = 0; jj < jnum; jj++) { const int j = jlist[jj]; @@ -345,14 +346,13 @@ void ComputePACE::compute_array() double *pacedi = pace_peratom[i]+typeoffset_local; double *pacedj = pace_peratom[j]+typeoffset_local; - Array3D fs = acecimpl -> ace->neighbours_dB; //force array in (func_ind,neighbour_ind,xyz_ind) format // dimension: (n_descriptors,max_jnum,3) //example to access entries for neighbour jj after running compute_atom for atom i: for (int func_ind =0; func_ind < n_r1 + n_rp; func_ind++){ - DOUBLE_TYPE fx_dB = fs(func_ind,jj,0); - DOUBLE_TYPE fy_dB = fs(func_ind,jj,1); - DOUBLE_TYPE fz_dB = fs(func_ind,jj,2); + DOUBLE_TYPE fx_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,0); + DOUBLE_TYPE fy_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,1); + DOUBLE_TYPE fz_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,2); pacedi[func_ind] += fx_dB; pacedi[func_ind+yoffset] += fy_dB; pacedi[func_ind+zoffset] += fz_dB; @@ -362,15 +362,14 @@ void ComputePACE::compute_array() } } else { //printf("inside dBi/dRj logical : ncoeff = %d \n", ncoeff); - Array3D fs = acecimpl -> ace->neighbours_dB; for (int iicoeff = 0; iicoeff < ncoeff; iicoeff++) { // add to pace array for this proc //printf("inside dBi/dRj loop\n"); // dBi/dRj - DOUBLE_TYPE fx_dB = fs(iicoeff,jj,0); - DOUBLE_TYPE fy_dB = fs(iicoeff,jj,1); - DOUBLE_TYPE fz_dB = fs(iicoeff,jj,2); + DOUBLE_TYPE fx_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,0); + DOUBLE_TYPE fy_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,1); + DOUBLE_TYPE fz_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,2); pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] -= fx_dB; pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] -= fy_dB; pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] -= fz_dB; @@ -395,10 +394,8 @@ void ComputePACE::compute_array() pace[irow][k++] += Bs(icoeff); } } - delete acecimpl -> ace; } //group bit } // for ii loop - delete acecimpl -> basis_set; // accumulate force contributions to global array if (!dgradflag){ for (int itype = 0; itype < atom->ntypes; itype++) { From c5deb581c28c46778c241772a12412914bc40780 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 21 Sep 2023 22:12:58 +0200 Subject: [PATCH 079/300] Updates to address PR comments --- src/.gitignore | 4 +-- ...rattlers.cpp => compute_rattlers_atom.cpp} | 28 +++++++-------- ...ute_rattlers.h => compute_rattlers_atom.h} | 12 +++---- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 35 ++++++++----------- src/EXTRA-FIX/fix_nonaffine_displacement.h | 5 +-- 5 files changed, 39 insertions(+), 45 deletions(-) rename src/EXTRA-COMPUTE/{compute_rattlers.cpp => compute_rattlers_atom.cpp} (89%) rename src/EXTRA-COMPUTE/{compute_rattlers.h => compute_rattlers_atom.h} (84%) diff --git a/src/.gitignore b/src/.gitignore index a170061ea7e..955e7405115 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -602,8 +602,8 @@ /compute_pressure_grem.h /compute_ptm_atom.cpp /compute_ptm_atom.h -/compute_rattlers.cpp -/compute_rattlers.h +/compute_rattlers_atom.cpp +/compute_rattlers_atom.h /compute_rigid_local.cpp /compute_rigid_local.h /compute_smd_triangle_vertices.cpp diff --git a/src/EXTRA-COMPUTE/compute_rattlers.cpp b/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp similarity index 89% rename from src/EXTRA-COMPUTE/compute_rattlers.cpp rename to src/EXTRA-COMPUTE/compute_rattlers_atom.cpp index 7a3771cdf5e..602923b58a6 100644 --- a/src/EXTRA-COMPUTE/compute_rattlers.cpp +++ b/src/EXTRA-COMPUTE/compute_rattlers_atom.cpp @@ -16,7 +16,7 @@ Contributing authors: Joel Clemmer (SNL), Ishan Srivastava (LBNL) ------------------------------------------------------------------------- */ -#include "compute_rattlers.h" +#include "compute_rattlers_atom.h" #include "atom.h" #include "comm.h" @@ -38,20 +38,20 @@ enum { TYPE, RADIUS }; /* ---------------------------------------------------------------------- */ -ComputeRattlers::ComputeRattlers(LAMMPS *lmp, int narg, char **arg) : +ComputeRattlersAtom::ComputeRattlersAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), ncontacts(nullptr), rattler(nullptr) { - if (narg != 6) error->all(FLERR, "Illegal compute fabric command"); + if (narg != 6) error->all(FLERR, "Illegal compute rattlers/atom command"); if (strcmp(arg[3], "type") == 0) cutstyle = TYPE; else if (strcmp(arg[3], "radius") == 0) cutstyle = RADIUS; else - error->all(FLERR, "Illegal compute fabric command"); + error->all(FLERR, "Illegal compute rattlers/atom command"); if (cutstyle == RADIUS && !atom->radius_flag) - error->all(FLERR, "Compute fabric radius style requires atom attribute radius"); + error->all(FLERR, "Compute rattlers/atom radius style requires atom attribute radius"); ncontacts_rattler = utils::inumeric(FLERR, arg[4], false, lmp); max_tries = utils::inumeric(FLERR, arg[5], false, lmp); @@ -69,7 +69,7 @@ ComputeRattlers::ComputeRattlers(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -ComputeRattlers::~ComputeRattlers() +ComputeRattlersAtom::~ComputeRattlersAtom() { memory->destroy(ncontacts); memory->destroy(rattler); @@ -77,7 +77,7 @@ ComputeRattlers::~ComputeRattlers() /* ---------------------------------------------------------------------- */ -void ComputeRattlers::init() +void ComputeRattlersAtom::init() { if (force->pair == nullptr) error->all(FLERR, "No pair style is defined for compute rattlers"); @@ -98,14 +98,14 @@ void ComputeRattlers::init() /* ---------------------------------------------------------------------- */ -void ComputeRattlers::init_list(int /*id*/, NeighList *ptr) +void ComputeRattlersAtom::init_list(int /*id*/, NeighList *ptr) { list = ptr; } /* ---------------------------------------------------------------------- */ -void ComputeRattlers::compute_peratom() +void ComputeRattlersAtom::compute_peratom() { if (invoked_peratom == update->ntimestep) return; invoked_peratom = update->ntimestep; @@ -236,7 +236,7 @@ void ComputeRattlers::compute_peratom() /* ---------------------------------------------------------------------- */ -double ComputeRattlers::compute_scalar() +double ComputeRattlersAtom::compute_scalar() { if (invoked_peratom != update->ntimestep) compute_peratom(); @@ -257,7 +257,7 @@ double ComputeRattlers::compute_scalar() /* ---------------------------------------------------------------------- */ -int ComputeRattlers::pack_reverse_comm(int n, int first, double *buf) +int ComputeRattlersAtom::pack_reverse_comm(int n, int first, double *buf) { int i, m, last; @@ -271,7 +271,7 @@ int ComputeRattlers::pack_reverse_comm(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -void ComputeRattlers::unpack_reverse_comm(int n, int *list, double *buf) +void ComputeRattlersAtom::unpack_reverse_comm(int n, int *list, double *buf) { int i, j, m; @@ -284,7 +284,7 @@ void ComputeRattlers::unpack_reverse_comm(int n, int *list, double *buf) /* ---------------------------------------------------------------------- */ -int ComputeRattlers::pack_forward_comm(int n, int *list, double *buf, +int ComputeRattlersAtom::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int * /*pbc*/) { int i, j, m; @@ -300,7 +300,7 @@ int ComputeRattlers::pack_forward_comm(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -void ComputeRattlers::unpack_forward_comm(int n, int first, double *buf) +void ComputeRattlersAtom::unpack_forward_comm(int n, int first, double *buf) { int i, m, last; diff --git a/src/EXTRA-COMPUTE/compute_rattlers.h b/src/EXTRA-COMPUTE/compute_rattlers_atom.h similarity index 84% rename from src/EXTRA-COMPUTE/compute_rattlers.h rename to src/EXTRA-COMPUTE/compute_rattlers_atom.h index 5ed0cd5882f..257bae83746 100644 --- a/src/EXTRA-COMPUTE/compute_rattlers.h +++ b/src/EXTRA-COMPUTE/compute_rattlers_atom.h @@ -13,21 +13,21 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(rattlers,ComputeRattlers); +ComputeStyle(rattlers/atom,ComputeRattlersAtom); // clang-format on #else -#ifndef LMP_COMPUTE_RATTLERS_H -#define LMP_COMPUTE_RATTLERS_H +#ifndef LMP_COMPUTE_RATTLERS_ATOM_H +#define LMP_COMPUTE_RATTLERS_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeRattlers : public Compute { +class ComputeRattlersAtom : public Compute { public: - ComputeRattlers(class LAMMPS *, int, char **); - ~ComputeRattlers() override; + ComputeRattlersAtom(class LAMMPS *, int, char **); + ~ComputeRattlersAtom() override; void init() override; void init_list(int, class NeighList *) override; void compute_peratom() override; diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index 704ac93382d..ef5481601f6 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -23,6 +23,7 @@ #include "comm.h" #include "domain.h" #include "error.h" +#include "fix_store_atom.h" #include "force.h" #include "group.h" #include "math_extra.h" @@ -63,7 +64,7 @@ static const char cite_nonaffine_d2min[] = /* ---------------------------------------------------------------------- */ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), new_fix_id(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm(nullptr) + Fix(lmp, narg, arg), id_fix(nullptr), X(nullptr), Y(nullptr), F(nullptr), norm(nullptr) { if (narg < 4) error->all(FLERR,"Illegal fix nonaffine/displacement command"); @@ -140,8 +141,8 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * FixNonaffineDisplacement::~FixNonaffineDisplacement() { - if (new_fix_id && modify->nfix) modify->delete_fix(new_fix_id); - delete[] new_fix_id; + if (id_fix && modify->nfix) modify->delete_fix(id_fix); + delete[] id_fix; if (nad_style == D2MIN) { memory->destroy(X); @@ -167,18 +168,14 @@ void FixNonaffineDisplacement::post_constructor() { // Create persistent peratom storage for either an integrated velocity or reference position // Ghost atoms need reference coordinates for D2min - std::string ghost_status = "no"; - if (nad_style == D2MIN) ghost_status = "yes"; + std::string ghost_status = "0"; + if (nad_style == D2MIN) ghost_status = "1"; - new_fix_id = utils::strdup(id + std::string("_FIX_PA")); - modify->add_fix(fmt::format("{} {} property/atom d2_nad 3 ghost {}", new_fix_id, group->names[igroup], ghost_status)); - int tmp1, tmp2; - nad_index = atom->find_custom("nad", tmp1, tmp2); + id_fix = utils::strdup(id + std::string("_FIX_PA")); + fix = dynamic_cast(modify->add_fix(fmt::format("{} {} STORE/ATOM 3 0 {} 1", id_fix, group->names[igroup], ghost_status))); - if (nad_style == INTEGRATED) { - double **nad = atom->darray[nad_index]; - array_atom = nad; - } + if (nad_style == INTEGRATED) + array_atom = fix->astore; if (nad_style == D2MIN) grow_arrays(atom->nmax); @@ -294,12 +291,11 @@ void FixNonaffineDisplacement::integrate_velocity() int *mask = atom->mask; int nlocal = atom->nlocal; - double **nad = atom->darray[nad_index]; for (int m = 0; m < 3; m++) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - nad[i][m] += dtv * v[i][m]; + array_atom[i][m] += dtv * v[i][m]; } } } @@ -315,18 +311,17 @@ void FixNonaffineDisplacement::save_reference_state() int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; - double **nad = atom->darray[nad_index]; if (nad_style == D2MIN) { for (int m = 0; m < 3; m++) { for (int i = 0; i < nall; i++) { - if (mask[i] & groupbit) nad[i][m] = x[i][m]; + if (mask[i] & groupbit) array_atom[i][m] = x[i][m]; } } } else { for (int m = 0; m < 3; m++) { for (int i = 0; i < nall; i++) { - if (mask[i] & groupbit) nad[i][m] = 0.0; + if (mask[i] & groupbit) array_atom[i][m] = 0.0; } } } @@ -364,7 +359,7 @@ void FixNonaffineDisplacement::calculate_D2Min() int *ilist, *jlist, *numneigh, **firstneigh; double **x = atom->x; - double **x0 = atom->darray[nad_index]; + double **x0 = array_atom; double *radius = atom->radius; tagint *tag = atom->tag; int *type = atom->type; @@ -730,12 +725,10 @@ void FixNonaffineDisplacement::minimum_image0(double *delta) void FixNonaffineDisplacement::grow_arrays(int nmax_new) { nmax = nmax_new; - memory->destroy(array_atom); memory->destroy(X); memory->destroy(Y); memory->destroy(F); memory->destroy(norm); - memory->create(array_atom, nmax, 3, "fix_nonaffine_displacement:array_atom"); memory->create(X, nmax, 3, 3, "fix_nonaffine_displacement:X"); memory->create(Y, nmax, 3, 3, "fix_nonaffine_displacement:Y"); memory->create(F, nmax, 3, 3, "fix_nonaffine_displacement:F"); diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h index 5bbc3358922..0a195dc08eb 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.h +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.h @@ -43,8 +43,9 @@ class FixNonaffineDisplacement : public Fix { private: double dtv; - char *new_fix_id; - int nad_index, nmax, comm_flag; + char *id_fix; + class FixStoreAtom *fix; + int nmax, comm_flag; int nad_style, cut_style; int reference_style, offset_timestep, reference_timestep, update_timestep; int reference_saved; From c22d6a9e4e49a1a632194fafc6df46d1d04ee5d8 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Thu, 21 Sep 2023 22:13:16 +0200 Subject: [PATCH 080/300] update to doc pages --- doc/src/Commands_compute.rst | 2 +- doc/src/compute.rst | 2 +- doc/src/compute_rattlers.rst | 77 -------------------------- doc/src/compute_rattlers_atom.rst | 92 +++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 79 deletions(-) delete mode 100644 doc/src/compute_rattlers.rst create mode 100644 doc/src/compute_rattlers_atom.rst diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 01d3c5c161f..07f5100ea44 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -115,7 +115,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`property/grid ` * :doc:`property/local ` * :doc:`ptm/atom ` - * :doc:`rattlers ` + * :doc:`rattlers/atom ` * :doc:`rdf ` * :doc:`reduce ` * :doc:`reduce/chunk ` diff --git a/doc/src/compute.rst b/doc/src/compute.rst index d63bb1abb14..8471f71fa8c 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -269,7 +269,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`property/grid ` - convert per-grid attributes to per-grid vectors/arrays * :doc:`property/local ` - convert local attributes to local vectors/arrays * :doc:`ptm/atom ` - determines the local lattice structure based on the Polyhedral Template Matching method -* :doc:`rattlers ` - identify under-coordinated rattler atoms +* :doc:`rattlers/atom ` - identify under-coordinated rattler atoms * :doc:`rdf ` - radial distribution function :math:`g(r)` histogram of group of atoms * :doc:`reduce ` - combine per-atom quantities into a single global value * :doc:`reduce/chunk ` - reduce per-atom quantities within each chunk diff --git a/doc/src/compute_rattlers.rst b/doc/src/compute_rattlers.rst deleted file mode 100644 index 58dba3a126e..00000000000 --- a/doc/src/compute_rattlers.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. index:: compute rattlers - -compute rattlers command -======================== - -Syntax -"""""" - -.. parsed-literal:: - - compute ID group-ID rattlers cutoff zmin ntries - -* ID, group-ID are documented in :doc:`compute ` command -* rattlers = style name of this compute command -* cutoff = *type* or *radius* - - .. parsed-literal:: - - *type* = cutoffs determined based on atom types - *radius* = cutoffs determined based on atom diameters (atom style sphere) - -* zmin = minimum coordination for a non-rattler particle -* ntries = maximum number of iterations to remove rattlers - -Examples -"""""""" - -.. code-block:: LAMMPS - - compute 1 all rattlers type 4 10 - -Description -""""""""""" - -.. versionadded:: TBD - -Define a compute that identifies rattlers in a system. Rattlers are -identified using an interactive approach. The coordination number of -all atoms is first calculated. The *type* and *radius* settings are -used to select whether interaction cutoffs are determined by atom -types or by the sum of atomic radii (atom style sphere), respectively. -Rattlers are then identified as particles with a coordination number -less than *zmin* and are removed from consideration. Atomic coordination -numbers are then recalculated, excluding previously identified rattlers, -to identify a new set of rattlers. This process is iterated, up to a maximum -of *ntries*, until no new rattlers are identified and the remaining -atoms form a stable network of contacts. - -Output info -""""""""""" - -This compute calculates a per-atom vector and a global scalar. The vector -designates which atoms are rattlers, indicated by a value 1. Non-rattlers -have a value of 0. The global scalar returns the total number of rattlers -in the system. See the :doc:`Howto output ` page for an -overview of LAMMPS output options. - -Restrictions -"""""""""""" - -This compute is part of the EXTRA-COMPUTE package. It is only enabled if -LAMMPS was built with that package. See the -:doc:`Build package ` page for more info. - -The *radius* cutoff option requires that atoms store a radius as defined by the -:doc:`atom_style sphere ` or similar commands. - -Related commands -"""""""""""""""" - -:doc:`compute coord/atom ` -:doc:`compute contact/atom ` - -Default -""""""" - -none diff --git a/doc/src/compute_rattlers_atom.rst b/doc/src/compute_rattlers_atom.rst new file mode 100644 index 00000000000..a69d0914668 --- /dev/null +++ b/doc/src/compute_rattlers_atom.rst @@ -0,0 +1,92 @@ +.. index:: compute rattlers/atom + +compute rattlers/atom command +======================== + +Syntax +"""""" + +.. parsed-literal:: + + compute ID group-ID rattlers/atom cutoff zmin ntries + +* ID, group-ID are documented in :doc:`compute ` command +* rattlers/atom = style name of this compute command +* cutoff = *type* or *radius* + + .. parsed-literal:: + + *type* = cutoffs determined based on atom types + *radius* = cutoffs determined based on atom diameters (atom style sphere) + +* zmin = minimum coordination for a non-rattler atom +* ntries = maximum number of iterations to remove rattlers + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all rattlers/atom type 4 10 + +Description +""""""""""" + +.. versionadded:: TBD + +Define a compute that identifies rattlers in a system. Rattlers are often +identified in granular or glassy packings as undercoordinated atoms that +do not have the required number of contacts to constrain their translational +degrees of freedom. Such atoms are not considered rigid and can often freely +rattle around in the system. This compute identifies rattlers which can be +helpful for excluding them from analysis or providing extra damping forces +to accelerate relaxation processes. + +Rattlers are identified using an interactive approach. The coordination +number of all atoms is first calculated. The *type* and *radius* settings +are used to select whether interaction cutoffs are determined by atom +types or by the sum of atomic radii (atom style sphere), respectively. +Rattlers are then identified as atoms with a coordination number less +than *zmin* and are removed from consideration. Atomic coordination +numbers are then recalculated, excluding previously identified rattlers, +to identify a new set of rattlers. This process is iterated up to a maximum +of *ntries* or until no new rattlers are identified and the remaining +atoms form a stable network of contacts. + +In dense homogeneous systems where the average atom coordination number +is expected to be larger than *zmin*, this process usually only takes a few +iterations and a value of *ntries* around ten may be sufficient. In systems +with significant heterogeneity or average coordination numbers less than +*zmin*, an appropriate value of *ntries* depends heavily on the specific +system. For instance, a linear chain of N rattler atoms with a *zmin* of 2 +would take N/2 iterations to identify that all the atoms are rattlers. + +Output info +""""""""""" + +This compute calculates a per-atom vector and a global scalar. The vector +designates which atoms are rattlers, indicated by a value 1. Non-rattlers +have a value of 0. The global scalar returns the total number of rattlers +in the system. See the :doc:`Howto output ` page for an +overview of LAMMPS output options. + +Restrictions +"""""""""""" + +This compute is part of the EXTRA-COMPUTE package. It is only enabled if +LAMMPS was built with that package. See the +:doc:`Build package ` page for more info. + +The *radius* cutoff option requires that atoms store a radius as defined by the +:doc:`atom_style sphere ` or similar commands. + +Related commands +"""""""""""""""" + +:doc:`compute coord/atom ` +:doc:`compute contact/atom ` + +Default +""""""" + +none From b81df7c21b6be9739f234d4dc9c73272b38cde9c Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:12:09 +0300 Subject: [PATCH 081/300] Include methods and variables for dihedral contribution to compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index c7214c055cd..b9b97617c0a 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -40,12 +40,13 @@ class ComputeStressMopProfile : public Compute { void compute_pairs(); void compute_bonds(); void compute_angles(); + void compute_dihedrals(); void setup_bins(); int nvalues, dir; int *which; - int bondflag, angleflag; + int bondflag, angleflag, dihedralflag; double origin, delta, offset, invdelta; int nbins; @@ -53,6 +54,7 @@ class ComputeStressMopProfile : public Compute { double **values_local, **values_global; double **bond_local, **bond_global; double **angle_local, **angle_global; + double **dihedral_local, **dihedral_global; double **local_contribution; double dt, nktv2p, ftm2v; From e819b38a1831a56839cc13be2877099244ca4afe Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:15:12 +0300 Subject: [PATCH 082/300] undo dihedral changes in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index b9b97617c0a..c7214c055cd 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -40,13 +40,12 @@ class ComputeStressMopProfile : public Compute { void compute_pairs(); void compute_bonds(); void compute_angles(); - void compute_dihedrals(); void setup_bins(); int nvalues, dir; int *which; - int bondflag, angleflag, dihedralflag; + int bondflag, angleflag; double origin, delta, offset, invdelta; int nbins; @@ -54,7 +53,6 @@ class ComputeStressMopProfile : public Compute { double **values_local, **values_global; double **bond_local, **bond_global; double **angle_local, **angle_global; - double **dihedral_local, **dihedral_global; double **local_contribution; double dt, nktv2p, ftm2v; From 381d8de017c37794682e77a3825f4e1b9ddd4458 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:22:09 +0300 Subject: [PATCH 083/300] initialization of angleflag in constructor compute_stress_mop_profile.cpp --- src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 2a82cc0f8b3..3dfc9326ac5 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -49,6 +49,7 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a if (narg < 7) utils::missing_cmd_args(FLERR, "compute stress/mop/profile", error); bondflag = 0; + angleflag = 0; // set compute mode and direction of plane(s) for pressure calculation From ec458e2861b5b4950bfcd9a9dfb67bf1c636c319 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:32:26 +0300 Subject: [PATCH 084/300] method and member variables definition for dihedrals in compute_stress_mop_profile.h --- src/EXTRA-COMPUTE/compute_stress_mop_profile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h index c7214c055cd..b9b97617c0a 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.h @@ -40,12 +40,13 @@ class ComputeStressMopProfile : public Compute { void compute_pairs(); void compute_bonds(); void compute_angles(); + void compute_dihedrals(); void setup_bins(); int nvalues, dir; int *which; - int bondflag, angleflag; + int bondflag, angleflag, dihedralflag; double origin, delta, offset, invdelta; int nbins; @@ -53,6 +54,7 @@ class ComputeStressMopProfile : public Compute { double **values_local, **values_global; double **bond_local, **bond_global; double **angle_local, **angle_global; + double **dihedral_local, **dihedral_global; double **local_contribution; double dt, nktv2p, ftm2v; From d40fb4a337c67c2f0c3bc79bf29b87353cd80ceb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:45:46 +0300 Subject: [PATCH 085/300] method implementation for dihedral contribution to compute_stress_mop_profile.cpp --- .../compute_stress_mop_profile.cpp | 361 +++++++++++++++++- 1 file changed, 354 insertions(+), 7 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 3dfc9326ac5..27e420e71dd 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -13,7 +13,7 @@ /*------------------------------------------------------------------------ Contributing Authors : Romain Vermorel (LFCR), Laurent Joly (ULyon) - Support for bonds and angles added by : Evangelos Voyiatzis (NovaMechanics) + Support for bonds, angles and dihedrals added by : Evangelos Voyiatzis (NovaMechanics) --------------------------------------------------------------------------*/ #include "compute_stress_mop_profile.h" @@ -23,6 +23,7 @@ #include "atom_vec.h" #include "bond.h" #include "comm.h" +#include "dihedral.h" #include "domain.h" #include "error.h" #include "force.h" @@ -38,8 +39,10 @@ using namespace LAMMPS_NS; +#define SMALL 0.001 + enum { X, Y, Z }; -enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE }; +enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE, DIHEDRAL }; /* ---------------------------------------------------------------------- */ @@ -50,6 +53,7 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a bondflag = 0; angleflag = 0; + dihedralflag = 0; // set compute mode and direction of plane(s) for pressure calculation @@ -114,6 +118,11 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a which[nvalues] = ANGLE; nvalues++; } + } else if (strcmp(arg[iarg],"dihedral") == 0) { + for (i=0; i<3; i++) { + which[nvalues] = DIHEDRAL; + nvalues++; + } } else error->all(FLERR, "Illegal compute stress/mop/profile command"); //break; @@ -141,6 +150,8 @@ ComputeStressMopProfile::ComputeStressMopProfile(LAMMPS *lmp, int narg, char **a bond_global = nullptr; angle_local = nullptr; angle_global = nullptr; + dihedral_local = nullptr; + dihedral_global = nullptr; local_contribution = nullptr; // bin setup @@ -171,6 +182,8 @@ ComputeStressMopProfile::~ComputeStressMopProfile() memory->destroy(bond_global); memory->destroy(angle_local); memory->destroy(angle_global); + memory->destroy(dihedral_local); + memory->destroy(dihedral_global); memory->destroy(local_contribution); memory->destroy(array); } @@ -227,10 +240,16 @@ void ComputeStressMopProfile::init() } } - if (force->dihedral) - if ((strcmp(force->dihedral_style, "zero") != 0) && - (strcmp(force->dihedral_style, "none") != 0)) - error->all(FLERR, "compute stress/mop/profile does not account for dihedral potentials"); + if (force->dihedral) { + if (force->dihedral->born_matrix_enable == 0) { + if ((strcmp(force->dihedral_style, "zero") != 0) && + (strcmp(force->dihedral_style, "none") != 0)) + error->all(FLERR, "compute stress/mop/profile does not account for dihedral potentials"); + } else { + dihedralflag = 1; + } + } + if (force->improper) if ((strcmp(force->improper_style, "zero") != 0) && (strcmp(force->improper_style, "none") != 0)) @@ -294,6 +313,17 @@ void ComputeStressMopProfile::compute_array() // sum angle contribution over all procs MPI_Allreduce(&angle_local[0][0],&angle_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + + if (dihedralflag) { + //Compute dihedral contribution on separate procs + compute_dihedrals(); + } else { + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + dihedral_local[m][i] = 0.0; + } + } + } for (int ibin = 0; ibin < nbins; ibin++) { array[ibin][0] = coord[ibin]; @@ -301,7 +331,7 @@ void ComputeStressMopProfile::compute_array() int mo = 1; int m = 0; while (m < nvalues) { - array[ibin][m + mo] = values_global[ibin][m] + bond_global[ibin][m] + angle_global[ibin][m]; + array[ibin][m + mo] = values_global[ibin][m] + bond_global[ibin][m] + angle_global[ibin][m] + dihedral_global[ibin][m]; m++; } } @@ -835,6 +865,321 @@ void ComputeStressMopProfile::compute_angles() } } +/*------------------------------------------------------------------------ + compute dihedral contribution to pressure of local proc + -------------------------------------------------------------------------*/ + +void ComputeStressMopProfile::compute_dihedrals() +{ + int i, nd, atom1, atom2, atom3, atom4, imol, iatom; + tagint tagprev; + double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z; + double vb2xm, vb2ym, vb2zm; + double sb1, sb2, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; + double b2mag, b3mag2, b3mag, c2mag, ctmp, r12c1, c1mag, r12c2; + double s1, s2, s12, sc1, sc2, a11, a22, a33, a12, a13, a23; + double df[3], f1[3], f2[3], f3[3], f4[3]; + double c, sx2, sy2, sz2, sin2; + + double **x = atom->x; + tagint *tag = atom->tag; + int *num_dihedral = atom->num_dihedral; + tagint **dihedral_atom1 = atom->dihedral_atom1; + tagint **dihedral_atom2 = atom->dihedral_atom2; + tagint **dihedral_atom3 = atom->dihedral_atom3; + tagint **dihedral_atom4 = atom->dihedral_atom4; + int *mask = atom->mask; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int nlocal = atom->nlocal; + int molecular = atom->molecular; + + // loop over all atoms and their dihedrals + + Dihedral *dihedral = force->dihedral; + + double dudih, du2dih; + + double diffx[3] = {0.0, 0.0, 0.0}; + double x_atom_1[3] = {0.0, 0.0, 0.0}; + double x_atom_2[3] = {0.0, 0.0, 0.0}; + double x_atom_3[3] = {0.0, 0.0, 0.0}; + double x_atom_4[3] = {0.0, 0.0, 0.0}; + + // initialization + for (int m = 0; m < nbins; m++) { + for (int i = 0; i < nvalues; i++) { + dihedral_local[m][i] = 0.0; + } + local_contribution[m][0] = 0.0; + local_contribution[m][1] = 0.0; + local_contribution[m][2] = 0.0; + } + + for (atom2 = 0; atom2 < nlocal; atom2++) { + if (!(mask[atom2] & groupbit)) continue; + + if (molecular == Atom::MOLECULAR) + nd = num_dihedral[atom2]; + else { + if (molindex[atom2] < 0) continue; + imol = molindex[atom2]; + iatom = molatom[atom2]; + nd = onemols[imol]->num_dihedral[iatom]; + } + + for (i = 0; i < nd; i++) { + if (molecular == 1) { + if (tag[atom2] != dihedral_atom2[atom2][i]) continue; + atom1 = atom->map(dihedral_atom1[atom2][i]); + atom3 = atom->map(dihedral_atom3[atom2][i]); + atom4 = atom->map(dihedral_atom4[atom2][i]); + } else { + if (tag[atom2] != onemols[imol]->dihedral_atom2[atom2][i]) continue; + tagprev = tag[atom2] - iatom - 1; + atom1 = atom->map(onemols[imol]->dihedral_atom1[atom2][i] + tagprev); + atom3 = atom->map(onemols[imol]->dihedral_atom3[atom2][i] + tagprev); + atom4 = atom->map(onemols[imol]->dihedral_atom4[atom2][i] + tagprev); + } + + if (atom1 < 0 || !(mask[atom1] & groupbit)) continue; + if (atom3 < 0 || !(mask[atom3] & groupbit)) continue; + if (atom4 < 0 || !(mask[atom4] & groupbit)) continue; + + for (int ibin = 0; ibinminimum_image(x_atom_1[0], x_atom_1[1], x_atom_1[2]); + x_atom_1[dir] += pos; + + // minimum image of atom2 with respect to atom1 + diffx[0] = x[atom2][0] - x_atom_1[0]; + diffx[1] = x[atom2][1] - x_atom_1[1]; + diffx[2] = x[atom2][2] - x_atom_1[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_2[0] = x_atom_1[0] + diffx[0]; + x_atom_2[1] = x_atom_1[1] + diffx[1]; + x_atom_2[2] = x_atom_1[2] + diffx[2]; + + // minimum image of atom3 with respect to atom2 + diffx[0] = x[atom3][0] - x_atom_2[0]; + diffx[1] = x[atom3][1] - x_atom_2[1]; + diffx[2] = x[atom3][2] - x_atom_2[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_3[0] = x_atom_2[0] + diffx[0]; + x_atom_3[1] = x_atom_2[1] + diffx[1]; + x_atom_3[2] = x_atom_2[2] + diffx[2]; + + // minimum image of atom3 with respect to atom2 + diffx[0] = x[atom4][0] - x_atom_3[0]; + diffx[1] = x[atom4][1] - x_atom_3[1]; + diffx[2] = x[atom4][2] - x_atom_3[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_4[0] = x_atom_3[0] + diffx[0]; + x_atom_4[1] = x_atom_3[1] + diffx[1]; + x_atom_4[2] = x_atom_3[2] + diffx[2]; + + // check if any bond vector crosses the plane of interest + double tau_right = (x_atom_2[dir] - pos) / (x_atom_2[dir] - x_atom_1[dir]); + double tau_middle = (x_atom_3[dir] - pos) / (x_atom_3[dir] - x_atom_2[dir]); + double tau_left = (x_atom_4[dir] - pos) / (x_atom_4[dir] - x_atom_3[dir]); + bool right_cross = ((tau_right >=0) && (tau_right <= 1)); + bool middle_cross = ((tau_middle >= 0) && (tau_middle <= 1)); + bool left_cross = ((tau_left >=0) && (tau_left <= 1)); + + // no bonds crossing the plane + if (!right_cross && !middle_cross && !left_cross) continue; + + dihedral->born_matrix(i, atom1, atom2, atom3, atom4, dudih, du2dih); + + // first bond + vb1x = x_atom_1[0] - x_atom_2[0]; + vb1y = x_atom_1[1] - x_atom_2[1]; + vb1z = x_atom_1[2] - x_atom_2[2]; + + // second bond + vb2x = x_atom_3[0] - x_atom_2[0]; + vb2y = x_atom_3[1] - x_atom_2[1]; + vb2z = x_atom_3[2] - x_atom_2[2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // third bond + vb3x = x_atom_4[0] - x_atom_3[0]; + vb3y = x_atom_4[1] - x_atom_3[1]; + vb3z = x_atom_4[2] - x_atom_3[2]; + + // c0 calculation + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + // 1st and 2nd angle + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + // error check + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // forces on each particle + double a = dudih; + c = c * a; + s12 = s12 * a; + a11 = c*sb1*s1; + a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2)); + a33 = c*sb3*s2; + a12 = -r12c1 * (c1mag*c*s1 + c2mag*s12); + a13 = -rb1*rb3*s12; + a23 = r12c2 * (c2mag*c*s2 + c1mag*s12); + + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + + f1[0] = a11*vb1x + a12*vb2x + a13*vb3x; + f1[1] = a11*vb1y + a12*vb2y + a13*vb3y; + f1[2] = a11*vb1z + a12*vb2z + a13*vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13*vb1x + a23*vb2x + a33*vb3x; + f4[1] = a13*vb1y + a23*vb2y + a33*vb3y; + f4[2] = a13*vb1z + a23*vb2z + a33*vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // only right bond crossing the plane + if (right_cross && !middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * f1[0]; + df[1] = sgn * f1[1]; + df[2] = sgn * f1[2]; + } + + // only middle bond crossing the plane + if (!right_cross && middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_2[dir] - pos); + df[0] = sgn * (f2[0] + f1[0]); + df[1] = sgn * (f2[1] + f1[1]); + df[2] = sgn * (f2[2] + f1[2]); + } + + // only left bond crossing the plane + if (!right_cross && !middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_4[dir] - pos); + df[0] = sgn * f4[0]; + df[1] = sgn * f4[1]; + df[2] = sgn * f4[2]; + } + + // only right & middle bonds crossing the plane + if (right_cross && middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_2[dir] - pos); + df[0] = sgn * f2[0]; + df[1] = sgn * f2[1]; + df[2] = sgn * f2[2]; + } + + // only right & left bonds crossing the plane + if (right_cross && !middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * (f1[0] + f4[0]); + df[1] = sgn * (f1[1] + f4[1]); + df[2] = sgn * (f1[2] + f4[2]); + } + + // only middle & left bonds crossing the plane + if (!right_cross && middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_3[dir] - pos); + df[0] = sgn * f3[0]; + df[1] = sgn * f3[1]; + df[2] = sgn * f3[2]; + } + + // all three bonds crossing the plane + if (right_cross && middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * (f1[0] + f3[0]); + df[1] = sgn * (f1[1] + f3[1]); + df[2] = sgn * (f1[2] + f3[2]); + } + + local_contribution[ibin][0] += df[0]/area*nktv2p; + local_contribution[ibin][1] += df[1]/area*nktv2p; + local_contribution[ibin][2] += df[2]/area*nktv2p; + } + } + } + + // loop over the keywords and if necessary add the dihedral contribution + int m = 0; + while (m < nvalues) { + if ((which[m] == CONF) || (which[m] == TOTAL) || (which[m] == DIHEDRAL)) { + for (int ibin = 0; ibin < nbins; ibin++) { + dihedral_local[ibin][m] = local_contribution[ibin][0]; + dihedral_local[ibin][m+1] = local_contribution[ibin][1]; + dihedral_local[ibin][m+2] = local_contribution[ibin][2]; + } + } + m += 3; + } + +} + /* ---------------------------------------------------------------------- setup 1d bins and their extent and coordinates called at init() @@ -870,6 +1215,8 @@ void ComputeStressMopProfile::setup_bins() memory->create(bond_global, nbins, nvalues, "stress/mop/profile:bond_global"); memory->create(angle_local, nbins, nvalues, "stress/mop/profile:angle_local"); memory->create(angle_global, nbins, nvalues, "stress/mop/profile:angle_global"); + memory->create(dihedral_local,nbins,nvalues,"stress/mop/profile:dihedral_local"); + memory->create(dihedral_global,nbins,nvalues,"stress/mop/profile:dihedral_global"); memory->create(local_contribution, nbins, 3, "stress/mop/profile:local_contribution"); // set bin coordinates From b86d1f655381c076a6b378bc8ea8f46aedf5c6de Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:48:45 +0300 Subject: [PATCH 086/300] Update compute_stress_mop.rst for dihedral interactions --- doc/src/compute_stress_mop.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/src/compute_stress_mop.rst b/doc/src/compute_stress_mop.rst index 70986862fe3..3cd7a67c9cd 100644 --- a/doc/src/compute_stress_mop.rst +++ b/doc/src/compute_stress_mop.rst @@ -18,7 +18,7 @@ Syntax * style = *stress/mop* or *stress/mop/profile* * dir = *x* or *y* or *z* is the direction normal to the plane * args = argument specific to the compute style -* keywords = *kin* or *conf* or *total* or *pair* or *bond* or *angle* (one or more can be specified) +* keywords = *kin* or *conf* or *total* or *pair* or *bond* or *angle* or *dihedral* (one or more can be specified) .. parsed-literal:: @@ -68,13 +68,13 @@ Verlet algorithm. .. versionadded:: 15Jun2023 - contributions from bond and angle potentials + contributions from bond, angle and dihedral potentials -Between one and six keywords can be used to indicate which contributions +Between one and seven keywords can be used to indicate which contributions to the stress must be computed: total stress (total), kinetic stress (kin), configurational stress (conf), stress due to bond stretching -(bond), stress due to angle bending (angle) and/or due to pairwise -non-bonded interactions (pair). +(bond), stress due to angle bending (angle), stress due to dihedral terms (dihedral) +and/or due to pairwise non-bonded interactions (pair). NOTE 1: The configurational stress is computed considering all pairs of atoms where at least one atom belongs to group group-ID. @@ -134,7 +134,7 @@ requires the class method ``Pair::single()`` to be implemented, which is not possible for manybody potentials. In particular, compute *stress/mop/profile* does not work with more than two-body pair interactions, long range (kspace) interactions and -dihedral/improper intramolecular interactions. Similarly, compute +improper intramolecular interactions. Similarly, compute *stress/mop* does not work with more than two-body pair interactions, long range (kspace) interactions and dihedral/improper intramolecular interactions but works with all bond interactions with the class method From 1591b21617a196607306955e7d108f38b330ed1d Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 26 Sep 2023 16:53:16 +0300 Subject: [PATCH 087/300] remove whitespaces from compute_stress_mop_profile.cpp --- src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 27e420e71dd..223e4da66ae 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -324,7 +324,7 @@ void ComputeStressMopProfile::compute_array() } } } - + for (int ibin = 0; ibin < nbins; ibin++) { array[ibin][0] = coord[ibin]; @@ -540,7 +540,7 @@ void ComputeStressMopProfile::compute_pairs() vcross[0] = vi[0] - fi[0] * iterm; vcross[1] = vi[1] - fi[1] * iterm; vcross[2] = vi[2] - fi[2] * iterm; - + values_local[ibin][m] += imass * vcross[0] * sgn / dt / area * nktv2p / ftm2v; values_local[ibin][m + 1] += imass * vcross[1] * sgn / dt / area * nktv2p / ftm2v; values_local[ibin][m + 2] += imass * vcross[2] * sgn / dt / area * nktv2p / ftm2v; From 3445330cf1679addfdce5ab3e678b54669dc933d Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 16:13:13 +0300 Subject: [PATCH 088/300] remove whitespace from compute_stress_mop.cpp --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index a1077660e51..3f1ae008eab 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -433,7 +433,7 @@ void ComputeStressMop::compute_pairs() xi[dir] -= pos; domain->minimum_image(xi[0], xi[1], xi[2]); xi[dir] += pos; - + //velocities at t vi[0] = atom->v[i][0]; From ac435319fdf8b127ac33cfdf24ea6b8bfcc4649b Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 16:15:03 +0300 Subject: [PATCH 089/300] Definition of compute_dihedral and related variables in compute_stress_mop.h --- src/EXTRA-COMPUTE/compute_stress_mop.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.h b/src/EXTRA-COMPUTE/compute_stress_mop.h index 86140dc278d..0a0ea8b55a1 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.h +++ b/src/EXTRA-COMPUTE/compute_stress_mop.h @@ -40,15 +40,17 @@ class ComputeStressMop : public Compute { void compute_pairs(); void compute_bonds(); void compute_angles(); + void compute_dihedrals(); int nvalues, dir; int *which; - int bondflag, angleflag; + int bondflag, angleflag, dihedralflag; double *values_local, *values_global; double *bond_local, *bond_global; double *angle_local, *angle_global; + double *dihedral_local, *dihedral_global; double pos, pos1, dt, nktv2p, ftm2v; double area; class NeighList *list; From ca449f1ea859d47e665ae98e5a58cf8aa9781e60 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 16:25:52 +0300 Subject: [PATCH 090/300] Prepare for inclusion of dihedral contribution in compute_stress_mop.cpp --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 47 +++++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index 3f1ae008eab..d94ba61d71b 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -23,6 +23,7 @@ #include "atom_vec.h" #include "bond.h" #include "comm.h" +#include "dihedral.h" #include "domain.h" #include "error.h" #include "force.h" @@ -38,8 +39,10 @@ using namespace LAMMPS_NS; +#define SMALL 0.001 + enum { X, Y, Z }; -enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE }; +enum { TOTAL, CONF, KIN, PAIR, BOND, ANGLE, DIHEDRAL }; /* ---------------------------------------------------------------------- */ @@ -49,6 +52,7 @@ ComputeStressMop::ComputeStressMop(LAMMPS *lmp, int narg, char **arg) : Compute( bondflag = 0; angleflag = 0; + dihedralflag = 0; // set compute mode and direction of plane(s) for pressure calculation @@ -129,6 +133,11 @@ ComputeStressMop::ComputeStressMop(LAMMPS *lmp, int narg, char **arg) : Compute( which[nvalues] = ANGLE; nvalues++; } + } else if (strcmp(arg[iarg],"dihedral") == 0) { + for (i=0; i<3; i++) { + which[nvalues] = DIHEDRAL; + nvalues++; + } } else error->all(FLERR, "Illegal compute stress/mop command"); //break; @@ -152,6 +161,8 @@ ComputeStressMop::ComputeStressMop(LAMMPS *lmp, int narg, char **arg) : Compute( bond_global = nullptr; angle_local = nullptr; angle_global = nullptr; + dihedral_local = nullptr; + dihedral_global = nullptr; // this fix produces a global vector @@ -162,6 +173,8 @@ ComputeStressMop::ComputeStressMop(LAMMPS *lmp, int narg, char **arg) : Compute( memory->create(bond_global, nvalues, "stress/mop:bond_global"); memory->create(angle_local, nvalues, "stress/mop:angle_local"); memory->create(angle_global, nvalues, "stress/mop:angle_global"); + memory->create(dihedral_local,nvalues,"stress/mop:dihedral_local"); + memory->create(dihedral_global,nvalues,"stress/mop:dihedral_global"); size_vector = nvalues; vector_flag = 1; @@ -180,6 +193,8 @@ ComputeStressMop::~ComputeStressMop() memory->destroy(bond_global); memory->destroy(angle_local); memory->destroy(angle_global); + memory->destroy(dihedral_local); + memory->destroy(dihedral_global); memory->destroy(vector); } @@ -233,9 +248,13 @@ void ComputeStressMop::init() } } if (force->dihedral) { - if ((strcmp(force->dihedral_style, "zero") != 0) && - (strcmp(force->dihedral_style, "none") != 0)) - error->all(FLERR, "compute stress/mop does not account for dihedral potentials"); + if (force->dihedral->born_matrix_enable == 0) { + if ((strcmp(force->dihedral_style, "zero") != 0) && + (strcmp(force->dihedral_style, "none") != 0)) + error->all(FLERR, "compute stress/mop does not account for dihedral potentials"); + } else { + dihedralflag = 1; + } } if (force->improper) { if ((strcmp(force->improper_style, "zero") != 0) && @@ -297,8 +316,18 @@ void ComputeStressMop::compute_vector() MPI_Allreduce(angle_local, angle_global, nvalues, MPI_DOUBLE, MPI_SUM, world); + if (dihedralflag) { + //Compute dihedral contribution on separate procs + compute_dihedrals(); + } else { + for (int i=0; i Date: Thu, 28 Sep 2023 16:29:15 +0300 Subject: [PATCH 091/300] remove whitespace from compute_stress_mop.cpp --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index d94ba61d71b..331f4e48412 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -325,7 +325,7 @@ void ComputeStressMop::compute_vector() // sum dihedral contribution over all procs MPI_Allreduce(dihedral_local,dihedral_global,nvalues,MPI_DOUBLE,MPI_SUM,world); - + for (int m = 0; m < nvalues; m++) { vector[m] = values_global[m] + bond_global[m] + angle_global[m] + dihedral_global[m]; } From bbd6b2846f83cef48ed3960fe2496c64ee37f99e Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 16:59:03 +0300 Subject: [PATCH 092/300] implementation of compute_dihedral() in compute_stress_mop.cpp --- src/EXTRA-COMPUTE/compute_stress_mop.cpp | 297 +++++++++++++++++++++++ 1 file changed, 297 insertions(+) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop.cpp b/src/EXTRA-COMPUTE/compute_stress_mop.cpp index 331f4e48412..6c35b4ba075 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop.cpp @@ -825,4 +825,301 @@ void ComputeStressMop::compute_angles() void ComputeStressMop::compute_dihedrals() { + int i, nd, atom1, atom2, atom3, atom4, imol, iatom; + tagint tagprev; + double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z; + double vb2xm, vb2ym, vb2zm; + double sb1, sb2, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; + double b2mag, b3mag2, b3mag, c2mag, ctmp, r12c1, c1mag, r12c2; + double s1, s2, s12, sc1, sc2, a11, a22, a33, a12, a13, a23; + double df[3], f1[3], f2[3], f3[3], f4[3]; + double c, sx2, sy2, sz2, sin2; + + double **x = atom->x; + tagint *tag = atom->tag; + int *num_dihedral = atom->num_dihedral; + tagint **dihedral_atom1 = atom->dihedral_atom1; + tagint **dihedral_atom2 = atom->dihedral_atom2; + tagint **dihedral_atom3 = atom->dihedral_atom3; + tagint **dihedral_atom4 = atom->dihedral_atom4; + int *mask = atom->mask; + + int *molindex = atom->molindex; + int *molatom = atom->molatom; + Molecule **onemols = atom->avec->onemols; + + int nlocal = atom->nlocal; + int molecular = atom->molecular; + + // loop over all atoms and their dihedrals + + Dihedral *dihedral = force->dihedral; + + double dudih, du2dih; + + double diffx[3] = {0.0, 0.0, 0.0}; + double x_atom_1[3] = {0.0, 0.0, 0.0}; + double x_atom_2[3] = {0.0, 0.0, 0.0}; + double x_atom_3[3] = {0.0, 0.0, 0.0}; + double x_atom_4[3] = {0.0, 0.0, 0.0}; + + // initialization + for (int i = 0; i < nvalues; i++) { + dihedral_local[i] = 0.0; + } + double local_contribution[3] = {0.0, 0.0, 0.0}; + + for (atom2 = 0; atom2 < nlocal; atom2++) { + if (!(mask[atom2] & groupbit)) continue; + + if (molecular == Atom::MOLECULAR) + nd = num_dihedral[atom2]; + else { + if (molindex[atom2] < 0) continue; + imol = molindex[atom2]; + iatom = molatom[atom2]; + nd = onemols[imol]->num_dihedral[iatom]; + } + + for (i = 0; i < nd; i++) { + if (molecular == 1) { + if (tag[atom2] != dihedral_atom2[atom2][i]) continue; + atom1 = atom->map(dihedral_atom1[atom2][i]); + atom3 = atom->map(dihedral_atom3[atom2][i]); + atom4 = atom->map(dihedral_atom4[atom2][i]); + } else { + if (tag[atom2] != onemols[imol]->dihedral_atom2[atom2][i]) continue; + tagprev = tag[atom2] - iatom - 1; + atom1 = atom->map(onemols[imol]->dihedral_atom1[atom2][i] + tagprev); + atom3 = atom->map(onemols[imol]->dihedral_atom3[atom2][i] + tagprev); + atom4 = atom->map(onemols[imol]->dihedral_atom4[atom2][i] + tagprev); + } + + if (atom1 < 0 || !(mask[atom1] & groupbit)) continue; + if (atom3 < 0 || !(mask[atom3] & groupbit)) continue; + if (atom4 < 0 || !(mask[atom4] & groupbit)) continue; + + // minimum image of atom1 with respect to the plane of interest + x_atom_1[0] = x[atom1][0]; + x_atom_1[1] = x[atom1][1]; + x_atom_1[2] = x[atom1][2]; + x_atom_1[dir] -= pos; + domain->minimum_image(x_atom_1[0], x_atom_1[1], x_atom_1[2]); + x_atom_1[dir] += pos; + + // minimum image of atom2 with respect to atom1 + diffx[0] = x[atom2][0] - x_atom_1[0]; + diffx[1] = x[atom2][1] - x_atom_1[1]; + diffx[2] = x[atom2][2] - x_atom_1[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_2[0] = x_atom_1[0] + diffx[0]; + x_atom_2[1] = x_atom_1[1] + diffx[1]; + x_atom_2[2] = x_atom_1[2] + diffx[2]; + + // minimum image of atom3 with respect to atom2 + diffx[0] = x[atom3][0] - x_atom_2[0]; + diffx[1] = x[atom3][1] - x_atom_2[1]; + diffx[2] = x[atom3][2] - x_atom_2[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_3[0] = x_atom_2[0] + diffx[0]; + x_atom_3[1] = x_atom_2[1] + diffx[1]; + x_atom_3[2] = x_atom_2[2] + diffx[2]; + + // minimum image of atom3 with respect to atom2 + diffx[0] = x[atom4][0] - x_atom_3[0]; + diffx[1] = x[atom4][1] - x_atom_3[1]; + diffx[2] = x[atom4][2] - x_atom_3[2]; + domain->minimum_image(diffx[0], diffx[1], diffx[2]); + x_atom_4[0] = x_atom_3[0] + diffx[0]; + x_atom_4[1] = x_atom_3[1] + diffx[1]; + x_atom_4[2] = x_atom_3[2] + diffx[2]; + + // check if any bond vector crosses the plane of interest + double tau_right = (x_atom_2[dir] - pos) / (x_atom_2[dir] - x_atom_1[dir]); + double tau_middle = (x_atom_3[dir] - pos) / (x_atom_3[dir] - x_atom_2[dir]); + double tau_left = (x_atom_4[dir] - pos) / (x_atom_4[dir] - x_atom_3[dir]); + bool right_cross = ((tau_right >=0) && (tau_right <= 1)); + bool middle_cross = ((tau_middle >= 0) && (tau_middle <= 1)); + bool left_cross = ((tau_left >=0) && (tau_left <= 1)); + + // no bonds crossing the plane + if (!right_cross && !middle_cross && !left_cross) continue; + + dihedral->born_matrix(i, atom1, atom2, atom3, atom4, dudih, du2dih); + + // first bond + vb1x = x_atom_1[0] - x_atom_2[0]; + vb1y = x_atom_1[1] - x_atom_2[1]; + vb1z = x_atom_1[2] - x_atom_2[2]; + + // second bond + vb2x = x_atom_3[0] - x_atom_2[0]; + vb2y = x_atom_3[1] - x_atom_2[1]; + vb2z = x_atom_3[2] - x_atom_2[2]; + + vb2xm = -vb2x; + vb2ym = -vb2y; + vb2zm = -vb2z; + + // third bond + vb3x = x_atom_4[0] - x_atom_3[0]; + vb3y = x_atom_4[1] - x_atom_3[1]; + vb3z = x_atom_4[2] - x_atom_3[2]; + + // c0 calculation + sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z); + sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z); + sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z); + + rb1 = sqrt(sb1); + rb3 = sqrt(sb3); + + c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3; + // 1st and 2nd angle + b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z; + b1mag = sqrt(b1mag2); + b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z; + b2mag = sqrt(b2mag2); + b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z; + b3mag = sqrt(b3mag2); + + ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z; + r12c1 = 1.0 / (b1mag*b2mag); + c1mag = ctmp * r12c1; + + ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z; + r12c2 = 1.0 / (b2mag*b3mag); + c2mag = ctmp * r12c2; + + // cos and sin of 2 angles and final c + sin2 = MAX(1.0 - c1mag*c1mag,0.0); + sc1 = sqrt(sin2); + if (sc1 < SMALL) sc1 = SMALL; + sc1 = 1.0/sc1; + + sin2 = MAX(1.0 - c2mag*c2mag,0.0); + sc2 = sqrt(sin2); + if (sc2 < SMALL) sc2 = SMALL; + sc2 = 1.0/sc2; + + s1 = sc1 * sc1; + s2 = sc2 * sc2; + s12 = sc1 * sc2; + c = (c0 + c1mag*c2mag) * s12; + + // error check + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + // forces on each particle + double a = dudih; + c = c * a; + s12 = s12 * a; + a11 = c*sb1*s1; + a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2)); + a33 = c*sb3*s2; + a12 = -r12c1 * (c1mag*c*s1 + c2mag*s12); + a13 = -rb1*rb3*s12; + a23 = r12c2 * (c2mag*c*s2 + c1mag*s12); + + sx2 = a12*vb1x + a22*vb2x + a23*vb3x; + sy2 = a12*vb1y + a22*vb2y + a23*vb3y; + sz2 = a12*vb1z + a22*vb2z + a23*vb3z; + + f1[0] = a11*vb1x + a12*vb2x + a13*vb3x; + f1[1] = a11*vb1y + a12*vb2y + a13*vb3y; + f1[2] = a11*vb1z + a12*vb2z + a13*vb3z; + + f2[0] = -sx2 - f1[0]; + f2[1] = -sy2 - f1[1]; + f2[2] = -sz2 - f1[2]; + + f4[0] = a13*vb1x + a23*vb2x + a33*vb3x; + f4[1] = a13*vb1y + a23*vb2y + a33*vb3y; + f4[2] = a13*vb1z + a23*vb2z + a33*vb3z; + + f3[0] = sx2 - f4[0]; + f3[1] = sy2 - f4[1]; + f3[2] = sz2 - f4[2]; + + // only right bond crossing the plane + if (right_cross && !middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * f1[0]; + df[1] = sgn * f1[1]; + df[2] = sgn * f1[2]; + } + + // only middle bond crossing the plane + if (!right_cross && middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_2[dir] - pos); + df[0] = sgn * (f2[0] + f1[0]); + df[1] = sgn * (f2[1] + f1[1]); + df[2] = sgn * (f2[2] + f1[2]); + } + + // only left bond crossing the plane + if (!right_cross && !middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_4[dir] - pos); + df[0] = sgn * f4[0]; + df[1] = sgn * f4[1]; + df[2] = sgn * f4[2]; + } + + // only right & middle bonds crossing the plane + if (right_cross && middle_cross && !left_cross) + { + double sgn = copysign(1.0, x_atom_2[dir] - pos); + df[0] = sgn * f2[0]; + df[1] = sgn * f2[1]; + df[2] = sgn * f2[2]; + } + + // only right & left bonds crossing the plane + if (right_cross && !middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * (f1[0] + f4[0]); + df[1] = sgn * (f1[1] + f4[1]); + df[2] = sgn * (f1[2] + f4[2]); + } + + // only middle & left bonds crossing the plane + if (!right_cross && middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_3[dir] - pos); + df[0] = sgn * f3[0]; + df[1] = sgn * f3[1]; + df[2] = sgn * f3[2]; + } + + // all three bonds crossing the plane + if (right_cross && middle_cross && left_cross) + { + double sgn = copysign(1.0, x_atom_1[dir] - pos); + df[0] = sgn * (f1[0] + f3[0]); + df[1] = sgn * (f1[1] + f3[1]); + df[2] = sgn * (f1[2] + f3[2]); + } + + local_contribution[0] += df[0]/area*nktv2p; + local_contribution[1] += df[1]/area*nktv2p; + local_contribution[2] += df[2]/area*nktv2p; + } + } + + // loop over the keywords and if necessary add the dihedral contribution + int m = 0; + while (m < nvalues) { + if ((which[m] == CONF) || (which[m] == TOTAL) || (which[m] == DIHEDRAL)) { + dihedral_local[m] = local_contribution[0]; + dihedral_local[m+1] = local_contribution[1]; + dihedral_local[m+2] = local_contribution[2]; + } + m += 3; + } + } From dc84ab5e5fc826e8095eb7d2c2ec38628dc4c7f7 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 17:06:11 +0300 Subject: [PATCH 093/300] Update compute_stress_mop.rst --- doc/src/compute_stress_mop.rst | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/doc/src/compute_stress_mop.rst b/doc/src/compute_stress_mop.rst index 3cd7a67c9cd..74d4c618e76 100644 --- a/doc/src/compute_stress_mop.rst +++ b/doc/src/compute_stress_mop.rst @@ -132,14 +132,9 @@ size does not change in time, and axis-aligned planes. The method only works with two-body pair interactions, because it requires the class method ``Pair::single()`` to be implemented, which is not possible for manybody potentials. In particular, compute -*stress/mop/profile* does not work with more than two-body pair +*stress/mop/profile* and *stress/mop* do not work with more than two-body pair interactions, long range (kspace) interactions and -improper intramolecular interactions. Similarly, compute -*stress/mop* does not work with more than two-body pair interactions, -long range (kspace) interactions and dihedral/improper intramolecular -interactions but works with all bond interactions with the class method -single() implemented and all angle interactions with the class method -born_matrix() implemented. +improper intramolecular interactions. Related commands """""""""""""""" From d84ee0c4f1f97728d69a55163d8356eba16e290b Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 28 Sep 2023 17:48:17 +0300 Subject: [PATCH 094/300] Update compute_stress_mop_profile.cpp --- src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp index 223e4da66ae..41b5f64a675 100644 --- a/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp +++ b/src/EXTRA-COMPUTE/compute_stress_mop_profile.cpp @@ -325,6 +325,9 @@ void ComputeStressMopProfile::compute_array() } } + // sum dihedral contribution over all procs + MPI_Allreduce(&dihedral_local[0][0],&dihedral_global[0][0],nbins*nvalues,MPI_DOUBLE,MPI_SUM,world); + for (int ibin = 0; ibin < nbins; ibin++) { array[ibin][0] = coord[ibin]; From fc12f86ea92ec1aeeb6fa8cbf2971d6ebf134698 Mon Sep 17 00:00:00 2001 From: jmgoff <34103038+jmgoff@users.noreply.github.com> Date: Wed, 11 Oct 2023 16:47:35 -0600 Subject: [PATCH 095/300] Update compute_pace.h Header style fix --- src/ML-PACE/compute_pace.h | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index 266b16c6150..2f2f8d7f21c 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -58,25 +58,3 @@ class ComputePACE : public Compute { #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: Compute pace requires a pair style be defined - -Self-explanatory. - -E: Compute pace cutoff is longer than pairwise cutoff - -UNDOCUMENTED - -W: More than one compute pace/atom - -Self-explanatory. - -*/ From 2ac32872e2f960d1c47fe7eab3b6eb741065e3e8 Mon Sep 17 00:00:00 2001 From: James Michael Goff Date: Thu, 19 Oct 2023 12:18:07 -0600 Subject: [PATCH 096/300] compute pace docs --- doc/src/Commands_compute.rst | 1 + doc/src/compute.rst | 1 + doc/src/compute_pace.rst | 249 +++++++++++++++++++++++++++++++++++ 3 files changed, 251 insertions(+) create mode 100644 doc/src/compute_pace.rst diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index dbd6b58ce7e..52a29b422c1 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -100,6 +100,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`nbond/atom ` * :doc:`omega/chunk ` * :doc:`orientorder/atom (k) ` + * :doc:`pace ` * :doc:`pair ` * :doc:`pair/local ` * :doc:`pe ` diff --git a/doc/src/compute.rst b/doc/src/compute.rst index abc89fb6634..363dbdbdaaf 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -254,6 +254,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`nbond/atom ` - calculates number of bonds per atom * :doc:`omega/chunk ` - angular velocity for each chunk * :doc:`orientorder/atom ` - Steinhardt bond orientational order parameters Ql +* :doc:`pace ` - atomic cluster expansion descriptors and related quantities * :doc:`pair ` - values computed by a pair style * :doc:`pair/local ` - distance/energy/force of each pairwise interaction * :doc:`pe ` - potential energy diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst new file mode 100644 index 00000000000..89c46c4717b --- /dev/null +++ b/doc/src/compute_pace.rst @@ -0,0 +1,249 @@ +.. index:: compute pace + +compute pace command +======================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + compute ID group-ID pace ace_potential_filename ... keyword values ... + +* ID, group-ID are documented in :doc:`compute ` command +* pace = style name of this compute command +* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style `) including ACE hyperparameters, bonds, and generalized coupling coefficients +* keyword = *bikflag* or *dgradflag* + + .. parsed-literal:: + + *bikflag* value = *0* or *1* + *0* = descriptors are summed over atoms of each type + *1* = descriptors are listed separately for each atom + *dgradflag* value = *0* or *1* + *0* = descriptor gradients are summed over atoms of each type + *1* = descriptor gradients are listed separately for each atom pair + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute pace all pace coupling_coefficients.yace + compute pace all pace coupling_coefficients.yace 0 1 + compute pace all pace coupling_coefficients.yace 1 1 + +Description +""""""""""" + +This compute calculates a set of quantities related to the atomic cluster +expansion (ACE) descriptors of the atoms in a group. ACE descriptors are +a highly generalizable atomic descriptor, encoding the radial and angular +distribution of neighbor atoms, up to arbitrary bond order (rank). The +detailed mathematical definition is given in the paper by +:ref:`(Drautz) `. These descriptors are used in the +:doc:`pace pair_style `. Quantities obtained from `compute pace` +are related to those used in :doc:`pace pair_style ` to +evaluate atomic energies, forces, and stresses for linear ACE models. +For example, the energy for a linear ACE model is calculated as: +:math:`E=\sum_i^{N\_atoms} \sum_{\boldsymbol{\nu}} c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\boldsymbol{\nu}}}`. +The ACE descriptors for atom `i` :math:`B_{i,\boldsymbol{\nu}}`, and +:math:`c_{\nu}` are linear model parameters. The detailed definition +and indexing convention for ACE descriptors is given in :ref:`(Drautz) `. +In short, body order :math:`N`, angular character, radial character, +and chemical elements in the *N-body* descriptor are encoded by :math:`\nu`. +In the :doc:`pace pair_style `, the linear model parameters +and the ACE descriptors are combined for efficient evaluation of energies +and forces. The details and benefits of this efficient implementation are +given in :ref:`(Lysogorskiy) `. et. al, but the combined +descriptors and linear model parameters for the purposes of `compute pace` +may be expressed in terms of the ACE descriptors mentioned above. + +:math:`c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\nu}}= \sum_{\boldsymbol{\nu}' \in \boldsymbol{\nu} } \big[ c_{\boldsymbol{\nu}} C(\boldsymbol{\nu}') \big] A_{i,\boldsymbol{\nu}'}` + +where the bracketed terms on the right-hand side are the combined functions +with linear model parameters typically provided in the `.yace` potential +file for `pace pair_style`. When these bracketed terms are multiplied by the +products of the atomic base from :ref:`(Drautz) `, +:math:`A_{i,\boldsymbol{\nu'}`, the ACE descriptors are recovered but they +are also scaled by linear model parameters. The generalized coupling coefficients, +written in short-hand here as :math:`C(\boldsymbol{\nu}')`, are the generalized +Clebsch-Gordan or generalized Wigner symbols. It may be desirable to reverse the +combination of these descriptors and the linear model parameters so that the +ACE descriptors themselves may be used. The ACE descriptors and their gradients +are often used when training ACE models, performing custom data analysis, +generalizing ACE model forms, and other tasks that involve direct computation of +descriptors. The key utility of `compute pace` is that it can compute the ACE +descriptors and gradients so that these tasks can be performed during a LAMMPS +simulation or so that LAMMPS can be used as a driver for tasks like ACE model +parameterization. To see how this command can be used within a Python workflow +to train ACE potentials, see the examples in +`FitSNAP `_. Examples on using outputs from +this compute to construct general ACE potential forms are demonstrated in +:ref:`(Goff) `. The various keywords and inputs to `compute pace` +determine what ACE descriptors and related quantities are returned in a compute +array. + +The coefficient file, `.yace`, ultimately defines the number of ACE +descriptors to be computed, their maximum body-order, the degree of angular +character they have, the degree of radial character they have, the chemical +character (which element-element interactions are encoded by descriptors), +and other hyperparameters defined in :ref:`(Drautz) `. These may +be modeled after the potential files in :doc:`pace pair_style `, +and have the same format. Details on how to generate the coefficient files +to train ACE models may be found in `FitSNAP `_. + +The keyword *bikflag* determines whether or not to list the descriptors of +each atom separately, or sum them together and list in a single row. If +*bikflag* is set to *0* then a single descriptor row is used, which contains +the per-atom ACE descriptors :math:`B_{i,\boldsymbol{\nu}}` summed over all +atoms *i* to produce :math:`B_{\boldsymbol{\nu}}`. If *bikflag* is set to +*1* this is replaced by a separate per-atom ACE descriptor row for each atom. +In this case, the entries in the final column for these rows are set to zero. + +The keyword *dgradflag* determines whether to sum atom gradients or list +them separately. If *dgradflag* is set to 0, the ACE +descriptor gradients w.r.t. atom *j* are summed over all atoms *i'* +of, which may be useful when training linear ACE models on atomic forces. +If *dgradflag* is set to 1, gradients are listed separately for each pair of atoms. +Each row corresponds +to a single term :math:`\frac{\partial {B_{i,\boldsymbol{\nu}}}}{\partial {r}^a_j}` +where :math:`{r}^a_j` is the *a-th* position coordinate of the atom with global +index *j*. This also changes the number of columns to be equal to the number of +ACE descriptors, with 3 additional columns representing the indices :math:`i`, +:math:`j`, and :math:`a`, as explained more in the Output info section below. +The option *dgradflag=1* requires that *bikflag=1*. + +.. note:: + + It is noted here that in contrast to :doc:`pace pair_style `, + the *.yace* file for `compute pace` typically should not contain linear + parameters for an ACE potential. If :math:`c_{\nu}` are included, + the value of the descriptor will not be returned in the `compute` array, + but instead, the energy contribution from that descriptor will be returned. + Do not do this unless it is the desired behavior. + *In short, you should not plug in a '.yace' for a pace potential into this + compute to evaluate descriptors.* + +.. note:: + + *Generalized Clebsch-Gordan or Generalized Wigner symbols (with appropriate + factors) must be used to evaluate ACE descriptors with this compute.* There + are multiple ways to define the generalized coupling coefficients. Because + of this, this compute will not revert your potential file to a coupling + coefficient file. Instead this compute allows the user to supply coupling + coefficients that follow any convention. + +.. note:: + + Using *dgradflag* = 1 produces a global array with :math:`N + 3N^2 + 1` rows + which becomes expensive for systems with more than 1000 atoms. + +.. note:: + + If you have a bonded system, then the settings of :doc:`special_bonds + ` command can remove pairwise interactions between + atoms in the same bond, angle, or dihedral. This is the default + setting for the :doc:`special_bonds ` command, and + means those pairwise interactions do not appear in the neighbor list. + Because this fix uses the neighbor list, it also means those pairs + will not be included in the calculation. One way to get around this, + is to write a dump file, and use the :doc:`rerun ` command to + compute the ACE descriptors for snapshots in the dump file. + The rerun script can use a :doc:`special_bonds ` + command that includes all pairs in the neighbor list. + +---------- + +Output info +""""""""""" + +Compute *pace* evaluates a global array. The columns are arranged into +*ntypes* blocks, listed in order of atom type *I*\ . Each block contains +one column for each ACE descriptor, the same as for compute +*sna/atom*\ in :doc:`compute snap `. A final column contains the corresponding energy, force +component on an atom, or virial stress component. The rows of the array +appear in the following order: + +* 1 row: *pace* average descriptor values for all atoms of type *I* +* 3\*\ *n* force rows: quantities, with derivatives w.r.t. x, y, and z coordinate of atom *i* appearing in consecutive rows. The atoms are sorted based on atom ID and run up to the total number of atoms, *n*. +* 6 rows: *virial* quantities summed for all atoms of type *I* + +For example, if :math:`\# \; B_{i, \boldsymbol{\nu}}` =30 and ntypes=1, the number of columns in the +The number of columns in the global array generated by *pace* are 31, and +931, respectively, while the number of rows is 1+3\*\ *n*\ +6, where *n* +is the total number of atoms. + +If the *bik* keyword is set to 1, the structure of the pace array is expanded. +The first :math:`N` rows of the pace array +correspond to :math:`\# \; B_{i,\boldsymbol{\nu}}` instead of a single row summed over atoms :math:`i`. +In this case, the entries in the final column for these rows +are set to zero. Also, each row contains only non-zero entries for the +columns corresponding to the type of that atom. This is not true in the case +of *dgradflag* keyword = 1 (see below). + +If the *dgradflag* keyword is set to 1, this changes the structure of the +global array completely. +Here the per-atom quantities are replaced with rows corresponding to +descriptor gradient components on single atoms: + +.. math:: + + \frac{\partial {B_{i,\boldsymbol{\nu}} }}{\partial {r}^a_j} + +where :math:`{r}^a_j` is the *a-th* position coordinate of the atom with global +index *j*. The rows are +organized in chunks, where each chunk corresponds to an atom with global index +:math:`j`. The rows in an atom :math:`j` chunk correspond to +atoms with global index :math:`i`. The total number of rows for +these descriptor gradients is therefore :math:`3N^2`. +The number of columns is equal to the number of ACE descriptors, +plus 3 additional left-most columns representing the global atom indices +:math:`i`, :math:`j`, +and Cartesian direction :math:`a` (0, 1, 2, for x, y, z). +The first 3 columns of the first :math:`N` rows belong to the reference +potential force components. The remaining K columns contain the +:math:`B_{i,\boldsymbol{\nu}}` per-atom descriptors corresponding to the non-zero entries +obtained when *bikflag* = 1. +The first column of the last row, after the first +:math:`N + 3N^2` rows, contains the reference potential +energy. The virial components are not used with this option. The total number of +rows is therefore :math:`N + 3N^2 + 1` and the number of columns is :math:`K + 3`. + +These values can be accessed by any command that uses global values +from a compute as input. See the :doc:`Howto output ` doc +page for an overview of LAMMPS output options. + +Restrictions +"""""""""""" + +These computes are part of the ML-PACE package. They are only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +Related commands +"""""""""""""""" + +:doc:`pair_style pace ` +:doc:`pair_style snap ` +:doc:`compute snap ` + +Default +""""""" + +The optional keyword defaults are *bikflag* = 0, +*dgradflag* = 0 + +---------- + +.. _Drautz19: + +**(Drautz)** Drautz, Phys Rev B, 99, 014104 (2019). + +.. _Lysogorskiy21: + +**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). + +.. _Goff23: + +**(Goff)** Goff, Zhang, Negre, Rohskopf, Niklasson, Journal of Chemical Theory and Computation 19, no. 13 (2023). From 83186a50b02c610e2242f96fc8f82cbb1f297470 Mon Sep 17 00:00:00 2001 From: jmgoff <34103038+jmgoff@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:37:45 -0600 Subject: [PATCH 097/300] Update compute_pace.rst typo fix --- doc/src/compute_pace.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index 89c46c4717b..5169c336737 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -65,7 +65,7 @@ where the bracketed terms on the right-hand side are the combined functions with linear model parameters typically provided in the `.yace` potential file for `pace pair_style`. When these bracketed terms are multiplied by the products of the atomic base from :ref:`(Drautz) `, -:math:`A_{i,\boldsymbol{\nu'}`, the ACE descriptors are recovered but they +:math:`A_{i,\boldsymbol{\nu'}}`, the ACE descriptors are recovered but they are also scaled by linear model parameters. The generalized coupling coefficients, written in short-hand here as :math:`C(\boldsymbol{\nu}')`, are the generalized Clebsch-Gordan or generalized Wigner symbols. It may be desirable to reverse the From 5ed10f9127fad992bca73ac5f8980576de3b5a95 Mon Sep 17 00:00:00 2001 From: James Michael Goff Date: Thu, 19 Oct 2023 18:19:55 -0600 Subject: [PATCH 098/300] doc fix --- doc/src/compute_pace.rst | 100 +++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index 5169c336737..97f63c64202 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -12,15 +12,15 @@ Syntax * ID, group-ID are documented in :doc:`compute ` command * pace = style name of this compute command -* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style `) including ACE hyperparameters, bonds, and generalized coupling coefficients +* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style `) including ACE hyperparameters, bonds, and generalized coupling coefficients * keyword = *bikflag* or *dgradflag* .. parsed-literal:: - *bikflag* value = *0* or *1* + *bikflag* value = *0* or *1* *0* = descriptors are summed over atoms of each type *1* = descriptors are listed separately for each atom - *dgradflag* value = *0* or *1* + *dgradflag* value = *0* or *1* *0* = descriptor gradients are summed over atoms of each type *1* = descriptor gradients are listed separately for each atom pair @@ -36,55 +36,55 @@ Examples Description """"""""""" -This compute calculates a set of quantities related to the atomic cluster -expansion (ACE) descriptors of the atoms in a group. ACE descriptors are -a highly generalizable atomic descriptor, encoding the radial and angular -distribution of neighbor atoms, up to arbitrary bond order (rank). The -detailed mathematical definition is given in the paper by -:ref:`(Drautz) `. These descriptors are used in the -:doc:`pace pair_style `. Quantities obtained from `compute pace` -are related to those used in :doc:`pace pair_style ` to -evaluate atomic energies, forces, and stresses for linear ACE models. +This compute calculates a set of quantities related to the atomic cluster +expansion (ACE) descriptors of the atoms in a group. ACE descriptors are +a highly generalizable atomic descriptor, encoding the radial and angular +distribution of neighbor atoms, up to arbitrary bond order (rank). The +detailed mathematical definition is given in the paper by +:ref:`(Drautz) `. These descriptors are used in the +:doc:`pace pair_style `. Quantities obtained from `compute pace` +are related to those used in :doc:`pace pair_style ` to +evaluate atomic energies, forces, and stresses for linear ACE models. For example, the energy for a linear ACE model is calculated as: :math:`E=\sum_i^{N\_atoms} \sum_{\boldsymbol{\nu}} c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\boldsymbol{\nu}}}`. -The ACE descriptors for atom `i` :math:`B_{i,\boldsymbol{\nu}}`, and +The ACE descriptors for atom `i` :math:`B_{i,\boldsymbol{\nu}}`, and :math:`c_{\nu}` are linear model parameters. The detailed definition and indexing convention for ACE descriptors is given in :ref:`(Drautz) `. -In short, body order :math:`N`, angular character, radial character, +In short, body order :math:`N`, angular character, radial character, and chemical elements in the *N-body* descriptor are encoded by :math:`\nu`. -In the :doc:`pace pair_style `, the linear model parameters +In the :doc:`pace pair_style `, the linear model parameters and the ACE descriptors are combined for efficient evaluation of energies -and forces. The details and benefits of this efficient implementation are +and forces. The details and benefits of this efficient implementation are given in :ref:`(Lysogorskiy) `. et. al, but the combined -descriptors and linear model parameters for the purposes of `compute pace` -may be expressed in terms of the ACE descriptors mentioned above. +descriptors and linear model parameters for the purposes of `compute pace` +may be expressed in terms of the ACE descriptors mentioned above. :math:`c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\nu}}= \sum_{\boldsymbol{\nu}' \in \boldsymbol{\nu} } \big[ c_{\boldsymbol{\nu}} C(\boldsymbol{\nu}') \big] A_{i,\boldsymbol{\nu}'}` where the bracketed terms on the right-hand side are the combined functions with linear model parameters typically provided in the `.yace` potential -file for `pace pair_style`. When these bracketed terms are multiplied by the -products of the atomic base from :ref:`(Drautz) `, -:math:`A_{i,\boldsymbol{\nu'}}`, the ACE descriptors are recovered but they +file for `pace pair_style`. When these bracketed terms are multiplied by the +products of the atomic base from :ref:`(Drautz) `, +:math:`A_{i,\boldsymbol{\nu'}}`, the ACE descriptors are recovered but they are also scaled by linear model parameters. The generalized coupling coefficients, -written in short-hand here as :math:`C(\boldsymbol{\nu}')`, are the generalized +written in short-hand here as :math:`C(\boldsymbol{\nu}')`, are the generalized Clebsch-Gordan or generalized Wigner symbols. It may be desirable to reverse the combination of these descriptors and the linear model parameters so that the -ACE descriptors themselves may be used. The ACE descriptors and their gradients -are often used when training ACE models, performing custom data analysis, +ACE descriptors themselves may be used. The ACE descriptors and their gradients +are often used when training ACE models, performing custom data analysis, generalizing ACE model forms, and other tasks that involve direct computation of -descriptors. The key utility of `compute pace` is that it can compute the ACE -descriptors and gradients so that these tasks can be performed during a LAMMPS -simulation or so that LAMMPS can be used as a driver for tasks like ACE model -parameterization. To see how this command can be used within a Python workflow -to train ACE potentials, see the examples in -`FitSNAP `_. Examples on using outputs from +descriptors. The key utility of `compute pace` is that it can compute the ACE +descriptors and gradients so that these tasks can be performed during a LAMMPS +simulation or so that LAMMPS can be used as a driver for tasks like ACE model +parameterization. To see how this command can be used within a Python workflow +to train ACE potentials, see the examples in +`FitSNAP `_. Examples on using outputs from this compute to construct general ACE potential forms are demonstrated in -:ref:`(Goff) `. The various keywords and inputs to `compute pace` -determine what ACE descriptors and related quantities are returned in a compute -array. +:ref:`(Goff) `. The various keywords and inputs to `compute pace` +determine what ACE descriptors and related quantities are returned in a compute +array. -The coefficient file, `.yace`, ultimately defines the number of ACE +The coefficient file, `.yace`, ultimately defines the number of ACE descriptors to be computed, their maximum body-order, the degree of angular character they have, the degree of radial character they have, the chemical character (which element-element interactions are encoded by descriptors), @@ -93,25 +93,25 @@ be modeled after the potential files in :doc:`pace pair_style `, and have the same format. Details on how to generate the coefficient files to train ACE models may be found in `FitSNAP `_. -The keyword *bikflag* determines whether or not to list the descriptors of -each atom separately, or sum them together and list in a single row. If -*bikflag* is set to *0* then a single descriptor row is used, which contains -the per-atom ACE descriptors :math:`B_{i,\boldsymbol{\nu}}` summed over all -atoms *i* to produce :math:`B_{\boldsymbol{\nu}}`. If *bikflag* is set to -*1* this is replaced by a separate per-atom ACE descriptor row for each atom. +The keyword *bikflag* determines whether or not to list the descriptors of +each atom separately, or sum them together and list in a single row. If +*bikflag* is set to *0* then a single descriptor row is used, which contains +the per-atom ACE descriptors :math:`B_{i,\boldsymbol{\nu}}` summed over all +atoms *i* to produce :math:`B_{\boldsymbol{\nu}}`. If *bikflag* is set to +*1* this is replaced by a separate per-atom ACE descriptor row for each atom. In this case, the entries in the final column for these rows are set to zero. The keyword *dgradflag* determines whether to sum atom gradients or list -them separately. If *dgradflag* is set to 0, the ACE +them separately. If *dgradflag* is set to 0, the ACE descriptor gradients w.r.t. atom *j* are summed over all atoms *i'* of, which may be useful when training linear ACE models on atomic forces. If *dgradflag* is set to 1, gradients are listed separately for each pair of atoms. Each row corresponds to a single term :math:`\frac{\partial {B_{i,\boldsymbol{\nu}}}}{\partial {r}^a_j}` where :math:`{r}^a_j` is the *a-th* position coordinate of the atom with global -index *j*. This also changes the number of columns to be equal to the number of -ACE descriptors, with 3 additional columns representing the indices :math:`i`, -:math:`j`, and :math:`a`, as explained more in the Output info section below. +index *j*. This also changes the number of columns to be equal to the number of +ACE descriptors, with 3 additional columns representing the indices :math:`i`, +:math:`j`, and :math:`a`, as explained more in the Output info section below. The option *dgradflag=1* requires that *bikflag=1*. .. note:: @@ -122,17 +122,17 @@ The option *dgradflag=1* requires that *bikflag=1*. the value of the descriptor will not be returned in the `compute` array, but instead, the energy contribution from that descriptor will be returned. Do not do this unless it is the desired behavior. - *In short, you should not plug in a '.yace' for a pace potential into this - compute to evaluate descriptors.* + *In short, you should not plug in a '.yace' for a pace potential into this + compute to evaluate descriptors.* .. note:: - *Generalized Clebsch-Gordan or Generalized Wigner symbols (with appropriate - factors) must be used to evaluate ACE descriptors with this compute.* There + *Generalized Clebsch-Gordan or Generalized Wigner symbols (with appropriate + factors) must be used to evaluate ACE descriptors with this compute.* There are multiple ways to define the generalized coupling coefficients. Because - of this, this compute will not revert your potential file to a coupling + of this, this compute will not revert your potential file to a coupling coefficient file. Instead this compute allows the user to supply coupling - coefficients that follow any convention. + coefficients that follow any convention. .. note:: From 14f0045567adfd724cc598b7d7f082b35b6617b6 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 23 Oct 2023 10:27:18 -0600 Subject: [PATCH 099/300] Fixing missing variable in multi --- src/npair_multi.cpp | 2 ++ src/nstencil_multi.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index e74e16470ac..7cfb3b836bc 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -92,6 +92,8 @@ void NPairMulti::build(NeighList *list) for (i = 0; i < nlocal; i++) { n = 0; neighptr = ipage->vget(); + + itag = tag[i]; itype = type[i]; icollection = collection[i]; xtmp = x[i][0]; diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index 8e504cc9b93..a73215a0586 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -95,6 +95,8 @@ void NStencilMulti::create() // Half and ortho stencils include central bin first // This preserves the historical order of the neighbor list // as the old npair classes used to separately parse the central bin first + // This !TRI condition (and the one below) are now unnecessary + // since triclinic only uses full stencils - kept the flags for clarity if (HALF && (!TRI)) if (half_flag) stencil_multi[icollection][jcollection][ns++] = 0; @@ -119,7 +121,7 @@ void NStencilMulti::create() } } } - if (bin_distance_multi(i,j,k,bin_collection) < cutsq) + if (bin_distance_multi(i, j, k, bin_collection) < cutsq) stencil_multi[icollection][jcollection][ns++] = k * mbiny * mbinx + j * mbinx + i; } } From 3536cf9db968a20ad6d7fca9006b2b99f4f4af94 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 23 Oct 2023 12:59:13 -0600 Subject: [PATCH 100/300] Adding triclinic patch to intel stencil --- src/INTEL/nstencil_bin_intel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/INTEL/nstencil_bin_intel.cpp b/src/INTEL/nstencil_bin_intel.cpp index 36a79e29976..4b7dc31f46f 100644 --- a/src/INTEL/nstencil_bin_intel.cpp +++ b/src/INTEL/nstencil_bin_intel.cpp @@ -32,8 +32,8 @@ void NStencilBinIntel::create() // For half stencils, only the upper plane is needed int sy_min = sy; int sz_min = sz; - if (HALF && (!DIM_3D)) sy_min = 0; - if (HALF && DIM_3D) sz_min = 0; + if ((!TRI) && HALF && (!DIM_3D)) sy_min = 0; + if ((!TRI) && HALF && DIM_3D) sz_min = 0; nstencil = 0; From 51577eff2ccde5a9bd734ac5f5e73f733adbf521 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 23 Oct 2023 16:14:56 -0600 Subject: [PATCH 101/300] Merging atomonly npair styles, minor fixes --- src/OPENMP/npair_bin_atomonly_omp.cpp | 202 -------------------------- src/OPENMP/npair_bin_atomonly_omp.h | 78 ---------- src/OPENMP/npair_bin_omp.cpp | 133 ++++++++++------- src/OPENMP/npair_bin_omp.h | 60 ++++++-- src/OPENMP/npair_multi_old_omp.cpp | 4 +- src/OPENMP/npair_multi_omp.cpp | 127 +++++++++------- src/OPENMP/npair_multi_omp.h | 74 +++++++--- src/OPENMP/npair_respa_bin_omp.cpp | 4 +- src/npair_bin.cpp | 143 ++++++++++-------- src/npair_bin.h | 54 +++++-- src/npair_bin_atomonly.cpp | 180 ----------------------- src/npair_bin_atomonly.h | 77 ---------- src/npair_multi.cpp | 137 ++++++++++------- src/npair_multi.h | 76 +++++++--- src/npair_multi_old.cpp | 6 +- src/npair_respa_bin.cpp | 4 +- src/nstencil_multi_old.cpp | 2 +- 17 files changed, 540 insertions(+), 821 deletions(-) delete mode 100644 src/OPENMP/npair_bin_atomonly_omp.cpp delete mode 100644 src/OPENMP/npair_bin_atomonly_omp.h delete mode 100644 src/npair_bin_atomonly.cpp delete mode 100644 src/npair_bin_atomonly.h diff --git a/src/OPENMP/npair_bin_atomonly_omp.cpp b/src/OPENMP/npair_bin_atomonly_omp.cpp deleted file mode 100644 index 2ddb6a109d6..00000000000 --- a/src/OPENMP/npair_bin_atomonly_omp.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_bin_atomonly_omp.h" -#include "npair_omp.h" -#include "omp_compat.h" - -#include "atom.h" -#include "error.h" -#include "force.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -template -NPairBinAtomonlyOmp::NPairBinAtomonlyOmp(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - Full: - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j - Half + Newtoff: - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - Half + Newton: - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -template -void NPairBinAtomonlyOmp::build(NeighList *list) -{ - const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; - const double delta = 0.01 * force->angstrom; - - NPAIR_OMP_INIT; -#if defined(_OPENMP) -#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) -#endif - NPAIR_OMP_SETUP(nlocal); - - int i, j, jh, k, n, itype, jtype, ibin, bin_start; - tagint itag, jtag; - double xtmp, ytmp, ztmp, delx, dely, delz, rsq, radsum, cut, cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *tag = atom->tag; - tagint *molecule = atom->molecule; - - int history = list->history; - int mask_history = 1 << HISTBITS; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - // loop over owned atoms, storing neighbors - - for (i = ifrom; i < ito; i++) { - n = 0; - neighptr = ipage.vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin + stencil[k]]; - if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { - // Half neighbor list, newton on, orthonormal - // loop over rest of atoms in i's bin, ghosts are at end of linked list - bin_start = bins[i]; - } - } - - for (j = bin_start; j >= 0; j = bins[j]) { - if (!HALF) { - // Full neighbor list - // only skip i = j - if (i == j) continue; - } else if (!NEWTON) { - // Half neighbor list, newton off - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - if (j <= i) continue; - } else if (TRI) { - // Half neighbor list, newton on, triclinic - // for triclinic, bin stencil is full in all 3 dims - // must use itag/jtag to eliminate half the I/J interactions - // cannot use I/J exact coord comparision - // b/c transforming orthog -> lambda -> orthog for ghost atoms - // with an added PBC offset can shift all 3 coords by epsilon - if (j <= i) continue; - if (j >= nlocal) { - jtag = tag[j]; - if (itag > jtag) { - if ((itag + jtag) % 2 == 0) continue; - } else if (itag < jtag) { - if ((itag + jtag) % 2 == 1) continue; - } else { - if (fabs(x[j][2] - ztmp) > delta) { - if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1] - ytmp) > delta) { - if (x[j][1] < ytmp) continue; - } else { - if (x[j][0] < xtmp) continue; - } - } - } - } else { - // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil, except for i's bin - - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - } - - 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 (SIZE) { - radsum = radius[i] + radius[j]; - cut = radsum + skin; - cutsq = cut * cut; - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum * radsum) - jh = jh ^ mask_history; - neighptr[n++] = jh; - } - } else { - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - ilist[i] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - NPAIR_OMP_CLOSE; - list->inum = nlocal; - if (!HALF) list->gnum = 0; -} - -namespace LAMMPS_NS { -template class NPairBinAtomonlyOmp<0,1,0,0>; -template class NPairBinAtomonlyOmp<1,0,0,0>; -template class NPairBinAtomonlyOmp<1,1,0,0>; -template class NPairBinAtomonlyOmp<1,1,1,0>; -template class NPairBinAtomonlyOmp<0,1,0,1>; -template class NPairBinAtomonlyOmp<1,0,0,1>; -template class NPairBinAtomonlyOmp<1,1,0,1>; -template class NPairBinAtomonlyOmp<1,1,1,1>; -} diff --git a/src/OPENMP/npair_bin_atomonly_omp.h b/src/OPENMP/npair_bin_atomonly_omp.h deleted file mode 100644 index c4884868986..00000000000 --- a/src/OPENMP/npair_bin_atomonly_omp.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -typedef NPairBinAtomonlyOmp<0, 1, 0, 0> NPairFullBinAtomonlyOmp; -NPairStyle(full/bin/atomonly/omp, - NPairFullBinAtomonlyOmp, - NP_FULL | NP_BIN | NP_OMP | NP_ATOMONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonlyOmp<1, 0, 0, 0> NPairHalfBinNewtoffAtomonlyOmp; -NPairStyle(half/bin/newtoff/atomonly/omp, - NPairHalfBinNewtoffAtomonlyOmp, - NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonlyOmp<1, 1, 0, 0> NPairHalfBinNewtonAtomonlyOmp; -NPairStyle(half/bin/newton/atomonly/omp, - NPairHalfBinNewtonAtomonlyOmp, - NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); - -typedef NPairBinAtomonlyOmp<1, 1, 1, 0> NPairHalfBinNewtonTriAtomonlyOmp; -NPairStyle(half/bin/newton/tri/atomonly/omp, - NPairHalfBinNewtonTriAtomonlyOmp, - NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); - -typedef NPairBinAtomonlyOmp<0, 1, 0, 1> NPairFullSizeBinAtomonlyOmp; -NPairStyle(full/size/bin/atomonly/omp, - NPairFullSizeBinAtomonlyOmp, - NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonlyOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffAtomonlyOmp; -NPairStyle(half/size/bin/newtoff/atomonly/omp, - NPairHalfSizeBinNewtoffAtomonlyOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonlyOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonAtomonlyOmp; -NPairStyle(half/size/bin/newton/atomonly/omp, - NPairHalfSizeBinNewtonAtomonlyOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); - -typedef NPairBinAtomonlyOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriAtomonlyOmp; -NPairStyle(half/size/bin/newton/tri/atomonly/omp, - NPairHalfSizeBinNewtonTriAtomonlyOmp, - NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); -// clang-format on -#else - - -#ifndef LMP_NPAIR_BIN_ATOMONLY_OMP_H -#define LMP_NPAIR_BIN_ATOMONLY_OMP_H - -#include "npair.h" - -namespace LAMMPS_NS { - -template -class NPairBinAtomonlyOmp : public NPair { - public: - NPairBinAtomonlyOmp(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/OPENMP/npair_bin_omp.cpp b/src/OPENMP/npair_bin_omp.cpp index bbfa3323f1a..81b5e085d62 100644 --- a/src/OPENMP/npair_bin_omp.cpp +++ b/src/OPENMP/npair_bin_omp.cpp @@ -29,8 +29,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NPairBinOmp::NPairBinOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBinOmp::NPairBinOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- Full: @@ -47,8 +47,8 @@ NPairBinOmp::NPairBinOmp(LAMMPS *lmp) : NPair(lmp) {} every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBinOmp::build(NeighList *list) +template +void NPairBinOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; @@ -101,10 +101,12 @@ void NPairBinOmp::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; + if (!ATOMONLY) { + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } } // loop over all atoms in surrounding bins in stencil including self @@ -113,9 +115,9 @@ void NPairBinOmp::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; - if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { + bin_start = binhead[ibin + stencil[k]]; + if (HALF && NEWTON && (!TRI)) { + if (stencil[k] == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -159,7 +161,7 @@ void NPairBinOmp::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list @@ -187,45 +189,58 @@ void NPairBinOmp::build(NeighList *list) cut = radsum + skin; cutsq = cut * cut; - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum * radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx, dely, delz)) - neighptr[n++] = jh; - else if (which > 0) - neighptr[n++] = jh ^ (which << SBBITS); - } else + if (ATOMONLY) { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; neighptr[n++] = jh; + } + } else { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx, dely, delz)) + neighptr[n++] = jh; + else if (which > 0) + neighptr[n++] = jh ^ (which << SBBITS); + } else + neighptr[n++] = jh; + } } } else { - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - 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) + if (ATOMONLY) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; - 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; + } } } } @@ -243,12 +258,20 @@ void NPairBinOmp::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBinOmp<0,1,0,0>; -template class NPairBinOmp<1,0,0,0>; -template class NPairBinOmp<1,1,0,0>; -template class NPairBinOmp<1,1,1,0>; -template class NPairBinOmp<0,1,0,1>; -template class NPairBinOmp<1,0,0,1>; -template class NPairBinOmp<1,1,0,1>; -template class NPairBinOmp<1,1,1,1>; +template class NPairBinOmp<0,1,0,0,0>; +template class NPairBinOmp<1,0,0,0,0>; +template class NPairBinOmp<1,1,0,0,0>; +template class NPairBinOmp<1,1,1,0,0>; +template class NPairBinOmp<0,1,0,1,0>; +template class NPairBinOmp<1,0,0,1,0>; +template class NPairBinOmp<1,1,0,1,0>; +template class NPairBinOmp<1,1,1,1,0>; +template class NPairBinOmp<0,1,0,0,1>; +template class NPairBinOmp<1,0,0,0,1>; +template class NPairBinOmp<1,1,0,0,1>; +template class NPairBinOmp<1,1,1,0,1>; +template class NPairBinOmp<0,1,0,1,1>; +template class NPairBinOmp<1,0,0,1,1>; +template class NPairBinOmp<1,1,0,1,1>; +template class NPairBinOmp<1,1,1,1,1>; } diff --git a/src/OPENMP/npair_bin_omp.h b/src/OPENMP/npair_bin_omp.h index 595b789d92b..dfe5429ff44 100644 --- a/src/OPENMP/npair_bin_omp.h +++ b/src/OPENMP/npair_bin_omp.h @@ -13,47 +13,89 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBinOmp<0, 1, 0, 0> NPairFullBinOmp; +typedef NPairBinOmp<0, 1, 0, 0, 0> NPairFullBinOmp; NPairStyle(full/bin/omp, NPairFullBinOmp, NP_FULL | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinOmp<1, 0, 0, 0> NPairHalfBinNewtoffOmp; +typedef NPairBinOmp<1, 0, 0, 0, 0> NPairHalfBinNewtoffOmp; NPairStyle(half/bin/newtoff/omp, NPairHalfBinNewtoffOmp, NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinOmp<1, 1, 0, 0> NPairHalfBinNewtonOmp; +typedef NPairBinOmp<1, 1, 0, 0, 0> NPairHalfBinNewtonOmp; NPairStyle(half/bin/newton/omp, NPairHalfBinNewtonOmp, NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBinOmp<1, 1, 1, 0> NPairHalfBinNewtonTriOmp; +typedef NPairBinOmp<1, 1, 1, 0, 0> NPairHalfBinNewtonTriOmp; NPairStyle(half/bin/newton/tri/omp, NPairHalfBinNewtonTriOmp, NP_HALF | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); -typedef NPairBinOmp<0, 1, 0, 1> NPairFullSizeBinOmp; +typedef NPairBinOmp<0, 1, 0, 1, 0> NPairFullSizeBinOmp; NPairStyle(full/size/bin/omp, NPairFullSizeBinOmp, NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinOmp<1, 0, 0, 1> NPairHalfSizeBinNewtoffOmp; +typedef NPairBinOmp<1, 0, 0, 1, 0> NPairHalfSizeBinNewtoffOmp; NPairStyle(half/size/bin/newtoff/omp, NPairHalfSizeBinNewtoffOmp, NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBinOmp<1, 1, 0, 1> NPairHalfSizeBinNewtonOmp; +typedef NPairBinOmp<1, 1, 0, 1, 0> NPairHalfSizeBinNewtonOmp; NPairStyle(half/size/bin/newton/omp, NPairHalfSizeBinNewtonOmp, NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBinOmp<1, 1, 1, 1> NPairHalfSizeBinNewtonTriOmp; +typedef NPairBinOmp<1, 1, 1, 1, 0> NPairHalfSizeBinNewtonTriOmp; NPairStyle(half/size/bin/newton/tri/omp, NPairHalfSizeBinNewtonTriOmp, NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinOmp<0, 1, 0, 0, 1> NPairFullBinAtomonlyOmp; +NPairStyle(full/bin/atomonly/omp, + NPairFullBinAtomonlyOmp, + NP_FULL | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 0, 1> NPairHalfBinNewtoffAtomonlyOmp; +NPairStyle(half/bin/newtoff/atomonly/omp, + NPairHalfBinNewtoffAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 0, 1> NPairHalfBinNewtonAtomonlyOmp; +NPairStyle(half/bin/newton/atomonly/omp, + NPairHalfBinNewtonAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 0, 1> NPairHalfBinNewtonTriAtomonlyOmp; +NPairStyle(half/bin/newton/tri/atomonly/omp, + NPairHalfBinNewtonTriAtomonlyOmp, + NP_HALF | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBinOmp<0, 1, 0, 1, 1> NPairFullSizeBinAtomonlyOmp; +NPairStyle(full/size/bin/atomonly/omp, + NPairFullSizeBinAtomonlyOmp, + NP_FULL | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 0, 0, 1, 1> NPairHalfSizeBinNewtoffAtomonlyOmp; +NPairStyle(half/size/bin/newtoff/atomonly/omp, + NPairHalfSizeBinNewtoffAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBinOmp<1, 1, 0, 1, 1> NPairHalfSizeBinNewtonAtomonlyOmp; +NPairStyle(half/size/bin/newton/atomonly/omp, + NPairHalfSizeBinNewtonAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBinOmp<1, 1, 1, 1, 1> NPairHalfSizeBinNewtonTriAtomonlyOmp; +NPairStyle(half/size/bin/newton/tri/atomonly/omp, + NPairHalfSizeBinNewtonTriAtomonlyOmp, + NP_HALF | NP_SIZE | NP_BIN | NP_OMP | NP_ATOMONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -64,7 +106,7 @@ NPairStyle(half/size/bin/newton/tri/omp, namespace LAMMPS_NS { -template +template class NPairBinOmp : public NPair { public: NPairBinOmp(class LAMMPS *); diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp index 893af5a6b7b..894ff9b987b 100644 --- a/src/OPENMP/npair_multi_old_omp.cpp +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -118,8 +118,8 @@ void NPairMultiOldOmp::build(NeighList *list) cutnsq = cutneighsq[itype]; ns = nstencil_multi_old[itype]; for (k = 0; k < ns; k++) { - bin_start = binhead[ibin+stencil[k]]; - if (stencil[k] == 0) { + bin_start = binhead[ibin+s[k]]; + if (s[k] == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index 06b26f60663..7999ff5029b 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -30,8 +30,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NPairMultiOmp::NPairMultiOmp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairMultiOmp::NPairMultiOmp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multi stencil is icollection-jcollection dependent @@ -49,8 +49,8 @@ NPairMultiOmp::NPairMultiOmp(LAMMPS *lmp) : NPair(lmp) every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairMultiOmp::build(NeighList *list) +template +void NPairMultiOmp::build(NeighList *list) { const int nlocal = (includegroup) ? atom->nfirst : atom->nlocal; const int molecular = atom->molecular; @@ -104,10 +104,12 @@ void NPairMultiOmp::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; + if (!ATOMONLY) { + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } } ibin = atom2bin[i]; @@ -214,46 +216,59 @@ void NPairMultiOmp::build(NeighList *list) cut = radsum + skin; cutsq = cut * cut; - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum * radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx, dely, delz)) - neighptr[n++] = jh; - else if (which > 0) - neighptr[n++] = jh ^ (which << SBBITS); - } else + if (ATOMONLY) { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; neighptr[n++] = jh; + } + } else { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx, dely, delz)) + neighptr[n++] = jh; + else if (which > 0) + neighptr[n++] = jh ^ (which << SBBITS); + } else + neighptr[n++] = jh; + } } } else { - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - 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) + if (ATOMONLY) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; - 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; + } } } } @@ -272,12 +287,20 @@ void NPairMultiOmp::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairMultiOmp<0,1,0,0>; -template class NPairMultiOmp<1,0,0,0>; -template class NPairMultiOmp<1,1,0,0>; -template class NPairMultiOmp<1,1,1,0>; -template class NPairMultiOmp<0,1,0,1>; -template class NPairMultiOmp<1,0,0,1>; -template class NPairMultiOmp<1,1,0,1>; -template class NPairMultiOmp<1,1,1,1>; +template class NPairMultiOmp<0,1,0,0,0>; +template class NPairMultiOmp<1,0,0,0,0>; +template class NPairMultiOmp<1,1,0,0,0>; +template class NPairMultiOmp<1,1,1,0,0>; +template class NPairMultiOmp<0,1,0,1,0>; +template class NPairMultiOmp<1,0,0,1,0>; +template class NPairMultiOmp<1,1,0,1,0>; +template class NPairMultiOmp<1,1,1,1,0>; +template class NPairMultiOmp<0,1,0,0,1>; +template class NPairMultiOmp<1,0,0,0,1>; +template class NPairMultiOmp<1,1,0,0,1>; +template class NPairMultiOmp<1,1,1,0,1>; +template class NPairMultiOmp<0,1,0,1,1>; +template class NPairMultiOmp<1,0,0,1,1>; +template class NPairMultiOmp<1,1,0,1,1>; +template class NPairMultiOmp<1,1,1,1,1>; } diff --git a/src/OPENMP/npair_multi_omp.h b/src/OPENMP/npair_multi_omp.h index dd85ca8a8e2..bcb01c87cf3 100644 --- a/src/OPENMP/npair_multi_omp.h +++ b/src/OPENMP/npair_multi_omp.h @@ -13,45 +13,85 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairMultiOmp<0, 1, 0, 0> NPairFullMultiOmp; +typedef NPairMultiOmp<0, 1, 0, 0, 0> NPairFullMultiOmp; NPairStyle(full/multi/omp, NPairFullMultiOmp, - NP_FULL | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMultiOmp<1, 0, 0, 0> NPairHalfMultiNewtoffOmp; +typedef NPairMultiOmp<1, 0, 0, 0, 0> NPairHalfMultiNewtoffOmp; NPairStyle(half/multi/newtoff/omp, NPairHalfMultiNewtoffOmp, - NP_HALF | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMultiOmp<1, 1, 0, 0> NPairHalfMultiNewtonOmp; +typedef NPairMultiOmp<1, 1, 0, 0, 0> NPairHalfMultiNewtonOmp; NPairStyle(half/multi/newton/omp, NPairHalfMultiNewtonOmp, - NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_ORTHO); -typedef NPairMultiOmp<1, 1, 1, 0> NPairHalfMultiNewtonTriOmp; +typedef NPairMultiOmp<1, 1, 1, 0, 0> NPairHalfMultiNewtonTriOmp; NPairStyle(half/multi/newton/tri/omp, NPairHalfMultiNewtonTriOmp, - NP_HALF | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_TRI); -typedef NPairMultiOmp<0, 1, 0, 1> NPairFullSizeMultiOmp; +typedef NPairMultiOmp<0, 1, 0, 1, 0> NPairFullSizeMultiOmp; NPairStyle(full/size/multi/omp, NPairFullSizeMultiOmp, - NP_FULL | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_FULL | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMultiOmp<1, 0, 0, 1> NPairHalfSizeMultiNewtoffOmp; +typedef NPairMultiOmp<1, 0, 0, 1, 0> NPairHalfSizeMultiNewtoffOmp; NPairStyle(half/size/multi/newtoff/omp, NPairHalfSizeMultiNewtoffOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMultiOmp<1, 1, 0, 1> NPairHalfSizeMultiNewtonOmp; +typedef NPairMultiOmp<1, 1, 0, 1, 0> NPairHalfSizeMultiNewtonOmp; NPairStyle(half/size/multi/newton/omp, NPairHalfSizeMultiNewtonOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_ORTHO); -typedef NPairMultiOmp<1, 1, 1, 1> NPairHalfSizeMultiNewtonTriOmp; +typedef NPairMultiOmp<1, 1, 1, 1, 0> NPairHalfSizeMultiNewtonTriOmp; NPairStyle(half/size/multi/newton/tri/omp, NPairHalfSizeMultiNewtonTriOmp, - NP_HALF | NP_SIZE | NP_MULTI | NP_OMP | NP_NEWTON | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOmp<0, 1, 0, 0, 1> NPairFullMultiAtomonlyOmp; +NPairStyle(full/multi/atomonly/omp, + NPairFullMultiAtomonlyOmp, + NP_FULL | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 0, 1> NPairHalfMultiAtomonlyNewtoffOmp; +NPairStyle(half/multi/atomonly/newtoff/omp, + NPairHalfMultiAtomonlyNewtoffOmp, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 0, 1> NPairHalfMultiAtomonlyNewtonOmp; +NPairStyle(half/multi/atomonly/newton/omp, + NPairHalfMultiAtomonlyNewtonOmp, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 0, 1> NPairHalfMultiAtomonlyNewtonTriOmp; +NPairStyle(half/multi/atomonly/newton/tri/omp, + NPairHalfMultiAtomonlyNewtonTriOmp, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_TRI); + +typedef NPairMultiOmp<0, 1, 0, 1, 1> NPairFullSizeMultiAtomonlyOmp; +NPairStyle(full/size/multi/atomonly/omp, + NPairFullSizeMultiAtomonlyOmp, + NP_FULL | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 0, 0, 1, 1> NPairHalfSizeMultiAtomonlyNewtoffOmp; +NPairStyle(half/size/multi/atomonly/newtoff/omp, + NPairHalfSizeMultiAtomonlyNewtoffOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMultiOmp<1, 1, 0, 1, 1> NPairHalfSizeMultiAtomonlyNewtonOmp; +NPairStyle(half/size/multi/atomonly/newton/omp, + NPairHalfSizeMultiAtomonlyNewtonOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_ORTHO); + +typedef NPairMultiOmp<1, 1, 1, 1, 1> NPairHalfSizeMultiAtomonlyNewtonTriOmp; +NPairStyle(half/size/multi/atomonly/newton/tri/omp, + NPairHalfSizeMultiAtomonlyNewtonTriOmp, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_OMP | NP_NEWTON | NP_TRI); // clang-format on #else @@ -62,7 +102,7 @@ NPairStyle(half/size/multi/newton/tri/omp, namespace LAMMPS_NS { -template +template class NPairMultiOmp : public NPair { public: NPairMultiOmp(class LAMMPS *); diff --git a/src/OPENMP/npair_respa_bin_omp.cpp b/src/OPENMP/npair_respa_bin_omp.cpp index e1a273b20ac..b904e7136bf 100644 --- a/src/OPENMP/npair_respa_bin_omp.cpp +++ b/src/OPENMP/npair_respa_bin_omp.cpp @@ -134,8 +134,8 @@ void NPairRespaBinOmp::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; - if (stencil[k] == 0) { - if (NEWTON && (!TRI)) { + if (NEWTON && (!TRI)) { + if (stencil[k] == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index c8c2d23e446..d72a98e471d 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -28,8 +28,8 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} +template +NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- Full: @@ -46,8 +46,8 @@ NPairBin::NPairBin(LAMMPS *lmp) : NPair(lmp) {} every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairBin::build(NeighList *list) +template +void NPairBin::build(NeighList *list) { int i, j, jh, k, n, itype, jtype, ibin, bin_start, which, imol, iatom, moltemplate; tagint itag, jtag, tagprev; @@ -70,10 +70,12 @@ void NPairBin::build(NeighList *list) int *molindex = atom->molindex; int *molatom = atom->molatom; Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) - moltemplate = 1; - else - moltemplate = 0; + if (!ATOMONLY) { + if (molecular == Atom::TEMPLATE) + moltemplate = 1; + else + moltemplate = 0; + } int history = list->history; int mask_history = 1 << HISTBITS; @@ -95,18 +97,20 @@ void NPairBin::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; + if (!ATOMONLY) { + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } } ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin + stencil[k]]; - if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { + if (HALF && NEWTON && (!TRI)) { + if (stencil[k] == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -149,7 +153,7 @@ void NPairBin::build(NeighList *list) } } else { // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil,except for i's bin + // store every pair for every bin in stencil, except for i's bin if (stencil[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list @@ -177,46 +181,59 @@ void NPairBin::build(NeighList *list) cut = radsum + skin; cutsq = cut * cut; - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum * radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx, dely, delz)) - neighptr[n++] = jh; - else if (which > 0) - neighptr[n++] = jh ^ (which << SBBITS); - } else + if (ATOMONLY) { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < (radsum * radsum)) + jh = jh ^ mask_history; neighptr[n++] = jh; + } + } else { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < (radsum * radsum)) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx, dely, delz)) + neighptr[n++] = jh; + else if (which > 0) + neighptr[n++] = jh ^ (which << SBBITS); + } else + neighptr[n++] = jh; + } } } else { - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - 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) + if (ATOMONLY) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; - 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; + } } } } @@ -234,12 +251,20 @@ void NPairBin::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairBin<0,1,0,0>; -template class NPairBin<1,0,0,0>; -template class NPairBin<1,1,0,0>; -template class NPairBin<1,1,1,0>; -template class NPairBin<0,1,0,1>; -template class NPairBin<1,0,0,1>; -template class NPairBin<1,1,0,1>; -template class NPairBin<1,1,1,1>; +template class NPairBin<0,1,0,0,0>; +template class NPairBin<1,0,0,0,0>; +template class NPairBin<1,1,0,0,0>; +template class NPairBin<1,1,1,0,0>; +template class NPairBin<0,1,0,1,0>; +template class NPairBin<1,0,0,1,0>; +template class NPairBin<1,1,0,1,0>; +template class NPairBin<1,1,1,1,0>; +template class NPairBin<0,1,0,0,1>; +template class NPairBin<1,0,0,0,1>; +template class NPairBin<1,1,0,0,1>; +template class NPairBin<1,1,1,0,1>; +template class NPairBin<0,1,0,1,1>; +template class NPairBin<1,0,0,1,1>; +template class NPairBin<1,1,0,1,1>; +template class NPairBin<1,1,1,1,1>; } diff --git a/src/npair_bin.h b/src/npair_bin.h index e9cd65fa343..2cec108e46a 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -13,47 +13,83 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairBin<0, 1, 0, 0> NPairFullBin; +typedef NPairBin<0, 1, 0, 0, 0> NPairFullBin; NPairStyle(full/bin, NPairFullBin, NP_FULL | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 0, 0, 0> NPairHalfBinNewtoff; +typedef NPairBin<1, 0, 0, 0, 0> NPairHalfBinNewtoff; NPairStyle(half/bin/newtoff, NPairHalfBinNewtoff, NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 1, 0, 0> NPairHalfBinNewton; +typedef NPairBin<1, 1, 0, 0, 0> NPairHalfBinNewton; NPairStyle(half/bin/newton, NPairHalfBinNewton, NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBin<1, 1, 1, 0> NPairHalfBinNewtonTri; +typedef NPairBin<1, 1, 1, 0, 0> NPairHalfBinNewtonTri; NPairStyle(half/bin/newton/tri, NPairHalfBinNewtonTri, NP_HALF | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); -typedef NPairBin<0, 1, 0, 1> NPairFullSizeBin; +typedef NPairBin<0, 1, 0, 1, 0> NPairFullSizeBin; NPairStyle(full/size/bin, NPairFullSizeBin, NP_FULL | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 0, 0, 1> NPairHalfSizeBinNewtoff; +typedef NPairBin<1, 0, 0, 1, 0> NPairHalfSizeBinNewtoff; NPairStyle(half/size/bin/newtoff, NPairHalfSizeBinNewtoff, NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairBin<1, 1, 0, 1> NPairHalfSizeBinNewton; +typedef NPairBin<1, 1, 0, 1, 0> NPairHalfSizeBinNewton; NPairStyle(half/size/bin/newton, NPairHalfSizeBinNewton, NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairBin<1, 1, 1, 1> NPairHalfSizeBinNewtonTri; +typedef NPairBin<1, 1, 1, 1, 0> NPairHalfSizeBinNewtonTri; NPairStyle(half/size/bin/newton/tri, NPairHalfSizeBinNewtonTri, NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairBin<1, 0, 0, 0, 1> NPairHalfBinAtomonlyNewtoff; +NPairStyle(half/bin/atomonly/newtoff, + NPairHalfBinAtomonlyNewtoff, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0, 0, 1> NPairHalfBinAtomonlyNewton; +NPairStyle(half/bin/atomonly/newton, + NPairHalfBinAtomonlyNewton, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1, 0, 1> NPairHalfBinAtomonlyNewtonTri; +NPairStyle(half/bin/atomonly/newton/tri, + NPairHalfBinAtomonlyNewtonTri, + NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairBin<0, 1, 0, 1, 1> NPairFullSizeBinAtomonly; +NPairStyle(full/size/bin/atomonly, + NPairFullSizeBinAtomonly, + NP_FULL | NP_SIZE | NP_BIN | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 0, 0, 1, 1> NPairHalfSizeBinAtomonlyNewtoff; +NPairStyle(half/size/bin/atomonly/newtoff, + NPairHalfSizeBinAtomonlyNewtoff, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairBin<1, 1, 0, 1, 1> NPairHalfSizeBinAtomonlyNewton; +NPairStyle(half/size/bin/atomonly/newton, + NPairHalfSizeBinAtomonlyNewton, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairBin<1, 1, 1, 1, 1> NPairHalfSizeBinAtomonlyNewtonTri; +NPairStyle(half/size/bin/atomonly/newton/tri, + NPairHalfSizeBinAtomonlyNewtonTri, + NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -64,7 +100,7 @@ NPairStyle(half/size/bin/newton/tri, namespace LAMMPS_NS { -template +template class NPairBin : public NPair { public: NPairBin(class LAMMPS *); diff --git a/src/npair_bin_atomonly.cpp b/src/npair_bin_atomonly.cpp deleted file mode 100644 index 6cdd2e31baa..00000000000 --- a/src/npair_bin_atomonly.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_bin_atomonly.h" - -#include "atom.h" -#include "error.h" -#include "neighbor.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; -using namespace NeighConst; - -/* ---------------------------------------------------------------------- */ - -template -NPairBinAtomonly::NPairBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - Full: - binned neighbor list construction for all neighbors - every neighbor pair appears in list of both atoms i and j - Half + Newtoff: - binned neighbor list construction with partial Newton's 3rd law - each owned atom i checks own bin and other bins in stencil - pair stored once if i,j are both owned and i < j - pair stored by me if j is ghost (also stored by proc owning j) - Half + Newton: - binned neighbor list construction with full Newton's 3rd law - each owned atom i checks its own bin and other bins in Newton stencil - every pair stored exactly once by some processor -------------------------------------------------------------------------- */ - -template -void NPairBinAtomonly::build(NeighList *list) -{ - int i, j, jh, k, n, itype, jtype, ibin, bin_start; - double xtmp, ytmp, ztmp, delx, dely, delz, rsq; - double radsum, cut, cutsq; - int *neighptr; - - double **x = atom->x; - double *radius = atom->radius; - int *type = atom->type; - int *mask = atom->mask; - tagint *molecule = atom->molecule; - int nlocal = atom->nlocal; - if (includegroup) nlocal = atom->nfirst; - - int history = list->history; - int mask_history = 1 << HISTBITS; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int inum = 0; - ipage->reset(); - - for (i = 0; i < nlocal; i++) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - ibin = atom2bin[i]; - - for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin + stencil[k]]; - if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { - // Half neighbor list, newton on, orthonormal - // loop over rest of atoms in i's bin, ghosts are at end of linked list - bin_start = bins[i]; - } - } - - for (j = bin_start; j >= 0; j = bins[j]) { - if (!HALF) { - // Full neighbor list - // only skip i = j - if (i == j) continue; - } else if (!NEWTON) { - // Half neighbor list, newton off - // only store pair if i < j - // stores own/own pairs only once - // stores own/ghost pairs on both procs - if (j <= i) continue; - } else if (TRI) { - // Half neighbor list, newton on, triclinic - // pairs for atoms j "below" i are excluded - // below = lower z or (equal z and lower y) or (equal zy and lower x) - // (equal zyx and j <= i) - // latter excludes self-self interaction but allows superposed atoms - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp) { - if (x[j][0] < xtmp) continue; - if (x[j][0] == xtmp && j <= i) continue; - } - } - } else { - // Half neighbor list, newton on, orthonormal - // store every pair for every bin in stencil, except for i's bin - - if (stencil[k] == 0) { - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the "right" of i - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } - } - } - } - - 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 (SIZE) { - radsum = radius[i] + radius[j]; - cut = radsum + skin; - cutsq = cut * cut; - - if (rsq <= cutsq) { - jh = j; - if (history && rsq < (radsum * radsum)) - jh = jh ^ mask_history; - neighptr[n++] = jh; - } - } else { - if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; - } - } - } - - 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"); - } - - list->inum = inum; - if (!HALF) list->gnum = 0; -} - -namespace LAMMPS_NS { -template class NPairBinAtomonly<0,1,0,0>; -template class NPairBinAtomonly<1,0,0,0>; -template class NPairBinAtomonly<1,1,0,0>; -template class NPairBinAtomonly<1,1,1,0>; -template class NPairBinAtomonly<0,1,0,1>; -template class NPairBinAtomonly<1,0,0,1>; -template class NPairBinAtomonly<1,1,0,1>; -template class NPairBinAtomonly<1,1,1,1>; -} diff --git a/src/npair_bin_atomonly.h b/src/npair_bin_atomonly.h deleted file mode 100644 index febe7c2f0e1..00000000000 --- a/src/npair_bin_atomonly.h +++ /dev/null @@ -1,77 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -typedef NPairBinAtomonly<0, 1, 0, 0> NPairFullBinAtomonly; -NPairStyle(full/bin/atomonly, - NPairFullBinAtomonly, - NP_FULL | NP_BIN | NP_ATOMONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonly<1, 0, 0, 0> NPairHalfBinAtomonlyNewtoff; -NPairStyle(half/bin/atomonly/newtoff, - NPairHalfBinAtomonlyNewtoff, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonly<1, 1, 0, 0> NPairHalfBinAtomonlyNewton; -NPairStyle(half/bin/atomonly/newton, - NPairHalfBinAtomonlyNewton, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); - -typedef NPairBinAtomonly<1, 1, 1, 0> NPairHalfBinAtomonlyNewtonTri; -NPairStyle(half/bin/atomonly/newton/tri, - NPairHalfBinAtomonlyNewtonTri, - NP_HALF | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); - -typedef NPairBinAtomonly<0, 1, 0, 1> NPairFullSizeBinAtomonly; -NPairStyle(full/size/bin/atomonly, - NPairFullSizeBinAtomonly, - NP_FULL | NP_SIZE | NP_BIN | NP_ATOMONLY | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonly<1, 0, 0, 1> NPairHalfSizeBinAtomonlyNewtoff; -NPairStyle(half/size/bin/atomonly/newtoff, - NPairHalfSizeBinAtomonlyNewtoff, - NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); - -typedef NPairBinAtomonly<1, 1, 0, 1> NPairHalfSizeBinAtomonlyNewton; -NPairStyle(half/size/bin/atomonly/newton, - NPairHalfSizeBinAtomonlyNewton, - NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); - -typedef NPairBinAtomonly<1, 1, 1, 1> NPairHalfSizeBinAtomonlyNewtonTri; -NPairStyle(half/size/bin/atomonly/newton/tri, - NPairHalfSizeBinAtomonlyNewtonTri, - NP_HALF | NP_SIZE | NP_BIN | NP_ATOMONLY | NP_NEWTON | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_BIN_ATOMONLY_H -#define LMP_NPAIR_BIN_ATOMONLY_H - -#include "npair.h" - -namespace LAMMPS_NS { - -template -class NPairBinAtomonly : public NPair { - public: - NPairBinAtomonly(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 7cfb3b836bc..37c6482a6a0 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -29,8 +29,8 @@ using namespace NeighConst; /* ---------------------------------------------------------------------- */ -template -NPairMulti::NPairMulti(LAMMPS *lmp) : NPair(lmp) {} +template +NPairMulti::NPairMulti(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- multi stencil is icollection-jcollection dependent @@ -48,8 +48,8 @@ NPairMulti::NPairMulti(LAMMPS *lmp) : NPair(lmp) {} every pair stored exactly once by some processor ------------------------------------------------------------------------- */ -template -void NPairMulti::build(NeighList *list) +template +void NPairMulti::build(NeighList *list) { int i, j, jh, js, k, n, itype, jtype, ibin, jbin, icollection, jcollection, which, ns, imol, iatom, moltemplate; tagint itag, jtag, tagprev; @@ -73,10 +73,12 @@ void NPairMulti::build(NeighList *list) int *molindex = atom->molindex; int *molatom = atom->molatom; Molecule **onemols = atom->avec->onemols; - if (molecular == Atom::TEMPLATE) - moltemplate = 1; - else - moltemplate = 0; + if (!ATOMONLY) { + if (molecular == Atom::TEMPLATE) + moltemplate = 1; + else + moltemplate = 0; + } int history = list->history; int mask_history = 1 << HISTBITS; @@ -99,10 +101,12 @@ void NPairMulti::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; + if (!ATOMONLY) { + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } } ibin = atom2bin[i]; @@ -209,46 +213,59 @@ void NPairMulti::build(NeighList *list) cut = radsum + skin; cutsq = cut * cut; - if (rsq <= cutsq) { - jh = j; - if (history && rsq < radsum * radsum) - jh = jh ^ mask_history; - - if (molecular != Atom::ATOMIC) { - 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++] = jh; - else if (domain->minimum_image_check(delx, dely, delz)) - neighptr[n++] = jh; - else if (which > 0) - neighptr[n++] = jh ^ (which << SBBITS); - } else + if (ATOMONLY) { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < (radsum * radsum)) + jh = jh ^ mask_history; neighptr[n++] = jh; + } + } else { + if (rsq <= cutsq) { + jh = j; + if (history && rsq < radsum * radsum) + jh = jh ^ mask_history; + + if (molecular != Atom::ATOMIC) { + 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++] = jh; + else if (domain->minimum_image_check(delx, dely, delz)) + neighptr[n++] = jh; + else if (which > 0) + neighptr[n++] = jh ^ (which << SBBITS); + } else + neighptr[n++] = jh; + } } } else { - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular != Atom::ATOMIC) { - 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) + if (ATOMONLY) { + if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; + } else { + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular != Atom::ATOMIC) { + 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; - 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; + } } } } @@ -267,12 +284,20 @@ void NPairMulti::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairMulti<0,1,0,0>; -template class NPairMulti<1,0,0,0>; -template class NPairMulti<1,1,0,0>; -template class NPairMulti<1,1,1,0>; -template class NPairMulti<0,1,0,1>; -template class NPairMulti<1,0,0,1>; -template class NPairMulti<1,1,0,1>; -template class NPairMulti<1,1,1,1>; +template class NPairMulti<0,1,0,0,0>; +template class NPairMulti<1,0,0,0,0>; +template class NPairMulti<1,1,0,0,0>; +template class NPairMulti<1,1,1,0,0>; +template class NPairMulti<0,1,0,1,0>; +template class NPairMulti<1,0,0,1,0>; +template class NPairMulti<1,1,0,1,0>; +template class NPairMulti<1,1,1,1,0>; +template class NPairMulti<0,1,0,0,1>; +template class NPairMulti<1,0,0,0,1>; +template class NPairMulti<1,1,0,0,1>; +template class NPairMulti<1,1,1,0,1>; +template class NPairMulti<0,1,0,1,1>; +template class NPairMulti<1,0,0,1,1>; +template class NPairMulti<1,1,0,1,1>; +template class NPairMulti<1,1,1,1,1>; } diff --git a/src/npair_multi.h b/src/npair_multi.h index f6a68711e21..a82352f8406 100644 --- a/src/npair_multi.h +++ b/src/npair_multi.h @@ -13,47 +13,89 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairMulti<0, 1, 0, 0> NPairFullMulti; +typedef NPairMulti<0, 1, 0, 0, 0> NPairFullMulti; NPairStyle(full/multi, NPairFullMulti, - NP_FULL | NP_MULTI | + NP_FULL | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMulti<1, 0, 0, 0> NPairHalfMultiNewtoff; +typedef NPairMulti<1, 0, 0, 0, 0> NPairHalfMultiNewtoff; NPairStyle(half/multi/newtoff, NPairHalfMultiNewtoff, - NP_HALF | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMulti<1, 1, 0, 0> NPairHalfMultiNewton; +typedef NPairMulti<1, 1, 0, 0, 0> NPairHalfMultiNewton; NPairStyle(half/multi/newton, NPairHalfMultiNewton, - NP_HALF | NP_MULTI | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairMulti<1, 1, 1, 0> NPairHalfMultiNewtonTri; +typedef NPairMulti<1, 1, 1, 0, 0> NPairHalfMultiNewtonTri; NPairStyle(half/multi/newton/tri, NPairHalfMultiNewtonTri, - NP_HALF | NP_MULTI | NP_NEWTON | NP_TRI); + NP_HALF | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_TRI); -typedef NPairMulti<0, 1, 0, 1> NPairFullSizeMulti; +typedef NPairMulti<0, 1, 0, 1, 0> NPairFullSizeMulti; NPairStyle(full/size/multi, NPairFullSizeMulti, - NP_FULL | NP_SIZE | NP_MULTI | + NP_FULL | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMulti<1, 0, 0, 1> NPairHalfSizeMultiNewtoff; +typedef NPairMulti<1, 0, 0, 1, 0> NPairHalfSizeMultiNewtoff; NPairStyle(half/size/multi/newtoff, NPairHalfSizeMultiNewtoff, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTOFF | NP_ORTHO | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairMulti<1, 1, 0, 1> NPairHalfSizeMultiNewton; +typedef NPairMulti<1, 1, 0, 1, 0> NPairHalfSizeMultiNewton; NPairStyle(half/size/multi/newton, NPairHalfSizeMultiNewton, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_ORTHO); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_ORTHO); -typedef NPairMulti<1, 1, 1, 1> NPairHalfSizeMultiNewtonTri; +typedef NPairMulti<1, 1, 1, 1, 0> NPairHalfSizeMultiNewtonTri; NPairStyle(half/size/multi/newton/tri, NPairHalfSizeMultiNewtonTri, - NP_HALF | NP_SIZE | NP_MULTI | NP_NEWTON | NP_TRI); + NP_HALF | NP_SIZE | NP_MULTI | NP_MOLONLY | NP_NEWTON | NP_TRI); + +typedef NPairMulti<0, 1, 0, 0, 1> NPairFullMultiAtomonly; +NPairStyle(full/multi/atomonly, + NPairFullMultiAtomonly, + NP_FULL | NP_MULTI | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 0, 1> NPairHalfMultiAtomonlyNewtoff; +NPairStyle(half/multi/atomonly/newtoff, + NPairHalfMultiAtomonlyNewtoff, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 0, 1> NPairHalfMultiAtomonlyNewton; +NPairStyle(half/multi/atomonly/newton, + NPairHalfMultiAtomonlyNewton, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 0, 1> NPairHalfMultiAtomonlyNewtonTri; +NPairStyle(half/multi/atomonly/newton/tri, + NPairHalfMultiAtomonlyNewtonTri, + NP_HALF | NP_MULTI | NP_ATOMONLY | NP_NEWTON | NP_TRI); + +typedef NPairMulti<0, 1, 0, 1, 1> NPairFullSizeMultiAtomonly; +NPairStyle(full/size/multi/atomonly, + NPairFullSizeMultiAtomonly, + NP_FULL | NP_SIZE | NP_MULTI | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 0, 0, 1, 1> NPairHalfSizeMultiAtomonlyNewtoff; +NPairStyle(half/size/multi/atomonly/newtoff, + NPairHalfSizeMultiAtomonlyNewtoff, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairMulti<1, 1, 0, 1, 1> NPairHalfSizeMultiAtomonlyNewton; +NPairStyle(half/size/multi/atomonly/newton, + NPairHalfSizeMultiAtomonlyNewton, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_NEWTON | NP_ORTHO); + +typedef NPairMulti<1, 1, 1, 1, 1> NPairHalfSizeMultiAtomonlyNewtonTri; +NPairStyle(half/size/multi/atomonly/newton/tri, + NPairHalfSizeMultiAtomonlyNewtonTri, + NP_HALF | NP_SIZE | NP_MULTI | NP_ATOMONLY | NP_NEWTON | NP_TRI); // clang-format on #else @@ -64,7 +106,7 @@ NPairStyle(half/size/multi/newton/tri, namespace LAMMPS_NS { -template +template class NPairMulti : public NPair { public: NPairMulti(class LAMMPS *); diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index 1889061093a..fa391820189 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -111,9 +111,9 @@ void NPairMultiOld::build(NeighList *list) cutnsq = cutneighsq[itype]; ns = nstencil_multi_old[itype]; for (k = 0; k < ns; k++) { - bin_start = binhead[ibin+stencil[k]]; - if (stencil[k] == 0) { - if (HALF && NEWTON && (!TRI)) { + bin_start = binhead[ibin + s[k]]; + if (HALF && NEWTON && (!TRI)) { + if (s[k] == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index bcbecc05f14..085986903d7 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -122,8 +122,8 @@ void NPairRespaBin::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; - if (stencil[k] == 0) { - if (NEWTON && (!TRI)) { + if (NEWTON && (!TRI)) { + if (stencil[k] == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; diff --git a/src/nstencil_multi_old.cpp b/src/nstencil_multi_old.cpp index a6b8f142637..6d34d8881f3 100644 --- a/src/nstencil_multi_old.cpp +++ b/src/nstencil_multi_old.cpp @@ -69,7 +69,7 @@ void NStencilMultiOld::create() if (HALF && DIM_3D && (!TRI)) if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - rsq = bin_distance(i, j, 0); + rsq = bin_distance(i, j, k); if (rsq < typesq) { distsq[n] = rsq; s[n++] = k * mbiny * mbinx + j * mbinx + i; From 8054d2807a3926cd95f1a37d9140f0c75cf84ccd Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 23 Oct 2023 16:54:56 -0600 Subject: [PATCH 102/300] Adding full atomonly bin npair style --- src/OPENMP/npair_multi_old_omp.cpp | 2 +- src/npair_bin.h | 6 ++++++ src/npair_multi_old.cpp | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp index 894ff9b987b..08bc54a72be 100644 --- a/src/OPENMP/npair_multi_old_omp.cpp +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -166,7 +166,7 @@ void NPairMultiOldOmp::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (stencil[k] == 0) { + if (s[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { diff --git a/src/npair_bin.h b/src/npair_bin.h index 2cec108e46a..94b7c7077ee 100644 --- a/src/npair_bin.h +++ b/src/npair_bin.h @@ -55,6 +55,12 @@ NPairStyle(half/size/bin/newton/tri, NPairHalfSizeBinNewtonTri, NP_HALF | NP_SIZE | NP_BIN | NP_MOLONLY | NP_NEWTON | NP_TRI); +typedef NPairBin<0, 1, 0, 0, 1> NPairFullBinAtomonly; +NPairStyle(full/bin/atomonly, + NPairFullBinAtomonly, + NP_FULL | NP_BIN | NP_ATOMONLY | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + typedef NPairBin<1, 0, 0, 0, 1> NPairHalfBinAtomonlyNewtoff; NPairStyle(half/bin/atomonly/newtoff, NPairHalfBinAtomonlyNewtoff, diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index fa391820189..b2d77227cc1 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -159,7 +159,7 @@ void NPairMultiOld::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (stencil[k] == 0) { + if (s[k] == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { From 0f94e6030f1f895ebb15cba5faf197edcb63a9d6 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 24 Oct 2023 12:26:37 -0600 Subject: [PATCH 103/300] Adding separate ghost stencil for intel --- src/INTEL/nstencil_ghost_bin_intel.cpp | 76 ++++++++++++++++++++++++++ src/INTEL/nstencil_ghost_bin_intel.h | 65 ++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 src/INTEL/nstencil_ghost_bin_intel.cpp create mode 100644 src/INTEL/nstencil_ghost_bin_intel.h diff --git a/src/INTEL/nstencil_ghost_bin_intel.cpp b/src/INTEL/nstencil_ghost_bin_intel.cpp new file mode 100644 index 00000000000..cd8203eb64b --- /dev/null +++ b/src/INTEL/nstencil_ghost_bin_intel.cpp @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "nstencil_ghost_bin_intel.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NStencilGhostBinIntel::NStencilGhostBinIntel(LAMMPS *lmp) : NStencil(lmp) +{ + xyzflag = 1; +} + +/* ---------------------------------------------------------------------- + create stencil based on bin geometry and cutoff +------------------------------------------------------------------------- */ + +template +void NStencilGhostBinIntel::create() +{ + int i, j, k; + + // For half stencils, only the upper plane is needed + int sy_min = sy; + int sz_min = sz; + if (HALF && (!DIM_3D)) sy_min = 0; + if (HALF && DIM_3D) sz_min = 0; + + nstencil = 0; + + // For Intel, half and ortho stencils do not include central bin + // as, historically, this was never included in a stencil. + // Non-Intel npair classes were updated to account for this change, + // but the Intel npair classes have not yet been updated + // if (HALF && (!TRI)) stencil[nstencil++] = 0; + + for (k = -sz_min; k <= sz; k++) { + for (j = -sy_min; j <= sy; j++) { + for (i = -sx; i <= sx; i++) { + + // Now only include "upper right" bins for half and ortho stencils + if (HALF && (!DIM_3D) && (!TRI)) + if (! (j > 0 || (j == 0 && i > 0))) continue; + if (HALF && DIM_3D && (!TRI)) + if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[nstencil][0] = i; + stencilxyz[nstencil][1] = j; + stencilxyz[nstencil][2] = k; + } + } + } + } +} + +namespace LAMMPS_NS { +template class NStencilGhostBinIntel<0,0,0>; +template class NStencilGhostBinIntel<0,1,0>; +template class NStencilGhostBinIntel<1,0,0>; +template class NStencilGhostBinIntel<1,0,1>; +template class NStencilGhostBinIntel<1,1,0>; +template class NStencilGhostBinIntel<1,1,1>; +} diff --git a/src/INTEL/nstencil_ghost_bin_intel.h b/src/INTEL/nstencil_ghost_bin_intel.h new file mode 100644 index 00000000000..c76303309fb --- /dev/null +++ b/src/INTEL/nstencil_ghost_bin_intel.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef NSTENCIL_CLASS +// clang-format off +typedef NStencilGhostBinIntel<0, 0, 0> NStencilFullGhostBin2dIntel; +NStencilStyle(full/ghost/bin/2d/intel, + NStencilFullGhostBin2dIntel, + NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilGhostBinIntel<0, 1, 0> NStencilFullGhostBin3dIntel; +NStencilStyle(full/ghost/bin/3d/intel, + NStencilFullGhostBin3dIntel, + NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI | NS_INTEL); + +typedef NStencilGhostBinIntel<1, 0, 0> NStencilHalfGhostBin2dIntel; +NStencilStyle(half/ghost/bin/2d/intel, + NStencilHalfGhostBin2dIntel, + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_INTEL); + +typedef NStencilGhostBinIntel<1, 0, 1> NStencilHalfGhostBin2dTriIntel; +NStencilStyle(half/ghost/bin/2d/tri/intel, + NStencilHalfGhostBin2dTriIntel, + NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_TRI | NS_INTEL); + +typedef NStencilGhostBinIntel<1, 1, 0> NStencilHalfGhostBin3dIntel; +NStencilStyle(half/ghost/bin/3d/intel, + NStencilHalfGhostBin3dIntel, + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_INTEL); + +typedef NStencilGhostBinIntel<1, 1, 1> NStencilHalfGhostBin3dTriIntel; +NStencilStyle(half/ghost/bin/3d/tri/intel, + NStencilHalfGhostBin3dTriIntel, + NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_TRI | NS_INTEL); +// clang-format on +#else + +#ifndef LMP_NSTENCIL_GHOST_BIN_INTEL_H +#define LMP_NSTENCIL_GHOST_BIN_INTEL_H + +#include "nstencil.h" + +namespace LAMMPS_NS { + +template +class NStencilGhostBinIntel : public NStencil { + public: + NStencilGhostBinIntel(class LAMMPS *); + void create() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif From 8f14cdcb3473b16ed17eb2d2bc0d9ad0d465c9eb Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 24 Oct 2023 13:55:43 -0600 Subject: [PATCH 104/300] Cleaning up ghost stencils --- src/INTEL/nstencil_bin_intel.cpp | 2 +- src/INTEL/nstencil_ghost_bin_intel.cpp | 42 ++++++-------------------- src/INTEL/nstencil_ghost_bin_intel.h | 26 ++-------------- src/nstencil_bin.cpp | 2 +- src/nstencil_ghost_bin.cpp | 40 ++++++------------------ src/nstencil_ghost_bin.h | 26 ++-------------- 6 files changed, 27 insertions(+), 111 deletions(-) diff --git a/src/INTEL/nstencil_bin_intel.cpp b/src/INTEL/nstencil_bin_intel.cpp index 4b7dc31f46f..426fcec33c2 100644 --- a/src/INTEL/nstencil_bin_intel.cpp +++ b/src/INTEL/nstencil_bin_intel.cpp @@ -53,7 +53,7 @@ void NStencilBinIntel::create() if (HALF && DIM_3D && (!TRI)) if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i, j, k) < cutneighmaxsq) stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } diff --git a/src/INTEL/nstencil_ghost_bin_intel.cpp b/src/INTEL/nstencil_ghost_bin_intel.cpp index cd8203eb64b..23d4930cc03 100644 --- a/src/INTEL/nstencil_ghost_bin_intel.cpp +++ b/src/INTEL/nstencil_ghost_bin_intel.cpp @@ -17,8 +17,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NStencilGhostBinIntel::NStencilGhostBinIntel(LAMMPS *lmp) : NStencil(lmp) +template +NStencilGhostBinIntel::NStencilGhostBinIntel(LAMMPS *lmp) : NStencil(lmp) { xyzflag = 1; } @@ -27,39 +27,21 @@ NStencilGhostBinIntel::NStencilGhostBinIntel(LAMMPS *lmp) : N create stencil based on bin geometry and cutoff ------------------------------------------------------------------------- */ -template -void NStencilGhostBinIntel::create() +template +void NStencilGhostBinIntel::create() { int i, j, k; - // For half stencils, only the upper plane is needed - int sy_min = sy; - int sz_min = sz; - if (HALF && (!DIM_3D)) sy_min = 0; - if (HALF && DIM_3D) sz_min = 0; - nstencil = 0; - // For Intel, half and ortho stencils do not include central bin - // as, historically, this was never included in a stencil. - // Non-Intel npair classes were updated to account for this change, - // but the Intel npair classes have not yet been updated - // if (HALF && (!TRI)) stencil[nstencil++] = 0; - - for (k = -sz_min; k <= sz; k++) { - for (j = -sy_min; j <= sy; j++) { + for (k = -sz; k <= sz; k++) { + for (j = -sy; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - - // Now only include "upper right" bins for half and ortho stencils - if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - - if (bin_distance(i,j,k) < cutneighmaxsq) { + if (bin_distance(i, j, k) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = k; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } } @@ -67,10 +49,6 @@ void NStencilGhostBinIntel::create() } namespace LAMMPS_NS { -template class NStencilGhostBinIntel<0,0,0>; -template class NStencilGhostBinIntel<0,1,0>; -template class NStencilGhostBinIntel<1,0,0>; -template class NStencilGhostBinIntel<1,0,1>; -template class NStencilGhostBinIntel<1,1,0>; -template class NStencilGhostBinIntel<1,1,1>; +template class NStencilGhostBinIntel<0>; +template class NStencilGhostBinIntel<1>; } diff --git a/src/INTEL/nstencil_ghost_bin_intel.h b/src/INTEL/nstencil_ghost_bin_intel.h index c76303309fb..f4ae9f98049 100644 --- a/src/INTEL/nstencil_ghost_bin_intel.h +++ b/src/INTEL/nstencil_ghost_bin_intel.h @@ -13,35 +13,15 @@ #ifdef NSTENCIL_CLASS // clang-format off -typedef NStencilGhostBinIntel<0, 0, 0> NStencilFullGhostBin2dIntel; +typedef NStencilGhostBinIntel<0> NStencilFullGhostBin2dIntel; NStencilStyle(full/ghost/bin/2d/intel, NStencilFullGhostBin2dIntel, NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI | NS_INTEL); -typedef NStencilGhostBinIntel<0, 1, 0> NStencilFullGhostBin3dIntel; +typedef NStencilGhostBinIntel<1> NStencilFullGhostBin3dIntel; NStencilStyle(full/ghost/bin/3d/intel, NStencilFullGhostBin3dIntel, NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI | NS_INTEL); - -typedef NStencilGhostBinIntel<1, 0, 0> NStencilHalfGhostBin2dIntel; -NStencilStyle(half/ghost/bin/2d/intel, - NStencilHalfGhostBin2dIntel, - NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_INTEL); - -typedef NStencilGhostBinIntel<1, 0, 1> NStencilHalfGhostBin2dTriIntel; -NStencilStyle(half/ghost/bin/2d/tri/intel, - NStencilHalfGhostBin2dTriIntel, - NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_TRI | NS_INTEL); - -typedef NStencilGhostBinIntel<1, 1, 0> NStencilHalfGhostBin3dIntel; -NStencilStyle(half/ghost/bin/3d/intel, - NStencilHalfGhostBin3dIntel, - NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_INTEL); - -typedef NStencilGhostBinIntel<1, 1, 1> NStencilHalfGhostBin3dTriIntel; -NStencilStyle(half/ghost/bin/3d/tri/intel, - NStencilHalfGhostBin3dTriIntel, - NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_TRI | NS_INTEL); // clang-format on #else @@ -52,7 +32,7 @@ NStencilStyle(half/ghost/bin/3d/tri/intel, namespace LAMMPS_NS { -template +template class NStencilGhostBinIntel : public NStencil { public: NStencilGhostBinIntel(class LAMMPS *); diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index accce7c3952..2b7c15cff69 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -59,7 +59,7 @@ void NStencilBin::create() if (HALF && DIM_3D && (!TRI)) if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i, j, k) < cutneighmaxsq) stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } diff --git a/src/nstencil_ghost_bin.cpp b/src/nstencil_ghost_bin.cpp index b83a0ffd46a..81372bedaf6 100644 --- a/src/nstencil_ghost_bin.cpp +++ b/src/nstencil_ghost_bin.cpp @@ -17,8 +17,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) +template +NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lmp) { xyzflag = 1; } @@ -27,35 +27,17 @@ NStencilGhostBin::NStencilGhostBin(LAMMPS *lmp) : NStencil(lm create stencil based on bin geometry and cutoff ------------------------------------------------------------------------- */ -template -void NStencilGhostBin::create() +template +void NStencilGhostBin::create() { int i, j, k; - // For half stencils, only the upper plane is needed - int sy_min = sy; - int sz_min = sz; - if (HALF && (!DIM_3D)) sy_min = 0; - if (HALF && DIM_3D) sz_min = 0; - nstencil = 0; - // Half and ortho stencils include central bin first - // This preserves the historical order of the neighbor list - // as the old npair classes used to separately parse the central bin first - if (HALF && (!TRI)) stencil[nstencil++] = 0; - - for (k = -sz_min; k <= sz; k++) { - for (j = -sy_min; j <= sy; j++) { + for (k = -sz; k <= sz; k++) { + for (j = -sy; j <= sy; j++) { for (i = -sx; i <= sx; i++) { - - // Now only include "upper right" bins for half and ortho stencils - if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; - if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; - - if (bin_distance(i,j,k) < cutneighmaxsq) { + if (bin_distance(i, j, k) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = k; @@ -67,10 +49,6 @@ void NStencilGhostBin::create() } namespace LAMMPS_NS { -template class NStencilGhostBin<0,0,0>; -template class NStencilGhostBin<0,1,0>; -template class NStencilGhostBin<1,0,0>; -template class NStencilGhostBin<1,0,1>; -template class NStencilGhostBin<1,1,0>; -template class NStencilGhostBin<1,1,1>; +template class NStencilGhostBin<0>; +template class NStencilGhostBin<1>; } diff --git a/src/nstencil_ghost_bin.h b/src/nstencil_ghost_bin.h index ccf45fc5022..ed4ae21be98 100644 --- a/src/nstencil_ghost_bin.h +++ b/src/nstencil_ghost_bin.h @@ -13,35 +13,15 @@ #ifdef NSTENCIL_CLASS // clang-format off -typedef NStencilGhostBin<0, 0, 0> NStencilFullGhostBin2d; +typedef NStencilGhostBin<0> NStencilFullGhostBin2d; NStencilStyle(full/ghost/bin/2d, NStencilFullGhostBin2d, NS_FULL | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO | NS_TRI); -typedef NStencilGhostBin<0, 1, 0> NStencilFullGhostBin3d; +typedef NStencilGhostBin<1> NStencilFullGhostBin3d; NStencilStyle(full/ghost/bin/3d, NStencilFullGhostBin3d, NS_FULL | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO | NS_TRI); - -typedef NStencilGhostBin<1, 0, 0> NStencilHalfGhostBin2d; -NStencilStyle(half/ghost/bin/2d, - NStencilHalfGhostBin2d, - NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_ORTHO); - -typedef NStencilGhostBin<1, 0, 1> NStencilHalfGhostBin2dTri; -NStencilStyle(half/ghost/bin/2d/tri, - NStencilHalfGhostBin2dTri, - NS_HALF | NS_GHOST | NS_BIN | NS_2D | NS_TRI); - -typedef NStencilGhostBin<1, 1, 0> NStencilHalfGhostBin3d; -NStencilStyle(half/ghost/bin/3d, - NStencilHalfGhostBin3d, - NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_ORTHO); - -typedef NStencilGhostBin<1, 1, 1> NStencilHalfGhostBin3dTri; -NStencilStyle(half/ghost/bin/3d/tri, - NStencilHalfGhostBin3dTri, - NS_HALF | NS_GHOST | NS_BIN | NS_3D | NS_TRI); // clang-format on #else @@ -52,7 +32,7 @@ NStencilStyle(half/ghost/bin/3d/tri, namespace LAMMPS_NS { -template +template class NStencilGhostBin : public NStencil { public: NStencilGhostBin(class LAMMPS *); From 745f2e6c54c462558f2a31ac71fbefe0326d4484 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Wed, 1 Nov 2023 12:22:30 -0600 Subject: [PATCH 105/300] Changing logic for self-bin check, newton+ortho --- src/OPENMP/npair_bin_ghost_omp.cpp | 2 +- src/OPENMP/npair_bin_omp.cpp | 8 +++--- src/OPENMP/npair_halffull_omp.cpp | 6 ++--- src/OPENMP/npair_multi_old_omp.cpp | 4 +-- src/OPENMP/npair_multi_omp.cpp | 36 ++++++++++++-------------- src/OPENMP/npair_nsq_ghost_omp.cpp | 2 +- src/OPENMP/npair_nsq_omp.cpp | 6 ++--- src/OPENMP/npair_respa_bin_omp.cpp | 14 +++++----- src/OPENMP/npair_respa_nsq_omp.cpp | 8 +++--- src/OPENMP/npair_trim_omp.cpp | 2 +- src/npair_bin.cpp | 10 +++---- src/npair_multi.cpp | 36 ++++++++++++-------------- src/npair_multi_old.cpp | 6 ++--- src/npair_nsq.cpp | 2 +- src/npair_respa_bin.cpp | 12 ++++----- src/npair_respa_nsq.cpp | 8 +++--- src/npair_skip_respa.cpp | 10 +++---- src/npair_skip_size_off2on_oneside.cpp | 2 +- 18 files changed, 85 insertions(+), 89 deletions(-) diff --git a/src/OPENMP/npair_bin_ghost_omp.cpp b/src/OPENMP/npair_bin_ghost_omp.cpp index d842294338e..f542cf214a6 100644 --- a/src/OPENMP/npair_bin_ghost_omp.cpp +++ b/src/OPENMP/npair_bin_ghost_omp.cpp @@ -185,7 +185,7 @@ void NPairBinGhostOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = nlocal; diff --git a/src/OPENMP/npair_bin_omp.cpp b/src/OPENMP/npair_bin_omp.cpp index 81b5e085d62..5b2189dec21 100644 --- a/src/OPENMP/npair_bin_omp.cpp +++ b/src/OPENMP/npair_bin_omp.cpp @@ -117,7 +117,7 @@ void NPairBinOmp::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin + stencil[k]]; if (HALF && NEWTON && (!TRI)) { - if (stencil[k] == 0) { + if (k == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -163,7 +163,7 @@ void NPairBinOmp::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil, except for i's bin - if (stencil[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { @@ -229,7 +229,7 @@ void NPairBinOmp::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; if (which == 0) @@ -250,7 +250,7 @@ void NPairBinOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = nlocal; diff --git a/src/OPENMP/npair_halffull_omp.cpp b/src/OPENMP/npair_halffull_omp.cpp index 78ec11023f3..bc646accbc5 100644 --- a/src/OPENMP/npair_halffull_omp.cpp +++ b/src/OPENMP/npair_halffull_omp.cpp @@ -106,9 +106,9 @@ void NPairHalffullOmp::build(NeighList *list) if (j < nlocal) { if (i > j) continue; } else if (TRI) { - if (fabs(x[j][2]-ztmp) > delta) { + if (fabs(x[j][2] - ztmp) > delta) { if (x[j][2] < ztmp) continue; - } else if (fabs(x[j][1]-ytmp) > delta) { + } else if (fabs(x[j][1] - ytmp) > delta) { if (x[j][1] < ytmp) continue; } else { if (x[j][0] < xtmp) continue; @@ -149,7 +149,7 @@ void NPairHalffullOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = inum_full; diff --git a/src/OPENMP/npair_multi_old_omp.cpp b/src/OPENMP/npair_multi_old_omp.cpp index 08bc54a72be..d45f2d1f5f7 100644 --- a/src/OPENMP/npair_multi_old_omp.cpp +++ b/src/OPENMP/npair_multi_old_omp.cpp @@ -119,7 +119,7 @@ void NPairMultiOldOmp::build(NeighList *list) ns = nstencil_multi_old[itype]; for (k = 0; k < ns; k++) { bin_start = binhead[ibin+s[k]]; - if (s[k] == 0) { + if (k == 0) { if (HALF && NEWTON && (!TRI)) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list @@ -166,7 +166,7 @@ void NPairMultiOldOmp::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (s[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index 7999ff5029b..818470254c0 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -131,7 +131,7 @@ void NPairMultiOmp::build(NeighList *list) // own-bin for half stencil if (HALF && !TRI) - if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + if (k == 0 && flag_half_multi[icollection][jcollection]) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { if (!HALF) { @@ -180,24 +180,22 @@ void NPairMultiOmp::build(NeighList *list) } else { // Half neighbor list, newton on, orthonormal // if same size: uses half stencil so includes a check of the central bin - if (flag_half_multi[icollection][jcollection]){ - if (s[k] == 0) { - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i + if (k == 0 && flag_half_multi[icollection][jcollection]) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i - if ((icollection != jcollection) && (j < i)) continue; + if ((icollection != jcollection) && (j < i)) continue; - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; } } } @@ -233,7 +231,7 @@ void NPairMultiOmp::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -256,7 +254,7 @@ void NPairMultiOmp::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -279,7 +277,7 @@ void NPairMultiOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = nlocal; diff --git a/src/OPENMP/npair_nsq_ghost_omp.cpp b/src/OPENMP/npair_nsq_ghost_omp.cpp index 6a108764979..a270fbb84d8 100644 --- a/src/OPENMP/npair_nsq_ghost_omp.cpp +++ b/src/OPENMP/npair_nsq_ghost_omp.cpp @@ -172,7 +172,7 @@ void NPairNsqGhostOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = nlocal; diff --git a/src/OPENMP/npair_nsq_omp.cpp b/src/OPENMP/npair_nsq_omp.cpp index 95779644016..c482fc8f2d5 100644 --- a/src/OPENMP/npair_nsq_omp.cpp +++ b/src/OPENMP/npair_nsq_omp.cpp @@ -137,9 +137,9 @@ void NPairNsqOmp::build(NeighList *list) if (j >= nlocal) { jtag = tag[j]; if (itag > jtag) { - if ((itag+jtag) % 2 == 0) continue; + if ((itag + jtag) % 2 == 0) continue; } else if (itag < jtag) { - if ((itag+jtag) % 2 == 1) continue; + if ((itag + jtag) % 2 == 1) continue; } else if (TRI) { if (fabs(x[j][2] - ztmp) > delta) { if (x[j][2] < ztmp) continue; @@ -219,7 +219,7 @@ void NPairNsqOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = nlocal; diff --git a/src/OPENMP/npair_respa_bin_omp.cpp b/src/OPENMP/npair_respa_bin_omp.cpp index b904e7136bf..c958167ba06 100644 --- a/src/OPENMP/npair_respa_bin_omp.cpp +++ b/src/OPENMP/npair_respa_bin_omp.cpp @@ -88,7 +88,7 @@ void NPairRespaBinOmp::build(NeighList *list) int *numneigh_inner = list->numneigh_inner; int **firstneigh_inner = list->firstneigh_inner; - int *ilist_middle,*numneigh_middle,**firstneigh_middle; + int *ilist_middle, *numneigh_middle, **firstneigh_middle; if (respamiddle) { ilist_middle = list->ilist_middle; numneigh_middle = list->numneigh_middle; @@ -133,9 +133,9 @@ void NPairRespaBinOmp::build(NeighList *list) } for (k = 0; k < nstencil; k++) { - bin_start = binhead[ibin+stencil[k]]; + bin_start = binhead[ibin + stencil[k]]; if (NEWTON && (!TRI)) { - if (stencil[k] == 0) { + if (k == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -177,7 +177,7 @@ void NPairRespaBinOmp::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (stencil[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { @@ -242,20 +242,20 @@ void NPairRespaBinOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); ilist_inner[i] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; ipage.vgot(n_inner); - if (ipage_inner.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_inner.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); if (respamiddle) { ilist_middle[i] = i; firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; ipage_middle->vgot(n_middle); - if (ipage_middle->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_middle->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } } NPAIR_OMP_CLOSE; diff --git a/src/OPENMP/npair_respa_nsq_omp.cpp b/src/OPENMP/npair_respa_nsq_omp.cpp index 2c4ad5d251d..6815b215441 100644 --- a/src/OPENMP/npair_respa_nsq_omp.cpp +++ b/src/OPENMP/npair_respa_nsq_omp.cpp @@ -99,7 +99,7 @@ void NPairRespaNsqOmp::build(NeighList *list) int *numneigh_inner = list->numneigh_inner; int **firstneigh_inner = list->firstneigh_inner; - int *ilist_middle,*numneigh_middle,**firstneigh_middle; + int *ilist_middle, *numneigh_middle, **firstneigh_middle; if (respamiddle) { ilist_middle = list->ilist_middle; numneigh_middle = list->numneigh_middle; @@ -222,20 +222,20 @@ void NPairRespaNsqOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); ilist_inner[i] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; ipage.vgot(n_inner); - if (ipage_inner.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_inner.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); if (respamiddle) { ilist_middle[i] = i; firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; ipage_middle->vgot(n_middle); - if (ipage_middle->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_middle->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } } NPAIR_OMP_CLOSE; diff --git a/src/OPENMP/npair_trim_omp.cpp b/src/OPENMP/npair_trim_omp.cpp index a4419663ff4..0840c1a5f27 100644 --- a/src/OPENMP/npair_trim_omp.cpp +++ b/src/OPENMP/npair_trim_omp.cpp @@ -98,7 +98,7 @@ void NPairTrimOmp::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage.vgot(n); - if (ipage.status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage.status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } NPAIR_OMP_CLOSE; list->inum = inum_copy; diff --git a/src/npair_bin.cpp b/src/npair_bin.cpp index d72a98e471d..d3d3415bc02 100644 --- a/src/npair_bin.cpp +++ b/src/npair_bin.cpp @@ -110,7 +110,7 @@ void NPairBin::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin + stencil[k]]; if (HALF && NEWTON && (!TRI)) { - if (stencil[k] == 0) { + if (k == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -155,7 +155,7 @@ void NPairBin::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil, except for i's bin - if (stencil[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { @@ -198,7 +198,7 @@ void NPairBin::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -221,7 +221,7 @@ void NPairBin::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -243,7 +243,7 @@ void NPairBin::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index 37c6482a6a0..ec5a67fa824 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -128,7 +128,7 @@ void NPairMulti::build(NeighList *list) // own-bin for half stencil if (HALF && !TRI) - if (flag_half_multi[icollection][jcollection] && s[k] == 0) js = bins[i]; + if (k == 0 && flag_half_multi[icollection][jcollection]) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { if (!HALF) { @@ -177,24 +177,22 @@ void NPairMulti::build(NeighList *list) } else { // Half neighbor list, newton on, orthonormal // if same size: uses half stencil so includes a check of the central bin - if (flag_half_multi[icollection][jcollection]) { - if (s[k] == 0) { - // if same collection, - // if j is owned atom, store it, since j is beyond i in linked list - // if j is ghost, only store if j coords are "above and to the right" of i + if (k == 0 && flag_half_multi[icollection][jcollection]) { + // if same collection, + // if j is owned atom, store it, since j is beyond i in linked list + // if j is ghost, only store if j coords are "above and to the right" of i - // if different collections, - // if j is owned atom, store it if j > i - // if j is ghost, only store if j coords are "above and to the right" of i + // if different collections, + // if j is owned atom, store it if j > i + // if j is ghost, only store if j coords are "above and to the right" of i - if ((icollection != jcollection) && (j < i)) continue; + if ((icollection != jcollection) && (j < i)) continue; - if (j >= nlocal) { - if (x[j][2] < ztmp) continue; - if (x[j][2] == ztmp) { - if (x[j][1] < ytmp) continue; - if (x[j][1] == ytmp && x[j][0] < xtmp) continue; - } + if (j >= nlocal) { + if (x[j][2] < ztmp) continue; + if (x[j][2] == ztmp) { + if (x[j][1] < ytmp) continue; + if (x[j][1] == ytmp && x[j][0] < xtmp) continue; } } } @@ -230,7 +228,7 @@ void NPairMulti::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -253,7 +251,7 @@ void NPairMulti::build(NeighList *list) 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], + which = find_special(onemols[imol]->special[iatom], onemols[imol]->nspecial[iatom], tag[j] - tagprev); else which = 0; @@ -276,7 +274,7 @@ void NPairMulti::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_multi_old.cpp b/src/npair_multi_old.cpp index b2d77227cc1..a4ca1e73616 100644 --- a/src/npair_multi_old.cpp +++ b/src/npair_multi_old.cpp @@ -113,7 +113,7 @@ void NPairMultiOld::build(NeighList *list) for (k = 0; k < ns; k++) { bin_start = binhead[ibin + s[k]]; if (HALF && NEWTON && (!TRI)) { - if (s[k] == 0) { + if (k == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -159,7 +159,7 @@ void NPairMultiOld::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (s[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { @@ -236,7 +236,7 @@ void NPairMultiOld::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_nsq.cpp b/src/npair_nsq.cpp index 5a7b1e32273..c2f43d9cb0d 100644 --- a/src/npair_nsq.cpp +++ b/src/npair_nsq.cpp @@ -211,7 +211,7 @@ void NPairNsq::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_respa_bin.cpp b/src/npair_respa_bin.cpp index 085986903d7..f2fb9f74860 100644 --- a/src/npair_respa_bin.cpp +++ b/src/npair_respa_bin.cpp @@ -81,7 +81,7 @@ void NPairRespaBin::build(NeighList *list) int **firstneigh_inner = list->firstneigh_inner; MyPage *ipage_inner = list->ipage_inner; - int *ilist_middle,*numneigh_middle,**firstneigh_middle; + int *ilist_middle, *numneigh_middle, **firstneigh_middle; MyPage *ipage_middle; int respamiddle = list->respamiddle; if (respamiddle) { @@ -123,7 +123,7 @@ void NPairRespaBin::build(NeighList *list) for (k = 0; k < nstencil; k++) { bin_start = binhead[ibin+stencil[k]]; if (NEWTON && (!TRI)) { - if (stencil[k] == 0) { + if (k == 0) { // Half neighbor list, newton on, orthonormal // loop over rest of atoms in i's bin, ghosts are at end of linked list bin_start = bins[i]; @@ -165,7 +165,7 @@ void NPairRespaBin::build(NeighList *list) // Half neighbor list, newton on, orthonormal // store every pair for every bin in stencil,except for i's bin - if (stencil[k] == 0) { + if (k == 0) { // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the "right" of i if (j >= nlocal) { @@ -230,20 +230,20 @@ void NPairRespaBin::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; ipage_inner->vgot(n_inner); - if (ipage_inner->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_inner->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); if (respamiddle) { ilist_middle[inum] = i; firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; ipage_middle->vgot(n_middle); - if (ipage_middle->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_middle->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } inum++; diff --git a/src/npair_respa_nsq.cpp b/src/npair_respa_nsq.cpp index 7f70addbc9b..9ca166a4915 100644 --- a/src/npair_respa_nsq.cpp +++ b/src/npair_respa_nsq.cpp @@ -92,7 +92,7 @@ void NPairRespaNsq::build(NeighList *list) int **firstneigh_inner = list->firstneigh_inner; MyPage *ipage_inner = list->ipage_inner; - int *ilist_middle,*numneigh_middle,**firstneigh_middle; + int *ilist_middle, *numneigh_middle, **firstneigh_middle; MyPage *ipage_middle; int respamiddle = list->respamiddle; if (respamiddle) { @@ -215,20 +215,20 @@ void NPairRespaNsq::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; ipage_inner->vgot(n_inner); - if (ipage_inner->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_inner->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); if (respamiddle) { ilist_middle[inum] = i; firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; ipage_middle->vgot(n_middle); - if (ipage_middle->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_middle->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } inum++; diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp index ecd820e8923..81cfc8a7671 100644 --- a/src/npair_skip_respa.cpp +++ b/src/npair_skip_respa.cpp @@ -58,9 +58,9 @@ void NPairSkipRespa::build(NeighList *list) int *numneigh_inner_skip = list->listskip->numneigh_inner; int **firstneigh_inner_skip = list->listskip->firstneigh_inner; - int *ilist_middle,*numneigh_middle,**firstneigh_middle; + int *ilist_middle, *numneigh_middle, **firstneigh_middle; MyPage *ipage_middle; - int *numneigh_middle_skip,**firstneigh_middle_skip; + int *numneigh_middle_skip, **firstneigh_middle_skip; int respamiddle = list->respamiddle; if (respamiddle) { ilist_middle = list->ilist_middle; @@ -135,20 +135,20 @@ void NPairSkipRespa::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); ilist_inner[inum] = i; firstneigh_inner[i] = neighptr_inner; numneigh_inner[i] = n_inner; ipage_inner->vgot(n); - if (ipage_inner->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_inner->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); if (respamiddle) { ilist_middle[inum] = i; firstneigh_middle[i] = neighptr_middle; numneigh_middle[i] = n_middle; ipage_middle->vgot(n); - if (ipage_middle->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage_middle->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } inum++; diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp index d861a1e745d..8974da35b2b 100644 --- a/src/npair_skip_size_off2on_oneside.cpp +++ b/src/npair_skip_size_off2on_oneside.cpp @@ -107,7 +107,7 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) for (i = 0; i < nlocal; i++) { if (numneigh[i] == 0) continue; firstneigh[i] = ipage->get(numneigh[i]); - if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } // second loop over atoms in other list to store neighbors From e39a52879cbfe67b19ce535feaca03a70dceaf95 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Nov 2023 10:44:05 -0500 Subject: [PATCH 106/300] update .gitignore --- src/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 60cfe7eea36..0e3ba406254 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -73,6 +73,8 @@ /lepton_utils.cpp /lepton_utils.h +/compute_pace.cpp +/compute_pace.h /pair_pace.cpp /pair_pace.h /pair_pace_extrapolation.cpp From f512a37173dcc6386849b0ad6ca4932b89ee3bd4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Nov 2023 10:45:37 -0500 Subject: [PATCH 107/300] add versionadded tag --- doc/src/compute_pace.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index 97f63c64202..0c4a295f1b2 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -36,6 +36,8 @@ Examples Description """"""""""" +.. versionadded:: TBD + This compute calculates a set of quantities related to the atomic cluster expansion (ACE) descriptors of the atoms in a group. ACE descriptors are a highly generalizable atomic descriptor, encoding the radial and angular From 5830dec742dc5c847a72b4bb1e6c7b5fb2aea756 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 16 Oct 2023 15:09:10 -0600 Subject: [PATCH 108/300] new compute: reaxff/bonds/local --- src/REAXFF/compute_reaxff_bonds_local.cpp | 217 ++++++++++++++++++++++ src/REAXFF/compute_reaxff_bonds_local.h | 60 ++++++ 2 files changed, 277 insertions(+) create mode 100644 src/REAXFF/compute_reaxff_bonds_local.cpp create mode 100644 src/REAXFF/compute_reaxff_bonds_local.h diff --git a/src/REAXFF/compute_reaxff_bonds_local.cpp b/src/REAXFF/compute_reaxff_bonds_local.cpp new file mode 100644 index 00000000000..c32b404e868 --- /dev/null +++ b/src/REAXFF/compute_reaxff_bonds_local.cpp @@ -0,0 +1,217 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (LANL) +------------------------------------------------------------------------- */ + +#include "compute_reaxff_bonds_local.h" +#include "atom.h" +#include "molecule.h" +#include "update.h" +#include "force.h" +#include "memory.h" +#include "error.h" +#include "neigh_list.h" + +#include "pair_reaxff.h" +#include "reaxff_api.h" + +using namespace LAMMPS_NS; +using namespace ReaxFF; + +/* ---------------------------------------------------------------------- */ + +ComputeReaxFFBondsLocal::ComputeReaxFFBondsLocal(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + alocal(nullptr), abo(nullptr), neighid(nullptr), numneigh(nullptr), reaxff(nullptr) +{ + if (atom->tag_consecutive() == 0) + error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds/local"); + + local_flag = 1; + + nvalues = 7 + 2*MAXREAXBOND; + prev_nvalues = 0; + + // initialize output + + nlocal = atom->nlocal; + + size_local_rows = atom->nlocal; + size_local_cols = 7 + 2*MAXREAXBOND; + + allocate(nlocal); +} + + +/* ---------------------------------------------------------------------- */ + +ComputeReaxFFBondsLocal::~ComputeReaxFFBondsLocal() +{ + memory->destroy(alocal); + destroy(); +} + +void ComputeReaxFFBondsLocal::destroy() +{ + memory->destroy(abo); + memory->destroy(neighid); + memory->destroy(numneigh); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeReaxFFBondsLocal::allocate(int n) +{ + memory->create(abo,n,MAXREAXBOND,"reaxff/bonds/local:abo"); + memory->create(neighid,n,MAXREAXBOND,"reaxff/bonds/local:neighid"); + memory->create(numneigh,n,"reaxff/bonds/local:numneigh"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeReaxFFBondsLocal::init() +{ + reaxff = dynamic_cast(force->pair_match("^reax..",0)); + if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds/local without " + "pair_style reaxff, reaxff/kk, or reaxff/omp"); +} + +/* ---------------------------------------------------------------------- */ + +int ComputeReaxFFBondsLocal::FindBond() +{ + int *ilist, i, ii, inum; + int j, pj, nj; + tagint jtag; + double bo_tmp,bo_cut; + + inum = reaxff->list->inum; + ilist = reaxff->list->ilist; + bond_data *bo_ij; + bo_cut = reaxff->api->control->bg_cut; + + tagint *tag = atom->tag; + int numbonds = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + nj = 0; + + for (pj = Start_Index(i, reaxff->api->lists); pj < End_Index(i, reaxff->api->lists); ++pj) { + bo_ij = &(reaxff->api->lists->select.bond_list[pj]); + j = bo_ij->nbr; + jtag = tag[j]; + bo_tmp = bo_ij->bo_data.BO; + + if (bo_tmp > bo_cut) { + neighid[i][nj] = jtag; + abo[i][nj] = bo_tmp; + nj ++; + } + } + numneigh[i] = nj; + if (nj > numbonds) numbonds = nj; + } + return numbonds; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeReaxFFBondsLocal::compute_local() +{ + invoked_local = update->ntimestep; + + // count local entries and compute bond info + if (atom->nlocal > nlocal) { + destroy(); + allocate(atom->nlocal); + } + + { + const int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + numneigh[i] = 0; + for (int j = 0; j < MAXREAXBOND; j++) { + neighid[i][j] = 0; + abo[i][j] = 0.0; + } + } + } + + int maxnumbonds = FindBond(); + nvalues = 7+2*maxnumbonds; + + if(atom->nlocal > nlocal || nvalues > prev_nvalues) { + reallocate(); + } + + size_local_rows = nlocal; + size_local_cols = nvalues; + + for (int i = 0; i < nlocal; ++i) { + auto ptr = alocal[i]; + int numbonds = numneigh[i]; + ptr[0] = atom->tag[i]; + ptr[1] = atom->type[i]; + ptr[2] = numbonds; + + int j = 3; + + for (int k = 0; k < numbonds; k++) { + ptr[j++] = neighid[i][k]; + } + + ptr[j++] = (atom->molecule == nullptr) ? 0.0 : atom->molecule[i]; + + for (int k = 0; k < numbonds; k++) { + ptr[j++] = abo[i][k]; + } + + ptr[j++] = reaxff->api->workspace->total_bond_order[i]; + ptr[j++] = reaxff->api->workspace->nlp[i]; + ptr[j++] = atom->q[i]; + + // clear any remaining + for(; j < nvalues; ++j) { + ptr[j] = 0.0; + } + } +} + +void ComputeReaxFFBondsLocal::reallocate() +{ + nlocal = atom->nlocal; + + // grow array_local + memory->destroy(alocal); + memory->create(alocal,nlocal,nvalues,"reaxff/bonds/local:array_local"); + array_local = alocal; + + prev_nvalues = nvalues; +} + +/* ---------------------------------------------------------------------- + memory usage of local data +------------------------------------------------------------------------- */ + +double ComputeReaxFFBondsLocal::memory_usage() +{ + double bytes = (double)nlocal*nvalues * sizeof(double); + bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); + bytes += (double)(nlocal) * sizeof(int); + return bytes; +} diff --git a/src/REAXFF/compute_reaxff_bonds_local.h b/src/REAXFF/compute_reaxff_bonds_local.h new file mode 100644 index 00000000000..2347db3a268 --- /dev/null +++ b/src/REAXFF/compute_reaxff_bonds_local.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (LANL) +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(reaxff/bonds/local,ComputeReaxFFBondsLocal); +// clang-format on +#else + +#ifndef LMP_COMPUTE_REAXFF_BONDS_LOCAL_H +#define LMP_COMPUTE_REAXFF_BONDS_LOCAL_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeReaxFFBondsLocal : public Compute { + public: + ComputeReaxFFBondsLocal(class LAMMPS *, int, char **); + ~ComputeReaxFFBondsLocal() override; + void init() override; + void compute_local() override; + double memory_usage() override; + + private: + int nlocal; + int nvalues; + int prev_nvalues; + + double **alocal; + tagint **neighid; + double **abo; + int *numneigh; + class PairReaxFF *reaxff; + + int FindBond(); + + void allocate(int); + void destroy(); + void reallocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif From bbc2794df29920bc1673ac0501518669fcfb822d Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 16 Oct 2023 15:09:16 -0600 Subject: [PATCH 109/300] add reaxff/bonds/local/kk --- .../compute_reaxff_bonds_local_kokkos.cpp | 125 ++++++++++++++++++ .../compute_reaxff_bonds_local_kokkos.h | 68 ++++++++++ src/KOKKOS/pair_reaxff_kokkos.cpp | 55 ++++++++ src/KOKKOS/pair_reaxff_kokkos.h | 19 +++ 4 files changed, 267 insertions(+) create mode 100644 src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp create mode 100644 src/KOKKOS/compute_reaxff_bonds_local_kokkos.h diff --git a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp b/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp new file mode 100644 index 00000000000..a56d243ed6c --- /dev/null +++ b/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp @@ -0,0 +1,125 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (LANL) +------------------------------------------------------------------------- */ + +#include "compute_reaxff_bonds_local_kokkos.h" +#include "atom.h" +#include "molecule.h" +#include "update.h" +#include "force.h" +#include "memory.h" +#include "error.h" +#include "neigh_list.h" + +#include "memory_kokkos.h" +#include "pair_reaxff_kokkos.h" +#include "reaxff_api.h" + +using namespace LAMMPS_NS; +using namespace ReaxFF; + +/* ---------------------------------------------------------------------- */ + +template +ComputeReaxFFBondsLocalKokkos::ComputeReaxFFBondsLocalKokkos(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + alocal(nullptr), reaxff(nullptr) +{ + if (atom->tag_consecutive() == 0) + error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds/local"); + + local_flag = 1; + + nvalues = 7 + 2*MAXREAXBOND; + prev_nvalues = 0; + + // initialize output + + nlocal = atom->nlocal; + + size_local_rows = atom->nlocal; + size_local_cols = 7 + 2*MAXREAXBOND; + printf("RUNNING KOKKOS VERSION\n"); +} + + +/* ---------------------------------------------------------------------- */ + +template +ComputeReaxFFBondsLocalKokkos::~ComputeReaxFFBondsLocalKokkos() +{ + memoryKK->destroy_kokkos(k_alocal, alocal); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeReaxFFBondsLocalKokkos::init() +{ + reaxff = dynamic_cast(force->pair_match("^reax../kk",0)); + if (reaxff == nullptr) error->all(FLERR,"Cannot use fix reaxff/bonds without " + "pair_style reaxff/kk"); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeReaxFFBondsLocalKokkos::compute_local() +{ + invoked_local = update->ntimestep; + + int maxnumbonds = 0; + if (reaxff->execution_space == Device) + device_pair()->FindBond(maxnumbonds); + else + host_pair()->FindBond(maxnumbonds); + nvalues = 7+2*maxnumbonds; + + if(atom->nlocal > nlocal || nvalues > prev_nvalues) { + nlocal = atom->nlocal; + memoryKK->destroy_kokkos(k_alocal, alocal); + memoryKK->create_kokkos(k_alocal, alocal, atom->nlocal, nvalues,"reaxff/bonds/local:alocal"); + prev_nvalues = nvalues; + array_local = alocal; + } + + size_local_rows = nlocal; + size_local_cols = nvalues; + + if (reaxff->execution_space == Device) + device_pair()->PackBondInfo(k_alocal); + else + host_pair()->PackBondInfo(k_alocal); +} + +/* ---------------------------------------------------------------------- + memory usage of local data +------------------------------------------------------------------------- */ + +template +double ComputeReaxFFBondsLocalKokkos::memory_usage() +{ + double bytes = (double)nlocal*nvalues * sizeof(double); + return bytes; +} + +namespace LAMMPS_NS { +template class ComputeReaxFFBondsLocalKokkos; +#ifdef LMP_KOKKOS_GPU +template class ComputeReaxFFBondsLocalKokkos; +#endif +} diff --git a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.h b/src/KOKKOS/compute_reaxff_bonds_local_kokkos.h new file mode 100644 index 00000000000..bfb55211999 --- /dev/null +++ b/src/KOKKOS/compute_reaxff_bonds_local_kokkos.h @@ -0,0 +1,68 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (LANL) +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(reaxff/bonds/local/kk,ComputeReaxFFBondsLocalKokkos); +ComputeStyle(reaxff/bonds/local/kk/device,ComputeReaxFFBondsLocalKokkos); +ComputeStyle(reaxff/bonds/local/kk/host,ComputeReaxFFBondsLocalKokkos); +// clang-format on +#else + +#ifndef LMP_COMPUTE_REAXFF_BONDS_LOCAL_KOKKOS_H +#define LMP_COMPUTE_REAXFF_BONDS_LOCAL_KOKKOS_H + +#include "compute_reaxff_bonds_local.h" +#include "pair_reaxff_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class ComputeReaxFFBondsLocalKokkos : public Compute { + public: + using device_type = DeviceType; + using AT = ArrayTypes; + + ComputeReaxFFBondsLocalKokkos(class LAMMPS *, int, char **); + ~ComputeReaxFFBondsLocalKokkos() override; + void init() override; + void compute_local() override; + double memory_usage() override; + + private: + int nlocal; + int nvalues; + int prev_nvalues; + + double **alocal; + typename AT::tdual_float_2d k_alocal; + PairReaxFF *reaxff; + + auto device_pair() { + return dynamic_cast*>(reaxff); + } + + auto host_pair() { + return dynamic_cast*>(reaxff); + } +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index c7d54b80cdd..fbf90f140db 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4290,6 +4290,61 @@ void PairReaxFFKokkos::pack_bond_buffer_item(int i, int &j, const bo /* ---------------------------------------------------------------------- */ +template +void PairReaxFFKokkos::PackBondInfo(DAT::tdual_float_2d k_alocal) +{ + d_alocal = k_alocal.view(); + k_params_sing.template sync(); + atomKK->sync(execution_space,TAG_MASK|TYPE_MASK|Q_MASK|MOLECULE_MASK); + + tag = atomKK->k_tag.view(); + type = atomKK->k_type.view(); + q = atomKK->k_q.view(); + if (atom->molecule) + molecule = atomKK->k_molecule.view(); + + copymode = 1; + nlocal = atomKK->nlocal; + PairReaxKokkosPackBondInfoFunctor pack_bond_info_functor(this); + Kokkos::parallel_for(nlocal, pack_bond_info_functor); + copymode = 0; + + k_alocal.modify(); + k_alocal.sync(); +} + +template +KOKKOS_INLINE_FUNCTION +void PairReaxFFKokkos::pack_bond_info_item(const int i) const +{ + const int numbonds = d_numneigh_bonds[i]; + d_alocal(i,0) = tag[i]; + d_alocal(i,1) = type[i]; + d_alocal(i,2) = numbonds; + + int j = 3; + + for (int k = 0; k < numbonds; k++) { + d_alocal(i,j++) = d_neighid(i,k); + } + + d_alocal(i,j++) = molecule.data() ? molecule[i] : 0.0; + + for (int k = 0; k < numbonds; k++) { + d_alocal(i,j++) = d_abo(i,k); + } + + d_alocal(i,j++) = d_total_bo[i]; + d_alocal(i,j++) = paramssing(type[i]).nlp_opt - d_Delta_lp[i]; + d_alocal(i,j++) = q[i]; + + for(; j < d_alocal.extent(1); ++j) { + d_alocal(i,j) = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + template void PairReaxFFKokkos::FindBondSpecies() { diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 1ad0955a1e6..32007e9970e 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -135,6 +135,7 @@ class PairReaxFFKokkos : public PairReaxFF { double memory_usage(); void FindBond(int &); void PackBondBuffer(DAT::tdual_ffloat_1d, int &); + void PackBondInfo(DAT::tdual_float_2d); void FindBondSpecies(); template @@ -292,6 +293,9 @@ class PairReaxFFKokkos : public PairReaxFF { KOKKOS_INLINE_FUNCTION void pack_bond_buffer_item(int, int&, const bool&) const; + KOKKOS_INLINE_FUNCTION + void pack_bond_info_item(const int) const; + KOKKOS_INLINE_FUNCTION void operator()(TagPairReaxFindBondSpeciesZero, const int&) const; @@ -506,6 +510,8 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_ffloat_1d d_buf; DAT::tdual_int_scalar k_nbuf_local; + typename AT::t_float_2d d_alocal; + typedef Kokkos::View t_reax_int4_2d; t_reax_int4_2d d_angular_pack, d_torsion_pack; @@ -549,6 +555,19 @@ struct PairReaxKokkosPackBondBufferFunctor { } }; +template +struct PairReaxKokkosPackBondInfoFunctor { + using device_type = DeviceType; + using value_type = int; + PairReaxFFKokkos c; + PairReaxKokkosPackBondInfoFunctor(PairReaxFFKokkos* c_ptr):c(*c_ptr) {}; + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { + c.pack_bond_info_item(i); + } +}; + } #endif From fea5f5a2438d5ef1c563e945783f93a9560a18f4 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 16 Oct 2023 16:52:34 -0600 Subject: [PATCH 110/300] First serial version of Steve's suggestion --- examples/reaxff/in.reaxff.tatb | 9 +- ...nds_local.cpp => compute_reaxff_bonds.cpp} | 166 +++++++++--------- ...f_bonds_local.h => compute_reaxff_bonds.h} | 27 ++- 3 files changed, 103 insertions(+), 99 deletions(-) rename src/REAXFF/{compute_reaxff_bonds_local.cpp => compute_reaxff_bonds.cpp} (57%) rename src/REAXFF/{compute_reaxff_bonds_local.h => compute_reaxff_bonds.h} (73%) diff --git a/examples/reaxff/in.reaxff.tatb b/examples/reaxff/in.reaxff.tatb index 6cf7828cf19..fd0d8461548 100644 --- a/examples/reaxff/in.reaxff.tatb +++ b/examples/reaxff/in.reaxff.tatb @@ -31,8 +31,15 @@ neigh_modify delay 0 every 5 check no fix 1 all nve fix 2 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff fix 4 all reaxff/bonds 5 bonds.reaxff +compute bonds all reaxff/bonds variable nqeq equal f_2 +# dumps out the local bond information +dump 1 all local 5 bonds_compute.reaxff c_bonds[1] c_bonds[2] c_bonds[3] + +# dumps out the peratom bond information +dump 2 all custom 5 bonds_atom.reaxff c_bonds[*] + thermo 5 thermo_style custom step temp epair etotal press & v_eb v_ea v_elp v_emol v_ev v_epen v_ecoa & @@ -50,6 +57,6 @@ timestep 0.0625 # axes yes 0.8 0.02 view 60 -30 #dump_modify 3 pad 3 -fix 3 all reaxff/species 1 5 5 species.tatb +#fix 3 all reaxff/species 1 5 5 species.tatb run 25 diff --git a/src/REAXFF/compute_reaxff_bonds_local.cpp b/src/REAXFF/compute_reaxff_bonds.cpp similarity index 57% rename from src/REAXFF/compute_reaxff_bonds_local.cpp rename to src/REAXFF/compute_reaxff_bonds.cpp index c32b404e868..7f1605263c6 100644 --- a/src/REAXFF/compute_reaxff_bonds_local.cpp +++ b/src/REAXFF/compute_reaxff_bonds.cpp @@ -16,7 +16,7 @@ Contributing author: Richard Berger (LANL) ------------------------------------------------------------------------- */ -#include "compute_reaxff_bonds_local.h" +#include "compute_reaxff_bonds.h" #include "atom.h" #include "molecule.h" #include "update.h" @@ -33,39 +33,36 @@ using namespace ReaxFF; /* ---------------------------------------------------------------------- */ -ComputeReaxFFBondsLocal::ComputeReaxFFBondsLocal(LAMMPS *lmp, int narg, char **arg) : +ComputeReaxFFBonds::ComputeReaxFFBonds(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - alocal(nullptr), abo(nullptr), neighid(nullptr), numneigh(nullptr), reaxff(nullptr) + abo(nullptr), neighid(nullptr), numneigh(nullptr), reaxff(nullptr) { if (atom->tag_consecutive() == 0) - error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds/local"); + error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds"); local_flag = 1; - - nvalues = 7 + 2*MAXREAXBOND; - prev_nvalues = 0; + peratom_flag = 1; // initialize output - nlocal = atom->nlocal; + nlocal = -1; + prev_nbonds = -1; + + size_peratom_cols = 7; - size_local_rows = atom->nlocal; - size_local_cols = 7 + 2*MAXREAXBOND; + size_local_rows = 0; + size_local_cols = 3; - allocate(nlocal); + invoked_bonds = -1; } /* ---------------------------------------------------------------------- */ -ComputeReaxFFBondsLocal::~ComputeReaxFFBondsLocal() -{ - memory->destroy(alocal); - destroy(); -} - -void ComputeReaxFFBondsLocal::destroy() +ComputeReaxFFBonds::~ComputeReaxFFBonds() { + memory->destroy(array_local); + memory->destroy(array_atom); memory->destroy(abo); memory->destroy(neighid); memory->destroy(numneigh); @@ -73,25 +70,16 @@ void ComputeReaxFFBondsLocal::destroy() /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBondsLocal::allocate(int n) -{ - memory->create(abo,n,MAXREAXBOND,"reaxff/bonds/local:abo"); - memory->create(neighid,n,MAXREAXBOND,"reaxff/bonds/local:neighid"); - memory->create(numneigh,n,"reaxff/bonds/local:numneigh"); -} - -/* ---------------------------------------------------------------------- */ - -void ComputeReaxFFBondsLocal::init() +void ComputeReaxFFBonds::init() { reaxff = dynamic_cast(force->pair_match("^reax..",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds/local without " - "pair_style reaxff, reaxff/kk, or reaxff/omp"); + if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds without " + "pair_style reaxff, reaxff/kk, or reaxff/omp"); } /* ---------------------------------------------------------------------- */ -int ComputeReaxFFBondsLocal::FindBond() +int ComputeReaxFFBonds::FindBond() { int *ilist, i, ii, inum; int j, pj, nj; @@ -119,98 +107,108 @@ int ComputeReaxFFBondsLocal::FindBond() if (bo_tmp > bo_cut) { neighid[i][nj] = jtag; abo[i][nj] = bo_tmp; - nj ++; + nj++; } } numneigh[i] = nj; - if (nj > numbonds) numbonds = nj; + numbonds += nj; } return numbonds; } + /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBondsLocal::compute_local() +void ComputeReaxFFBonds::compute_bonds() { - invoked_local = update->ntimestep; + invoked_bonds = update->ntimestep; - // count local entries and compute bond info if (atom->nlocal > nlocal) { - destroy(); - allocate(atom->nlocal); + memory->destroy(abo); + memory->destroy(neighid); + memory->destroy(numneigh); + memory->destroy(array_atom); + nlocal = atom->nlocal; + memory->create(abo, nlocal, MAXREAXBOND, "reaxff/bonds:abo"); + memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/bonds:neighid"); + memory->create(numneigh, nlocal, "reaxff/bonds:numneigh"); + memory->create(array_atom, nlocal, 7, "reaxff/bonds:array_atom"); } - { - const int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - numneigh[i] = 0; - for (int j = 0; j < MAXREAXBOND; j++) { - neighid[i][j] = 0; - abo[i][j] = 0.0; - } + for (int i = 0; i < nlocal; i++) { + numneigh[i] = 0; + for (int j = 0; j < MAXREAXBOND; j++) { + neighid[i][j] = 0; + abo[i][j] = 0.0; } } - int maxnumbonds = FindBond(); - nvalues = 7+2*maxnumbonds; - - if(atom->nlocal > nlocal || nvalues > prev_nvalues) { - reallocate(); - } + nbonds = FindBond(); +} - size_local_rows = nlocal; - size_local_cols = nvalues; +/* ---------------------------------------------------------------------- */ - for (int i = 0; i < nlocal; ++i) { - auto ptr = alocal[i]; - int numbonds = numneigh[i]; - ptr[0] = atom->tag[i]; - ptr[1] = atom->type[i]; - ptr[2] = numbonds; +void ComputeReaxFFBonds::compute_local() +{ + invoked_local = update->ntimestep; - int j = 3; + if(invoked_bonds < update->ntimestep) { + compute_bonds(); + } - for (int k = 0; k < numbonds; k++) { - ptr[j++] = neighid[i][k]; - } + if(nbonds > prev_nbonds) { + // grow array_local + memory->destroy(array_local); + memory->create(array_local, nbonds, 3, "reaxff/bonds:array_local"); + prev_nbonds = nbonds; + } - ptr[j++] = (atom->molecule == nullptr) ? 0.0 : atom->molecule[i]; + size_local_rows = nbonds; - for (int k = 0; k < numbonds; k++) { - ptr[j++] = abo[i][k]; - } + int b = 0; - ptr[j++] = reaxff->api->workspace->total_bond_order[i]; - ptr[j++] = reaxff->api->workspace->nlp[i]; - ptr[j++] = atom->q[i]; + for (int i = 0; i < nlocal; ++i) { + const int numbonds = numneigh[i]; - // clear any remaining - for(; j < nvalues; ++j) { - ptr[j] = 0.0; + for (int k = 0; k < numbonds; k++) { + auto bond = array_local[b++]; + bond[0] = i; + bond[1] = neighid[i][k]; + bond[2] = abo[i][k]; } } } -void ComputeReaxFFBondsLocal::reallocate() +/* ---------------------------------------------------------------------- */ + +void ComputeReaxFFBonds::compute_peratom() { - nlocal = atom->nlocal; + invoked_peratom = update->ntimestep; - // grow array_local - memory->destroy(alocal); - memory->create(alocal,nlocal,nvalues,"reaxff/bonds/local:array_local"); - array_local = alocal; + if(invoked_bonds < update->ntimestep) { + compute_bonds(); + } - prev_nvalues = nvalues; + for (int i = 0; i < nlocal; ++i) { + auto ptr = array_atom[i]; + ptr[0] = atom->tag[i]; + ptr[1] = atom->type[i]; + ptr[2] = numneigh[i]; + ptr[3] = (atom->molecule == nullptr) ? 0.0 : atom->molecule[i]; + ptr[4] = reaxff->api->workspace->total_bond_order[i]; + ptr[5] = reaxff->api->workspace->nlp[i]; + ptr[6] = atom->q[i]; + } } /* ---------------------------------------------------------------------- memory usage of local data ------------------------------------------------------------------------- */ -double ComputeReaxFFBondsLocal::memory_usage() +double ComputeReaxFFBonds::memory_usage() { - double bytes = (double)nlocal*nvalues * sizeof(double); + double bytes = (double)(nbonds*3) * sizeof(double); + bytes += (double)(nlocal*7) * sizeof(double); bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); bytes += (double)(nlocal) * sizeof(int); return bytes; diff --git a/src/REAXFF/compute_reaxff_bonds_local.h b/src/REAXFF/compute_reaxff_bonds.h similarity index 73% rename from src/REAXFF/compute_reaxff_bonds_local.h rename to src/REAXFF/compute_reaxff_bonds.h index 2347db3a268..6b00cef7ed2 100644 --- a/src/REAXFF/compute_reaxff_bonds_local.h +++ b/src/REAXFF/compute_reaxff_bonds.h @@ -17,41 +17,40 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(reaxff/bonds/local,ComputeReaxFFBondsLocal); +ComputeStyle(reaxff/bonds,ComputeReaxFFBonds); // clang-format on #else -#ifndef LMP_COMPUTE_REAXFF_BONDS_LOCAL_H -#define LMP_COMPUTE_REAXFF_BONDS_LOCAL_H +#ifndef LMP_COMPUTE_REAXFF_BONDS_H +#define LMP_COMPUTE_REAXFF_BONDS_H #include "compute.h" namespace LAMMPS_NS { -class ComputeReaxFFBondsLocal : public Compute { +class ComputeReaxFFBonds : public Compute { public: - ComputeReaxFFBondsLocal(class LAMMPS *, int, char **); - ~ComputeReaxFFBondsLocal() override; + ComputeReaxFFBonds(class LAMMPS *, int, char **); + ~ComputeReaxFFBonds() override; void init() override; void compute_local() override; + void compute_peratom() override; + virtual void compute_bonds(); double memory_usage() override; - private: + protected: + bigint invoked_bonds; // last timestep on which compute_bonds() was invoked int nlocal; - int nvalues; - int prev_nvalues; + int nbonds; + int prev_nbonds; - double **alocal; tagint **neighid; double **abo; int *numneigh; class PairReaxFF *reaxff; + private: int FindBond(); - - void allocate(int); - void destroy(); - void reallocate(); }; } // namespace LAMMPS_NS From a72a3ed50d12365ebb41a02001454fe667036b23 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 17 Oct 2023 16:24:14 -0600 Subject: [PATCH 111/300] Kokkos version of compute reaxff/bonds --- src/KOKKOS/compute_reaxff_bonds_kokkos.cpp | 192 ++++++++++++++++++ ...kokkos.h => compute_reaxff_bonds_kokkos.h} | 30 ++- .../compute_reaxff_bonds_local_kokkos.cpp | 125 ------------ src/KOKKOS/pair_reaxff_kokkos.cpp | 55 ----- src/KOKKOS/pair_reaxff_kokkos.h | 19 -- 5 files changed, 206 insertions(+), 215 deletions(-) create mode 100644 src/KOKKOS/compute_reaxff_bonds_kokkos.cpp rename src/KOKKOS/{compute_reaxff_bonds_local_kokkos.h => compute_reaxff_bonds_kokkos.h} (67%) delete mode 100644 src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp new file mode 100644 index 00000000000..921acb91938 --- /dev/null +++ b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp @@ -0,0 +1,192 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (LANL) +------------------------------------------------------------------------- */ + +#include "compute_reaxff_bonds_kokkos.h" +#include "atom.h" +#include "molecule.h" +#include "update.h" +#include "force.h" +#include "memory.h" +#include "error.h" +#include "neigh_list.h" + +#include "memory_kokkos.h" +#include "pair_reaxff_kokkos.h" +#include "reaxff_api.h" + +using namespace LAMMPS_NS; +using namespace ReaxFF; + +/* ---------------------------------------------------------------------- */ + +template +ComputeReaxFFBondsKokkos::ComputeReaxFFBondsKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeReaxFFBonds(lmp, narg, arg), + nbuf(-1), buf(nullptr) +{ +} + + +/* ---------------------------------------------------------------------- */ + +template +ComputeReaxFFBondsKokkos::~ComputeReaxFFBondsKokkos() +{ + memoryKK->destroy_kokkos(k_buf, buf); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeReaxFFBondsKokkos::init() +{ + reaxff = dynamic_cast(force->pair_match("^reax../kk",0)); + if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds without " + "pair_style reaxff/kk"); +} + +/* ---------------------------------------------------------------------- */ +template +void ComputeReaxFFBondsKokkos::compute_bonds() +{ + if (atom->nlocal > nlocal) { + memory->destroy(array_atom); + nlocal = atom->nlocal; + memory->create(array_atom, nlocal, 7, "reaxff/bonds:array_atom"); + } + + // retrieve bond information from kokkos pair style. the data potentially + // lives on device. it is copied into buf on the host in a condensed format + // compute_local and compute_atom then expand the data from this buffer into + // appropiate arrays for consumption by others (e.g. dump local, dump custom + // or library interface) + int maxnumbonds = 0; + if (reaxff->execution_space == Device) + device_pair()->FindBond(maxnumbonds); + else + host_pair()->FindBond(maxnumbonds); + + nbuf = 1+(maxnumbonds*2 + 7)*nlocal; + + if(!buf || k_buf.extent(0) < nbuf) { + memoryKK->destroy_kokkos(k_buf, buf); + memoryKK->create_kokkos(k_buf, buf, nbuf, "reaxff/bonds:buf"); + } + + // Pass information to buffer, will sync to host + int nbuf_local; + if (reaxff->execution_space == Device) + device_pair()->PackBondBuffer(k_buf, nbuf_local); + else + host_pair()->PackBondBuffer(k_buf, nbuf_local); + buf[0] = nlocal; + + // Extract number of bonds from buffer + nbonds = 0; + int j = 1; + for (int i = 0; i < nlocal; i++) { + int numbonds = static_cast(buf[j+5]); + nbonds += numbonds; + j += 2*numbonds + 7; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeReaxFFBondsKokkos::compute_local() +{ + invoked_local = update->ntimestep; + + if(invoked_bonds < update->ntimestep) { + compute_bonds(); + } + + if(nbonds > prev_nbonds) { + // grow array_local + memory->destroy(array_local); + memory->create(array_local, nbonds, 3, "reaxff/bonds:array_local"); + prev_nbonds = nbonds; + } + + size_local_rows = nbonds; + + // extract local bond information from buffer + int b = 0; + int j = 1; + + for (int i = 0; i < nlocal; ++i) { + const int numbonds = static_cast(buf[j+5]); + const int neigh_offset = j + 6; + const int bo_offset = neigh_offset + numbonds + 1; + for (int k = 0; k < numbonds; k++) { + auto bond = array_local[b++]; + bond[0] = i; + bond[1] = static_cast (buf[neigh_offset+k]); + bond[2] = buf[bo_offset+k]; + } + j += 2*numbonds + 7; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeReaxFFBondsKokkos::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + if(invoked_bonds < update->ntimestep) { + compute_bonds(); + } + + // extract peratom bond information from buffer + int j = 1; + for (int i = 0; i < nlocal; ++i) { + auto ptr = array_atom[i]; + int numbonds = static_cast(buf[j+5]); + const int mol_offset = j + 6 + numbonds; + ptr[0] = buf[j]; // jtag + ptr[1] = buf[j+1]; // itype + ptr[2] = numbonds; + ptr[3] = buf[mol_offset]; // mol + ptr[4] = buf[j+2]; // sbo + ptr[5] = buf[j+3]; // nlp + ptr[6] = buf[j+4]; // q + j += 2*numbonds + 7; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local data +------------------------------------------------------------------------- */ + +template +double ComputeReaxFFBondsKokkos::memory_usage() +{ + double bytes = (double)(nbonds*3) * sizeof(double); + bytes += (double)(nlocal*7) * sizeof(double); + return bytes; +} + +namespace LAMMPS_NS { +template class ComputeReaxFFBondsKokkos; +#ifdef LMP_KOKKOS_GPU +template class ComputeReaxFFBondsKokkos; +#endif +} diff --git a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.h b/src/KOKKOS/compute_reaxff_bonds_kokkos.h similarity index 67% rename from src/KOKKOS/compute_reaxff_bonds_local_kokkos.h rename to src/KOKKOS/compute_reaxff_bonds_kokkos.h index bfb55211999..45020ffa813 100644 --- a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.h +++ b/src/KOKKOS/compute_reaxff_bonds_kokkos.h @@ -17,41 +17,39 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(reaxff/bonds/local/kk,ComputeReaxFFBondsLocalKokkos); -ComputeStyle(reaxff/bonds/local/kk/device,ComputeReaxFFBondsLocalKokkos); -ComputeStyle(reaxff/bonds/local/kk/host,ComputeReaxFFBondsLocalKokkos); +ComputeStyle(reaxff/bonds/kk,ComputeReaxFFBondsKokkos); +ComputeStyle(reaxff/bonds/kk/device,ComputeReaxFFBondsKokkos); +ComputeStyle(reaxff/bonds/kk/host,ComputeReaxFFBondsKokkos); // clang-format on #else -#ifndef LMP_COMPUTE_REAXFF_BONDS_LOCAL_KOKKOS_H -#define LMP_COMPUTE_REAXFF_BONDS_LOCAL_KOKKOS_H +#ifndef LMP_COMPUTE_REAXFF_BONDS_KOKKOS_H +#define LMP_COMPUTE_REAXFF_BONDS_KOKKOS_H -#include "compute_reaxff_bonds_local.h" +#include "compute_reaxff_bonds.h" #include "pair_reaxff_kokkos.h" #include "kokkos_type.h" namespace LAMMPS_NS { template -class ComputeReaxFFBondsLocalKokkos : public Compute { +class ComputeReaxFFBondsKokkos : public ComputeReaxFFBonds { public: using device_type = DeviceType; using AT = ArrayTypes; - ComputeReaxFFBondsLocalKokkos(class LAMMPS *, int, char **); - ~ComputeReaxFFBondsLocalKokkos() override; + ComputeReaxFFBondsKokkos(class LAMMPS *, int, char **); + ~ComputeReaxFFBondsKokkos() override; void init() override; void compute_local() override; + void compute_peratom() override; + void compute_bonds() override; double memory_usage() override; private: - int nlocal; - int nvalues; - int prev_nvalues; - - double **alocal; - typename AT::tdual_float_2d k_alocal; - PairReaxFF *reaxff; + int nbuf; + double *buf; + typename AT::tdual_float_1d k_buf; auto device_pair() { return dynamic_cast*>(reaxff); diff --git a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp b/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp deleted file mode 100644 index a56d243ed6c..00000000000 --- a/src/KOKKOS/compute_reaxff_bonds_local_kokkos.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Richard Berger (LANL) -------------------------------------------------------------------------- */ - -#include "compute_reaxff_bonds_local_kokkos.h" -#include "atom.h" -#include "molecule.h" -#include "update.h" -#include "force.h" -#include "memory.h" -#include "error.h" -#include "neigh_list.h" - -#include "memory_kokkos.h" -#include "pair_reaxff_kokkos.h" -#include "reaxff_api.h" - -using namespace LAMMPS_NS; -using namespace ReaxFF; - -/* ---------------------------------------------------------------------- */ - -template -ComputeReaxFFBondsLocalKokkos::ComputeReaxFFBondsLocalKokkos(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - alocal(nullptr), reaxff(nullptr) -{ - if (atom->tag_consecutive() == 0) - error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds/local"); - - local_flag = 1; - - nvalues = 7 + 2*MAXREAXBOND; - prev_nvalues = 0; - - // initialize output - - nlocal = atom->nlocal; - - size_local_rows = atom->nlocal; - size_local_cols = 7 + 2*MAXREAXBOND; - printf("RUNNING KOKKOS VERSION\n"); -} - - -/* ---------------------------------------------------------------------- */ - -template -ComputeReaxFFBondsLocalKokkos::~ComputeReaxFFBondsLocalKokkos() -{ - memoryKK->destroy_kokkos(k_alocal, alocal); -} - -/* ---------------------------------------------------------------------- */ - -template -void ComputeReaxFFBondsLocalKokkos::init() -{ - reaxff = dynamic_cast(force->pair_match("^reax../kk",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use fix reaxff/bonds without " - "pair_style reaxff/kk"); -} - -/* ---------------------------------------------------------------------- */ - -template -void ComputeReaxFFBondsLocalKokkos::compute_local() -{ - invoked_local = update->ntimestep; - - int maxnumbonds = 0; - if (reaxff->execution_space == Device) - device_pair()->FindBond(maxnumbonds); - else - host_pair()->FindBond(maxnumbonds); - nvalues = 7+2*maxnumbonds; - - if(atom->nlocal > nlocal || nvalues > prev_nvalues) { - nlocal = atom->nlocal; - memoryKK->destroy_kokkos(k_alocal, alocal); - memoryKK->create_kokkos(k_alocal, alocal, atom->nlocal, nvalues,"reaxff/bonds/local:alocal"); - prev_nvalues = nvalues; - array_local = alocal; - } - - size_local_rows = nlocal; - size_local_cols = nvalues; - - if (reaxff->execution_space == Device) - device_pair()->PackBondInfo(k_alocal); - else - host_pair()->PackBondInfo(k_alocal); -} - -/* ---------------------------------------------------------------------- - memory usage of local data -------------------------------------------------------------------------- */ - -template -double ComputeReaxFFBondsLocalKokkos::memory_usage() -{ - double bytes = (double)nlocal*nvalues * sizeof(double); - return bytes; -} - -namespace LAMMPS_NS { -template class ComputeReaxFFBondsLocalKokkos; -#ifdef LMP_KOKKOS_GPU -template class ComputeReaxFFBondsLocalKokkos; -#endif -} diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index fbf90f140db..c7d54b80cdd 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4290,61 +4290,6 @@ void PairReaxFFKokkos::pack_bond_buffer_item(int i, int &j, const bo /* ---------------------------------------------------------------------- */ -template -void PairReaxFFKokkos::PackBondInfo(DAT::tdual_float_2d k_alocal) -{ - d_alocal = k_alocal.view(); - k_params_sing.template sync(); - atomKK->sync(execution_space,TAG_MASK|TYPE_MASK|Q_MASK|MOLECULE_MASK); - - tag = atomKK->k_tag.view(); - type = atomKK->k_type.view(); - q = atomKK->k_q.view(); - if (atom->molecule) - molecule = atomKK->k_molecule.view(); - - copymode = 1; - nlocal = atomKK->nlocal; - PairReaxKokkosPackBondInfoFunctor pack_bond_info_functor(this); - Kokkos::parallel_for(nlocal, pack_bond_info_functor); - copymode = 0; - - k_alocal.modify(); - k_alocal.sync(); -} - -template -KOKKOS_INLINE_FUNCTION -void PairReaxFFKokkos::pack_bond_info_item(const int i) const -{ - const int numbonds = d_numneigh_bonds[i]; - d_alocal(i,0) = tag[i]; - d_alocal(i,1) = type[i]; - d_alocal(i,2) = numbonds; - - int j = 3; - - for (int k = 0; k < numbonds; k++) { - d_alocal(i,j++) = d_neighid(i,k); - } - - d_alocal(i,j++) = molecule.data() ? molecule[i] : 0.0; - - for (int k = 0; k < numbonds; k++) { - d_alocal(i,j++) = d_abo(i,k); - } - - d_alocal(i,j++) = d_total_bo[i]; - d_alocal(i,j++) = paramssing(type[i]).nlp_opt - d_Delta_lp[i]; - d_alocal(i,j++) = q[i]; - - for(; j < d_alocal.extent(1); ++j) { - d_alocal(i,j) = 0.0; - } -} - -/* ---------------------------------------------------------------------- */ - template void PairReaxFFKokkos::FindBondSpecies() { diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 32007e9970e..1ad0955a1e6 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -135,7 +135,6 @@ class PairReaxFFKokkos : public PairReaxFF { double memory_usage(); void FindBond(int &); void PackBondBuffer(DAT::tdual_ffloat_1d, int &); - void PackBondInfo(DAT::tdual_float_2d); void FindBondSpecies(); template @@ -293,9 +292,6 @@ class PairReaxFFKokkos : public PairReaxFF { KOKKOS_INLINE_FUNCTION void pack_bond_buffer_item(int, int&, const bool&) const; - KOKKOS_INLINE_FUNCTION - void pack_bond_info_item(const int) const; - KOKKOS_INLINE_FUNCTION void operator()(TagPairReaxFindBondSpeciesZero, const int&) const; @@ -510,8 +506,6 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_ffloat_1d d_buf; DAT::tdual_int_scalar k_nbuf_local; - typename AT::t_float_2d d_alocal; - typedef Kokkos::View t_reax_int4_2d; t_reax_int4_2d d_angular_pack, d_torsion_pack; @@ -555,19 +549,6 @@ struct PairReaxKokkosPackBondBufferFunctor { } }; -template -struct PairReaxKokkosPackBondInfoFunctor { - using device_type = DeviceType; - using value_type = int; - PairReaxFFKokkos c; - PairReaxKokkosPackBondInfoFunctor(PairReaxFFKokkos* c_ptr):c(*c_ptr) {}; - - KOKKOS_INLINE_FUNCTION - void operator()(const int i) const { - c.pack_bond_info_item(i); - } -}; - } #endif From ca143e6ba8da5fba4e44e06472a84ec10fd0f4fe Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 17 Oct 2023 16:40:03 -0600 Subject: [PATCH 112/300] undo minor change --- examples/reaxff/in.reaxff.tatb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/reaxff/in.reaxff.tatb b/examples/reaxff/in.reaxff.tatb index fd0d8461548..f422943a138 100644 --- a/examples/reaxff/in.reaxff.tatb +++ b/examples/reaxff/in.reaxff.tatb @@ -35,7 +35,7 @@ compute bonds all reaxff/bonds variable nqeq equal f_2 # dumps out the local bond information -dump 1 all local 5 bonds_compute.reaxff c_bonds[1] c_bonds[2] c_bonds[3] +dump 1 all local 5 bonds_local.reaxff c_bonds[1] c_bonds[2] c_bonds[3] # dumps out the peratom bond information dump 2 all custom 5 bonds_atom.reaxff c_bonds[*] @@ -57,6 +57,6 @@ timestep 0.0625 # axes yes 0.8 0.02 view 60 -30 #dump_modify 3 pad 3 -#fix 3 all reaxff/species 1 5 5 species.tatb +fix 3 all reaxff/species 1 5 5 species.tatb run 25 From 717e7b064965ec575eeb25ecbbd2d510d9e22100 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 18 Oct 2023 11:30:16 -0600 Subject: [PATCH 113/300] Address comments --- src/KOKKOS/compute_reaxff_bonds_kokkos.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp index 921acb91938..5c8885ce7a6 100644 --- a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp @@ -39,6 +39,7 @@ ComputeReaxFFBondsKokkos::ComputeReaxFFBondsKokkos(LAMMPS *lmp, int ComputeReaxFFBonds(lmp, narg, arg), nbuf(-1), buf(nullptr) { + kokkosable = 1; } @@ -113,9 +114,8 @@ void ComputeReaxFFBondsKokkos::compute_local() { invoked_local = update->ntimestep; - if(invoked_bonds < update->ntimestep) { + if(invoked_bonds < update->ntimestep) compute_bonds(); - } if(nbonds > prev_nbonds) { // grow array_local @@ -151,9 +151,8 @@ void ComputeReaxFFBondsKokkos::compute_peratom() { invoked_peratom = update->ntimestep; - if(invoked_bonds < update->ntimestep) { + if(invoked_bonds < update->ntimestep) compute_bonds(); - } // extract peratom bond information from buffer int j = 1; From 9bffeb9512b595dd7fd2db4b27c7c46d3e45a034 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 18 Oct 2023 16:21:10 -0600 Subject: [PATCH 114/300] Next iteration --- examples/reaxff/in.reaxff.tatb | 2 +- src/KOKKOS/compute_reaxff_bonds_kokkos.cpp | 47 +++++++++--------- src/KOKKOS/compute_reaxff_bonds_kokkos.h | 4 +- src/KOKKOS/pair_reaxff_kokkos.cpp | 57 ++++++++++++++++++++++ src/KOKKOS/pair_reaxff_kokkos.h | 17 +++++++ src/REAXFF/compute_reaxff_bonds.cpp | 30 +++++------- src/REAXFF/compute_reaxff_bonds.h | 2 +- 7 files changed, 114 insertions(+), 45 deletions(-) diff --git a/examples/reaxff/in.reaxff.tatb b/examples/reaxff/in.reaxff.tatb index f422943a138..50f572a9948 100644 --- a/examples/reaxff/in.reaxff.tatb +++ b/examples/reaxff/in.reaxff.tatb @@ -38,7 +38,7 @@ variable nqeq equal f_2 dump 1 all local 5 bonds_local.reaxff c_bonds[1] c_bonds[2] c_bonds[3] # dumps out the peratom bond information -dump 2 all custom 5 bonds_atom.reaxff c_bonds[*] +dump 2 all custom 5 bonds_atom.reaxff id type q c_bonds[*] thermo 5 thermo_style custom step temp epair etotal press & diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp index 5c8885ce7a6..f36832e6aca 100644 --- a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp @@ -68,7 +68,7 @@ void ComputeReaxFFBondsKokkos::compute_bonds() if (atom->nlocal > nlocal) { memory->destroy(array_atom); nlocal = atom->nlocal; - memory->create(array_atom, nlocal, 7, "reaxff/bonds:array_atom"); + memory->create(array_atom, nlocal, 3, "reaxff/bonds:array_atom"); } // retrieve bond information from kokkos pair style. the data potentially @@ -76,13 +76,14 @@ void ComputeReaxFFBondsKokkos::compute_bonds() // compute_local and compute_atom then expand the data from this buffer into // appropiate arrays for consumption by others (e.g. dump local, dump custom // or library interface) + int maxnumbonds = 0; if (reaxff->execution_space == Device) device_pair()->FindBond(maxnumbonds); else host_pair()->FindBond(maxnumbonds); - nbuf = 1+(maxnumbonds*2 + 7)*nlocal; + nbuf = (maxnumbonds*2 + 3)*nlocal; if(!buf || k_buf.extent(0) < nbuf) { memoryKK->destroy_kokkos(k_buf, buf); @@ -90,20 +91,21 @@ void ComputeReaxFFBondsKokkos::compute_bonds() } // Pass information to buffer, will sync to host + int nbuf_local; if (reaxff->execution_space == Device) - device_pair()->PackBondBuffer(k_buf, nbuf_local); + device_pair()->PackReducedBondBuffer(k_buf, nbuf_local); else - host_pair()->PackBondBuffer(k_buf, nbuf_local); - buf[0] = nlocal; + host_pair()->PackReducedBondBuffer(k_buf, nbuf_local); // Extract number of bonds from buffer + nbonds = 0; - int j = 1; + int j = 0; for (int i = 0; i < nlocal; i++) { - int numbonds = static_cast(buf[j+5]); + int numbonds = static_cast(buf[j+2]); nbonds += numbonds; - j += 2*numbonds + 7; + j += 2*numbonds + 3; } } @@ -127,20 +129,21 @@ void ComputeReaxFFBondsKokkos::compute_local() size_local_rows = nbonds; // extract local bond information from buffer + int b = 0; - int j = 1; + int j = 0; for (int i = 0; i < nlocal; ++i) { - const int numbonds = static_cast(buf[j+5]); - const int neigh_offset = j + 6; - const int bo_offset = neigh_offset + numbonds + 1; + const int numbonds = static_cast(buf[j+2]); + const int neigh_offset = j + 3; + const int bo_offset = neigh_offset + numbonds; for (int k = 0; k < numbonds; k++) { auto bond = array_local[b++]; bond[0] = i; bond[1] = static_cast (buf[neigh_offset+k]); bond[2] = buf[bo_offset+k]; } - j += 2*numbonds + 7; + j += 2*numbonds + 3; } } @@ -155,19 +158,15 @@ void ComputeReaxFFBondsKokkos::compute_peratom() compute_bonds(); // extract peratom bond information from buffer - int j = 1; + + int j = 0; for (int i = 0; i < nlocal; ++i) { auto ptr = array_atom[i]; - int numbonds = static_cast(buf[j+5]); - const int mol_offset = j + 6 + numbonds; - ptr[0] = buf[j]; // jtag - ptr[1] = buf[j+1]; // itype + int numbonds = static_cast(buf[j+2]); + ptr[0] = buf[j]; // sbo + ptr[1] = buf[j+1]; // nlp ptr[2] = numbonds; - ptr[3] = buf[mol_offset]; // mol - ptr[4] = buf[j+2]; // sbo - ptr[5] = buf[j+3]; // nlp - ptr[6] = buf[j+4]; // q - j += 2*numbonds + 7; + j += 2*numbonds + 3; } } @@ -179,7 +178,7 @@ template double ComputeReaxFFBondsKokkos::memory_usage() { double bytes = (double)(nbonds*3) * sizeof(double); - bytes += (double)(nlocal*7) * sizeof(double); + bytes += (double)(nlocal*3) * sizeof(double); return bytes; } diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.h b/src/KOKKOS/compute_reaxff_bonds_kokkos.h index 45020ffa813..48f38602837 100644 --- a/src/KOKKOS/compute_reaxff_bonds_kokkos.h +++ b/src/KOKKOS/compute_reaxff_bonds_kokkos.h @@ -52,11 +52,11 @@ class ComputeReaxFFBondsKokkos : public ComputeReaxFFBonds { typename AT::tdual_float_1d k_buf; auto device_pair() { - return dynamic_cast*>(reaxff); + return static_cast*>(reaxff); } auto host_pair() { - return dynamic_cast*>(reaxff); + return static_cast*>(reaxff); } }; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index c7d54b80cdd..e298eca2da8 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4247,6 +4247,30 @@ void PairReaxFFKokkos::PackBondBuffer(DAT::tdual_ffloat_1d k_buf, in nbuf_local = k_nbuf_local.h_view(); } +/* ---------------------------------------------------------------------- */ + +template +void PairReaxFFKokkos::PackReducedBondBuffer(DAT::tdual_ffloat_1d k_buf, int &nbuf_local) +{ + d_buf = k_buf.view(); + k_params_sing.template sync(); + + copymode = 1; + nlocal = atomKK->nlocal; + PairReaxKokkosPackReducedBondBufferFunctor pack_bond_buffer_functor(this); + Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); + copymode = 0; + + k_buf.modify(); + k_nbuf_local.modify(); + + k_buf.sync(); + k_nbuf_local.sync(); + nbuf_local = k_nbuf_local.h_view(); +} + +/* ---------------------------------------------------------------------- */ + template KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::pack_bond_buffer_item(int i, int &j, const bool &final) const @@ -4288,6 +4312,39 @@ void PairReaxFFKokkos::pack_bond_buffer_item(int i, int &j, const bo k_nbuf_local.view()() = j - 1; } +template +KOKKOS_INLINE_FUNCTION +void PairReaxFFKokkos::pack_reduced_bond_buffer_item(int i, int &j, const bool &final) const +{ + const int numbonds = d_numneigh_bonds[i]; + if (final) { + d_buf[j] = d_total_bo[i]; + d_buf[j+1] = paramssing(type[i]).nlp_opt - d_Delta_lp[i]; + d_buf[j+2] = numbonds; + } + + j += 3; + + if (final) { + for (int k = 0; k < numbonds; ++k) { + d_buf[j+k] = d_neighid(i,k); + } + } + + j += numbonds; + + if (final) { + for (int k = 0; k < numbonds; k++) { + d_buf[j+k] = d_abo(i,k); + } + } + + j += numbonds; + + if (final && i == nlocal-1) + k_nbuf_local.view()() = j - 1; +} + /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 1ad0955a1e6..571dd63fd18 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -135,6 +135,7 @@ class PairReaxFFKokkos : public PairReaxFF { double memory_usage(); void FindBond(int &); void PackBondBuffer(DAT::tdual_ffloat_1d, int &); + void PackReducedBondBuffer(DAT::tdual_ffloat_1d, int &); void FindBondSpecies(); template @@ -292,6 +293,9 @@ class PairReaxFFKokkos : public PairReaxFF { KOKKOS_INLINE_FUNCTION void pack_bond_buffer_item(int, int&, const bool&) const; + KOKKOS_INLINE_FUNCTION + void pack_reduced_bond_buffer_item(int, int&, const bool&) const; + KOKKOS_INLINE_FUNCTION void operator()(TagPairReaxFindBondSpeciesZero, const int&) const; @@ -549,6 +553,19 @@ struct PairReaxKokkosPackBondBufferFunctor { } }; +template +struct PairReaxKokkosPackReducedBondBufferFunctor { + typedef DeviceType device_type; + typedef int value_type; + PairReaxFFKokkos c; + PairReaxKokkosPackReducedBondBufferFunctor(PairReaxFFKokkos* c_ptr):c(*c_ptr) {}; + + KOKKOS_INLINE_FUNCTION + void operator()(const int ii, int &j, const bool &final) const { + c.pack_reduced_bond_buffer_item(ii,j,final); + } +}; + } #endif diff --git a/src/REAXFF/compute_reaxff_bonds.cpp b/src/REAXFF/compute_reaxff_bonds.cpp index 7f1605263c6..3b3520fda3b 100644 --- a/src/REAXFF/compute_reaxff_bonds.cpp +++ b/src/REAXFF/compute_reaxff_bonds.cpp @@ -35,7 +35,7 @@ using namespace ReaxFF; ComputeReaxFFBonds::ComputeReaxFFBonds(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - abo(nullptr), neighid(nullptr), numneigh(nullptr), reaxff(nullptr) + abo(nullptr), neighid(nullptr), bondcount(nullptr), reaxff(nullptr) { if (atom->tag_consecutive() == 0) error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds"); @@ -48,7 +48,7 @@ ComputeReaxFFBonds::ComputeReaxFFBonds(LAMMPS *lmp, int narg, char **arg) : nlocal = -1; prev_nbonds = -1; - size_peratom_cols = 7; + size_peratom_cols = 3; size_local_rows = 0; size_local_cols = 3; @@ -65,7 +65,7 @@ ComputeReaxFFBonds::~ComputeReaxFFBonds() memory->destroy(array_atom); memory->destroy(abo); memory->destroy(neighid); - memory->destroy(numneigh); + memory->destroy(bondcount); } /* ---------------------------------------------------------------------- */ @@ -110,7 +110,7 @@ int ComputeReaxFFBonds::FindBond() nj++; } } - numneigh[i] = nj; + bondcount[i] = nj; numbonds += nj; } return numbonds; @@ -126,17 +126,17 @@ void ComputeReaxFFBonds::compute_bonds() if (atom->nlocal > nlocal) { memory->destroy(abo); memory->destroy(neighid); - memory->destroy(numneigh); + memory->destroy(bondcount); memory->destroy(array_atom); nlocal = atom->nlocal; memory->create(abo, nlocal, MAXREAXBOND, "reaxff/bonds:abo"); memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/bonds:neighid"); - memory->create(numneigh, nlocal, "reaxff/bonds:numneigh"); - memory->create(array_atom, nlocal, 7, "reaxff/bonds:array_atom"); + memory->create(bondcount, nlocal, "reaxff/bonds:bondcount"); + memory->create(array_atom, nlocal, 3, "reaxff/bonds:array_atom"); } for (int i = 0; i < nlocal; i++) { - numneigh[i] = 0; + bondcount[i] = 0; for (int j = 0; j < MAXREAXBOND; j++) { neighid[i][j] = 0; abo[i][j] = 0.0; @@ -168,7 +168,7 @@ void ComputeReaxFFBonds::compute_local() int b = 0; for (int i = 0; i < nlocal; ++i) { - const int numbonds = numneigh[i]; + const int numbonds = bondcount[i]; for (int k = 0; k < numbonds; k++) { auto bond = array_local[b++]; @@ -191,13 +191,9 @@ void ComputeReaxFFBonds::compute_peratom() for (int i = 0; i < nlocal; ++i) { auto ptr = array_atom[i]; - ptr[0] = atom->tag[i]; - ptr[1] = atom->type[i]; - ptr[2] = numneigh[i]; - ptr[3] = (atom->molecule == nullptr) ? 0.0 : atom->molecule[i]; - ptr[4] = reaxff->api->workspace->total_bond_order[i]; - ptr[5] = reaxff->api->workspace->nlp[i]; - ptr[6] = atom->q[i]; + ptr[0] = reaxff->api->workspace->total_bond_order[i]; + ptr[1] = reaxff->api->workspace->nlp[i]; + ptr[2] = bondcount[i]; } } @@ -208,7 +204,7 @@ void ComputeReaxFFBonds::compute_peratom() double ComputeReaxFFBonds::memory_usage() { double bytes = (double)(nbonds*3) * sizeof(double); - bytes += (double)(nlocal*7) * sizeof(double); + bytes += (double)(nlocal*3) * sizeof(double); bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); bytes += (double)(nlocal) * sizeof(int); return bytes; diff --git a/src/REAXFF/compute_reaxff_bonds.h b/src/REAXFF/compute_reaxff_bonds.h index 6b00cef7ed2..b876c9e02df 100644 --- a/src/REAXFF/compute_reaxff_bonds.h +++ b/src/REAXFF/compute_reaxff_bonds.h @@ -46,7 +46,7 @@ class ComputeReaxFFBonds : public Compute { tagint **neighid; double **abo; - int *numneigh; + int *bondcount; class PairReaxFF *reaxff; private: From afd0107f01ff552aba336ccc02af240f3aed33a8 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 8 Nov 2023 14:17:18 -0700 Subject: [PATCH 115/300] Add new files to makefile build system --- src/KOKKOS/Install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 489efc55a04..01db058d5b1 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -165,6 +165,8 @@ action fix_qeq_reaxff_kokkos.cpp fix_qeq_reaxff.cpp action fix_qeq_reaxff_kokkos.h fix_qeq_reaxff.h action fix_reaxff_bonds_kokkos.cpp fix_reaxff_bonds.cpp action fix_reaxff_bonds_kokkos.h fix_reaxff_bonds.h +action compute_reaxff_bonds_kokkos.cpp compute_reaxff_bonds.cpp +action compute_reaxff_bonds_kokkos.h compute_reaxff_bonds.h action fix_reaxff_species_kokkos.cpp fix_reaxff_species.cpp action fix_reaxff_species_kokkos.h fix_reaxff_species.h action fix_rx_kokkos.cpp fix_rx.cpp From 16f0806da07289e3aea388b453e03ba24f042120 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 20 Nov 2023 15:36:46 -0700 Subject: [PATCH 116/300] Rename compute to reaxff/atom --- examples/reaxff/in.reaxff.tatb | 2 +- src/KOKKOS/Install.sh | 4 +- ...kos.cpp => compute_reaxff_atom_kokkos.cpp} | 46 ++++++------- ..._kokkos.h => compute_reaxff_atom_kokkos.h} | 14 ++-- src/KOKKOS/pair_reaxff_kokkos.cpp | 35 ++++++---- src/KOKKOS/pair_reaxff_kokkos.h | 7 +- ...axff_bonds.cpp => compute_reaxff_atom.cpp} | 64 ++++++++++++------- ...e_reaxff_bonds.h => compute_reaxff_atom.h} | 13 ++-- 8 files changed, 108 insertions(+), 77 deletions(-) rename src/KOKKOS/{compute_reaxff_bonds_kokkos.cpp => compute_reaxff_atom_kokkos.cpp} (76%) rename src/KOKKOS/{compute_reaxff_bonds_kokkos.h => compute_reaxff_atom_kokkos.h} (79%) rename src/REAXFF/{compute_reaxff_bonds.cpp => compute_reaxff_atom.cpp} (74%) rename src/REAXFF/{compute_reaxff_bonds.h => compute_reaxff_atom.h} (84%) diff --git a/examples/reaxff/in.reaxff.tatb b/examples/reaxff/in.reaxff.tatb index 50f572a9948..967ed0a1d68 100644 --- a/examples/reaxff/in.reaxff.tatb +++ b/examples/reaxff/in.reaxff.tatb @@ -31,7 +31,7 @@ neigh_modify delay 0 every 5 check no fix 1 all nve fix 2 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff fix 4 all reaxff/bonds 5 bonds.reaxff -compute bonds all reaxff/bonds +compute bonds all reaxff/atom bonds yes variable nqeq equal f_2 # dumps out the local bond information diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 01db058d5b1..28fe6d5cd65 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -165,8 +165,8 @@ action fix_qeq_reaxff_kokkos.cpp fix_qeq_reaxff.cpp action fix_qeq_reaxff_kokkos.h fix_qeq_reaxff.h action fix_reaxff_bonds_kokkos.cpp fix_reaxff_bonds.cpp action fix_reaxff_bonds_kokkos.h fix_reaxff_bonds.h -action compute_reaxff_bonds_kokkos.cpp compute_reaxff_bonds.cpp -action compute_reaxff_bonds_kokkos.h compute_reaxff_bonds.h +action compute_reaxff_atom_kokkos.cpp compute_reaxff_atom.cpp +action compute_reaxff_atom_kokkos.h compute_reaxff_atom.h action fix_reaxff_species_kokkos.cpp fix_reaxff_species.cpp action fix_reaxff_species_kokkos.h fix_reaxff_species.h action fix_rx_kokkos.cpp fix_rx.cpp diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp similarity index 76% rename from src/KOKKOS/compute_reaxff_bonds_kokkos.cpp rename to src/KOKKOS/compute_reaxff_atom_kokkos.cpp index f36832e6aca..2485d9ae72e 100644 --- a/src/KOKKOS/compute_reaxff_bonds_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -16,7 +16,7 @@ Contributing author: Richard Berger (LANL) ------------------------------------------------------------------------- */ -#include "compute_reaxff_bonds_kokkos.h" +#include "compute_reaxff_atom_kokkos.h" #include "atom.h" #include "molecule.h" #include "update.h" @@ -35,8 +35,8 @@ using namespace ReaxFF; /* ---------------------------------------------------------------------- */ template -ComputeReaxFFBondsKokkos::ComputeReaxFFBondsKokkos(LAMMPS *lmp, int narg, char **arg) : - ComputeReaxFFBonds(lmp, narg, arg), +ComputeReaxFFAtomKokkos::ComputeReaxFFAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeReaxFFAtom(lmp, narg, arg), nbuf(-1), buf(nullptr) { kokkosable = 1; @@ -46,7 +46,7 @@ ComputeReaxFFBondsKokkos::ComputeReaxFFBondsKokkos(LAMMPS *lmp, int /* ---------------------------------------------------------------------- */ template -ComputeReaxFFBondsKokkos::~ComputeReaxFFBondsKokkos() +ComputeReaxFFAtomKokkos::~ComputeReaxFFAtomKokkos() { memoryKK->destroy_kokkos(k_buf, buf); } @@ -54,21 +54,21 @@ ComputeReaxFFBondsKokkos::~ComputeReaxFFBondsKokkos() /* ---------------------------------------------------------------------- */ template -void ComputeReaxFFBondsKokkos::init() +void ComputeReaxFFAtomKokkos::init() { reaxff = dynamic_cast(force->pair_match("^reax../kk",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds without " + if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/atom without " "pair_style reaxff/kk"); } /* ---------------------------------------------------------------------- */ template -void ComputeReaxFFBondsKokkos::compute_bonds() +void ComputeReaxFFAtomKokkos::compute_bonds() { if (atom->nlocal > nlocal) { memory->destroy(array_atom); nlocal = atom->nlocal; - memory->create(array_atom, nlocal, 3, "reaxff/bonds:array_atom"); + memory->create(array_atom, nlocal, 3, "reaxff/atom:array_atom"); } // retrieve bond information from kokkos pair style. the data potentially @@ -83,20 +83,20 @@ void ComputeReaxFFBondsKokkos::compute_bonds() else host_pair()->FindBond(maxnumbonds); - nbuf = (maxnumbonds*2 + 3)*nlocal; + nbuf = ((store_bonds ? maxnumbonds*2 : 0) + 3)*nlocal; if(!buf || k_buf.extent(0) < nbuf) { memoryKK->destroy_kokkos(k_buf, buf); - memoryKK->create_kokkos(k_buf, buf, nbuf, "reaxff/bonds:buf"); + memoryKK->create_kokkos(k_buf, buf, nbuf, "reaxff/atom:buf"); } // Pass information to buffer, will sync to host int nbuf_local; if (reaxff->execution_space == Device) - device_pair()->PackReducedBondBuffer(k_buf, nbuf_local); + device_pair()->PackReducedBondBuffer(k_buf, nbuf_local, store_bonds); else - host_pair()->PackReducedBondBuffer(k_buf, nbuf_local); + host_pair()->PackReducedBondBuffer(k_buf, nbuf_local, store_bonds); // Extract number of bonds from buffer @@ -105,14 +105,14 @@ void ComputeReaxFFBondsKokkos::compute_bonds() for (int i = 0; i < nlocal; i++) { int numbonds = static_cast(buf[j+2]); nbonds += numbonds; - j += 2*numbonds + 3; + j += (store_bonds ? 2*numbonds : 0) + 3; } } /* ---------------------------------------------------------------------- */ template -void ComputeReaxFFBondsKokkos::compute_local() +void ComputeReaxFFAtomKokkos::compute_local() { invoked_local = update->ntimestep; @@ -122,7 +122,7 @@ void ComputeReaxFFBondsKokkos::compute_local() if(nbonds > prev_nbonds) { // grow array_local memory->destroy(array_local); - memory->create(array_local, nbonds, 3, "reaxff/bonds:array_local"); + memory->create(array_local, nbonds, 3, "reaxff/atom:array_local"); prev_nbonds = nbonds; } @@ -150,7 +150,7 @@ void ComputeReaxFFBondsKokkos::compute_local() /* ---------------------------------------------------------------------- */ template -void ComputeReaxFFBondsKokkos::compute_peratom() +void ComputeReaxFFAtomKokkos::compute_peratom() { invoked_peratom = update->ntimestep; @@ -166,7 +166,7 @@ void ComputeReaxFFBondsKokkos::compute_peratom() ptr[0] = buf[j]; // sbo ptr[1] = buf[j+1]; // nlp ptr[2] = numbonds; - j += 2*numbonds + 3; + j += (store_bonds ? 2*numbonds : 0) + 3; } } @@ -175,16 +175,18 @@ void ComputeReaxFFBondsKokkos::compute_peratom() ------------------------------------------------------------------------- */ template -double ComputeReaxFFBondsKokkos::memory_usage() +double ComputeReaxFFAtomKokkos::memory_usage() { - double bytes = (double)(nbonds*3) * sizeof(double); - bytes += (double)(nlocal*3) * sizeof(double); + double bytes = (double)(nlocal*3) * sizeof(double); + if(store_bonds) + bytes += (double)(nbonds*3) * sizeof(double); + bytes += (double)(nbuf > 0 ? nbuf * sizeof(double) : 0); return bytes; } namespace LAMMPS_NS { -template class ComputeReaxFFBondsKokkos; +template class ComputeReaxFFAtomKokkos; #ifdef LMP_KOKKOS_GPU -template class ComputeReaxFFBondsKokkos; +template class ComputeReaxFFAtomKokkos; #endif } diff --git a/src/KOKKOS/compute_reaxff_bonds_kokkos.h b/src/KOKKOS/compute_reaxff_atom_kokkos.h similarity index 79% rename from src/KOKKOS/compute_reaxff_bonds_kokkos.h rename to src/KOKKOS/compute_reaxff_atom_kokkos.h index 48f38602837..7037c7e3080 100644 --- a/src/KOKKOS/compute_reaxff_bonds_kokkos.h +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.h @@ -17,29 +17,29 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(reaxff/bonds/kk,ComputeReaxFFBondsKokkos); -ComputeStyle(reaxff/bonds/kk/device,ComputeReaxFFBondsKokkos); -ComputeStyle(reaxff/bonds/kk/host,ComputeReaxFFBondsKokkos); +ComputeStyle(reaxff/atom/kk,ComputeReaxFFAtomKokkos); +ComputeStyle(reaxff/atom/kk/device,ComputeReaxFFAtomKokkos); +ComputeStyle(reaxff/atom/kk/host,ComputeReaxFFAtomKokkos); // clang-format on #else #ifndef LMP_COMPUTE_REAXFF_BONDS_KOKKOS_H #define LMP_COMPUTE_REAXFF_BONDS_KOKKOS_H -#include "compute_reaxff_bonds.h" +#include "compute_reaxff_atom.h" #include "pair_reaxff_kokkos.h" #include "kokkos_type.h" namespace LAMMPS_NS { template -class ComputeReaxFFBondsKokkos : public ComputeReaxFFBonds { +class ComputeReaxFFAtomKokkos : public ComputeReaxFFAtom { public: using device_type = DeviceType; using AT = ArrayTypes; - ComputeReaxFFBondsKokkos(class LAMMPS *, int, char **); - ~ComputeReaxFFBondsKokkos() override; + ComputeReaxFFAtomKokkos(class LAMMPS *, int, char **); + ~ComputeReaxFFAtomKokkos() override; void init() override; void compute_local() override; void compute_peratom() override; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index e298eca2da8..914962f0e61 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4250,15 +4250,21 @@ void PairReaxFFKokkos::PackBondBuffer(DAT::tdual_ffloat_1d k_buf, in /* ---------------------------------------------------------------------- */ template -void PairReaxFFKokkos::PackReducedBondBuffer(DAT::tdual_ffloat_1d k_buf, int &nbuf_local) +void PairReaxFFKokkos::PackReducedBondBuffer(DAT::tdual_ffloat_1d k_buf, int &nbuf_local, bool store_bonds) { d_buf = k_buf.view(); k_params_sing.template sync(); copymode = 1; nlocal = atomKK->nlocal; - PairReaxKokkosPackReducedBondBufferFunctor pack_bond_buffer_functor(this); - Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); + if(store_bonds) { + PairReaxKokkosPackReducedBondBufferFunctor pack_bond_buffer_functor(this); + Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); + } else { + PairReaxKokkosPackReducedBondBufferFunctor pack_bond_buffer_functor(this); + Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); + } + copymode = 0; k_buf.modify(); @@ -4313,6 +4319,7 @@ void PairReaxFFKokkos::pack_bond_buffer_item(int i, int &j, const bo } template +template KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::pack_reduced_bond_buffer_item(int i, int &j, const bool &final) const { @@ -4325,21 +4332,23 @@ void PairReaxFFKokkos::pack_reduced_bond_buffer_item(int i, int &j, j += 3; - if (final) { - for (int k = 0; k < numbonds; ++k) { - d_buf[j+k] = d_neighid(i,k); + if constexpr(STORE_BONDS) { + if (final) { + for (int k = 0; k < numbonds; ++k) { + d_buf[j+k] = d_neighid(i,k); + } } - } - j += numbonds; + j += numbonds; - if (final) { - for (int k = 0; k < numbonds; k++) { - d_buf[j+k] = d_abo(i,k); + if (final) { + for (int k = 0; k < numbonds; k++) { + d_buf[j+k] = d_abo(i,k); + } } - } - j += numbonds; + j += numbonds; + } if (final && i == nlocal-1) k_nbuf_local.view()() = j - 1; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 571dd63fd18..f246afcc866 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -135,7 +135,7 @@ class PairReaxFFKokkos : public PairReaxFF { double memory_usage(); void FindBond(int &); void PackBondBuffer(DAT::tdual_ffloat_1d, int &); - void PackReducedBondBuffer(DAT::tdual_ffloat_1d, int &); + void PackReducedBondBuffer(DAT::tdual_ffloat_1d, int &, bool); void FindBondSpecies(); template @@ -293,6 +293,7 @@ class PairReaxFFKokkos : public PairReaxFF { KOKKOS_INLINE_FUNCTION void pack_bond_buffer_item(int, int&, const bool&) const; + template KOKKOS_INLINE_FUNCTION void pack_reduced_bond_buffer_item(int, int&, const bool&) const; @@ -553,7 +554,7 @@ struct PairReaxKokkosPackBondBufferFunctor { } }; -template +template struct PairReaxKokkosPackReducedBondBufferFunctor { typedef DeviceType device_type; typedef int value_type; @@ -562,7 +563,7 @@ struct PairReaxKokkosPackReducedBondBufferFunctor { KOKKOS_INLINE_FUNCTION void operator()(const int ii, int &j, const bool &final) const { - c.pack_reduced_bond_buffer_item(ii,j,final); + c.template pack_reduced_bond_buffer_item(ii,j,final); } }; diff --git a/src/REAXFF/compute_reaxff_bonds.cpp b/src/REAXFF/compute_reaxff_atom.cpp similarity index 74% rename from src/REAXFF/compute_reaxff_bonds.cpp rename to src/REAXFF/compute_reaxff_atom.cpp index 3b3520fda3b..d975fe42f84 100644 --- a/src/REAXFF/compute_reaxff_bonds.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -16,7 +16,7 @@ Contributing author: Richard Berger (LANL) ------------------------------------------------------------------------- */ -#include "compute_reaxff_bonds.h" +#include "compute_reaxff_atom.h" #include "atom.h" #include "molecule.h" #include "update.h" @@ -33,14 +33,13 @@ using namespace ReaxFF; /* ---------------------------------------------------------------------- */ -ComputeReaxFFBonds::ComputeReaxFFBonds(LAMMPS *lmp, int narg, char **arg) : +ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), abo(nullptr), neighid(nullptr), bondcount(nullptr), reaxff(nullptr) { if (atom->tag_consecutive() == 0) - error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/bonds"); + error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/atom"); - local_flag = 1; peratom_flag = 1; // initialize output @@ -54,12 +53,25 @@ ComputeReaxFFBonds::ComputeReaxFFBonds(LAMMPS *lmp, int narg, char **arg) : size_local_cols = 3; invoked_bonds = -1; + + store_bonds = false; + + int iarg = 3; + while (iarg narg) utils::missing_cmd_args(FLERR, "compute reaxff/atom bonds", error); + store_bonds = utils::logical(FLERR, arg[iarg+1], false, lmp); + iarg += 2; + } else error->all(FLERR,"Illegal compute reaxff/atom command"); + } + + local_flag = store_bonds; } /* ---------------------------------------------------------------------- */ -ComputeReaxFFBonds::~ComputeReaxFFBonds() +ComputeReaxFFAtom::~ComputeReaxFFAtom() { memory->destroy(array_local); memory->destroy(array_atom); @@ -70,16 +82,16 @@ ComputeReaxFFBonds::~ComputeReaxFFBonds() /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBonds::init() +void ComputeReaxFFAtom::init() { reaxff = dynamic_cast(force->pair_match("^reax..",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/bonds without " + if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/atom without " "pair_style reaxff, reaxff/kk, or reaxff/omp"); } /* ---------------------------------------------------------------------- */ -int ComputeReaxFFBonds::FindBond() +int ComputeReaxFFAtom::FindBond() { int *ilist, i, ii, inum; int j, pj, nj; @@ -105,8 +117,10 @@ int ComputeReaxFFBonds::FindBond() bo_tmp = bo_ij->bo_data.BO; if (bo_tmp > bo_cut) { - neighid[i][nj] = jtag; - abo[i][nj] = bo_tmp; + if(store_bonds) { + neighid[i][nj] = jtag; + abo[i][nj] = bo_tmp; + } nj++; } } @@ -119,7 +133,7 @@ int ComputeReaxFFBonds::FindBond() /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBonds::compute_bonds() +void ComputeReaxFFAtom::compute_bonds() { invoked_bonds = update->ntimestep; @@ -129,15 +143,17 @@ void ComputeReaxFFBonds::compute_bonds() memory->destroy(bondcount); memory->destroy(array_atom); nlocal = atom->nlocal; - memory->create(abo, nlocal, MAXREAXBOND, "reaxff/bonds:abo"); - memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/bonds:neighid"); - memory->create(bondcount, nlocal, "reaxff/bonds:bondcount"); - memory->create(array_atom, nlocal, 3, "reaxff/bonds:array_atom"); + if(store_bonds) { + memory->create(abo, nlocal, MAXREAXBOND, "reaxff/atom:abo"); + memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/atom:neighid"); + } + memory->create(bondcount, nlocal, "reaxff/atom:bondcount"); + memory->create(array_atom, nlocal, 3, "reaxff/atom:array_atom"); } for (int i = 0; i < nlocal; i++) { bondcount[i] = 0; - for (int j = 0; j < MAXREAXBOND; j++) { + for (int j = 0; store_bonds && j < MAXREAXBOND; j++) { neighid[i][j] = 0; abo[i][j] = 0.0; } @@ -148,7 +164,7 @@ void ComputeReaxFFBonds::compute_bonds() /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBonds::compute_local() +void ComputeReaxFFAtom::compute_local() { invoked_local = update->ntimestep; @@ -159,7 +175,7 @@ void ComputeReaxFFBonds::compute_local() if(nbonds > prev_nbonds) { // grow array_local memory->destroy(array_local); - memory->create(array_local, nbonds, 3, "reaxff/bonds:array_local"); + memory->create(array_local, nbonds, 3, "reaxff/atom:array_local"); prev_nbonds = nbonds; } @@ -181,7 +197,7 @@ void ComputeReaxFFBonds::compute_local() /* ---------------------------------------------------------------------- */ -void ComputeReaxFFBonds::compute_peratom() +void ComputeReaxFFAtom::compute_peratom() { invoked_peratom = update->ntimestep; @@ -201,11 +217,13 @@ void ComputeReaxFFBonds::compute_peratom() memory usage of local data ------------------------------------------------------------------------- */ -double ComputeReaxFFBonds::memory_usage() +double ComputeReaxFFAtom::memory_usage() { - double bytes = (double)(nbonds*3) * sizeof(double); - bytes += (double)(nlocal*3) * sizeof(double); - bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); + double bytes = (double)(nlocal*3) * sizeof(double); bytes += (double)(nlocal) * sizeof(int); + if(store_bonds) { + bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); + bytes += (double)(nbonds*3) * sizeof(double); + } return bytes; } diff --git a/src/REAXFF/compute_reaxff_bonds.h b/src/REAXFF/compute_reaxff_atom.h similarity index 84% rename from src/REAXFF/compute_reaxff_bonds.h rename to src/REAXFF/compute_reaxff_atom.h index b876c9e02df..31b18e72381 100644 --- a/src/REAXFF/compute_reaxff_bonds.h +++ b/src/REAXFF/compute_reaxff_atom.h @@ -17,21 +17,21 @@ #ifdef COMPUTE_CLASS // clang-format off -ComputeStyle(reaxff/bonds,ComputeReaxFFBonds); +ComputeStyle(reaxff/atom,ComputeReaxFFAtom); // clang-format on #else -#ifndef LMP_COMPUTE_REAXFF_BONDS_H -#define LMP_COMPUTE_REAXFF_BONDS_H +#ifndef LMP_COMPUTE_REAXFF_ATOM_H +#define LMP_COMPUTE_REAXFF_ATOM_H #include "compute.h" namespace LAMMPS_NS { -class ComputeReaxFFBonds : public Compute { +class ComputeReaxFFAtom : public Compute { public: - ComputeReaxFFBonds(class LAMMPS *, int, char **); - ~ComputeReaxFFBonds() override; + ComputeReaxFFAtom(class LAMMPS *, int, char **); + ~ComputeReaxFFAtom() override; void init() override; void compute_local() override; void compute_peratom() override; @@ -43,6 +43,7 @@ class ComputeReaxFFBonds : public Compute { int nlocal; int nbonds; int prev_nbonds; + bool store_bonds; tagint **neighid; double **abo; From fd83ed4004a8d26b95f1f69e75b288804361bfd5 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 21 Nov 2023 13:42:51 -0700 Subject: [PATCH 117/300] compute reaxff/atom: add support for pair hybrid --- src/KOKKOS/compute_reaxff_atom_kokkos.cpp | 9 ++++--- src/REAXFF/compute_reaxff_atom.cpp | 30 ++++++++++++++++++++--- src/REAXFF/compute_reaxff_atom.h | 1 + 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp index 2485d9ae72e..845e8bc6e77 100644 --- a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -56,9 +56,12 @@ ComputeReaxFFAtomKokkos::~ComputeReaxFFAtomKokkos() template void ComputeReaxFFAtomKokkos::init() { - reaxff = dynamic_cast(force->pair_match("^reax../kk",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/atom without " - "pair_style reaxff/kk"); + ComputeReaxFFAtom::init(); + + if(!reaxff || !reaxff->kokkosable) { + error->all(FLERR,"Cannot use compute reaxff/atom/kk without " + "pair_style reaxff/kk"); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index d975fe42f84..1d7bdf0e7dc 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -55,10 +55,21 @@ ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : invoked_bonds = -1; store_bonds = false; + nsub = 0; int iarg = 3; while (iarg narg) utils::missing_cmd_args(FLERR, "compute reaxff/atom pair", error); + ++iarg; + + if (isdigit(arg[iarg][0])) { + nsub = utils::inumeric(FLERR, arg[iarg], false, lmp); + ++iarg; + if (nsub > 0) continue; + } + error->all(FLERR, "Illegal compute reaxff/atom command"); + } else if (strcmp(arg[iarg], "bonds") == 0) { if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "compute reaxff/atom bonds", error); store_bonds = utils::logical(FLERR, arg[iarg+1], false, lmp); iarg += 2; @@ -84,9 +95,20 @@ ComputeReaxFFAtom::~ComputeReaxFFAtom() void ComputeReaxFFAtom::init() { - reaxff = dynamic_cast(force->pair_match("^reax..",0)); - if (reaxff == nullptr) error->all(FLERR,"Cannot use compute reaxff/atom without " - "pair_style reaxff, reaxff/kk, or reaxff/omp"); + if (lmp->suffix_enable) { + if (lmp->suffix) + reaxff = dynamic_cast(force->pair_match(fmt::format("^reax../{}", lmp->suffix), 0, nsub)); + if (!reaxff && lmp->suffix2) + reaxff = dynamic_cast(force->pair_match(fmt::format("^reax../{}", lmp->suffix2), 0, nsub)); + } + + if (!reaxff) reaxff = dynamic_cast(force->pair_match("^reax..", 0, nsub)); + + if (!reaxff) error->all(FLERR,"Cannot use compute reaxff/atom without " + "pair_style reaxff or reaxff/omp"); + + if(reaxff->kokkosable && !kokkosable) + error->all(FLERR,"Cannot use compute reaxff/atom with pair_style reaxff/kk. Use reaxff/atom/kk."); } /* ---------------------------------------------------------------------- */ diff --git a/src/REAXFF/compute_reaxff_atom.h b/src/REAXFF/compute_reaxff_atom.h index 31b18e72381..1f9aaec1aec 100644 --- a/src/REAXFF/compute_reaxff_atom.h +++ b/src/REAXFF/compute_reaxff_atom.h @@ -43,6 +43,7 @@ class ComputeReaxFFAtom : public Compute { int nlocal; int nbonds; int prev_nbonds; + int nsub; bool store_bonds; tagint **neighid; From a5cc181358cab34f2edfa1ab79e04d71723bfa70 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 21 Nov 2023 14:03:10 -0700 Subject: [PATCH 118/300] Start with compute reaxff/atom documentation --- doc/src/Commands_compute.rst | 1 + doc/src/compute_reaxff_atom.rst | 67 +++++++++++++++++++++++++++++++++ doc/src/pair_reaxff.rst | 3 +- 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 doc/src/compute_reaxff_atom.rst diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index dbd6b58ce7e..819a1b10d8f 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -115,6 +115,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`property/grid ` * :doc:`property/local ` * :doc:`ptm/atom ` + * :doc:`reaxff/atom (k) ` * :doc:`rdf ` * :doc:`reduce ` * :doc:`reduce/chunk ` diff --git a/doc/src/compute_reaxff_atom.rst b/doc/src/compute_reaxff_atom.rst new file mode 100644 index 00000000000..4906f3fe5c2 --- /dev/null +++ b/doc/src/compute_reaxff_atom.rst @@ -0,0 +1,67 @@ +.. index:: fix reaxff/atom +.. index:: fix reaxff/atom/kk + +fix reaxff/atom command +======================= + +Accelerator Variants: *reaxff/atom/kk* + +Syntax +"""""" + +.. code-block:: LAMMPS + + compute ID group-ID reaxff/atom attribute args ... keyword value ... + +* ID, group-ID are documented in :doc:`compute ` command +* reaxff/atom = name of this compute command +* attribute = *pair* + + .. parsed-literal:: + + *pair* args = nsub + nsub = *n*-instance of a sub-style, if a pair style is used multiple times in a hybrid style + +* keyword = *bonds* + + .. parsed-literal:: + + *bonds* value = *no* or *yes* + *no* = ignore list of local bonds + *yes* = include list of local bonds + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all reaxff/atom bonds yes + +Description +""""""""""" + +TODO + +---------- + +.. include:: accel_styles.rst + +---------- + +Restrictions +"""""""""""" + +The compute reaxff/atom command requires that the :doc:`pair_style reaxff +` is invoked. This fix is part of the REAXFF package. It is only +enabled if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +Related commands +"""""""""""""""" + +:doc:`pair_style reaxff ` + +Default +""""""" + +The option defaults are *bonds* = *no*. diff --git a/doc/src/pair_reaxff.rst b/doc/src/pair_reaxff.rst index d28e15b0a2d..03d53d1ff40 100644 --- a/doc/src/pair_reaxff.rst +++ b/doc/src/pair_reaxff.rst @@ -373,7 +373,8 @@ Related commands :doc:`pair_coeff `, :doc:`fix qeq/reaxff `, :doc:`fix acks2/reaxff `, :doc:`fix reaxff/bonds `, -:doc:`fix reaxff/species ` +:doc:`fix reaxff/species `, +:doc:`compute reaxff/atom ` Default """"""" From b72c34d4979b184adbb4aea83240e7bcb30e040e Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 21 Nov 2023 14:20:17 -0700 Subject: [PATCH 119/300] compute reaxff/atom: return tag[i] instead of i --- src/KOKKOS/compute_reaxff_atom_kokkos.cpp | 3 ++- src/REAXFF/compute_reaxff_atom.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp index 845e8bc6e77..c703bc35520 100644 --- a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -135,6 +135,7 @@ void ComputeReaxFFAtomKokkos::compute_local() int b = 0; int j = 0; + auto tag = atom->tag; for (int i = 0; i < nlocal; ++i) { const int numbonds = static_cast(buf[j+2]); @@ -142,7 +143,7 @@ void ComputeReaxFFAtomKokkos::compute_local() const int bo_offset = neigh_offset + numbonds; for (int k = 0; k < numbonds; k++) { auto bond = array_local[b++]; - bond[0] = i; + bond[0] = tag[i]; bond[1] = static_cast (buf[neigh_offset+k]); bond[2] = buf[bo_offset+k]; } diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index 1d7bdf0e7dc..2e5d4058b80 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -202,6 +202,7 @@ void ComputeReaxFFAtom::compute_local() } size_local_rows = nbonds; + auto tag = atom->tag; int b = 0; @@ -210,7 +211,7 @@ void ComputeReaxFFAtom::compute_local() for (int k = 0; k < numbonds; k++) { auto bond = array_local[b++]; - bond[0] = i; + bond[0] = tag[i]; bond[1] = neighid[i][k]; bond[2] = abo[i][k]; } From 77549414aecc88e58aaf6a51b0299af70e7dd7e5 Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Wed, 22 Nov 2023 10:19:18 +0100 Subject: [PATCH 120/300] - implementation of ZBL-core repulsion with smooth transition from ACE to ZBL + Kokkos implementation - automatic BBasis(.yaml) to CTildeBasis(.yace) conversion for pair_pace --- cmake/Modules/Packages/ML-PACE.cmake | 53 +++++----- lib/pace/Install.py | 4 +- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 87 ++++++++++++++++- src/KOKKOS/pair_pace_extrapolation_kokkos.h | 7 ++ src/KOKKOS/pair_pace_kokkos.cpp | 96 +++++++++++++++++-- src/KOKKOS/pair_pace_kokkos.h | 7 ++ src/ML-PACE/pair_pace.cpp | 12 ++- 7 files changed, 228 insertions(+), 38 deletions(-) diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index ce8f02f5f40..8a92dee3955 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -1,33 +1,40 @@ -set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.10.04.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.22.tar.gz" CACHE STRING "URL for PACE evaluator library sources") -set(PACELIB_MD5 "70ff79f4e59af175e55d24f3243ad1ff" CACHE STRING "MD5 checksum of PACE evaluator library tarball") +set(PACELIB_MD5 "c8e811f96d761ef8863f5b88a3fd36f4" CACHE STRING "MD5 checksum of PACE evaluator library tarball") mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_MD5) GetFallbackURL(PACELIB_URL PACELIB_FALLBACK) -# download library sources to build folder -if(EXISTS ${CMAKE_BINARY_DIR}/libpace.tar.gz) - file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) -endif() -if(NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}") - message(STATUS "Downloading ${PACELIB_URL}") - file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS) - file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) - if((NOT DL_STATUS EQUAL 0) OR (NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}")) - message(WARNING "Download from primary URL ${PACELIB_URL} failed\nTrying fallback URL ${PACELIB_FALLBACK}") - file(DOWNLOAD ${PACELIB_FALLBACK} ${CMAKE_BINARY_DIR}/libpace.tar.gz EXPECTED_HASH MD5=${PACELIB_MD5} SHOW_PROGRESS) - endif() +# LOCAL_ML-PACE points to top-level dir with local lammps-user-pace repo, +# to make it easier to check local build without going through the public github releases +if(LOCAL_ML-PACE) + set(lib-pace "${LOCAL_ML-PACE}") else() - message(STATUS "Using already downloaded archive ${CMAKE_BINARY_DIR}/libpace.tar.gz") -endif() + # download library sources to build folder + if(EXISTS ${CMAKE_BINARY_DIR}/libpace.tar.gz) + file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) + endif() + if(NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}") + message(STATUS "Downloading ${PACELIB_URL}") + #file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS) + #file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) + if((NOT DL_STATUS EQUAL 0) OR (NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}")) + message(WARNING "Download from primary URL ${PACELIB_URL} failed\nTrying fallback URL ${PACELIB_FALLBACK}") + file(DOWNLOAD ${PACELIB_FALLBACK} ${CMAKE_BINARY_DIR}/libpace.tar.gz EXPECTED_HASH MD5=${PACELIB_MD5} SHOW_PROGRESS) + endif() + else() + message(STATUS "Using already downloaded archive ${CMAKE_BINARY_DIR}/libpace.tar.gz") + endif() + -# uncompress downloaded sources -execute_process( - COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace* - COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -) -get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace) + # uncompress downloaded sources + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace* + COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) + get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace) +endif() add_subdirectory(${lib-pace} build-pace) set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE}) diff --git a/lib/pace/Install.py b/lib/pace/Install.py index 8d31852e44c..8b89b3dec18 100644 --- a/lib/pace/Install.py +++ b/lib/pace/Install.py @@ -18,11 +18,11 @@ # settings thisdir = fullpath('.') -version ='v.2023.10.04' +version ='v.2023.11.22' # known checksums for different PACE versions. used to validate the download. checksums = { \ - 'v.2023.10.04': '70ff79f4e59af175e55d24f3243ad1ff' + 'v.2023.11.22': 'c8e811f96d761ef8863f5b88a3fd36f4' } parser = ArgumentParser(prog='Install.py', description="LAMMPS library build wrapper script") diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index 61722bf62db..b361cfe4863 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -123,6 +123,9 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) // hard-core repulsion MemKK::realloc_kokkos(rho_core, "pace:rho_core", natom); MemKK::realloc_kokkos(dF_drho_core, "pace:dF_drho_core", natom); + MemKK::realloc_kokkos(dF_dfcut, "pace:dF_dfcut", natom); + MemKK::realloc_kokkos(d_d_min, "pace:r_min_pair", natom); + MemKK::realloc_kokkos(d_jj_min, "pace:j_min_pair", natom); MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_ms_combs_max, basis_set->rankmax); @@ -219,6 +222,24 @@ void PairPACEExtrapolationKokkos::copy_pertype() Kokkos::deep_copy(d_wpre, h_wpre); Kokkos::deep_copy(d_mexp, h_mexp); + + + // ZBL core-rep + MemKK::realloc_kokkos(d_cut_in, "pace:d_cut_in", nelements, nelements); + MemKK::realloc_kokkos(d_dcut_in, "pace:d_dcut_in", nelements, nelements); + auto h_cut_in = Kokkos::create_mirror_view(d_cut_in); + auto h_dcut_in = Kokkos::create_mirror_view(d_dcut_in); + + for (int mu_i = 0; mu_i < nelements; ++mu_i) { + for (int mu_j = 0; mu_j < nelements; ++mu_j) { + h_cut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).rcut_in; + h_dcut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).dcut_in; + } + } + Kokkos::deep_copy(d_cut_in, h_cut_in); + Kokkos::deep_copy(d_dcut_in, h_dcut_in); + + is_zbl = basis_set->radial_functions->inner_cutoff_type == "zbl"; } /* ---------------------------------------------------------------------- */ @@ -631,6 +652,10 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in Kokkos::deep_copy(A_rank1, 0.0); Kokkos::deep_copy(rhos, 0.0); + Kokkos::deep_copy(rho_core, 0.0); + Kokkos::deep_copy(d_d_min, PairPACEExtrapolation::aceimpl->basis_set->cutoffmax); + Kokkos::deep_copy(d_jj_min, -1); + Kokkos::deep_copy(projections, 0.0); Kokkos::deep_copy(d_gamma, 0.0); @@ -799,6 +824,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); const int jnum = d_numneigh[i]; + const int mu_i = d_map(type(i)); // get a pointer to scratch memory // This is used to cache whether or not an atom is within the cutoff @@ -858,6 +884,32 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig } offset++; }); + + if(is_zbl) { + //adapted from https://www.osti.gov/servlets/purl/1429450 + using minloc_value_type=Kokkos::MinLoc::value_type; + minloc_value_type djjmin; + djjmin.val=1e20; + djjmin.loc=-1; + Kokkos::MinLoc reducer_scalar(djjmin); + // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), + [&](const int offset, minloc_value_type &min_d_dist) { + int j = d_nearest(ii,offset); + j &= NEIGHMASK; + const int jtype = type(j); + auto r = d_rnorms(ii,offset); + const int mu_j = d_map(type(j)); + const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); + if (d < min_d_dist.val) { + min_d_dist.val = d; + min_d_dist.loc = offset; + } + + }, reducer_scalar); + d_d_min(ii) = djjmin.val; + d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) + } } /* ---------------------------------------------------------------------- */ @@ -1056,19 +1108,38 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeFS, const int ndensity = d_ndensity(mu_i); double evdwl, fcut, dfcut; + double evdwl_cut; evdwl = fcut = dfcut = 0.0; inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); FS_values_and_derivatives(ii, evdwl, mu_i); - dF_drho_core(ii) = evdwl * dfcut + 1; + if(is_zbl) { + if (d_jj_min(ii) != -1) { + const int mu_jmin = d_mu(ii,d_jj_min(ii)); + F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); + F_FLOAT transition_coordinate = dcutin - d_d_min(ii); // == cutin - r_min + cutoff_func_poly(transition_coordinate, dcutin, dcutin, fcut, dfcut); + dfcut = -dfcut; // invert, because rho_core = cutin - r_min + } else { + // no neighbours + fcut = 1; + dfcut = 0; + } + evdwl_cut = evdwl * fcut + rho_core(ii) * (1 - fcut); // evdwl * fcut + rho_core_uncut - rho_core_uncut* fcut + dF_drho_core(ii) = 1 - fcut; + dF_dfcut(ii) = evdwl * dfcut - rho_core(ii) * dfcut; + } else { + inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); + dF_drho_core(ii) = evdwl * dfcut + 1; + evdwl_cut = evdwl * fcut + rho_core(ii); + } for (int p = 0; p < ndensity; ++p) dF_drho(ii, p) *= fcut; // tally energy contribution if (eflag) { - double evdwl_cut = evdwl * fcut + rho_core(ii); // E0 shift evdwl_cut += d_E0vals(mu_i); e_atom(ii) = evdwl_cut; @@ -1240,6 +1311,15 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeDeri f_ij(ii, jj, 0) = scale * f_ji[0] + fpair * r_hat[0]; f_ij(ii, jj, 1) = scale * f_ji[1] + fpair * r_hat[1]; f_ij(ii, jj, 2) = scale * f_ji[2] + fpair * r_hat[2]; + + if(is_zbl) { + if(jj==d_jj_min(ii)) { + // DCRU = 1.0 + f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; + f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; + f_ij(ii, jj, 2) += dF_dfcut(ii) * r_hat[2]; + } + } } /* ---------------------------------------------------------------------- */ @@ -1777,6 +1857,7 @@ double PairPACEExtrapolationKokkos::memory_usage() bytes += MemKK::memory_usage(weights_rank1); bytes += MemKK::memory_usage(rho_core); bytes += MemKK::memory_usage(dF_drho_core); + bytes += MemKK::memory_usage(dF_dfcut); bytes += MemKK::memory_usage(dB_flatten); bytes += MemKK::memory_usage(fr); bytes += MemKK::memory_usage(dfr); @@ -1794,6 +1875,8 @@ double PairPACEExtrapolationKokkos::memory_usage() bytes += MemKK::memory_usage(d_mu); bytes += MemKK::memory_usage(d_rhats); bytes += MemKK::memory_usage(d_rnorms); + bytes += MemKK::memory_usage(d_d_min); + bytes += MemKK::memory_usage(d_jj_min); bytes += MemKK::memory_usage(d_nearest); bytes += MemKK::memory_usage(f_ij); bytes += MemKK::memory_usage(d_rho_core_cutoff); diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.h b/src/KOKKOS/pair_pace_extrapolation_kokkos.h index 55bcf4feadd..092171cfb84 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.h +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.h @@ -130,6 +130,7 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { tdual_fparams k_cutsq, k_scale; typedef Kokkos::View t_fparams; t_fparams d_cutsq, d_scale; + t_fparams d_cut_in, d_dcut_in; // inner cutoff typename AT::t_int_1d d_map; @@ -240,6 +241,7 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { t_ace_2d cr; t_ace_2d dcr; t_ace_1d dF_drho_core; + t_ace_1d dF_dfcut; // radial functions t_ace_4d fr; @@ -282,6 +284,11 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { t_ace_3d3 d_rhats; t_ace_2i d_nearest; + // for ZBL core-rep implementation + t_ace_1d d_d_min; // [i] -> min-d for atom ii, d=d = r - (cut_in(mu_i, mu_j) - dcut_in(mu_i, mu_j)) + t_ace_1i d_jj_min; // [i] -> jj-index of nearest neigh (by r-(cut_in-dcut_in) criterion) + bool is_zbl; + // per-type t_ace_1i d_ndensity; t_ace_1i d_npoti; diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 153a6d0333a..62b7bf5d010 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -121,6 +121,9 @@ void PairPACEKokkos::grow(int natom, int maxneigh) // hard-core repulsion MemKK::realloc_kokkos(rho_core, "pace:rho_core", natom); MemKK::realloc_kokkos(dF_drho_core, "pace:dF_drho_core", natom); + MemKK::realloc_kokkos(dF_dfcut, "pace:dF_dfcut", natom); + MemKK::realloc_kokkos(d_d_min, "pace:r_min_pair", natom); + MemKK::realloc_kokkos(d_jj_min, "pace:j_min_pair", natom); MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_rho_max, basis_set->rankmax); } @@ -212,6 +215,23 @@ void PairPACEKokkos::copy_pertype() Kokkos::deep_copy(d_wpre, h_wpre); Kokkos::deep_copy(d_mexp, h_mexp); + + // ZBL core-rep + MemKK::realloc_kokkos(d_cut_in, "pace:d_cut_in", nelements, nelements); + MemKK::realloc_kokkos(d_dcut_in, "pace:d_dcut_in", nelements, nelements); + auto h_cut_in = Kokkos::create_mirror_view(d_cut_in); + auto h_dcut_in = Kokkos::create_mirror_view(d_dcut_in); + + for (int mu_i = 0; mu_i < nelements; ++mu_i) { + for (int mu_j = 0; mu_j < nelements; ++mu_j) { + h_cut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).rcut_in; + h_dcut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).dcut_in; + } + } + Kokkos::deep_copy(d_cut_in, h_cut_in); + Kokkos::deep_copy(d_dcut_in, h_dcut_in); + + is_zbl = basis_set->radial_functions->inner_cutoff_type == "zbl"; } /* ---------------------------------------------------------------------- */ @@ -588,6 +608,8 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::deep_copy(A_rank1, 0.0); Kokkos::deep_copy(rhos, 0.0); Kokkos::deep_copy(rho_core, 0.0); + Kokkos::deep_copy(d_d_min, PairPACE::aceimpl->basis_set->cutoffmax); + Kokkos::deep_copy(d_jj_min, -1); EV_FLOAT ev_tmp; @@ -665,6 +687,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for("ComputeDerivative",policy_derivative,*this); } + //ComputeForce { if (evflag) { @@ -741,6 +764,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); const int jnum = d_numneigh[i]; + const int mu_i = d_map(type(i)); // get a pointer to scratch memory // This is used to cache whether or not an atom is within the cutoff @@ -800,6 +824,32 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen } offset++; }); + + if(is_zbl) { + //adapted from https://www.osti.gov/servlets/purl/1429450 + using minloc_value_type=Kokkos::MinLoc::value_type; + minloc_value_type djjmin; + djjmin.val=1e20; + djjmin.loc=-1; + Kokkos::MinLoc reducer_scalar(djjmin); + // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), + [&](const int offset, minloc_value_type &min_d_dist) { + int j = d_nearest(ii,offset); + j &= NEIGHMASK; + const int jtype = type(j); + auto r = d_rnorms(ii,offset); + const int mu_j = d_map(type(j)); + const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); + if (d < min_d_dist.val) { + min_d_dist.val = d; + min_d_dist.loc = offset; + } + + }, reducer_scalar); + d_d_min(ii) = djjmin.val; + d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) + } } /* ---------------------------------------------------------------------- */ @@ -990,22 +1040,38 @@ void PairPACEKokkos::operator() (TagPairPACEComputeFS, const int& ii const int ndensity = d_ndensity(mu_i); double evdwl, fcut, dfcut; + double evdwl_cut; evdwl = fcut = dfcut = 0.0; - inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); FS_values_and_derivatives(ii, evdwl, mu_i); - - dF_drho_core(ii) = evdwl * dfcut + 1; + if(is_zbl) { + if (d_jj_min(ii) != -1) { + const int mu_jmin = d_mu(ii,d_jj_min(ii)); + F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); + F_FLOAT transition_coordinate = dcutin - d_d_min(ii); // == cutin - r_min + cutoff_func_poly(transition_coordinate, dcutin, dcutin, fcut, dfcut); + dfcut = -dfcut; // invert, because rho_core = cutin - r_min + } else { + // no neighbours + fcut = 1; + dfcut = 0; + } + evdwl_cut = evdwl * fcut + rho_core(ii) * (1 - fcut); // evdwl * fcut + rho_core_uncut - rho_core_uncut* fcut + dF_drho_core(ii) = 1 - fcut; + dF_dfcut(ii) = evdwl * dfcut - rho_core(ii) * dfcut; + } else { + inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); + dF_drho_core(ii) = evdwl * dfcut + 1; + evdwl_cut = evdwl * fcut + rho_core(ii); + } for (int p = 0; p < ndensity; ++p) - dF_drho(ii, p) *= fcut; - + dF_drho(ii, p) *= fcut; // tally energy contribution if (eflag) { - double evdwl_cut = evdwl * fcut + rho_core(ii); - // E0 shift - evdwl_cut += d_E0vals(mu_i); - e_atom(ii) = evdwl_cut; + // E0 shift + evdwl_cut += d_E0vals(mu_i); + e_atom(ii) = evdwl_cut; } } @@ -1146,6 +1212,15 @@ void PairPACEKokkos::operator() (TagPairPACEComputeDerivative, const f_ij(ii, jj, 0) = scale * f_ji[0] + fpair * r_hat[0]; f_ij(ii, jj, 1) = scale * f_ji[1] + fpair * r_hat[1]; f_ij(ii, jj, 2) = scale * f_ji[2] + fpair * r_hat[2]; + + if(is_zbl) { + if(jj==d_jj_min(ii)) { + // DCRU = 1.0 + f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; + f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; + f_ij(ii, jj, 2) += dF_dfcut(ii) * r_hat[2]; + } + } } /* ---------------------------------------------------------------------- */ @@ -1683,6 +1758,7 @@ double PairPACEKokkos::memory_usage() bytes += MemKK::memory_usage(weights_rank1); bytes += MemKK::memory_usage(rho_core); bytes += MemKK::memory_usage(dF_drho_core); + bytes += MemKK::memory_usage(dF_dfcut); bytes += MemKK::memory_usage(dB_flatten); bytes += MemKK::memory_usage(fr); bytes += MemKK::memory_usage(dfr); @@ -1700,6 +1776,8 @@ double PairPACEKokkos::memory_usage() bytes += MemKK::memory_usage(d_mu); bytes += MemKK::memory_usage(d_rhats); bytes += MemKK::memory_usage(d_rnorms); + bytes += MemKK::memory_usage(d_d_min); + bytes += MemKK::memory_usage(d_jj_min); bytes += MemKK::memory_usage(d_nearest); bytes += MemKK::memory_usage(f_ij); bytes += MemKK::memory_usage(d_rho_core_cutoff); diff --git a/src/KOKKOS/pair_pace_kokkos.h b/src/KOKKOS/pair_pace_kokkos.h index 39cfd100f86..4a69e8e2584 100644 --- a/src/KOKKOS/pair_pace_kokkos.h +++ b/src/KOKKOS/pair_pace_kokkos.h @@ -121,6 +121,7 @@ class PairPACEKokkos : public PairPACE { tdual_fparams k_cutsq, k_scale; typedef Kokkos::View t_fparams; t_fparams d_cutsq, d_scale; + t_fparams d_cut_in, d_dcut_in; // inner cutoff typename AT::t_int_1d d_map; @@ -228,6 +229,7 @@ class PairPACEKokkos : public PairPACE { t_ace_2d cr; t_ace_2d dcr; t_ace_1d dF_drho_core; + t_ace_1d dF_dfcut; // radial functions t_ace_4d fr; @@ -265,6 +267,11 @@ class PairPACEKokkos : public PairPACE { t_ace_3d3 d_rhats; t_ace_2i d_nearest; + // for ZBL core-rep implementation + t_ace_1d d_d_min; // [i] -> min-d for atom ii, d=d = r - (cut_in(mu_i, mu_j) - dcut_in(mu_i, mu_j)) + t_ace_1i d_jj_min; // [i] -> jj-index of nearest neigh (by r-(cut_in-dcut_in) criterion) + bool is_zbl; + // per-type t_ace_1i d_ndensity; t_ace_1i d_npoti; diff --git a/src/ML-PACE/pair_pace.cpp b/src/ML-PACE/pair_pace.cpp index 57f12597d19..7ef67895983 100644 --- a/src/ML-PACE/pair_pace.cpp +++ b/src/ML-PACE/pair_pace.cpp @@ -45,7 +45,8 @@ Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1, #include "ace-evaluator/ace_evaluator.h" #include "ace-evaluator/ace_recursive.h" #include "ace-evaluator/ace_version.h" - +#include "ace/ace_b_basis.h" +#include namespace LAMMPS_NS { struct ACEImpl { ACEImpl() : basis_set(nullptr), ace(nullptr) {} @@ -287,7 +288,14 @@ void PairPACE::coeff(int narg, char **arg) //load potential file delete aceimpl->basis_set; if (comm->me == 0) utils::logmesg(lmp, "Loading {}\n", potential_file_name); - aceimpl->basis_set = new ACECTildeBasisSet(potential_file_name); + // if potential is in ACEBBasisSet (YAML) format, then convert to ACECTildeBasisSet automatically + if (utils::strmatch(potential_file_name,".*\\.yaml$")) { + ACEBBasisSet bBasisSet = ACEBBasisSet(potential_file_name); + ACECTildeBasisSet cTildeBasisSet = bBasisSet.to_ACECTildeBasisSet(); + aceimpl->basis_set = new ACECTildeBasisSet(cTildeBasisSet); + } else { + aceimpl->basis_set = new ACECTildeBasisSet(potential_file_name); + } if (comm->me == 0) { utils::logmesg(lmp, "Total number of basis functions\n"); From 2e421b2eace20f6c42c185325f81073d69b86d3f Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Wed, 22 Nov 2023 10:36:39 +0100 Subject: [PATCH 121/300] fix ML_PACE.cmake --- cmake/Modules/Packages/ML-PACE.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index 8a92dee3955..50072f2d282 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -16,8 +16,8 @@ else() endif() if(NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}") message(STATUS "Downloading ${PACELIB_URL}") - #file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS) - #file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) + file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS) + file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5) if((NOT DL_STATUS EQUAL 0) OR (NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}")) message(WARNING "Download from primary URL ${PACELIB_URL} failed\nTrying fallback URL ${PACELIB_FALLBACK}") file(DOWNLOAD ${PACELIB_FALLBACK} ${CMAKE_BINARY_DIR}/libpace.tar.gz EXPECTED_HASH MD5=${PACELIB_MD5} SHOW_PROGRESS) From bf498022cc339d05f8d1097f51dc84bbc014e7a6 Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Wed, 22 Nov 2023 14:44:49 +0100 Subject: [PATCH 122/300] use inum instead of list->inum --- src/ML-PACE/pair_pace.cpp | 4 ++-- src/ML-PACE/pair_pace_extrapolation.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ML-PACE/pair_pace.cpp b/src/ML-PACE/pair_pace.cpp index 7ef67895983..5ceb426b7d1 100644 --- a/src/ML-PACE/pair_pace.cpp +++ b/src/ML-PACE/pair_pace.cpp @@ -147,7 +147,7 @@ void PairPACE::compute(int eflag, int vflag) //determine the maximum number of neighbours int max_jnum = 0; int nei = 0; - for (ii = 0; ii < list->inum; ii++) { + for (ii = 0; ii < inum; ii++) { i = ilist[ii]; jnum = numneigh[i]; nei = nei + jnum; @@ -157,7 +157,7 @@ void PairPACE::compute(int eflag, int vflag) aceimpl->ace->resize_neighbours_cache(max_jnum); //loop over atoms - for (ii = 0; ii < list->inum; ii++) { + for (ii = 0; ii < inum; ii++) { i = list->ilist[ii]; const int itype = type[i]; diff --git a/src/ML-PACE/pair_pace_extrapolation.cpp b/src/ML-PACE/pair_pace_extrapolation.cpp index dc0fb1848b8..ebd4018fc76 100644 --- a/src/ML-PACE/pair_pace_extrapolation.cpp +++ b/src/ML-PACE/pair_pace_extrapolation.cpp @@ -170,7 +170,7 @@ void PairPACEExtrapolation::compute(int eflag, int vflag) //determine the maximum number of neighbours int max_jnum = 0; int nei = 0; - for (ii = 0; ii < list->inum; ii++) { + for (ii = 0; ii < inum; ii++) { i = ilist[ii]; jnum = numneigh[i]; nei = nei + jnum; @@ -183,7 +183,7 @@ void PairPACEExtrapolation::compute(int eflag, int vflag) aceimpl->rec_ace->resize_neighbours_cache(max_jnum); //loop over atoms - for (ii = 0; ii < list->inum; ii++) { + for (ii = 0; ii < inum; ii++) { i = list->ilist[ii]; const int itype = type[i]; From ab31a532e245d2949b279d32ce882fd41c3aba27 Mon Sep 17 00:00:00 2001 From: Paul Lafourcade Date: Fri, 24 Nov 2023 19:09:30 +0100 Subject: [PATCH 123/300] Possibility to compute bispectrum on a fixed target number of neighbors using compute_sna_atom for crystal structure classification purpose. Add of a compute_slcsa_atom compute style that takes the newly computed bispectrum as an input and performs dimension reduction + logistic regression classification. Documentation has been modified/added and code cleaned. --- doc/src/Bibliography.rst | 3 + doc/src/compute_slcsa_atom.rst | 98 +++++ doc/src/compute_sna_atom.rst | 21 +- src/EXTRA-COMPUTE/compute_slcsa_atom.cpp | 407 +++++++++++++++++++++ src/EXTRA-COMPUTE/compute_slcsa_atom.h | 95 +++++ src/ML-SNAP/compute_sna_atom.cpp | 443 ++++++++++++++++++++--- src/ML-SNAP/compute_sna_atom.h | 19 + 7 files changed, 1026 insertions(+), 60 deletions(-) create mode 100644 doc/src/compute_slcsa_atom.rst create mode 100644 src/EXTRA-COMPUTE/compute_slcsa_atom.cpp create mode 100644 src/EXTRA-COMPUTE/compute_slcsa_atom.h diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index e9ea8b0925c..523e5dd6cad 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -562,6 +562,9 @@ Bibliography **(Kumar)** Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008) +**(Lafourcade et al, 2023)** + Lafourcade, P. and Maillet, J.-B. and Denoual, C. and Duval, E. and Allera, A. and Goryaeva, A. M. and Marinica, M.-C., `Comp. Mat. Science, 230, 112534 (2023) `_ + **(Lamoureux and Roux)** G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) diff --git a/doc/src/compute_slcsa_atom.rst b/doc/src/compute_slcsa_atom.rst new file mode 100644 index 00000000000..d0410bf3a66 --- /dev/null +++ b/doc/src/compute_slcsa_atom.rst @@ -0,0 +1,98 @@ +.. index:: compute slcsa/atom + +compute slcsa/atom command +============================ + +Syntax +"""""" + +.. code-block:: LAMMPS + + compute ID group-ID slcsa/atom twojmax nclasses db_mean_descriptor_file lda_file lr_decision_file lr_bias_file maha_file value + +* ID, group-ID are documented in :doc:`compute ` command +* slcsa/atom = style name of this compute command +* twojmax = band limit for bispectrum components (non-negative integer) +* nclasses = number of crystal structures used in the database for the classifier SL-CSA +* db_mean_descriptor_file = file name of file containing the database mean descriptor +* lda_file = file name of file containing the linear discriminant analysis matrix for dimension reduction +* lr_decision_file = file name of file containing the scalings matrix for logistic regression classification +* lr_bias_file = file name of file containing the bias vector for logistic regression classification +* maha_file = file name of file containing for each crystal structure: the Mahalanobis distance threshold for sanity check purposes, the average reduced descriptor and the inverse of the corresponding covariance matrix +* c_ID[*] = compute ID of previously required *compute sna/atom* command + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute b1 all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.3 + compute b2 all slcsa/atom 8 4 mean_descriptors.dat lda_scalings.dat lr_decision.dat lr_bias.dat maha_thresholds.dat c_b1[*] + +Description +""""""""""" + +Define a computation that performs the Supervised Learning Crystal Structure Analysis (SL-CSA) from :ref:`(Lafourcade) ` for each atom in the group. The SL-CSA tool takes as an input a per-atom descriptor (bispectrum) that is computed through the *compute sna/atom* command and then proceeds to a dimension reduction step followed by a logistic regression in order to assign a probable crystal structure to each atom in the group. The SL-CSA tool is pre-trained on a database containing :math:`C` distinct crystal structures from which a crystal structure classifier is derived and a tutorial to build such a tool is available at `SL-CSA `_. + +The first step of the SL-CSA tool consists in performing a dimension reduction of the per-atom descriptor :math:`\mathbf{B}^i \in \mathbb{R}^{D}` through the Linear Discriminant Analysis (LDA) method, leading to a new projected descriptor :math:`\mathbf{x}^i=\mathrm{P}_\mathrm{LDA}(\mathbf{B}^i):\mathbb{R}^D \rightarrow \mathbb{R}^{d=C-1}`: + +.. math:: + + \mathbf{x}^i = \mathbf{C}^T_\mathrm{LDA} \cdot (\mathbf{B}^i - \mu^\mathbf{B}_\mathrm{db}) + +where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is the reduction coefficients matrix of the LDA model read in file *lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}` is the average descriptor of the entire database. The latter is computed from the average descriptors of each crystal structure read from the file *mean_descriptors_file*. + +The new projected descriptor with dimension :math:`d=C-1` allows for a good separation of different crystal structures fingerprints in the latent space. + +Once the dimension reduction step is performed by means of LDA, the new descriptor :math:`\mathbf{x}^i \in \mathbb{R}^{d=C-1}` is taken as an input for performing a multinomial logistic regression (LR) which provides a score vector :math:`\mathbf{s}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d \rightarrow \mathbb{R}^C` defined as: + +.. math:: + + \mathbf{s}^i = \mathbf{b}_\mathrm{LR} + \mathbf{D}_\mathrm{LR} \cdot {\mathbf{x}^i}^T + +with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and :math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias vector and decision matrix of the LR model after training both read in files *lr_fil1* and *lr_file2* respectively. + +Finally, a probability vector :math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d \rightarrow \mathbb{R}^C` is defined as: + +.. math:: + + \mathbf{p}^i = \frac{\mathrm{exp}(\mathbf{s}^i)}{\sum\limits_{j} \mathrm{exp}(s^i_j) } + +from which the crystal structure assigned to each atom with descriptor :math:`\mathbf{B}^i` and projected descriptor :math:`\mathbf{x}^i` is computed as the *argmax* of the probability vector :math:`\mathbf{p}^i`. Since the logistic regression step systematically attributes a crystal structure to each atom, a sanity check is needed to avoid misclassification. To this end, a per-atom Mahalanobis distance to each crystal structure *CS* present in the database is computed: + +.. math:: + + d_\mathrm{Mahalanobis}^{i \rightarrow \mathrm{CS}} = \sqrt{(\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS})^\mathrm{T} \cdot \mathbf{\Sigma}^{-1}_\mathrm{CS} \cdot (\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS}) } + +where :math:`\mathbf{\mu}^\mathbf{x}_\mathrm{CS} \in \mathbb{R}^{d}` is the average projected descriptor of crystal structure *CS* in the database and where :math:`\mathbf{\Sigma}_\mathrm{CS} \in \mathbb{R}^{d \times d}` is the corresponding covariance matrix. Finally, if the Mahalanobis distance to crystal structure *CS* for atom *i* is greater than the pre-determined threshold, no crystal structure is assigned to atom *i*. The Mahalanobis distance thresholds are read in file *maha_file* while the covariance matrices are read in file *covmat_file*. + +The `SL-CSA `_ framework provides an automatic computation of the different matrices and thresholds required for a proper classification and writes down all the required files for calling the *compute slcsa/atom* command. + +The *compute slcsa/atom* command requires that the *compute sna/atom* command is called before as it takes the resulting per-atom bispectrum as an input. In addition, it is crucial that the value *twojmax* is set to the same value of the value *twojmax* used in the *compute sna/atom* command, as well as that the value *nclasses* is set to the number of crystal structures used in the database to train the SL-CSA tool. + +Output info +""""""""""" + +By default, this compute computes the Mahalanobis distances to the different crystal structures present in the database in addition to assigning a crystal structure for each atom as a per-atom vector, which can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` page for an overview of LAMMPS output options. + +Restrictions +"""""""""""" + +This compute is part of the EXTRA-COMPUTE package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package ` page for more info. + +Related commands +"""""""""""""""" + +:doc:`compute sna/atom ` + +Default +""""""" + +none + +---------- + +.. _Lafourcade2023: + +**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, Marinica, Comp. Mat. Science, XXX, XXX, (2023). diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index 8d06868f3d1..a813b1ba06e 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -45,7 +45,7 @@ Syntax * w_1, w_2,... = list of neighbor weights, one for each type * nx, ny, nz = number of grid points in x, y, and z directions (positive integer) * zero or more keyword/value pairs may be appended -* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag* +* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag* or *nnn* or *wmode* or *delta* .. parsed-literal:: @@ -82,6 +82,16 @@ Syntax *0* = descriptor gradients are summed over atoms of each type *1* = descriptor gradients are listed separately for each atom pair +* additional keyword = *nnn* or *wmode* or *delta* + + .. parsed-literal:: + + *nnn* value = number of considered nearest neighbors to compute the bispectrum over a target specific number of neighbors (only implemented for compute sna/atom) + *wmode* value = weight function for finding optimal cutoff to match the target number of neighbors (required if nnn used, only implemented for compute sna/atom) + *0* = heavyside weight function + *1* = hyperbolic tangent weight function + *delta* value = transition interval centered at cutoff distance for hyperbolic tangent weight function (ignored if wmode=0, required if wmode=1, only implemented for compute sna/atom) + Examples """""""" @@ -94,6 +104,7 @@ Examples compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1 compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1 sinner 1.35 1.6 dinner 0.25 0.3 compute bgrid all sna/grid/local 200 200 200 1.4 0.95 6 2.0 1.0 + compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.2 Description """"""""""" @@ -433,6 +444,8 @@ requires that *bikflag=1*. The rerun script can use a :doc:`special_bonds ` command that includes all pairs in the neighbor list. +The keyword *nnn* allows for the calculation of the bispectrum over a specific target number of neighbors. This option is only implemented for the compute *sna/atom*\ . An optimal cutoff radius for defining the neighborhood of the central atom is calculated by means of a dichotomy algorithm. This iterative process allows to assign weights to neighboring atoms in order to match the total sum of weights with the target number of neighbors. Depending on the radial weight function used in that process, the cutoff radius can fluctuate a lot in the presence of thermal noise. Therefore, in addition to the *nnn* keyword, the keyword *wmode* allows to choose whether a Heavyside (*wmode* = 0) function or a Hyperbolic tangent function (*wmode* = 1) should be used. If the Heavyside function is used, the cutoff radius exactly matches the distance between the central atom an its *nnn*'th neighbor. However, in the case of the hyperbolic tangent function, the dichotomy algorithm allows to span the weights over a distance *delta* in order to reduce fluctuations in the resulting local atomic environment fingerprint. The detailed formalism is given in the paper by Lafourcade et al. :ref:`(Lafourcade) `. + ---------- Output info @@ -585,6 +598,7 @@ Related commands """""""""""""""" :doc:`pair_style snap ` +:doc:`compute slcsa/atom ` Default """"""" @@ -592,6 +606,7 @@ Default The optional keyword defaults are *rmin0* = 0, *switchflag* = 1, *bzeroflag* = 1, *quadraticflag* = 0, *bnormflag* = 0, *wselfallflag* = 0, *switchinnerflag* = 0, +*nnn* = -1, *wmode* = 0, *delta* = 1.e-3 ---------- @@ -623,3 +638,7 @@ of Angular Momentum, World Scientific, Singapore (1987). .. _Ellis2021: **(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021) + +.. _Lafourcade2023: + +**(Lafourcade)** Lafourcade, P. and Maillet, J.-B. and Denoual, C. and Duval, E. and Allera, A. and Goryaeva, A. M. and Marinica, M.-C., `Comp. Mat. Science, 230, 112534 (2023) `_ diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp new file mode 100644 index 00000000000..46a0a69e448 --- /dev/null +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -0,0 +1,407 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France) +------------------------------------------------------------------------- */ + +#include "compute_slcsa_atom.h" + +#include "arg_info.h" +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "modify.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "pair.h" +#include "potential_file_reader.h" +#include "update.h" + +#include +#include +#include + +using namespace LAMMPS_NS; + +static const char cite_compute_slcsa_atom_c[] = + "compute slcsa/atom command: doi:10.1088/0965-0393/21/5/055020\n\n" + "@Article{Lafourcade2023,\n" + " author = {P. Lafourcade and J.-B. Maillet and C. Denoual and E. Duval and A. Allera and A. M. Goryaeva and M.-C. Marinica},\n" + " title = {Robust crystal structure identification at extreme conditions using a density-independent spectral descriptor and supervised learning},\n" + " journal = {Computational Materials Science},\n" + " year = 2023,\n" + " volume = XX,\n" + " pages = {XXXXXX}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), list(nullptr), classification(nullptr) +{ + // command : compute c1 all slcsa/atom jmax nclasses parameters_file.dat + // example : compute c1 all slcsa/atom 8 4 slcsa_parameters.dat + // example : compute c1 all slcsa/atom 8 4 database_mean_descriptor.dat lda_scalings.dat lr_decision.dat lr_bias.dat mahalanobis_data.dat c_b1[*] + // Steps : + // 1. bs=bs-xbar + // 2. dred=coefs_lda*bs + // 3. scores=decision_lr*dred + lr_bias + // 4. probas=exp(scores)/sum(exp(scores)) + // 5. cs=argmax(probas) + + // Read the parameters file in one bloc + // File structure : + // # database mean descriptor + // vector with bso4dim rows x 1 col + // # LDA dimension reduction matrix + // matrix bso4dim rows x nclasses-1 cols + // # LR decision matrix + // matrix with nclasses rows x nclasses-1 cols + // # LR bias vector + // vector with 1 row x nclasses cols + + if (narg != 11) error->all(FLERR, "Illegal compute slcsa/atom command; wrong numer of arguments"); + + int twojmax = utils::inumeric(FLERR, arg[3], false, lmp); + if (twojmax < 0) error->all(FLERR, "Illegal compute slcsa/atom command: twojmax should be a non-negative integer"); + ncomps = compute_ncomps(twojmax); + + nclasses = utils::inumeric(FLERR, arg[4], false, lmp); + if (nclasses < 2) error->all(FLERR, "Illegal compute slcsa/atom command: nclasses should be strictly greater than 1"); + + database_mean_descriptor_file = arg[5]; + lda_scalings_file = arg[6]; + lr_decision_file = arg[7]; + lr_bias_file = arg[8]; + maha_file = arg[9]; + + std::cout << " file database mean descriptor : " << database_mean_descriptor_file << std::endl; + std::cout << " file lda scalings : " << lda_scalings_file << std::endl; + std::cout << " file lr decision : " << lr_decision_file << std::endl; + std::cout << " file lr bias : " << lr_bias_file << std::endl; + std::cout << " file maha stats : " << maha_file << std::endl; + + int expand = 0; + char **earg; + int nvalues = utils::expand_args(FLERR, narg - 10, &arg[10], 1, earg, lmp); + if (earg != &arg[10]) expand = 1; + arg = earg; + + ArgInfo argi(arg[0]); + value_t val; + val.id = ""; + val.val.c = nullptr; + val.which = argi.get_type(); + val.argindex = argi.get_index1(); + val.id = argi.get_name(); + if ((val.which == ArgInfo::FIX) || (val.which == ArgInfo::VARIABLE) || (val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1)) + error->all(FLERR, "Invalid compute slcsa/atom argument: {}", arg[0]); + + // if wildcard expansion occurred, free earg memory from exapnd_args() + + if (expand) { + for (int i = 0; i < nvalues; i++) delete[] earg[i]; + memory->sfree(earg); + } + + val.val.c = modify->get_compute_by_id(val.id); + if (!val.val.c) error->all(FLERR,"Compute ID {} for fix slcsa/atom does not exist", val.id); + if (val.val.c->peratom_flag == 0) + error->all(FLERR, "Compute slcsa/atom compute {} does not calculate per-atom values", val.id); + if (val.argindex == 0 && val.val.c->size_peratom_cols != 0) + error->all(FLERR,"Compute slcsa/atom compute {} does not calculate a per-atom vector", val.id); + if (val.argindex && val.val.c->size_peratom_cols == 0) + error->all(FLERR,"Compute slcsa/atom compute {} does not calculate a per-atom array", val.id); + if (val.argindex && val.argindex > val.val.c->size_peratom_cols) + error->all(FLERR,"Compute slcsa/atom compute {} array is accessed out-of-range", val.id); + descriptorval = val; + memory->create(database_mean_descriptor, ncomps, "slcsa/atom:database_mean_descriptor"); + memory->create(lda_scalings, ncomps, nclasses-1, "slcsa/atom:lda_scalings"); + memory->create(lr_decision, nclasses, nclasses-1, "slcsa/atom:lr_decision"); + memory->create(lr_bias, nclasses, "slcsa/atom:lr_bias"); + memory->create(maha_thresholds, nclasses, "slcsa/atom:maha_thresholds"); + memory->create(icov_list, nclasses, nclasses-1, nclasses-1, "slcsa/atom:icov_list"); + memory->create(mean_projected_descriptors, nclasses, nclasses-1, "slcsa/atom:mean_projected_descriptors"); + + if (comm->me == 0) { + + if (strcmp(database_mean_descriptor_file,"NULL") == 0) { + error->one(FLERR,"Cannot open database mean descriptor file {}: ", database_mean_descriptor_file, utils::getsyserror()); + } else { + PotentialFileReader reader(lmp,database_mean_descriptor_file, "database mean descriptor file"); + int nread=0; + while (nreadone(FLERR,"Cannot open database linear discriminant analysis scalings file {}: ", lda_scalings_file, utils::getsyserror()); + } else { + PotentialFileReader reader(lmp,lda_scalings_file, "lda scalings file"); + int nread=0; + while (nreadone(FLERR,"Cannot open logistic regression decision file {}: ", lr_decision_file, utils::getsyserror()); + } else { + PotentialFileReader reader(lmp,lr_decision_file, "lr decision file"); + int nread=0; + while (nreadone(FLERR,"Cannot open logistic regression bias file {}: ", lr_bias_file, utils::getsyserror()); + } else { + PotentialFileReader reader(lmp,lr_bias_file, "lr bias file"); + auto values = reader.next_values(nclasses); + lr_bias[0]=values.next_double(); + lr_bias[1]=values.next_double(); + lr_bias[2]=values.next_double(); + lr_bias[3]=values.next_double(); + } + + if (strcmp(maha_file,"NULL") == 0) { + error->one(FLERR,"Cannot open mahalanobis stats file {}: ", maha_file, utils::getsyserror()); + } else { + PotentialFileReader reader(lmp,maha_file, "mahalanobis stats file"); + int nvalues = nclasses*((nclasses-1)*(nclasses-1)+nclasses); + auto values = reader.next_values(nvalues); + + for(int i=0;idestroy(classification); + memory->destroy(database_mean_descriptor); + memory->destroy(lda_scalings); + memory->destroy(lr_decision); + memory->destroy(lr_bias); + memory->destroy(maha_thresholds); + memory->destroy(mean_projected_descriptors); + memory->destroy(icov_list); + memory->destroy(full_descriptor); + memory->destroy(projected_descriptor); + memory->destroy(scores); + memory->destroy(probas); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeSLCSAAtom::init() +{ + + if (modify->get_compute_by_style(style).size() > 1) + if (comm->me == 0) error->warning(FLERR, "More than one compute {}", style); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeSLCSAAtom::init_list(int /*id*/, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeSLCSAAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow per-atom if necessary + + if (atom->nmax > nmax) { + memory->destroy(classification); + nmax = atom->nmax; + memory->create(classification, nmax, ncols, "slcsa/atom:classification"); + array_atom = classification; + } + + int *mask = atom->mask; + int nlocal = atom->nlocal; + double **compute_array; + + if (descriptorval.which == ArgInfo::COMPUTE) { + if (!(descriptorval.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { + descriptorval.val.c->compute_peratom(); + descriptorval.val.c->invoked_flag |= Compute::INVOKED_PERATOM; + } + compute_array = descriptorval.val.c->array_atom; + } + + memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor"); + memory->create(projected_descriptor, nclasses-1, "slcsa/atom:reduced descriptor"); + memory->create(scores, nclasses, "slcsa/atom:probas"); + memory->create(probas, nclasses, "slcsa/atom:probas"); + memory->create(prodright, nclasses-1, "slcsa/atom:prodright"); + memory->create(dmaha, nclasses, "slcsa/atom:prodright"); + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + for (int j = 0; j < ncomps; j++) { + full_descriptor[j] = compute_array[i][j]; + } + // Here comes the LDA + LR process + // 1st step : Retrieve mean database descriptor + for (int j = 0; j < ncomps; j++) { + full_descriptor[j] -= database_mean_descriptor[j]; + } + // 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1 + for (int j = 0; j < nclasses-1; j++) { + projected_descriptor[j] = 0.; + for (int k = 0; k < ncomps; k++) { + projected_descriptor[j] += full_descriptor[k]*lda_scalings[k][j]; + } + } + // 3rd step : Matrix multiplication + for (int j = 0; j < nclasses; j++) { + scores[j] = lr_bias[j]; + for (int k = 0; k < nclasses-1; k++) { + scores[j] += lr_decision[j][k] * projected_descriptor[k]; + } + } + // 4th step : Matrix multiplication + double sumexpscores=0.; + for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]); + for (int j = 0; j < nclasses; j++) { + probas[j] = exp(scores[j])/sumexpscores; + } + + classification[i][nclasses]=argmax(probas,nclasses); + + // 5th step : Mahalanobis distance + for (int j = 0; j < nclasses; j++) { + prodright[0]=0.; + prodright[1]=0.; + prodright[2]=0.; + for (int k = 0; k < nclasses-1; k++) { + for (int l = 0; l < nclasses-1; l++) { + prodright[k] += (icov_list[j][k][l] * (projected_descriptor[k]-mean_projected_descriptors[j][k])); + } + } + double prodleft=0.; + for (int k = 0; k < nclasses-1; k++) { + prodleft += (prodright[k]*(projected_descriptor[k]-mean_projected_descriptors[j][k])); + } + classification[i][j]=sqrt(prodleft); + } + // 6th step : Sanity check + int locclass=classification[i][nclasses]; + + if (classification[i][locclass]>maha_thresholds[locclass]){ + classification[i][nclasses]=-1.; + } + + } else { + for (int j = 0; j < ncols; j++) { + classification[i][j] = -1.; + } + } + } + memory->destroy(full_descriptor); + memory->destroy(projected_descriptor); + memory->destroy(scores); + memory->destroy(probas); + memory->destroy(prodright); + +} + +int ComputeSLCSAAtom::compute_ncomps(int twojmax) +{ + int ncount; + + ncount = 0; + + for (int j1 = 0; j1 <= twojmax; j1++) + for (int j2 = 0; j2 <= j1; j2++) + for (int j = j1 - j2; + j <= MIN(twojmax, j1 + j2); j += 2) + if (j >= j1) ncount++; + + return ncount; +} + +int ComputeSLCSAAtom::argmax(double arr[], int size) { + int maxIndex = 0; // Initialize the index of the maximum value to the first element. + double maxValue = arr[0]; // Initialize the maximum value to the first element. + + for (int i = 1; i < size; ++i) { + if (arr[i] > maxValue) { + // If a greater value is found, update the maxIndex and maxValue. + maxIndex = i; + maxValue = arr[i]; + } + } + + return maxIndex; +} diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.h b/src/EXTRA-COMPUTE/compute_slcsa_atom.h new file mode 100644 index 00000000000..257277afed9 --- /dev/null +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.h @@ -0,0 +1,95 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France) +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(slcsa/atom,ComputeSLCSAAtom); +// clang-format on +#else + +#ifndef LMP_COMPUTE_SLCSA_ATOM_H +#define LMP_COMPUTE_SLCSA_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeSLCSAAtom : public Compute { + public: + ComputeSLCSAAtom(class LAMMPS *, int, char **); + ~ComputeSLCSAAtom() override; + void init() override; + void init_list(int, class NeighList *) override; + void compute_peratom() override; + // double memory_usage() override; + int compute_ncomps(int); + int argmax(double *, int); + private: + struct value_t { + int which; // type of data: COMPUTE, FIX, VARIABLE + int argindex; // 1-based index if data is vector, else 0 + std::string id; // compute/fix/variable ID + union { + class Compute *c; + class Fix *f; + int v; + } val; + }; + value_t descriptorval; + int nmax; + int ncols; + int nevery; + int ncomps; + int nclasses; + const char *database_mean_descriptor_file; + const char *lda_scalings_file; + const char *lr_decision_file; + const char *lr_bias_file; + const char *covmat_file; + const char *maha_file; + class NeighList *list; + + // LDA dimension reduction + double **lda_scalings; + double *database_mean_descriptor; + + // LR classification + double *lr_bias; + double **lr_decision; + + // Mahalanobis distance calculation + double ***icov_list; + double **mean_projected_descriptors; + double *maha_thresholds; + + // Per-atom local arrays + double *full_descriptor; + double *projected_descriptor; + double *scores; + double *probas; + double *prodright; + double *dmaha; + + // Output array + double **classification; + +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/ML-SNAP/compute_sna_atom.cpp b/src/ML-SNAP/compute_sna_atom.cpp index 2de25b09b6e..f1bd6ffc237 100644 --- a/src/ML-SNAP/compute_sna_atom.cpp +++ b/src/ML-SNAP/compute_sna_atom.cpp @@ -56,7 +56,10 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : wselfallflag = 0; switchinnerflag = 0; nelements = 1; - + nnn = 12; + wmode = 0; + delta = 1.e-3; + nearest_neighbors_mode = false; // process required arguments memory->create(radelem, ntypes + 1, "sna/atom:radelem"); // offset by 1 to match up with types @@ -114,6 +117,22 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); quadraticflag = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; + } else if (strcmp(arg[iarg],"nnn") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); + nnn = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + nearest_neighbors_mode = true; + if (nnn <= 0) error->all(FLERR, "Illegal compute compute {} command", style); + iarg += 2; + } else if (strcmp(arg[iarg],"wmode") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); + wmode = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + if (wmode < 0) error->all(FLERR, "Illegal compute compute {} command", style); + iarg += 2; + } else if (strcmp(arg[iarg],"delta") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); + delta = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + if (delta < 1.0e-3) error->all(FLERR, "Illegal compute compute {} command", style); + iarg += 2; } else if (strcmp(arg[iarg], "chem") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); chemflag = 1; @@ -168,7 +187,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : FLERR, "Illegal compute {} command: switchinnerflag = 0, unexpected sinner/dinner keyword", style); - + snaptr = new SNA(lmp, rfac0, twojmax, rmin0, switchflag, bzeroflag, chemflag, bnormflag, wselfallflag, nelements, switchinnerflag); @@ -183,6 +202,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : nmax = 0; sna = nullptr; + } /* ---------------------------------------------------------------------- */ @@ -209,7 +229,7 @@ void ComputeSNAAtom::init() { if (force->pair == nullptr) error->all(FLERR,"Compute sna/atom requires a pair style be defined"); - + rcutsq = force->pair->cutforce * force->pair->cutforce; if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute sna/atom cutoff is longer than pairwise cutoff"); @@ -234,7 +254,7 @@ void ComputeSNAAtom::init_list(int /*id*/, NeighList *ptr) void ComputeSNAAtom::compute_peratom() { invoked_peratom = update->ntimestep; - + // grow sna array if necessary if (atom->nmax > nmax) { @@ -275,63 +295,164 @@ void ComputeSNAAtom::compute_peratom() const int* const jlist = firstneigh[i]; const int jnum = numneigh[i]; - // ensure rij, inside, and typej are of size jnum - - snaptr->grow_rij(jnum); - - // rij[][3] = displacements between atom I and those neighbors - // inside = indices of neighbors of I within cutoff - // typej = types of neighbors of I within cutoff - - int ninside = 0; - for (int jj = 0; jj < jnum; jj++) { - int j = jlist[jj]; - j &= 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; - int jtype = type[j]; - int jelem = 0; - if (chemflag) - jelem = map[jtype]; - if (rsq < cutsq[itype][jtype] && rsq>1e-20) { - snaptr->rij[ninside][0] = delx; - snaptr->rij[ninside][1] = dely; - snaptr->rij[ninside][2] = delz; - snaptr->inside[ninside] = j; - snaptr->wj[ninside] = wjelem[jtype]; - snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac; - if (switchinnerflag) { - snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); - snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); - } - if (chemflag) snaptr->element[ninside] = jelem; - ninside++; - } - } - - snaptr->compute_ui(ninside, ielem); - snaptr->compute_zi(); - snaptr->compute_bi(ielem); - for (int icoeff = 0; icoeff < ncoeff; icoeff++) - sna[i][icoeff] = snaptr->blist[icoeff]; - if (quadraticflag) { - int ncount = ncoeff; - for (int icoeff = 0; icoeff < ncoeff; icoeff++) { - double bi = snaptr->blist[icoeff]; - - // diagonal element of quadratic matrix - - sna[i][ncount++] = 0.5*bi*bi; - // upper-triangular elements of quadratic matrix - - for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) - sna[i][ncount++] = bi*snaptr->blist[jcoeff]; - } + // ############################################################################## // + // ##### Start of section for computing bispectrum on nnn nearest neighbors ##### // + // ############################################################################## // + if (nearest_neighbors_mode == true) { + // ##### 1) : consider full neighbor list in rlist + memory->create(distsq, jnum, "snann/atom:distsq"); + memory->create(rlist, jnum, 3, "snann/atom:rlist"); + + int ncount = 0; + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + j &= NEIGHMASK; + 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 (rsq < rcutsq) { + distsq[ncount] = rsq; + rlist[ncount][0] = delx; + rlist[ncount][1] = dely; + rlist[ncount][2] = delz; + ncount++; + } + } + + // ##### 2) : compute optimal cutoff such that sum weights S_target = nnn + double S_target=1.*nnn; + double rc_start=0.1; + double rc_max=sqrt(rcutsq); + double tol=1.e-8; + double * sol_dich = dichotomie(S_target, rc_start, rc_max, tol, distsq, ncount, wmode, delta); + memory->destroy(distsq); + + // ##### 3) : assign that optimal cutoff radius to bispectrum context using rcsol + double rcsol = (sol_dich[0]+sol_dich[1])/2.; + memory->destroy(sol_dich); + snaptr->grow_rij(ncount); + + int ninside = 0; + for (int jj = 0; jj < ncount; jj++) { + int j = jlist[jj]; + j &= NEIGHMASK; + + const double rsq = rlist[jj][0]*rlist[jj][0]+rlist[jj][1]*rlist[jj][1]+rlist[jj][2]*rlist[jj][2]; + int jtype = type[j]; + int jelem = 0; + if (chemflag) + jelem = map[jtype]; + + if (rsq < rcsol*rcsol) { + snaptr->rij[ninside][0] = rlist[jj][0];//rijmax; + snaptr->rij[ninside][1] = rlist[jj][1];//rijmax; + snaptr->rij[ninside][2] = rlist[jj][2];//rijmax; + snaptr->inside[ninside] = j; + snaptr->wj[ninside] = 1.; + snaptr->rcutij[ninside] = rcsol; + + if (switchinnerflag) { + snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); + snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); + } + if (chemflag) snaptr->element[ninside] = jelem; + ninside++; + } + } + + memory->destroy(rlist); + + // ############################################################################ // + // ##### End of section for computing bispectrum on nnn nearest neighbors ##### // + // ############################################################################ // + snaptr->compute_ui(ninside, ielem); + snaptr->compute_zi(); + snaptr->compute_bi(ielem); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + sna[i][icoeff] = snaptr->blist[icoeff]; + if (quadraticflag) { + int ncount = ncoeff; + for (int icoeff = 0; icoeff < ncoeff; icoeff++) { + double bi = snaptr->blist[icoeff]; + + // diagonal element of quadratic matrix + + sna[i][ncount++] = 0.5*bi*bi; + + // upper-triangular elements of quadratic matrix + + for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) + sna[i][ncount++] = bi*snaptr->blist[jcoeff]; + } + } + + } else { + // ensure rij, inside, and typej are of size jnum + + snaptr->grow_rij(jnum); + + // rij[][3] = displacements between atom I and those neighbors + // inside = indices of neighbors of I within cutoff + // typej = types of neighbors of I within cutoff + + int ninside = 0; + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + j &= 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; + int jtype = type[j]; + int jelem = 0; + if (chemflag) + jelem = map[jtype]; + if (rsq < cutsq[itype][jtype] && rsq>1e-20) { + snaptr->rij[ninside][0] = delx; + snaptr->rij[ninside][1] = dely; + snaptr->rij[ninside][2] = delz; + snaptr->inside[ninside] = j; + snaptr->wj[ninside] = wjelem[jtype]; + snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac; + if (switchinnerflag) { + snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); + snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); + } + if (chemflag) snaptr->element[ninside] = jelem; + ninside++; + } + } + snaptr->compute_ui(ninside, ielem); + snaptr->compute_zi(); + snaptr->compute_bi(ielem); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + sna[i][icoeff] = snaptr->blist[icoeff]; + if (quadraticflag) { + int ncount = ncoeff; + for (int icoeff = 0; icoeff < ncoeff; icoeff++) { + double bi = snaptr->blist[icoeff]; + + // diagonal element of quadratic matrix + + sna[i][ncount++] = 0.5*bi*bi; + + // upper-triangular elements of quadratic matrix + + for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) + sna[i][ncount++] = bi*snaptr->blist[jcoeff]; + } + } + } + } else { for (int icoeff = 0; icoeff < size_peratom_cols; icoeff++) sna[i][icoeff] = 0.0; @@ -352,3 +473,207 @@ double ComputeSNAAtom::memory_usage() return bytes; } +/* ---------------------------------------------------------------------- + select3 routine from Numerical Recipes (slightly modified) + find k smallest values in array of length n + sort auxiliary arrays at same time +------------------------------------------------------------------------- */ + +// Use no-op do while to create single statement + +#define SWAP(a, b) \ + do { \ + tmp = a; \ + (a) = b; \ + (b) = tmp; \ + } while (0) + +#define ISWAP(a, b) \ + do { \ + itmp = a; \ + (a) = b; \ + (b) = itmp; \ + } while (0) + +#define SWAP3(a, b) \ + do { \ + tmp = (a)[0]; \ + (a)[0] = (b)[0]; \ + (b)[0] = tmp; \ + tmp = (a)[1]; \ + (a)[1] = (b)[1]; \ + (b)[1] = tmp; \ + tmp = (a)[2]; \ + (a)[2] = (b)[2]; \ + (b)[2] = tmp; \ + } while (0) + +/* ---------------------------------------------------------------------- */ + +void ComputeSNAAtom::select3(int k, int n, double *arr, int *iarr, double **arr3) +{ + int i, ir, j, l, mid, ia, itmp; + double a, tmp, a3[3]; + + arr--; + iarr--; + arr3--; + l = 1; + ir = n; + for (;;) { + if (ir <= l + 1) { + if (ir == l + 1 && arr[ir] < arr[l]) { + SWAP(arr[l], arr[ir]); + ISWAP(iarr[l], iarr[ir]); + SWAP3(arr3[l], arr3[ir]); + } + return; + } else { + mid = (l + ir) >> 1; + SWAP(arr[mid], arr[l + 1]); + ISWAP(iarr[mid], iarr[l + 1]); + SWAP3(arr3[mid], arr3[l + 1]); + if (arr[l] > arr[ir]) { + SWAP(arr[l], arr[ir]); + ISWAP(iarr[l], iarr[ir]); + SWAP3(arr3[l], arr3[ir]); + } + if (arr[l + 1] > arr[ir]) { + SWAP(arr[l + 1], arr[ir]); + ISWAP(iarr[l + 1], iarr[ir]); + SWAP3(arr3[l + 1], arr3[ir]); + } + if (arr[l] > arr[l + 1]) { + SWAP(arr[l], arr[l + 1]); + ISWAP(iarr[l], iarr[l + 1]); + SWAP3(arr3[l], arr3[l + 1]); + } + i = l + 1; + j = ir; + a = arr[l + 1]; + ia = iarr[l + 1]; + a3[0] = arr3[l + 1][0]; + a3[1] = arr3[l + 1][1]; + a3[2] = arr3[l + 1][2]; + for (;;) { + do i++; + while (arr[i] < a); + do j--; + while (arr[j] > a); + if (j < i) break; + SWAP(arr[i], arr[j]); + ISWAP(iarr[i], iarr[j]); + SWAP3(arr3[i], arr3[j]); + } + arr[l + 1] = arr[j]; + arr[j] = a; + iarr[l + 1] = iarr[j]; + iarr[j] = ia; + arr3[l + 1][0] = arr3[j][0]; + arr3[l + 1][1] = arr3[j][1]; + arr3[l + 1][2] = arr3[j][2]; + arr3[j][0] = a3[0]; + arr3[j][1] = a3[1]; + arr3[j][2] = a3[2]; + if (j >= k) ir = j - 1; + if (j <= k) l = i; + } + } +} + +double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts) +{ + double * w=nullptr; + memory->destroy(w); + memory->create(w, ncounts, "snann:gauss_weights"); + double rloc=0.; + for (int i=0; i rcut){ + w[i]=0.; + } else { + w[i]=1.; + } + } + return w; +} + +double * ComputeSNAAtom::tanh_weights(double * rsq, double rcut, double delta, int ncounts) +{ + double * w=nullptr; + memory->destroy(w); + memory->create(w, ncounts, "snann:gauss_weights"); + double rloc=0.; + + for (int i=0; idestroy(www); + } else if (weightmode == 1) { + double * www = tanh_weights(rsq, rcut, delta, ncounts); + S_sol = sum_weights(rsq, www, ncounts); + memory->destroy(www); + } + double err = S_sol - S_target; + return err; +} + +double * ComputeSNAAtom::dichotomie(double S_target, double a, double b, double e, double * rsq, int ncounts, int weightmode, double delta) +{ + + double d=b-a; + double * sol = nullptr; + memory->destroy(sol); + memory->create(sol, 2, "snann:sol"); + double m=0.; + + int cnt=0; + do + { + m = ( a + b ) / 2.; + d = fabs( b - a ); + double f_ra = get_target_rcut(S_target, rsq, a, ncounts, weightmode, delta); + double f_rm = get_target_rcut(S_target, rsq, m, ncounts, weightmode, delta); + if (f_rm == 0.) + { + sol[0]=m; + sol[1]=m; + return sol; + } + else if (f_rm*f_ra > 0.) + { + a = m; + } + else + { + b = m; + } + cnt+=1; + } while ( d > e ); + sol[0]=a; + sol[1]=b; + return sol; +} diff --git a/src/ML-SNAP/compute_sna_atom.h b/src/ML-SNAP/compute_sna_atom.h index 29a84c8dcf8..0deab63a3b5 100644 --- a/src/ML-SNAP/compute_sna_atom.h +++ b/src/ML-SNAP/compute_sna_atom.h @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France) +------------------------------------------------------------------------- */ + #ifdef COMPUTE_CLASS // clang-format off ComputeStyle(sna/atom,ComputeSNAAtom); @@ -32,10 +36,25 @@ class ComputeSNAAtom : public Compute { void init_list(int, class NeighList *) override; void compute_peratom() override; double memory_usage() override; + double rcutsq; + void select3(int, int, double *, int *, double **); + double * weights(double *, double, int); + double * tanh_weights(double *, double, double, int); + double sum_weights(double *, double *, int); + double get_target_rcut(double, double *, double, int, int, double); + double * dichotomie(double, double, double, double, double *, int, int, double); + private: int nmax; int ncoeff; + int nnn; + int wmode; + double delta; + bool nearest_neighbors_mode; + double *distsq; + double **rlist; + int *nearest; double **cutsq; class NeighList *list; double **sna; From c0631c9bd2a9f52ab42ac16cd83992b9d9d51c0f Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Sat, 25 Nov 2023 23:04:18 +0100 Subject: [PATCH 124/300] add per-atom array corerep_factor to all four pair styles: pace, pace/extrapolation, pace/kk, pace/extrapolation/kk upd PACELIB_URL to v.2023.11.25 (+md5sum) in ML-PACE.cmake and Install.py --- cmake/Modules/Packages/ML-PACE.cmake | 4 +- lib/pace/Install.py | 4 +- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 39 ++++++++++--- src/KOKKOS/pair_pace_extrapolation_kokkos.h | 7 ++- src/KOKKOS/pair_pace_kokkos.cpp | 57 +++++++++++++++++++ src/KOKKOS/pair_pace_kokkos.h | 10 +++- src/ML-PACE/pair_pace.cpp | 38 +++++++++++++ src/ML-PACE/pair_pace.h | 4 ++ src/ML-PACE/pair_pace_extrapolation.cpp | 25 +++++++- src/ML-PACE/pair_pace_extrapolation.h | 8 ++- 10 files changed, 177 insertions(+), 19 deletions(-) diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index 50072f2d282..1d760128037 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -1,6 +1,6 @@ -set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.22.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.tar.gz" CACHE STRING "URL for PACE evaluator library sources") -set(PACELIB_MD5 "c8e811f96d761ef8863f5b88a3fd36f4" CACHE STRING "MD5 checksum of PACE evaluator library tarball") +set(PACELIB_MD5 "fda61c88a6c6a335d5fc10a86a5aa710" CACHE STRING "MD5 checksum of PACE evaluator library tarball") mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_MD5) GetFallbackURL(PACELIB_URL PACELIB_FALLBACK) diff --git a/lib/pace/Install.py b/lib/pace/Install.py index 8b89b3dec18..0d5294e00b8 100644 --- a/lib/pace/Install.py +++ b/lib/pace/Install.py @@ -18,11 +18,11 @@ # settings thisdir = fullpath('.') -version ='v.2023.11.22' +version ='v.2023.11.25' # known checksums for different PACE versions. used to validate the download. checksums = { \ - 'v.2023.11.22': 'c8e811f96d761ef8863f5b88a3fd36f4' + 'v.2023.11.25': 'fda61c88a6c6a335d5fc10a86a5aa710' } parser = ArgumentParser(prog='Install.py', description="LAMMPS library build wrapper script") diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index b361cfe4863..d47c8a432af 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -126,6 +126,7 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(dF_dfcut, "pace:dF_dfcut", natom); MemKK::realloc_kokkos(d_d_min, "pace:r_min_pair", natom); MemKK::realloc_kokkos(d_jj_min, "pace:j_min_pair", natom); + MemKK::realloc_kokkos(d_corerep, "pace:corerep", natom); // per-atom corerep MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_ms_combs_max, basis_set->rankmax); @@ -594,13 +595,20 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in d_vatom = k_vatom.view(); } - if (gamma_flag && atom->nlocal > nmax) { + if (flag_compute_extrapolation_grade && atom->nlocal > nmax) { memory->destroy(extrapolation_grade_gamma); nmax = atom->nlocal; memory->create(extrapolation_grade_gamma, nmax, "pace/atom:gamma"); //zeroify array memset(extrapolation_grade_gamma, 0, nmax * sizeof(*extrapolation_grade_gamma)); } + if (flag_corerep_factor && atom->nlocal > nmax_corerep) { + memory->destroy(corerep_factor); + nmax_corerep = atom->nlocal; + memory->create(corerep_factor, nmax_corerep, "pace/atom:corerep"); + //zeroify array + memset(corerep_factor, 0, nmax_corerep * sizeof(*corerep_factor)); + } copymode = 1; if (!force->newton_pair) @@ -658,6 +666,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in Kokkos::deep_copy(projections, 0.0); Kokkos::deep_copy(d_gamma, 0.0); + Kokkos::deep_copy(d_corerep, 0.0); EV_FLOAT ev_tmp; @@ -721,7 +730,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in } //ComputeGamma - if (gamma_flag) { + if (flag_compute_extrapolation_grade) { typename Kokkos::RangePolicy policy_gamma(0,chunk_size); Kokkos::parallel_for("ComputeGamma",policy_gamma,*this); } @@ -763,12 +772,17 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in } ev += ev_tmp; - //if gamma_flag - copy current d_gamma to extrapolation_grade_gamma - if (gamma_flag){ + //if flag_compute_extrapolation_grade - copy current d_gamma to extrapolation_grade_gamma + if (flag_compute_extrapolation_grade){ h_gamma = Kokkos::create_mirror_view(d_gamma); Kokkos::deep_copy(h_gamma, d_gamma); memcpy(extrapolation_grade_gamma+chunk_offset, (void *) h_gamma.data(), sizeof(double)*chunk_size); } + if (flag_corerep_factor) { + h_corerep = Kokkos::create_mirror_view(d_corerep); + Kokkos::deep_copy(h_corerep,d_corerep); + memcpy(corerep_factor+chunk_offset, (void *) h_corerep.data(), sizeof(double)*chunk_size); + } chunk_offset += chunk_size; } // end while @@ -1050,7 +1064,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeRho, //gamma_i - if (gamma_flag) + if (flag_compute_extrapolation_grade) Kokkos::atomic_add(&projections(ii, func_ind), d_gen_cgs(mu_i, idx_ms_comb) * A_cur); } else { // rank > 1 @@ -1089,7 +1103,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeRho, Kokkos::atomic_add(&rhos(ii, p), B.real_part_product(d_coeffs(mu_i, func_ind, p) * d_gen_cgs(mu_i, idx_ms_comb))); } //gamma_i - if (gamma_flag) + if (flag_compute_extrapolation_grade) Kokkos::atomic_add(&projections(ii, func_ind), B.real_part_product(d_gen_cgs(mu_i, idx_ms_comb))); } } @@ -1144,6 +1158,9 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeFS, evdwl_cut += d_E0vals(mu_i); e_atom(ii) = evdwl_cut; } + + if (flag_corerep_factor) + d_corerep(ii) = 1-fcut; } /* ---------------------------------------------------------------------- */ @@ -1858,6 +1875,7 @@ double PairPACEExtrapolationKokkos::memory_usage() bytes += MemKK::memory_usage(rho_core); bytes += MemKK::memory_usage(dF_drho_core); bytes += MemKK::memory_usage(dF_dfcut); + bytes += MemKK::memory_usage(d_corerep); bytes += MemKK::memory_usage(dB_flatten); bytes += MemKK::memory_usage(fr); bytes += MemKK::memory_usage(dfr); @@ -1925,9 +1943,10 @@ double PairPACEExtrapolationKokkos::memory_usage() template void *PairPACEExtrapolationKokkos::extract(const char *str, int &dim) { - //check if str=="gamma_flag" then compute extrapolation grades on this iteration dim = 0; - if (strcmp(str, "gamma_flag") == 0) return (void *) &gamma_flag; + //check if str=="flag_compute_extrapolation_grade" then compute extrapolation grades on this iteration + if (strcmp(str, "gamma_flag") == 0) return (void *) &flag_compute_extrapolation_grade; + if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; dim = 2; if (strcmp(str, "scale") == 0) return (void *) scale; @@ -1950,6 +1969,10 @@ void *PairPACEExtrapolationKokkos::extract_peratom(const char *str, ncol = 0; return (void *) extrapolation_grade_gamma; } + if (strcmp(str, "corerep") == 0) { + ncol = 0; + return (void *) corerep_factor; + } return nullptr; } diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.h b/src/KOKKOS/pair_pace_extrapolation_kokkos.h index 092171cfb84..d8c0038f3bc 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.h +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.h @@ -106,7 +106,7 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { protected: int inum, maxneigh, chunk_size, chunk_offset, idx_ms_combs_max, total_num_functions_max; int host_flag; - int gamma_flag; + //int gamma_flag; int eflag, vflag; @@ -235,13 +235,16 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { t_ace_2d rhos; t_ace_2d dF_drho; + t_ace_3c dB_flatten; + // hard-core repulsion t_ace_1d rho_core; - t_ace_3c dB_flatten; t_ace_2d cr; t_ace_2d dcr; t_ace_1d dF_drho_core; t_ace_1d dF_dfcut; + t_ace_1d d_corerep; + th_ace_1d h_corerep; // radial functions t_ace_4d fr; diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 62b7bf5d010..84431a5908c 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -124,6 +124,8 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(dF_dfcut, "pace:dF_dfcut", natom); MemKK::realloc_kokkos(d_d_min, "pace:r_min_pair", natom); MemKK::realloc_kokkos(d_jj_min, "pace:j_min_pair", natom); + MemKK::realloc_kokkos(d_corerep, "pace:corerep", natom); // per-atom corerep + MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_rho_max, basis_set->rankmax); } @@ -555,6 +557,13 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom"); d_vatom = k_vatom.view(); } + if (flag_corerep_factor && atom->nlocal > nmax_corerep) { + memory->destroy(corerep_factor); + nmax_corerep = atom->nlocal; + memory->create(corerep_factor, nmax_corerep, "pace/atom:corerep"); + //zeroify array + memset(corerep_factor, 0, nmax_corerep * sizeof(*corerep_factor)); + } copymode = 1; if (!force->newton_pair) @@ -610,6 +619,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::deep_copy(rho_core, 0.0); Kokkos::deep_copy(d_d_min, PairPACE::aceimpl->basis_set->cutoffmax); Kokkos::deep_copy(d_jj_min, -1); + Kokkos::deep_copy(d_corerep, 0.0); EV_FLOAT ev_tmp; @@ -709,6 +719,13 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) } } ev += ev_tmp; + + if (flag_corerep_factor) { + h_corerep = Kokkos::create_mirror_view(d_corerep); + Kokkos::deep_copy(h_corerep,d_corerep); + memcpy(corerep_factor+chunk_offset, (void *) h_corerep.data(), sizeof(double)*chunk_size); + } + chunk_offset += chunk_size; } // end while @@ -1073,6 +1090,9 @@ void PairPACEKokkos::operator() (TagPairPACEComputeFS, const int& ii evdwl_cut += d_E0vals(mu_i); e_atom(ii) = evdwl_cut; } + + if (flag_corerep_factor) + d_corerep(ii) = 1-fcut; } /* ---------------------------------------------------------------------- */ @@ -1759,6 +1779,7 @@ double PairPACEKokkos::memory_usage() bytes += MemKK::memory_usage(rho_core); bytes += MemKK::memory_usage(dF_drho_core); bytes += MemKK::memory_usage(dF_dfcut); + bytes += MemKK::memory_usage(d_corerep); bytes += MemKK::memory_usage(dB_flatten); bytes += MemKK::memory_usage(fr); bytes += MemKK::memory_usage(dfr); @@ -1814,6 +1835,42 @@ double PairPACEKokkos::memory_usage() return bytes; } + +/* ---------------------------------------------------------------------- + extract method for extracting value of scale variable + ---------------------------------------------------------------------- */ + +template +void *PairPACEKokkos::extract(const char *str, int &dim) +{ + dim = 0; + if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; + + dim = 2; + if (strcmp(str, "scale") == 0) return (void *) scale; + return nullptr; +} + +/* ---------------------------------------------------------------------- + peratom requests from FixPair + return ptr to requested data + also return ncol = # of quantites per atom + 0 = per-atom vector + 1 or more = # of columns in per-atom array + return NULL if str is not recognized +---------------------------------------------------------------------- */ + +template +void *PairPACEKokkos::extract_peratom(const char *str, int &ncol) +{ + if (strcmp(str, "corerep") == 0) { + ncol = 0; + return (void *) corerep_factor; + } + + return nullptr; +} + /* ---------------------------------------------------------------------- */ namespace LAMMPS_NS { diff --git a/src/KOKKOS/pair_pace_kokkos.h b/src/KOKKOS/pair_pace_kokkos.h index 4a69e8e2584..2c5aaa846e9 100644 --- a/src/KOKKOS/pair_pace_kokkos.h +++ b/src/KOKKOS/pair_pace_kokkos.h @@ -95,6 +95,9 @@ class PairPACEKokkos : public PairPACE { KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeForce,const int& ii, EV_FLOAT&) const; + void *extract(const char *str, int &dim) override; + void *extract_peratom(const char *str, int &ncol) override; + protected: int inum, maxneigh, chunk_size, chunk_offset, idx_rho_max; int host_flag; @@ -210,6 +213,8 @@ class PairPACEKokkos : public PairPACE { typedef Kokkos::View t_ace_4c; typedef Kokkos::View t_ace_4c3; + typedef typename Kokkos::View::HostMirror th_ace_1d; + t_ace_3d A_rank1; t_ace_4c A; @@ -223,13 +228,16 @@ class PairPACEKokkos : public PairPACE { t_ace_2d rhos; t_ace_2d dF_drho; + t_ace_3c dB_flatten; + // hard-core repulsion t_ace_1d rho_core; - t_ace_3c dB_flatten; t_ace_2d cr; t_ace_2d dcr; t_ace_1d dF_drho_core; t_ace_1d dF_dfcut; + t_ace_1d d_corerep; + th_ace_1d h_corerep; // radial functions t_ace_4d fr; diff --git a/src/ML-PACE/pair_pace.cpp b/src/ML-PACE/pair_pace.cpp index 5ceb426b7d1..933d4abecb1 100644 --- a/src/ML-PACE/pair_pace.cpp +++ b/src/ML-PACE/pair_pace.cpp @@ -88,6 +88,10 @@ PairPACE::PairPACE(LAMMPS *lmp) : Pair(lmp) one_coeff = 1; manybody_flag = 1; + nmax_corerep = 0; + flag_corerep_factor = 0; + corerep_factor = nullptr; + aceimpl = new ACEImpl; recursive = false; @@ -110,6 +114,7 @@ PairPACE::~PairPACE() memory->destroy(setflag); memory->destroy(cutsq); memory->destroy(scale); + memory->destroy(corerep_factor); } } @@ -144,6 +149,14 @@ void PairPACE::compute(int eflag, int vflag) // the pointer to the list of neighbors of "i" firstneigh = list->firstneigh; + if (flag_corerep_factor && atom->nlocal > nmax_corerep) { + memory->destroy(corerep_factor); + nmax_corerep = atom->nlocal; + memory->create(corerep_factor, nmax_corerep, "pace/atom:corerep_factor"); + //zeroify array + memset(corerep_factor, 0, nmax_corerep * sizeof(*corerep_factor)); + } + //determine the maximum number of neighbours int max_jnum = 0; int nei = 0; @@ -182,6 +195,9 @@ void PairPACE::compute(int eflag, int vflag) error->one(FLERR, e.what()); } + if (flag_corerep_factor) + corerep_factor[i] = 1 - aceimpl->ace->ace_fcut; + // 'compute_atom' will update the `aceimpl->ace->e_atom` and `aceimpl->ace->neighbours_forces(jj, alpha)` arrays for (jj = 0; jj < jnum; jj++) { @@ -382,7 +398,29 @@ double PairPACE::init_one(int i, int j) ---------------------------------------------------------------------- */ void *PairPACE::extract(const char *str, int &dim) { + dim = 0; + //check if str=="corerep_flag" then compute extrapolation grades on this iteration + if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; + dim = 2; if (strcmp(str, "scale") == 0) return (void *) scale; return nullptr; } + +/* ---------------------------------------------------------------------- + peratom requests from FixPair + return ptr to requested data + also return ncol = # of quantites per atom + 0 = per-atom vector + 1 or more = # of columns in per-atom array + return NULL if str is not recognized +---------------------------------------------------------------------- */ +void *PairPACE::extract_peratom(const char *str, int &ncol) +{ + if (strcmp(str, "corerep") == 0) { + ncol = 0; + return (void *) corerep_factor; + } + + return nullptr; +} \ No newline at end of file diff --git a/src/ML-PACE/pair_pace.h b/src/ML-PACE/pair_pace.h index 94649ecaab1..9b5d2c54806 100644 --- a/src/ML-PACE/pair_pace.h +++ b/src/ML-PACE/pair_pace.h @@ -48,11 +48,15 @@ class PairPACE : public Pair { double init_one(int, int) override; void *extract(const char *, int &) override; + void *extract_peratom(const char *, int &) override; protected: struct ACEImpl *aceimpl; + int nmax_corerep = 0; virtual void allocate(); + double *corerep_factor; //per-atom core-rep factor (= 1 - fcut) + int flag_corerep_factor; double **scale; bool recursive; // "recursive" option for ACERecursiveEvaluator diff --git a/src/ML-PACE/pair_pace_extrapolation.cpp b/src/ML-PACE/pair_pace_extrapolation.cpp index ebd4018fc76..d9b8d3588af 100644 --- a/src/ML-PACE/pair_pace_extrapolation.cpp +++ b/src/ML-PACE/pair_pace_extrapolation.cpp @@ -93,11 +93,14 @@ PairPACEExtrapolation::PairPACEExtrapolation(LAMMPS *lmp) : Pair(lmp) manybody_flag = 1; nmax = 0; + nmax_corerep = 0; aceimpl = new ACEALImpl; scale = nullptr; flag_compute_extrapolation_grade = 0; extrapolation_grade_gamma = nullptr; + flag_corerep_factor = 0; + corerep_factor = nullptr; chunksize = 4096; } @@ -118,6 +121,7 @@ PairPACEExtrapolation::~PairPACEExtrapolation() memory->destroy(scale); memory->destroy(map); memory->destroy(extrapolation_grade_gamma); + memory->destroy(corerep_factor); } } @@ -166,6 +170,13 @@ void PairPACEExtrapolation::compute(int eflag, int vflag) //zeroify array memset(extrapolation_grade_gamma, 0, nmax * sizeof(*extrapolation_grade_gamma)); } + if (flag_corerep_factor && atom->nlocal > nmax_corerep) { + memory->destroy(corerep_factor); + nmax_corerep = atom->nlocal; + memory->create(corerep_factor, nmax_corerep, "pace/atom:corerep_factor"); + //zeroify array + memset(corerep_factor, 0, nmax_corerep * sizeof(*corerep_factor)); + } //determine the maximum number of neighbours int max_jnum = 0; @@ -216,6 +227,11 @@ void PairPACEExtrapolation::compute(int eflag, int vflag) if (flag_compute_extrapolation_grade) extrapolation_grade_gamma[i] = aceimpl->ace->max_gamma_grade; + if (flag_corerep_factor) { + corerep_factor[i] = 1 - (flag_compute_extrapolation_grade ? aceimpl->ace->ace_fcut + : aceimpl->rec_ace->ace_fcut); + } + Array2D &neighbours_forces = (flag_compute_extrapolation_grade ? aceimpl->ace->neighbours_forces : aceimpl->rec_ace->neighbours_forces); @@ -437,9 +453,11 @@ double PairPACEExtrapolation::init_one(int i, int j) ---------------------------------------------------------------------- */ void *PairPACEExtrapolation::extract(const char *str, int &dim) { - //check if str=="gamma_flag" then compute extrapolation grades on this iteration dim = 0; + //check if str=="gamma_flag" then compute extrapolation grades on this iteration if (strcmp(str, "gamma_flag") == 0) return (void *) &flag_compute_extrapolation_grade; + //check if str=="corerep_flag" then compute extrapolation grades on this iteration + if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; dim = 2; if (strcmp(str, "scale") == 0) return (void *) scale; @@ -461,5 +479,10 @@ void *PairPACEExtrapolation::extract_peratom(const char *str, int &ncol) return (void *) extrapolation_grade_gamma; } + if (strcmp(str, "corerep") == 0) { + ncol = 0; + return (void *) corerep_factor; + } + return nullptr; } diff --git a/src/ML-PACE/pair_pace_extrapolation.h b/src/ML-PACE/pair_pace_extrapolation.h index 6f7eeb279eb..2dcec04d4b4 100644 --- a/src/ML-PACE/pair_pace_extrapolation.h +++ b/src/ML-PACE/pair_pace_extrapolation.h @@ -47,13 +47,15 @@ class PairPACEExtrapolation : public Pair { protected: struct ACEALImpl *aceimpl; - int nmax; + int nmax = 0, nmax_corerep = 0; virtual void allocate(); std::vector element_names; // list of elements (used by dump pace/extrapolation) - double *extrapolation_grade_gamma; //per-atom gamma value + double *extrapolation_grade_gamma = nullptr; //per-atom gamma value + double *corerep_factor = nullptr; //per-atom core-rep factor (= 1 - fcut) - int flag_compute_extrapolation_grade; + int flag_compute_extrapolation_grade = 0; + int flag_corerep_factor = 0; double **scale; From d4fe21f34df7e02f9df359547b381924926b36ba Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Sat, 25 Nov 2023 23:37:01 +0100 Subject: [PATCH 125/300] update pair_pace.rst documentation page --- doc/src/pair_pace.rst | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/src/pair_pace.rst b/doc/src/pair_pace.rst index d815f663fe2..001214370c0 100644 --- a/doc/src/pair_pace.rst +++ b/doc/src/pair_pace.rst @@ -40,6 +40,9 @@ Examples pair_style pace product chunksize 2048 pair_coeff * * Cu-PBE-core-rep.ace Cu + pair_style pace + pair_coeff * * Cu.yaml Cu + pair_style pace/extrapolation pair_coeff * * Cu.yaml Cu.asi Cu @@ -64,7 +67,7 @@ specifies an ACE coefficient file followed by N additional arguments specifying the mapping of ACE elements to LAMMPS atom types, where N is the number of LAMMPS atom types: -* ACE coefficient file +* ACE coefficient file (.yaml or .yace/.ace format) * N element names = mapping of ACE elements to atom types Only a single pair_coeff command is used with the *pace* style which @@ -136,6 +139,22 @@ product B-basis evaluator is always used and only *linear* ASI is supported. See the :doc:`pair_coeff ` page for alternate ways to specify the path for the ACE coefficient file. +Core repulsion +""""""""""""""""""" +The ACE potential can be configured to initiate core-repulsion from an inner cutoff, +seamlessly transitioning from ACE to ZBL. The core repulsion factor can be accessed +as a per-atom quantity, as demonstrated in the example below: + +.. code-block:: LAMMPS + + pair_style pace + pair_coeff * * CuNi.yaml Cu Ni + + fix pace_corerep all pair 1 pace corerep 1 + +In this case, per-atom `f_pace_corerep` quantities represent the fraction of ZBL +core-repulsion for each atom. + Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" From a1d2256e60b41d43cdb620d77d0c6e99303f2050 Mon Sep 17 00:00:00 2001 From: Paul Lafourcade Date: Mon, 27 Nov 2023 09:22:03 +0100 Subject: [PATCH 126/300] Added example for use of compute sna/atom on a fixed number of neighbors + use of compute slcsa/atom for crystal structure classification on a case of HCP to BCC phase transition in Zr --- .../sna_nnn_slcsa/dir.inputs/Zr.potential | 3 + examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs | 6006 +++++++++++++++++ examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp | 879 +++ .../sna_nnn_slcsa/dir.inputs/in_lammps_npt | 61 + .../sna_nnn_slcsa/dir.slcsa/lda_scalings.dat | 55 + examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat | 1 + .../sna_nnn_slcsa/dir.slcsa/lr_decision.dat | 4 + .../dir.slcsa/mahalanobis_file.dat | 20 + .../dir.slcsa/mean_descriptor.dat | 55 + 9 files changed, 7084 insertions(+) create mode 100644 examples/sna_nnn_slcsa/dir.inputs/Zr.potential create mode 100644 examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs create mode 100644 examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp create mode 100644 examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt create mode 100644 examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat create mode 100644 examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat create mode 100644 examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat create mode 100644 examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat create mode 100644 examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr.potential b/examples/sna_nnn_slcsa/dir.inputs/Zr.potential new file mode 100644 index 00000000000..ea87e0e5ca4 --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.inputs/Zr.potential @@ -0,0 +1,3 @@ +pair_style hybrid/overlay zero 9.0 eam/fs +pair_coeff * * zero +pair_coeff * * eam/fs dir.inputs/Zr_2.eam.fs Zr \ No newline at end of file diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs b/examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs new file mode 100644 index 00000000000..47d50eea902 --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs @@ -0,0 +1,6006 @@ +Sourse: Potential #2 from [M.I. Mendelev and G.J. Ackland, Phil. Mag. Letters 87, 349-359 (2007).] +Contact information: mikhail.mendelev@gmail.com +Tuesday, Feb 24, 2009 The potential was taken from v3_5_hcp (in C:\SIMULATION.MD\Zr\Results\v3_5) +1 Zr +10000 5.00000000000000E-0002 10000 7.60000000000000E-0004 7.60000000000000E+0000 +40 9.12240000000000E+0001 3.22029900000000E+0000 hcp +0 -2.23606797749979E-0001 -3.16227766016838E-0001 -3.87298334620742E-0001 -4.47213595499958E-0001 +-5.00000000000000E-0001 -5.47722557505166E-0001 -5.91607978309962E-0001 -6.32455532033676E-0001 -6.70820393249937E-0001 +-7.07106781186548E-0001 -7.41619848709566E-0001 -7.74596669241483E-0001 -8.06225774829855E-0001 -8.36660026534076E-0001 +-8.66025403784439E-0001 -8.94427190999916E-0001 -9.21954445729289E-0001 -9.48683298050514E-0001 -9.74679434480896E-0001 +-1.00000000000000E+0000 -1.02469507659596E+0000 -1.04880884817015E+0000 -1.07238052947636E+0000 -1.09544511501033E+0000 +-1.11803398874989E+0000 -1.14017542509914E+0000 -1.16189500386223E+0000 -1.18321595661992E+0000 -1.20415945787923E+0000 +-1.22474487139159E+0000 -1.24498995979887E+0000 -1.26491106406735E+0000 -1.28452325786651E+0000 -1.30384048104053E+0000 +-1.32287565553230E+0000 -1.34164078649987E+0000 -1.36014705087354E+0000 -1.37840487520902E+0000 -1.39642400437689E+0000 +-1.41421356237310E+0000 -1.43178210632764E+0000 -1.44913767461894E+0000 -1.46628782986152E+0000 -1.48323969741913E+0000 +-1.50000000000000E+0000 -1.51657508881031E+0000 -1.53297097167559E+0000 -1.54919333848297E+0000 -1.56524758424985E+0000 +-1.58113883008419E+0000 -1.59687194226713E+0000 -1.61245154965971E+0000 -1.62788205960997E+0000 -1.64316767251550E+0000 +-1.65831239517770E+0000 -1.67332005306815E+0000 -1.68819430161341E+0000 -1.70293863659264E+0000 -1.71755640373177E+0000 +-1.73205080756888E+0000 -1.74642491965730E+0000 -1.76068168616590E+0000 -1.77482393492988E+0000 -1.78885438199983E+0000 +-1.80277563773199E+0000 -1.81659021245849E+0000 -1.83030052177231E+0000 -1.84390889145858E+0000 -1.85741756210067E+0000 +-1.87082869338697E+0000 -1.88414436814168E+0000 -1.89736659610103E+0000 -1.91049731745428E+0000 -1.92353840616713E+0000 +-1.93649167310371E+0000 -1.94935886896179E+0000 -1.96214168703486E+0000 -1.97484176581315E+0000 -1.98746069143518E+0000 +-2.00000000000000E+0000 -2.01246117974981E+0000 -2.02484567313166E+0000 -2.03715487874634E+0000 -2.04939015319192E+0000 +-2.06155281280883E+0000 -2.07364413533277E+0000 -2.08566536146142E+0000 -2.09761769634030E+0000 -2.10950231097290E+0000 +-2.12132034355964E+0000 -2.13307290077015E+0000 -2.14476105895272E+0000 -2.15638586528478E+0000 -2.16794833886788E+0000 +-2.17944947177034E+0000 -2.19089023002066E+0000 -2.20227155455452E+0000 -2.21359436211787E+0000 -2.22485954612870E+0000 +-2.23606797749979E+0000 -2.24722050542442E+0000 -2.25831795812724E+0000 -2.26936114358204E+0000 -2.28035085019828E+0000 +-2.29128784747792E+0000 -2.30217288664427E+0000 -2.31300670124408E+0000 -2.32379000772445E+0000 -2.33452350598575E+0000 +-2.34520787991171E+0000 -2.35584379787795E+0000 -2.36643191323985E+0000 -2.37697286480094E+0000 -2.38746727726266E+0000 +-2.39791576165636E+0000 -2.40831891575846E+0000 -2.41867732448956E+0000 -2.42899156029822E+0000 -2.43926218353009E+0000 +-2.44948974278318E+0000 -2.45967477524977E+0000 -2.46981780704569E+0000 -2.47991935352745E+0000 -2.48997991959775E+0000 +-2.50000000000000E+0000 -2.50998007960223E+0000 -2.51992063367083E+0000 -2.52982212813470E+0000 -2.53968501984006E+0000 +-2.54950975679639E+0000 -2.55929677841395E+0000 -2.56904651573303E+0000 -2.57875939164553E+0000 -2.58843582110896E+0000 +-2.59807621135332E+0000 -2.60768096208106E+0000 -2.61725046566048E+0000 -2.62678510731274E+0000 -2.63628526529281E+0000 +-2.64575131106459E+0000 -2.65518360947035E+0000 -2.66458251889485E+0000 -2.67394839142419E+0000 -2.68328157299975E+0000 +-2.69258240356725E+0000 -2.70185121722126E+0000 -2.71108834234519E+0000 -2.72029410174709E+0000 -2.72946881279124E+0000 +-2.73861278752583E+0000 -2.74772633280682E+0000 -2.75680975041804E+0000 -2.76586333718787E+0000 -2.77488738510232E+0000 +-2.78388218141501E+0000 -2.79284800875379E+0000 -2.80178514522438E+0000 -2.81069386451104E+0000 -2.81957443597434E+0000 +-2.82842712474619E+0000 -2.83725219182222E+0000 -2.84604989415154E+0000 -2.85482048472404E+0000 -2.86356421265527E+0000 +-2.87228132326901E+0000 -2.88097205817759E+0000 -2.88963665535998E+0000 -2.89827534923789E+0000 -2.90688837074973E+0000 +-2.91547594742265E+0000 -2.92403830344269E+0000 -2.93257565972304E+0000 -2.94108823397055E+0000 -2.94957624075052E+0000 +-2.95803989154981E+0000 -2.96647939483827E+0000 -2.97489495612870E+0000 -2.98328677803526E+0000 -2.99165506033032E+0000 +-3.00000000000000E+0000 -3.00832179129826E+0000 -3.01662062579967E+0000 -3.02489669245083E+0000 -3.03315017762062E+0000 +-3.04138126514911E+0000 -3.04959013639538E+0000 -3.05777697028413E+0000 -3.06594194335118E+0000 -3.07408522978788E+0000 +-3.08220700148449E+0000 -3.09030742807249E+0000 -3.09838667696593E+0000 -3.10644491340181E+0000 -3.11448230047949E+0000 +-3.12249899919920E+0000 -3.13049516849971E+0000 -3.13847096529504E+0000 -3.14642654451045E+0000 -3.15436205911750E+0000 +-3.16227766016838E+0000 -3.17017349682947E+0000 -3.17804971641414E+0000 -3.18590646441480E+0000 -3.19374388453426E+0000 +-3.20156211871642E+0000 -3.20936130717624E+0000 -3.21714158842908E+0000 -3.22490309931942E+0000 -3.23264597504892E+0000 +-3.24037034920393E+0000 -3.24807635378234E+0000 -3.25576411921994E+0000 -3.26343377441614E+0000 -3.27108544675922E+0000 +-3.27871926215100E+0000 -3.28633534503100E+0000 -3.29393381840012E+0000 -3.30151480384384E+0000 -3.30907842155486E+0000 +-3.31662479035540E+0000 -3.32415402771893E+0000 -3.33166624979154E+0000 -3.33916157141280E+0000 -3.34664010613630E+0000 +-3.35410196624968E+0000 -3.36154726279432E+0000 -3.36897610558460E+0000 -3.37638860322683E+0000 -3.38378486313773E+0000 +-3.39116499156263E+0000 -3.39852909359329E+0000 -3.40587727318528E+0000 -3.41320963317520E+0000 -3.42052627529741E+0000 +-3.42782730020052E+0000 -3.43511280746353E+0000 -3.44238289561170E+0000 -3.44963766213207E+0000 -3.45687720348872E+0000 +-3.46410161513775E+0000 -3.47131099154196E+0000 -3.47850542618522E+0000 -3.48568501158668E+0000 -3.49284983931460E+0000 +-3.50000000000000E+0000 -3.50713558335004E+0000 -3.51425667816112E+0000 -3.52136337233180E+0000 -3.52845575287547E+0000 +-3.53553390593274E+0000 -3.54259791678367E+0000 -3.54964786985977E+0000 -3.55668384875575E+0000 -3.56370593624109E+0000 +-3.57071421427143E+0000 -3.57770876399966E+0000 -3.58468966578698E+0000 -3.59165699921359E+0000 -3.59861084308932E+0000 +-3.60555127546399E+0000 -3.61247837363769E+0000 -3.61939221417077E+0000 -3.62629287289375E+0000 -3.63318042491699E+0000 +-3.64005494464026E+0000 -3.64691650576209E+0000 -3.65376518128902E+0000 -3.66060104354463E+0000 -3.66742416417845E+0000 +-3.67423461417477E+0000 -3.68103246386119E+0000 -3.68781778291716E+0000 -3.69459064038223E+0000 -3.70135110466435E+0000 +-3.70809924354783E+0000 -3.71483512420134E+0000 -3.72155881318568E+0000 -3.72827037646145E+0000 -3.73496987939662E+0000 +-3.74165738677394E+0000 -3.74833296279826E+0000 -3.75499667110372E+0000 -3.76164857476081E+0000 -3.76828873628335E+0000 +-3.77491721763537E+0000 -3.78153408023781E+0000 -3.78813938497516E+0000 -3.79473319220206E+0000 -3.80131556174964E+0000 +-3.80788655293195E+0000 -3.81444622455213E+0000 -3.82099463490856E+0000 -3.82753184180093E+0000 -3.83405790253616E+0000 +-3.84057287393430E+0000 -3.84707681233427E+0000 -3.85356977359954E+0000 -3.86005181312376E+0000 -3.86652298583624E+0000 +-3.87298334620742E+0000 -3.87943294825416E+0000 -3.88587184554509E+0000 -3.89230009120571E+0000 -3.89871773792359E+0000 +-3.90512483795333E+0000 -3.91152144312159E+0000 -3.91790760483195E+0000 -3.92428337406972E+0000 -3.93064880140671E+0000 +-3.93700393700591E+0000 -3.94334883062607E+0000 -3.94968353162630E+0000 -3.95600808897050E+0000 -3.96232255123179E+0000 +-3.96862696659689E+0000 -3.97492138287036E+0000 -3.98120584747888E+0000 -3.98748040747538E+0000 -3.99374510954317E+0000 +-4.00000000000000E+0000 -4.00624512480203E+0000 -4.01248052954778E+0000 -4.01870625948202E+0000 -4.02492235949962E+0000 +-4.03112887414927E+0000 -4.03732584763727E+0000 -4.04351332383115E+0000 -4.04969134626332E+0000 -4.05585995813465E+0000 +-4.06201920231798E+0000 -4.06816912136160E+0000 -4.07430975749267E+0000 -4.08044115262063E+0000 -4.08656334834051E+0000 +-4.09267638593623E+0000 -4.09878030638384E+0000 -4.10487515035476E+0000 -4.11096095821889E+0000 -4.11703777004778E+0000 +-4.12310562561766E+0000 -4.12916456441252E+0000 -4.13521462562707E+0000 -4.14125584816973E+0000 -4.14728827066554E+0000 +-4.15331193145904E+0000 -4.15932686861708E+0000 -4.16533311993171E+0000 -4.17133072292284E+0000 -4.17731971484108E+0000 +-4.18330013267038E+0000 -4.18927201313068E+0000 -4.19523539268061E+0000 -4.20119030752000E+0000 -4.20713679359253E+0000 +-4.21307488658818E+0000 -4.21900462194580E+0000 -4.22492603485552E+0000 -4.23083916026124E+0000 -4.23674403286297E+0000 +-4.24264068711928E+0000 -4.24852915724960E+0000 -4.25440947723653E+0000 -4.26028168082816E+0000 -4.26614580154031E+0000 +-4.27200187265877E+0000 -4.27784992724149E+0000 -4.28368999812078E+0000 -4.28952211790544E+0000 -4.29534631898291E+0000 +-4.30116263352131E+0000 -4.30697109347161E+0000 -4.31277173056957E+0000 -4.31856457633784E+0000 -4.32434966208793E+0000 +-4.33012701892219E+0000 -4.33589667773576E+0000 -4.34165866921848E+0000 -4.34741302385683E+0000 -4.35315977193578E+0000 +-4.35889894354067E+0000 -4.36463056855904E+0000 -4.37035467668243E+0000 -4.37607129740821E+0000 -4.38178046004133E+0000 +-4.38748219369606E+0000 -4.39317652729776E+0000 -4.39886348958455E+0000 -4.40454310910905E+0000 -4.41021541423999E+0000 +-4.41588043316392E+0000 -4.42153819388683E+0000 -4.42718872423573E+0000 -4.43283205186030E+0000 -4.43846820423443E+0000 +-4.44409720865779E+0000 -4.44971909225740E+0000 -4.45533388198909E+0000 -4.46094160463909E+0000 -4.46654228682546E+0000 +-4.47213595499958E+0000 -4.47772263544762E+0000 -4.48330235429198E+0000 -4.48887513749269E+0000 -4.49444101084885E+0000 +-4.50000000000000E+0000 -4.50555213042752E+0000 -4.51109742745598E+0000 -4.51663591625449E+0000 -4.52216762183801E+0000 +-4.52769256906871E+0000 -4.53321078265725E+0000 -4.53872228716409E+0000 -4.54422710700071E+0000 -4.54972526643093E+0000 +-4.55521678957215E+0000 -4.56070170039655E+0000 -4.56618002273235E+0000 -4.57165178026498E+0000 -4.57711699653832E+0000 +-4.58257569495584E+0000 -4.58802789878179E+0000 -4.59347363114234E+0000 -4.59891291502677E+0000 -4.60434577328853E+0000 +-4.60977222864644E+0000 -4.61519230368573E+0000 -4.62060602085917E+0000 -4.62601340248815E+0000 -4.63141447076376E+0000 +-4.63680924774785E+0000 -4.64219775537406E+0000 -4.64758001544890E+0000 -4.65295604965274E+0000 -4.65832587954085E+0000 +-4.66368952654441E+0000 -4.66904701197150E+0000 -4.67439835700810E+0000 -4.67974358271904E+0000 -4.68508271004899E+0000 +-4.69041575982343E+0000 -4.69574275274956E+0000 -4.70106370941726E+0000 -4.70637865030004E+0000 -4.71168759575590E+0000 +-4.71699056602830E+0000 -4.72228758124704E+0000 -4.72757866142913E+0000 -4.73286382647969E+0000 -4.73814309619285E+0000 +-4.74341649025257E+0000 -4.74868402823351E+0000 -4.75394572960189E+0000 -4.75920161371632E+0000 -4.76445169982864E+0000 +-4.76969600708473E+0000 -4.77493455452533E+0000 -4.78016736108685E+0000 -4.78539444560216E+0000 -4.79061582680139E+0000 +-4.79583152331272E+0000 -4.80104155366312E+0000 -4.80624593627917E+0000 -4.81144468948776E+0000 -4.81663783151692E+0000 +-4.82182538049648E+0000 -4.82700735445887E+0000 -4.83218377133983E+0000 -4.83735464897913E+0000 -4.84252000512130E+0000 +-4.84767985741633E+0000 -4.85283422342037E+0000 -4.85798312059645E+0000 -4.86312656631513E+0000 -4.86826457785523E+0000 +-4.87339717240448E+0000 -4.87852436706019E+0000 -4.88364617882991E+0000 -4.88876262463213E+0000 -4.89387372129686E+0000 +-4.89897948556636E+0000 -4.90407993409569E+0000 -4.90917508345343E+0000 -4.91426495012225E+0000 -4.91934955049954E+0000 +-4.92442890089805E+0000 -4.92950301754650E+0000 -4.93457191659013E+0000 -4.93963561409139E+0000 -4.94469412603045E+0000 +-4.94974746830583E+0000 -4.95479565673500E+0000 -4.95983870705490E+0000 -4.96487663492256E+0000 -4.96990945591567E+0000 +-4.97493718553310E+0000 -4.97995983919549E+0000 -4.98497743224581E+0000 -4.98998997994986E+0000 -4.99499749749687E+0000 +-5.00000000000000E+0000 -5.00499750249688E+0000 -5.00999001995014E+0000 -5.01497756724793E+0000 -5.01996015920445E+0000 +-5.02493781056044E+0000 -5.02991053598372E+0000 -5.03487835006964E+0000 -5.03984126734166E+0000 -5.04479930225177E+0000 +-5.04975246918104E+0000 -5.05470078244004E+0000 -5.05964425626941E+0000 -5.06458290484024E+0000 -5.06951674225463E+0000 +-5.07444578254611E+0000 -5.07937003968012E+0000 -5.08428952755447E+0000 -5.08920425999979E+0000 -5.09411425078001E+0000 +-5.09901951359278E+0000 -5.10392006206994E+0000 -5.10881590977792E+0000 -5.11370707021824E+0000 -5.11859355682789E+0000 +-5.12347538297980E+0000 -5.12835256198323E+0000 -5.13322510708424E+0000 -5.13809303146605E+0000 -5.14295634824952E+0000 +-5.14781507049350E+0000 -5.15266921119530E+0000 -5.15751878329105E+0000 -5.16236379965612E+0000 -5.16720427310553E+0000 +-5.17204021639430E+0000 -5.17687164221791E+0000 -5.18169856321265E+0000 -5.18652099195598E+0000 -5.19133894096696E+0000 +-5.19615242270663E+0000 -5.20096144957834E+0000 -5.20576603392815E+0000 -5.21056618804521E+0000 -5.21536192416212E+0000 +-5.22015325445528E+0000 -5.22494019104525E+0000 -5.22972274599715E+0000 -5.23450093132096E+0000 -5.23927475897189E+0000 +-5.24404424085076E+0000 -5.24880938880428E+0000 -5.25357021462548E+0000 -5.25832673005396E+0000 -5.26307894677631E+0000 +-5.26782687642637E+0000 -5.27257053058563E+0000 -5.27730992078350E+0000 -5.28204505849770E+0000 -5.28677595515452E+0000 +-5.29150262212918E+0000 -5.29622507074614E+0000 -5.30094331227943E+0000 -5.30565735795292E+0000 -5.31036721894070E+0000 +-5.31507290636732E+0000 -5.31977443130815E+0000 -5.32447180478965E+0000 -5.32916503778969E+0000 -5.33385414123783E+0000 +-5.33853912601566E+0000 -5.34322000295702E+0000 -5.34789678284838E+0000 -5.35256947642905E+0000 -5.35723809439155E+0000 +-5.36190264738180E+0000 -5.36656314599950E+0000 -5.37121960079831E+0000 -5.37587202228625E+0000 -5.38052042092584E+0000 +-5.38516480713450E+0000 -5.38980519128475E+0000 -5.39444158370447E+0000 -5.39907399467724E+0000 -5.40370243444252E+0000 +-5.40832691319598E+0000 -5.41294744108974E+0000 -5.41756402823261E+0000 -5.42217668469038E+0000 -5.42678542048605E+0000 +-5.43139024560011E+0000 -5.43599116997075E+0000 -5.44058820349418E+0000 -5.44518135602479E+0000 -5.44977063737548E+0000 +-5.45435605731786E+0000 -5.45893762558247E+0000 -5.46351535185909E+0000 -5.46808924579693E+0000 -5.47265931700485E+0000 +-5.47722557505166E+0000 -5.48178802946630E+0000 -5.48634668973808E+0000 -5.49090156531694E+0000 -5.49545266561363E+0000 +-5.50000000000000E+0000 -5.50454357780915E+0000 -5.50908340833573E+0000 -5.51361950083609E+0000 -5.51815186452856E+0000 +-5.52268050859363E+0000 -5.52720544217419E+0000 -5.53172667437573E+0000 -5.53624421426656E+0000 -5.54075807087803E+0000 +-5.54526825320471E+0000 -5.54977477020464E+0000 -5.55427763079953E+0000 -5.55877684387492E+0000 -5.56327241828045E+0000 +-5.56776436283002E+0000 -5.57225268630201E+0000 -5.57673739743947E+0000 -5.58121850495033E+0000 -5.58569601750758E+0000 +-5.59016994374947E+0000 -5.59464029227975E+0000 -5.59910707166777E+0000 -5.60357029044876E+0000 -5.60802995712398E+0000 +-5.61248608016091E+0000 -5.61693866799345E+0000 -5.62138772902208E+0000 -5.62583327161408E+0000 -5.63027530410370E+0000 +-5.63471383479232E+0000 -5.63914887194867E+0000 -5.64358042380899E+0000 -5.64800849857718E+0000 -5.65243310442503E+0000 +-5.65685424949238E+0000 -5.66127194188726E+0000 -5.66568618968612E+0000 -5.67009700093393E+0000 -5.67450438364444E+0000 +-5.67890834580027E+0000 -5.68330889535313E+0000 -5.68770604022395E+0000 -5.69209978830308E+0000 -5.69649014745045E+0000 +-5.70087712549569E+0000 -5.70526073023836E+0000 -5.70964096944808E+0000 -5.71401785086466E+0000 -5.71839138219832E+0000 +-5.72276157112980E+0000 -5.72712842531054E+0000 -5.73149195236284E+0000 -5.73585215987999E+0000 -5.74020905542647E+0000 +-5.74456264653803E+0000 -5.74891294072192E+0000 -5.75325994545701E+0000 -5.75760366819391E+0000 -5.76194411635517E+0000 +-5.76628129733540E+0000 -5.77061521850140E+0000 -5.77494588719236E+0000 -5.77927331071996E+0000 -5.78359749636850E+0000 +-5.78791845139511E+0000 -5.79223618302983E+0000 -5.79655069847578E+0000 -5.80086200490927E+0000 -5.80517010948000E+0000 +-5.80947501931113E+0000 -5.81377674149945E+0000 -5.81807528311554E+0000 -5.82237065120385E+0000 -5.82666285278289E+0000 +-5.83095189484530E+0000 -5.83523778435806E+0000 -5.83952052826257E+0000 -5.84380013347479E+0000 -5.84807660688538E+0000 +-5.85234995535981E+0000 -5.85662018573853E+0000 -5.86088730483704E+0000 -5.86515131944607E+0000 -5.86941223633168E+0000 +-5.87367006223537E+0000 -5.87792480387424E+0000 -5.88217646794110E+0000 -5.88642506110457E+0000 -5.89067059000926E+0000 +-5.89491306127580E+0000 -5.89915248150105E+0000 -5.90338885725818E+0000 -5.90762219509677E+0000 -5.91185250154298E+0000 +-5.91607978309962E+0000 -5.92030404624627E+0000 -5.92452529743945E+0000 -5.92874354311266E+0000 -5.93295878967653E+0000 +-5.93717104351896E+0000 -5.94138031100518E+0000 -5.94558659847790E+0000 -5.94978991225741E+0000 -5.95399025864168E+0000 +-5.95818764390649E+0000 -5.96238207430554E+0000 -5.96657355607052E+0000 -5.97076209541127E+0000 -5.97494769851586E+0000 +-5.97913037155070E+0000 -5.98331012066064E+0000 -5.98748695196908E+0000 -5.99166087157810E+0000 -5.99583188556851E+0000 +-6.00000000000000E+0000 -6.00416522091123E+0000 -6.00832755431992E+0000 -6.01248700622297E+0000 -6.01664358259653E+0000 +-6.02079728939615E+0000 -6.02494813255683E+0000 -6.02909611799314E+0000 -6.03324125159934E+0000 -6.03738353924943E+0000 +-6.04152298679729E+0000 -6.04565960007674E+0000 -6.04979338490167E+0000 -6.05392434706612E+0000 -6.05805249234438E+0000 +-6.06217782649107E+0000 -6.06630035524124E+0000 -6.07042008431048E+0000 -6.07453701939498E+0000 -6.07865116617165E+0000 +-6.08276253029822E+0000 -6.08687111741328E+0000 -6.09097693313642E+0000 -6.09507998306831E+0000 -6.09918027279076E+0000 +-6.10327780786685E+0000 -6.10737259384099E+0000 -6.11146463623901E+0000 -6.11555394056826E+0000 -6.11964051231770E+0000 +-6.12372435695795E+0000 -6.12780547994141E+0000 -6.13188388670236E+0000 -6.13595958265698E+0000 -6.14003257320350E+0000 +-6.14410286372225E+0000 -6.14817045957576E+0000 -6.15223536610881E+0000 -6.15629758864855E+0000 -6.16035713250458E+0000 +-6.16441400296898E+0000 -6.16846820531645E+0000 -6.17251974480439E+0000 -6.17656862667290E+0000 -6.18061485614498E+0000 +-6.18465843842649E+0000 -6.18869937870632E+0000 -6.19273768215641E+0000 -6.19677335393187E+0000 -6.20080639917100E+0000 +-6.20483682299543E+0000 -6.20886463051015E+0000 -6.21288982680363E+0000 -6.21691241694782E+0000 -6.22093240599832E+0000 +-6.22494979899437E+0000 -6.22896460095897E+0000 -6.23297681689897E+0000 -6.23698645180507E+0000 -6.24099351065197E+0000 +-6.24499799839840E+0000 -6.24899991998720E+0000 -6.25299928034539E+0000 -6.25699608438426E+0000 -6.26099033699941E+0000 +-6.26498204307083E+0000 -6.26897120746299E+0000 -6.27295783502488E+0000 -6.27694193059009E+0000 -6.28092349897688E+0000 +-6.28490254498827E+0000 -6.28887907341205E+0000 -6.29285308902091E+0000 -6.29682459657247E+0000 -6.30079360080935E+0000 +-6.30476010645925E+0000 -6.30872411823500E+0000 -6.31268564083465E+0000 -6.31664467894150E+0000 -6.32060123722419E+0000 +-6.32455532033676E+0000 -6.32850693291870E+0000 -6.33245607959503E+0000 -6.33640276497635E+0000 -6.34034699365894E+0000 +-6.34428877022476E+0000 -6.34822809924155E+0000 -6.35216498526290E+0000 -6.35609943282828E+0000 -6.36003144646314E+0000 +-6.36396103067893E+0000 -6.36788818997319E+0000 -6.37181292882960E+0000 -6.37573525171803E+0000 -6.37965516309463E+0000 +-6.38357266740185E+0000 -6.38748776906852E+0000 -6.39140047250992E+0000 -6.39531078212779E+0000 -6.39921870231046E+0000 +-6.40312423743285E+0000 -6.40702739185654E+0000 -6.41092816992984E+0000 -6.41482657598785E+0000 -6.41872261435249E+0000 +-6.42261628933256E+0000 -6.42650760522385E+0000 -6.43039656630911E+0000 -6.43428317685817E+0000 -6.43816744112795E+0000 +-6.44204936336256E+0000 -6.44592894779333E+0000 -6.44980619863884E+0000 -6.45368112010502E+0000 -6.45755371638518E+0000 +-6.46142399166004E+0000 -6.46529195009785E+0000 -6.46915759585435E+0000 -6.47302093307290E+0000 -6.47688196588451E+0000 +-6.48074069840786E+0000 -6.48459713474939E+0000 -6.48845127900333E+0000 -6.49230313525177E+0000 -6.49615270756469E+0000 +-6.50000000000000E+0000 -6.50384501660364E+0000 -6.50768776140958E+0000 -6.51152823843988E+0000 -6.51536645170477E+0000 +-6.51920240520265E+0000 -6.52303610292017E+0000 -6.52686754883229E+0000 -6.53069674690228E+0000 -6.53452370108182E+0000 +-6.53834841531101E+0000 -6.54217089351845E+0000 -6.54599113962126E+0000 -6.54980915752513E+0000 -6.55362495112438E+0000 +-6.55743852430200E+0000 -6.56124988092970E+0000 -6.56505902486794E+0000 -6.56886595996600E+0000 -6.57267069006199E+0000 +-6.57647321898295E+0000 -6.58027355054484E+0000 -6.58407168855261E+0000 -6.58786763680024E+0000 -6.59166139907080E+0000 +-6.59545297913646E+0000 -6.59924238075857E+0000 -6.60302960768767E+0000 -6.60681466366357E+0000 -6.61059755241536E+0000 +-6.61437827766148E+0000 -6.61815684310972E+0000 -6.62193325245732E+0000 -6.62570750939098E+0000 -6.62947961758689E+0000 +-6.63324958071080E+0000 -6.63701740241805E+0000 -6.64078308635360E+0000 -6.64454663615209E+0000 -6.64830805543787E+0000 +-6.65206734782504E+0000 -6.65582451691749E+0000 -6.65957956630897E+0000 -6.66333249958307E+0000 -6.66708332031331E+0000 +-6.67083203206317E+0000 -6.67457863838610E+0000 -6.67832314282560E+0000 -6.68206554891525E+0000 -6.68580586017871E+0000 +-6.68954408012983E+0000 -6.69328021227260E+0000 -6.69701426010129E+0000 -6.70074622710038E+0000 -6.70447611674469E+0000 +-6.70820393249937E+0000 -6.71192967781993E+0000 -6.71565335615233E+0000 -6.71937497093294E+0000 -6.72309452558864E+0000 +-6.72681202353685E+0000 -6.73052746818554E+0000 -6.73424086293325E+0000 -6.73795221116921E+0000 -6.74166151627327E+0000 +-6.74536878161602E+0000 -6.74907401055878E+0000 -6.75277720645365E+0000 -6.75647837264355E+0000 -6.76017751246223E+0000 +-6.76387462923434E+0000 -6.76756972627545E+0000 -6.77126280689208E+0000 -6.77495387438173E+0000 -6.77864293203293E+0000 +-6.78232998312527E+0000 -6.78601503092942E+0000 -6.78969807870718E+0000 -6.79337912971152E+0000 -6.79705818718657E+0000 +-6.80073525436772E+0000 -6.80441033448160E+0000 -6.80808343074613E+0000 -6.81175454637056E+0000 -6.81542368455549E+0000 +-6.81909084849293E+0000 -6.82275604136627E+0000 -6.82641926635041E+0000 -6.83008052661167E+0000 -6.83373982530795E+0000 +-6.83739716558867E+0000 -6.84105255059483E+0000 -6.84470598345904E+0000 -6.84835746730557E+0000 -6.85200700525036E+0000 +-6.85565460040104E+0000 -6.85930025585701E+0000 -6.86294397470940E+0000 -6.86658576004116E+0000 -6.87022561492707E+0000 +-6.87386354243376E+0000 -6.87749954561976E+0000 -6.88113362753551E+0000 -6.88476579122340E+0000 -6.88839603971781E+0000 +-6.89202437604511E+0000 -6.89565080322372E+0000 -6.89927532426414E+0000 -6.90289794216893E+0000 -6.90651865993280E+0000 +-6.91013748054263E+0000 -6.91375440697744E+0000 -6.91736944220851E+0000 -6.92098258919931E+0000 -6.92459385090563E+0000 +-6.92820323027551E+0000 -6.93181073024935E+0000 -6.93541635375988E+0000 -6.93902010373223E+0000 -6.94262198308391E+0000 +-6.94622199472490E+0000 -6.94982014155762E+0000 -6.95341642647699E+0000 -6.95701085237043E+0000 -6.96060342211794E+0000 +-6.96419413859206E+0000 -6.96778300465794E+0000 -6.97137002317335E+0000 -6.97495519698872E+0000 -6.97853852894716E+0000 +-6.98212002188447E+0000 -6.98569967862919E+0000 -6.98927750200262E+0000 -6.99285349481884E+0000 -6.99642765988472E+0000 +-7.00000000000000E+0000 -7.00357051795725E+0000 -7.00713921654194E+0000 -7.01070609853244E+0000 -7.01427116670007E+0000 +-7.01783442380910E+0000 -7.02139587261678E+0000 -7.02495551587339E+0000 -7.02851335632223E+0000 -7.03206939669967E+0000 +-7.03562363973514E+0000 -7.03917608815123E+0000 -7.04272674466360E+0000 -7.04627561198113E+0000 -7.04982269280583E+0000 +-7.05336798983294E+0000 -7.05691150575094E+0000 -7.06045324324154E+0000 -7.06399320497974E+0000 -7.06753139363385E+0000 +-7.07106781186548E+0000 -7.07460246232960E+0000 -7.07813534767456E+0000 -7.08166647054209E+0000 -7.08519583356734E+0000 +-7.08872343937891E+0000 -7.09224929059886E+0000 -7.09577338984272E+0000 -7.09929573971954E+0000 -7.10281634283191E+0000 +-7.10633520177595E+0000 -7.10985231914138E+0000 -7.11336769751150E+0000 -7.11688133946323E+0000 -7.12039324756716E+0000 +-7.12390342438750E+0000 -7.12741187248218E+0000 -7.13091859440283E+0000 -7.13442359269479E+0000 -7.13792686989717E+0000 +-7.14142842854285E+0000 -7.14492827115850E+0000 -7.14842640026461E+0000 -7.15192281837549E+0000 -7.15541752799933E+0000 +-7.15891053163818E+0000 -7.16240183178799E+0000 -7.16589143093865E+0000 -7.16937933157397E+0000 -7.17286553617172E+0000 +-7.17635004720366E+0000 -7.17983286713556E+0000 -7.18331399842719E+0000 -7.18679344353238E+0000 -7.19027120489902E+0000 +-7.19374728496908E+0000 -7.19722168617863E+0000 -7.20069441095788E+0000 -7.20416546173115E+0000 -7.20763484091696E+0000 +-7.21110255092798E+0000 -7.21456859417110E+0000 -7.21803297304744E+0000 -7.22149568995232E+0000 -7.22495674727538E+0000 +-7.22841614740048E+0000 -7.23187389270582E+0000 -7.23532998556389E+0000 -7.23878442834154E+0000 -7.24223722339996E+0000 +-7.24568837309472E+0000 -7.24913787977577E+0000 -7.25258574578750E+0000 -7.25603197346869E+0000 -7.25947656515261E+0000 +-7.26291952316697E+0000 -7.26636084983398E+0000 -7.26980054747034E+0000 -7.27323861838727E+0000 -7.27667506489056E+0000 +-7.28010988928052E+0000 -7.28354309385206E+0000 -7.28697468089467E+0000 -7.29040465269247E+0000 -7.29383301152419E+0000 +-7.29725975966321E+0000 -7.30068489937759E+0000 -7.30410843293006E+0000 -7.30753036257804E+0000 -7.31095069057370E+0000 +-7.31436941916390E+0000 -7.31778655059028E+0000 -7.32120208708925E+0000 -7.32461603089199E+0000 -7.32802838422450E+0000 +-7.33143914930759E+0000 -7.33484832835690E+0000 -7.33825592358293E+0000 -7.34166193719106E+0000 -7.34506637138154E+0000 +-7.34846922834953E+0000 -7.35187051028512E+0000 -7.35527021937332E+0000 -7.35866835779409E+0000 -7.36206492772238E+0000 +-7.36545993132812E+0000 -7.36885337077622E+0000 -7.37224524822662E+0000 -7.37563556583431E+0000 -7.37902432574931E+0000 +-7.38241153011670E+0000 -7.38579718107666E+0000 -7.38918128076447E+0000 -7.39256383131049E+0000 -7.39594483484024E+0000 +-7.39932429347437E+0000 -7.40270220932870E+0000 -7.40607858451421E+0000 -7.40945342113708E+0000 -7.41282672129870E+0000 +-7.41619848709566E+0000 -7.41956872061982E+0000 -7.42293742395825E+0000 -7.42630459919333E+0000 -7.42967024840268E+0000 +-7.43303437365925E+0000 -7.43639697703128E+0000 -7.43975806058235E+0000 -7.44311762637136E+0000 -7.44647567645259E+0000 +-7.44983221287567E+0000 -7.45318723768563E+0000 -7.45654075292290E+0000 -7.45989276062331E+0000 -7.46324326281812E+0000 +-7.46659226153404E+0000 -7.46993975879324E+0000 -7.47328575661335E+0000 -7.47663025700750E+0000 -7.47997326198430E+0000 +-7.48331477354788E+0000 -7.48665479369792E+0000 -7.48999332442960E+0000 -7.49333036773370E+0000 -7.49666592559652E+0000 +-7.50000000000000E+0000 -7.50333259292163E+0000 -7.50666370633453E+0000 -7.50999334220743E+0000 -7.51332150250473E+0000 +-7.51664818918645E+0000 -7.51997340420829E+0000 -7.52329714952161E+0000 -7.52661942707349E+0000 -7.52994023880668E+0000 +-7.53325958665968E+0000 -7.53657747256671E+0000 -7.53989389845772E+0000 -7.54320886625844E+0000 -7.54652237789036E+0000 +-7.54983443527075E+0000 -7.55314504031268E+0000 -7.55645419492503E+0000 -7.55976190101249E+0000 -7.56306816047562E+0000 +-7.56637297521078E+0000 -7.56967634711022E+0000 -7.57297827806207E+0000 -7.57627876995032E+0000 -7.57957782465488E+0000 +-7.58287544405155E+0000 -7.58617163001207E+0000 -7.58946638440411E+0000 -7.59275970909129E+0000 -7.59605160593318E+0000 +-7.59934207678533E+0000 -7.60263112349929E+0000 -7.60591874792257E+0000 -7.60920495189872E+0000 -7.61248973726730E+0000 +-7.61577310586391E+0000 -7.61905505952018E+0000 -7.62233560006380E+0000 -7.62561472931855E+0000 -7.62889244910426E+0000 +-7.63216876123687E+0000 -7.63544366752843E+0000 -7.63871716978708E+0000 -7.64198926981712E+0000 -7.64525996941896E+0000 +-7.64852927038918E+0000 -7.65179717452051E+0000 -7.65506368360186E+0000 -7.65832879941832E+0000 -7.66159252375118E+0000 +-7.66485485837795E+0000 -7.66811580507233E+0000 -7.67137536560427E+0000 -7.67463354173996E+0000 -7.67789033524184E+0000 +-7.68114574786861E+0000 -7.68439978137525E+0000 -7.68765243751303E+0000 -7.69090371802950E+0000 -7.69415362466854E+0000 +-7.69740215917033E+0000 -7.70064932327138E+0000 -7.70389511870456E+0000 -7.70713954719908E+0000 -7.71038261048049E+0000 +-7.71362431027076E+0000 -7.71686464828819E+0000 -7.72010362624751E+0000 -7.72334124585985E+0000 -7.72657750883274E+0000 +-7.72981241687015E+0000 -7.73304597167248E+0000 -7.73627817493658E+0000 -7.73950902835574E+0000 -7.74273853361974E+0000 +-7.74596669241483E+0000 -7.74919350642495E+0000 -7.75241897734488E+0000 -7.75564310689351E+0000 -7.75886589681493E+0000 +-7.76208734887855E+0000 -7.76530746487903E+0000 -7.76852624663635E+0000 -7.77174369599577E+0000 -7.77495981482787E+0000 +-7.77817460502856E+0000 -7.78138806851907E+0000 -7.78460020724598E+0000 -7.78781102318121E+0000 -7.79102051832205E+0000 +-7.79422869469118E+0000 -7.79743555433662E+0000 -7.80064109933181E+0000 -7.80384533177558E+0000 -7.80704825379218E+0000 +-7.81024986753128E+0000 -7.81345017516795E+0000 -7.81664917890273E+0000 -7.81984688096160E+0000 -7.82304328359599E+0000 +-7.82623838908281E+0000 -7.82943219972443E+0000 -7.83262471784872E+0000 -7.83581594580904E+0000 -7.83900588598424E+0000 +-7.84219454077871E+0000 -7.84538191262233E+0000 -7.84856800397055E+0000 -7.85175281730433E+0000 -7.85493635513019E+0000 +-7.85811861998021E+0000 -7.86129961441204E+0000 -7.86447934100890E+0000 -7.86765780237960E+0000 -7.87083500115855E+0000 +-7.87401094000575E+0000 -7.87718562160683E+0000 -7.88035904867302E+0000 -7.88353122394119E+0000 -7.88670215017387E+0000 +-7.88987183015920E+0000 -7.89304026671101E+0000 -7.89620746266877E+0000 -7.89937342089763E+0000 -7.90253814428844E+0000 +-7.90570163575772E+0000 -7.90886389824769E+0000 -7.91202493472629E+0000 -7.91518474818716E+0000 -7.91834334164970E+0000 +-7.92150071815899E+0000 -7.92465688078590E+0000 -7.92781183262702E+0000 -7.93096557680472E+0000 -7.93411811646711E+0000 +-7.93726945478809E+0000 -7.94041959496736E+0000 -7.94356854023038E+0000 -7.94671629382844E+0000 -7.94986285903860E+0000 +-7.95300823916378E+0000 -7.95615243753268E+0000 -7.95929545749987E+0000 -7.96243730244574E+0000 -7.96557797577653E+0000 +-7.96871748092434E+0000 -7.97185582134713E+0000 -7.97499300052874E+0000 -7.97812902197888E+0000 -7.98126388923315E+0000 +-7.98439760585304E+0000 -7.98753017542597E+0000 -7.99066160156524E+0000 -7.99379188791008E+0000 -7.99692103812565E+0000 +-8.00004905590304E+0000 -8.00317594495929E+0000 -8.00630170903738E+0000 -8.00942635190625E+0000 -8.01254987736080E+0000 +-8.01567228922192E+0000 -8.01879359133646E+0000 -8.02191378757727E+0000 -8.02503288184320E+0000 -8.02815087805908E+0000 +-8.03126778017576E+0000 -8.03438359217013E+0000 -8.03749831804507E+0000 -8.04061196182952E+0000 -8.04372452757843E+0000 +-8.04683601937284E+0000 -8.04994644131979E+0000 -8.05305579755244E+0000 -8.05616409222996E+0000 -8.05927132953764E+0000 +-8.06237751368684E+0000 -8.06548264891500E+0000 -8.06858673948566E+0000 -8.07168978968848E+0000 -8.07479180383922E+0000 +-8.07789278627975E+0000 -8.08099274137809E+0000 -8.08409167352836E+0000 -8.08718958715085E+0000 -8.09028648669197E+0000 +-8.09338237662432E+0000 -8.09647726144661E+0000 -8.09957114568376E+0000 -8.10266403388686E+0000 -8.10575593063314E+0000 +-8.10884684052608E+0000 -8.11193676819530E+0000 -8.11502571829666E+0000 -8.11811369551219E+0000 -8.12120070455019E+0000 +-8.12428675014512E+0000 -8.12737183705771E+0000 -8.13045597007491E+0000 -8.13353915400991E+0000 -8.13662139370216E+0000 +-8.13970269401736E+0000 -8.14278305984745E+0000 -8.14586249611068E+0000 -8.14894100775153E+0000 -8.15201859974079E+0000 +-8.15509527707554E+0000 -8.15817104477913E+0000 -8.16124590790122E+0000 -8.16431987151780E+0000 -8.16739294073113E+0000 +-8.17046512066983E+0000 -8.17353641648883E+0000 -8.17660683336938E+0000 -8.17967637651909E+0000 -8.18274505117190E+0000 +-8.18581286258810E+0000 -8.18887981605436E+0000 -8.19194591688368E+0000 -8.19501117041547E+0000 -8.19807558201546E+0000 +-8.20113915707583E+0000 -8.20420190101509E+0000 -8.20726381927817E+0000 -8.21032491733641E+0000 -8.21338520068754E+0000 +-8.21644467485570E+0000 -8.21950334539147E+0000 -8.22256121787184E+0000 -8.22561829790022E+0000 -8.22867459110647E+0000 +-8.23173010314690E+0000 -8.23478483970426E+0000 -8.23783880648775E+0000 -8.24089200923304E+0000 -8.24394445370226E+0000 +-8.24699614568401E+0000 -8.25004709099338E+0000 -8.25309729547192E+0000 -8.25614676498771E+0000 -8.25919550543528E+0000 +-8.26224352273568E+0000 -8.26529082283649E+0000 -8.26833741171177E+0000 -8.27138329536211E+0000 -8.27442847981462E+0000 +-8.27747297112295E+0000 -8.28051677536728E+0000 -8.28355989865434E+0000 -8.28660234711738E+0000 -8.28964412691622E+0000 +-8.29268524423726E+0000 -8.29572570529342E+0000 -8.29876551632421E+0000 -8.30180468359573E+0000 -8.30484321340064E+0000 +-8.30788111205818E+0000 -8.31091838591420E+0000 -8.31395504134113E+0000 -8.31699108473803E+0000 -8.32002652253052E+0000 +-8.32306136117088E+0000 -8.32609560713797E+0000 -8.32912926693731E+0000 -8.33216234710102E+0000 -8.33519485418787E+0000 +-8.33822679478325E+0000 -8.34125817549923E+0000 -8.34428900297449E+0000 -8.34731928387439E+0000 -8.35034902489095E+0000 +-8.35337823274284E+0000 -8.35640691417541E+0000 -8.35943507596070E+0000 -8.36246272489742E+0000 -8.36548986781095E+0000 +-8.36851651155338E+0000 -8.37154266300060E+0000 -8.37456832902038E+0000 -8.37759351644046E+0000 -8.38061823204569E+0000 +-8.38364248257798E+0000 -8.38666627473635E+0000 -8.38968961517693E+0000 -8.39271251051292E+0000 -8.39573496731467E+0000 +-8.39875699210961E+0000 -8.40177859138231E+0000 -8.40479977157445E+0000 -8.40782053908486E+0000 -8.41084090026948E+0000 +-8.41386086144140E+0000 -8.41688042887086E+0000 -8.41989960878523E+0000 -8.42291840736906E+0000 -8.42593683076402E+0000 +-8.42895488506899E+0000 -8.43197257633998E+0000 -8.43498991059020E+0000 -8.43800689379000E+0000 -8.44102353186696E+0000 +-8.44403983070582E+0000 -8.44705579614850E+0000 -8.45007143399415E+0000 -8.45308674999910E+0000 -8.45610174987688E+0000 +-8.45911643929824E+0000 -8.46213082389116E+0000 -8.46514490924080E+0000 -8.46815870088959E+0000 -8.47117220433717E+0000 +-8.47418542504039E+0000 -8.47719836841337E+0000 -8.48021103982747E+0000 -8.48322344461129E+0000 -8.48623558805068E+0000 +-8.48924747538874E+0000 -8.49225911182585E+0000 -8.49527050251965E+0000 -8.49828165258502E+0000 -8.50129256709417E+0000 +-8.50430325107655E+0000 -8.50731370951890E+0000 -8.51032394736524E+0000 -8.51333396951691E+0000 -8.51634378083252E+0000 +-8.51935338612799E+0000 -8.52236279017655E+0000 -8.52537199770873E+0000 -8.52838101341238E+0000 -8.53138984193268E+0000 +-8.53439848787210E+0000 -8.53740695579047E+0000 -8.54041525020494E+0000 -8.54342337559000E+0000 -8.54643133637746E+0000 +-8.54943913695651E+0000 -8.55244678167365E+0000 -8.55545427483275E+0000 -8.55846162069506E+0000 -8.56146882347914E+0000 +-8.56447588736096E+0000 -8.56748281647385E+0000 -8.57048961490849E+0000 -8.57349628671296E+0000 -8.57650283589273E+0000 +-8.57950926641064E+0000 -8.58251558218690E+0000 -8.58552178709917E+0000 -8.58852788498246E+0000 -8.59153387962919E+0000 +-8.59453977478921E+0000 -8.59754557416977E+0000 -8.60055128143552E+0000 -8.60355690020854E+0000 -8.60656243406833E+0000 +-8.60956788655183E+0000 -8.61257326115339E+0000 -8.61557856132481E+0000 -8.61858379047532E+0000 -8.62158895197160E+0000 +-8.62459404913776E+0000 -8.62759908525538E+0000 -8.63060406356349E+0000 -8.63360898725858E+0000 -8.63661385949459E+0000 +-8.63961868338293E+0000 -8.64262346199249E+0000 -8.64562819834962E+0000 -8.64863289543817E+0000 -8.65163755619945E+0000 +-8.65464218353226E+0000 -8.65764678029290E+0000 -8.66065134929513E+0000 -8.66365589331027E+0000 -8.66666041506707E+0000 +-8.66966491725183E+0000 -8.67266940250833E+0000 -8.67567387343790E+0000 -8.67867833259935E+0000 -8.68168278250901E+0000 +-8.68468722564076E+0000 -8.68769166442599E+0000 -8.69069610125361E+0000 -8.69370053847009E+0000 -8.69670497837941E+0000 +-8.69970942324311E+0000 -8.70271387528027E+0000 -8.70571833666752E+0000 -8.70872280953904E+0000 -8.71172729598656E+0000 +-8.71473179805939E+0000 -8.71773631776437E+0000 -8.72074085706594E+0000 -8.72374541788610E+0000 -8.72675000210441E+0000 +-8.72975461155802E+0000 -8.73275924804167E+0000 -8.73576391330765E+0000 -8.73876860906588E+0000 -8.74177333698385E+0000 +-8.74477809868665E+0000 -8.74778289575696E+0000 -8.75078772973506E+0000 -8.75379260211887E+0000 -8.75679751436387E+0000 +-8.75980246788317E+0000 -8.76280746404753E+0000 -8.76581250418528E+0000 -8.76881758958239E+0000 -8.77182272148247E+0000 +-8.77482790108673E+0000 -8.77783312955406E+0000 -8.78083840800094E+0000 -8.78384373750150E+0000 -8.78684911908753E+0000 +-8.78985455374846E+0000 -8.79286004243136E+0000 -8.79586558604096E+0000 -8.79887118543965E+0000 -8.80187684144746E+0000 +-8.80488255484212E+0000 -8.80788832635898E+0000 -8.81089415669109E+0000 -8.81390004648919E+0000 -8.81690599636164E+0000 +-8.81991200687452E+0000 -8.82291807855160E+0000 -8.82592421187430E+0000 -8.82893040728176E+0000 -8.83193666517080E+0000 +-8.83494298589593E+0000 -8.83794936976937E+0000 -8.84095581706103E+0000 -8.84396232799854E+0000 -8.84696890276723E+0000 +-8.84997554151013E+0000 -8.85298224432800E+0000 -8.85598901127932E+0000 -8.85899584238027E+0000 -8.86200273760478E+0000 +-8.86500969688449E+0000 -8.86801672010877E+0000 -8.87102380712474E+0000 -8.87403095773722E+0000 -8.87703817170882E+0000 +-8.88004544875985E+0000 -8.88305278856838E+0000 -8.88606019077023E+0000 -8.88906765495898E+0000 -8.89207518068594E+0000 +-8.89508276746020E+0000 -8.89809041474861E+0000 -8.90109812197577E+0000 -8.90410588852406E+0000 -8.90711371373361E+0000 +-8.91012159690235E+0000 -8.91312953728596E+0000 -8.91613753409792E+0000 -8.91914558650948E+0000 -8.92215369364967E+0000 +-8.92516185460531E+0000 -8.92817006842102E+0000 -8.93117833409921E+0000 -8.93418665060008E+0000 -8.93719501684163E+0000 +-8.94020343169966E+0000 -8.94321189400778E+0000 -8.94622040255742E+0000 -8.94922895609779E+0000 -8.95223755333594E+0000 +-8.95524619293672E+0000 -8.95825487352281E+0000 -8.96126359367471E+0000 -8.96427235193074E+0000 -8.96728114678706E+0000 +-8.97028997669763E+0000 -8.97329884007013E+0000 -8.97630773522021E+0000 -8.97931666032586E+0000 -8.98232561342323E+0000 +-8.98533459240663E+0000 -8.98834359502857E+0000 -8.99135261889971E+0000 -8.99436166148892E+0000 -8.99737072012323E+0000 +-9.00037979198787E+0000 -9.00338887412624E+0000 -9.00639796343995E+0000 -9.00940705668880E+0000 -9.01241615049078E+0000 +-9.01542524132209E+0000 -9.01843432551712E+0000 -9.02144339926847E+0000 -9.02445245862695E+0000 -9.02746149950158E+0000 +-9.03047051765958E+0000 -9.03347950872641E+0000 -9.03648846818573E+0000 -9.03949739137942E+0000 -9.04250627350759E+0000 +-9.04551510962858E+0000 -9.04852389465895E+0000 -9.05153262337349E+0000 -9.05454129040524E+0000 -9.05754989024545E+0000 +-9.06055841724364E+0000 -9.06356686560753E+0000 -9.06657522940314E+0000 -9.06958350255469E+0000 -9.07259167884467E+0000 +-9.07559975191381E+0000 -9.07860771526111E+0000 -9.08161556224382E+0000 -9.08462328607744E+0000 -9.08763087983575E+0000 +-9.09063833645078E+0000 -9.09364564871284E+0000 -9.09665280927049E+0000 -9.09965981063058E+0000 -9.10266664515823E+0000 +-9.10567330507683E+0000 -9.10867978246807E+0000 -9.11168606927189E+0000 -9.11469215728654E+0000 -9.11769803816855E+0000 +-9.12070370343273E+0000 -9.12370914445220E+0000 -9.12671435245837E+0000 -9.12971931854092E+0000 -9.13272403364787E+0000 +-9.13572848858552E+0000 -9.13873267401846E+0000 -9.14173658046962E+0000 -9.14474019832021E+0000 -9.14774351780977E+0000 +-9.15074652903614E+0000 -9.15374922195548E+0000 -9.15675158638228E+0000 -9.15975361198935E+0000 -9.16275528830779E+0000 +-9.16575660472706E+0000 -9.16875755049493E+0000 -9.17175811471753E+0000 -9.17475828635928E+0000 -9.17775805424296E+0000 +-9.18075740704968E+0000 -9.18375633331889E+0000 -9.18675482144839E+0000 -9.18975285969432E+0000 -9.19275043617115E+0000 +-9.19574753885172E+0000 -9.19874415556722E+0000 -9.20174027400717E+0000 -9.20473588171948E+0000 -9.20773096611038E+0000 +-9.21072551444450E+0000 -9.21371951384480E+0000 -9.21671295129261E+0000 -9.21970581362765E+0000 -9.22269808754798E+0000 +-9.22568975961005E+0000 -9.22868081622867E+0000 -9.23167124367704E+0000 -9.23466102808673E+0000 -9.23765015544768E+0000 +-9.24063861160823E+0000 -9.24362638227511E+0000 -9.24661345301340E+0000 -9.24959980924661E+0000 -9.25258543625662E+0000 +-9.25557031918371E+0000 -9.25855444302655E+0000 -9.26153779264220E+0000 -9.26452035274615E+0000 -9.26750210791226E+0000 +-9.27048304257280E+0000 -9.27346314103139E+0000 -9.27644238760514E+0000 -9.27942076676686E+0000 -9.28239826315797E+0000 +-9.28537486158852E+0000 -9.28835054703715E+0000 -9.29132530465117E+0000 -9.29429911974648E+0000 -9.29727197780761E+0000 +-9.30024386448773E+0000 -9.30321476560863E+0000 -9.30618466716076E+0000 -9.30915355530315E+0000 -9.31212141636354E+0000 +-9.31508823683824E+0000 -9.31805400339224E+0000 -9.32101870285918E+0000 -9.32398232224132E+0000 -9.32694484870958E+0000 +-9.32990626960352E+0000 -9.33286657243138E+0000 -9.33582574487002E+0000 -9.33878377476496E+0000 -9.34174065013041E+0000 +-9.34469635914919E+0000 -9.34765089017283E+0000 -9.35060423172150E+0000 -9.35355637248402E+0000 -9.35650730131791E+0000 +-9.35945700724934E+0000 -9.36240547947316E+0000 -9.36535270735288E+0000 -9.36829868042070E+0000 -9.37124338837749E+0000 +-9.37418682109281E+0000 -9.37712896860489E+0000 -9.38006982112064E+0000 -9.38300936901567E+0000 -9.38594760283427E+0000 +-9.38888451328941E+0000 -9.39182009126276E+0000 -9.39475432780470E+0000 -9.39768721413426E+0000 -9.40061874163921E+0000 +-9.40354890187601E+0000 -9.40647768656979E+0000 -9.40940508761443E+0000 -9.41233109707248E+0000 -9.41525570717520E+0000 +-9.41817891032258E+0000 -9.42110069908329E+0000 -9.42402106619474E+0000 -9.42694000456303E+0000 -9.42985750726299E+0000 +-9.43277356753816E+0000 -9.43568817880082E+0000 -9.43860133463193E+0000 -9.44151302878122E+0000 -9.44442325516710E+0000 +-9.44733200787675E+0000 -9.45023928116604E+0000 -9.45314506945960E+0000 -9.45604936735078E+0000 -9.45895216960166E+0000 +-9.46185347114306E+0000 -9.46475326707454E+0000 -9.46765155266440E+0000 -9.47054832334966E+0000 -9.47344357473613E+0000 +-9.47633730259832E+0000 -9.47922950287951E+0000 -9.48212017169171E+0000 -9.48500930531570E+0000 -9.48789690020100E+0000 +-9.49078295296589E+0000 -9.49366746039740E+0000 -9.49655041945133E+0000 -9.49943182725221E+0000 -9.50231168109337E+0000 +-9.50518997843686E+0000 -9.50806671691354E+0000 -9.51094189432299E+0000 -9.51381550863359E+0000 -9.51668755798249E+0000 +-9.51955804067558E+0000 -9.52242695518755E+0000 -9.52529430016187E+0000 -9.52816007441076E+0000 -9.53102427691523E+0000 +-9.53388690682508E+0000 -9.53674796345888E+0000 -9.53960744630399E+0000 -9.54246535501654E+0000 -9.54532168942147E+0000 +-9.54817644951249E+0000 -9.55102963545210E+0000 -9.55388124757159E+0000 -9.55673128637107E+0000 -9.55957975251942E+0000 +-9.56242664685430E+0000 -9.56527197037509E+0000 -9.56811572416455E+0000 -9.57095790931054E+0000 -9.57379852689892E+0000 +-9.57663757801357E+0000 -9.57947506373634E+0000 -9.58231098514710E+0000 -9.58514534332371E+0000 -9.58797813934205E+0000 +-9.59080937427598E+0000 -9.59363904919740E+0000 -9.59646716517619E+0000 -9.59929372328025E+0000 -9.60211872457551E+0000 +-9.60494217012589E+0000 -9.60776406099333E+0000 -9.61058439823780E+0000 -9.61340318291728E+0000 -9.61622041608776E+0000 +-9.61903609880327E+0000 -9.62185023211585E+0000 -9.62466281707558E+0000 -9.62747385473055E+0000 -9.63028334612688E+0000 +-9.63309129230873E+0000 -9.63589769431829E+0000 -9.63870255319576E+0000 -9.64150586997942E+0000 -9.64430764570553E+0000 +-9.64710788140843E+0000 -9.64990657812048E+0000 -9.65270373687209E+0000 -9.65549935869170E+0000 -9.65829344460579E+0000 +-9.66108599563892E+0000 -9.66387701281365E+0000 -9.66666649715062E+0000 -9.66945444966851E+0000 -9.67224087138404E+0000 +-9.67502576331200E+0000 -9.67780912646522E+0000 -9.68059096185460E+0000 -9.68337127048908E+0000 -9.68615005337567E+0000 +-9.68892731151943E+0000 -9.69170304592350E+0000 -9.69447725758907E+0000 -9.69724994751540E+0000 -9.70002111669979E+0000 +-9.70279076613765E+0000 -9.70555889682243E+0000 -9.70832550974565E+0000 -9.71109060589693E+0000 -9.71385418626392E+0000 +-9.71661625183238E+0000 -9.71937680358613E+0000 -9.72213584250708E+0000 -9.72489336957519E+0000 -9.72764938576853E+0000 +-9.73040389206325E+0000 -9.73315688943356E+0000 -9.73590837885178E+0000 -9.73865836128830E+0000 -9.74140683771161E+0000 +-9.74415380908827E+0000 -9.74689927638295E+0000 -9.74964324055840E+0000 -9.75238570257547E+0000 -9.75512666339310E+0000 +-9.75786612396833E+0000 -9.76060408525628E+0000 -9.76334054821021E+0000 -9.76607551378143E+0000 -9.76880898291938E+0000 +-9.77154095657161E+0000 -9.77427143568374E+0000 -9.77700042119953E+0000 -9.77972791406084E+0000 -9.78245391520762E+0000 +-9.78517842557794E+0000 -9.78790144610800E+0000 -9.79062297773207E+0000 -9.79334302138258E+0000 -9.79606157799006E+0000 +-9.79877864848312E+0000 -9.80149423378854E+0000 -9.80420833483120E+0000 -9.80692095253409E+0000 -9.80963208781833E+0000 +-9.81234174160316E+0000 -9.81504991480595E+0000 -9.81775660834220E+0000 -9.82046182312552E+0000 -9.82316556006765E+0000 +-9.82586782007849E+0000 -9.82856860406604E+0000 -9.83126791293644E+0000 -9.83396574759396E+0000 -9.83666210894101E+0000 +-9.83935699787815E+0000 -9.84205041530405E+0000 -9.84474236211554E+0000 -9.84743283920757E+0000 -9.85012184747326E+0000 +-9.85280938780385E+0000 -9.85549546108872E+0000 -9.85818006821543E+0000 -9.86086321006964E+0000 -9.86354488753519E+0000 +-9.86622510149406E+0000 -9.86890385282638E+0000 -9.87158114241042E+0000 -9.87425697112263E+0000 -9.87693133983759E+0000 +-9.87960424942804E+0000 -9.88227570076488E+0000 -9.88494569471718E+0000 -9.88761423215214E+0000 -9.89028131393516E+0000 +-9.89294694092975E+0000 -9.89561111399763E+0000 -9.89827383399867E+0000 -9.90093510179089E+0000 -9.90359491823049E+0000 +-9.90625328417183E+0000 -9.90891020046746E+0000 -9.91156566796807E+0000 -9.91421968752254E+0000 -9.91687225997792E+0000 +-9.91952338617943E+0000 -9.92217306697047E+0000 -9.92482130319262E+0000 -9.92746809568562E+0000 -9.93011344528739E+0000 +-9.93275735283406E+0000 -9.93539981915992E+0000 -9.93804084509743E+0000 -9.94068043147725E+0000 -9.94331857912822E+0000 +-9.94595528887738E+0000 -9.94859056154992E+0000 -9.95122439796925E+0000 -9.95385679895698E+0000 -9.95648776533286E+0000 +-9.95911729791488E+0000 -9.96174539751921E+0000 -9.96437206496021E+0000 -9.96699730105042E+0000 -9.96962110660060E+0000 +-9.97224348241969E+0000 -9.97486442931486E+0000 -9.97748394809144E+0000 -9.98010203955297E+0000 -9.98271870450122E+0000 +-9.98533394373613E+0000 -9.98794775805586E+0000 -9.99056014825678E+0000 -9.99317111513344E+0000 -9.99578065947864E+0000 +-9.99838878208336E+0000 -1.00009954837367E+0001 -1.00036007652263E+0001 -1.00062046273376E+0001 -1.00088070708544E+0001 +-1.00114080965589E+0001 -1.00140077052313E+0001 -1.00166058976500E+0001 -1.00192026745918E+0001 -1.00217980368315E+0001 +-1.00243919851424E+0001 -1.00269845202957E+0001 -1.00295756430611E+0001 -1.00321653542063E+0001 -1.00347536544974E+0001 +-1.00373405446987E+0001 -1.00399260255725E+0001 -1.00425100978797E+0001 -1.00450927623791E+0001 -1.00476740198280E+0001 +-1.00502538709816E+0001 -1.00528323165938E+0001 -1.00554093574162E+0001 -1.00579849941990E+0001 -1.00605592276905E+0001 +-1.00631320586374E+0001 -1.00657034877843E+0001 -1.00682735158744E+0001 -1.00708421436490E+0001 -1.00734093718475E+0001 +-1.00759752012077E+0001 -1.00785396324656E+0001 -1.00811026663555E+0001 -1.00836643036099E+0001 -1.00862245449595E+0001 +-1.00887833911332E+0001 -1.00913408428585E+0001 -1.00938969008606E+0001 -1.00964515658634E+0001 -1.00990048385889E+0001 +-1.01015567197572E+0001 -1.01041072100869E+0001 -1.01066563102947E+0001 -1.01092040210957E+0001 -1.01117503432030E+0001 +-1.01142952773282E+0001 -1.01168388241810E+0001 -1.01193809844696E+0001 -1.01219217589001E+0001 -1.01244611481771E+0001 +-1.01269991530035E+0001 -1.01295357740803E+0001 -1.01320710121069E+0001 -1.01346048677808E+0001 -1.01371373417980E+0001 +-1.01396684348526E+0001 -1.01421981476369E+0001 -1.01447264808417E+0001 -1.01472534351560E+0001 -1.01497790112668E+0001 +-1.01523032098598E+0001 -1.01548260316187E+0001 -1.01573474772255E+0001 -1.01598675473605E+0001 -1.01623862427024E+0001 +-1.01649035639279E+0001 -1.01674195117123E+0001 -1.01699340867289E+0001 -1.01724472896495E+0001 -1.01749591211441E+0001 +-1.01774695818808E+0001 -1.01799786725264E+0001 -1.01824863937455E+0001 -1.01849927462013E+0001 -1.01874977305552E+0001 +-1.01900013474670E+0001 -1.01925035975945E+0001 -1.01950044815940E+0001 -1.01975040001202E+0001 -1.02000021538258E+0001 +-1.02024989433620E+0001 -1.02049943693782E+0001 -1.02074884325221E+0001 -1.02099811334398E+0001 -1.02124724727755E+0001 +-1.02149624511720E+0001 -1.02174510692700E+0001 -1.02199383277087E+0001 -1.02224242271258E+0001 -1.02249087681569E+0001 +-1.02273919514362E+0001 -1.02298737775962E+0001 -1.02323542472674E+0001 -1.02348333610789E+0001 -1.02373111196580E+0001 +-1.02397875236304E+0001 -1.02422625736200E+0001 -1.02447362702489E+0001 -1.02472086141378E+0001 -1.02496796059055E+0001 +-1.02521492461691E+0001 -1.02546175355442E+0001 -1.02570844746444E+0001 -1.02595500640820E+0001 -1.02620143044673E+0001 +-1.02644771964090E+0001 -1.02669387405141E+0001 -1.02693989373881E+0001 -1.02718577876346E+0001 -1.02743152918556E+0001 +-1.02767714506513E+0001 -1.02792262646205E+0001 -1.02816797343600E+0001 -1.02841318604652E+0001 -1.02865826435296E+0001 +-1.02890320841451E+0001 -1.02914801829020E+0001 -1.02939269403889E+0001 -1.02963723571926E+0001 -1.02988164338983E+0001 +-1.03012591710896E+0001 -1.03037005693484E+0001 -1.03061406292548E+0001 -1.03085793513874E+0001 -1.03110167363231E+0001 +-1.03134527846371E+0001 -1.03158874969028E+0001 -1.03183208736921E+0001 -1.03207529155753E+0001 -1.03231836231208E+0001 +-1.03256129968955E+0001 -1.03280410374647E+0001 -1.03304677453918E+0001 -1.03328931212388E+0001 -1.03353171655658E+0001 +-1.03377398789315E+0001 -1.03401612618926E+0001 -1.03425813150046E+0001 -1.03450000388208E+0001 -1.03474174338933E+0001 +-1.03498335007724E+0001 -1.03522482400066E+0001 -1.03546616521430E+0001 -1.03570737377267E+0001 -1.03594844973016E+0001 +-1.03618939314095E+0001 -1.03643020405909E+0001 -1.03667088253844E+0001 -1.03691142863272E+0001 -1.03715184239545E+0001 +-1.03739212388003E+0001 -1.03763227313965E+0001 -1.03787229022737E+0001 -1.03811217519606E+0001 -1.03835192809845E+0001 +-1.03859154898709E+0001 -1.03883103791437E+0001 -1.03907039493251E+0001 -1.03930962009358E+0001 -1.03954871344947E+0001 +-1.03978767505191E+0001 -1.04002650495248E+0001 -1.04026520320258E+0001 -1.04050376985344E+0001 -1.04074220495616E+0001 +-1.04098050856164E+0001 -1.04121868072063E+0001 -1.04145672148372E+0001 -1.04169463090134E+0001 -1.04193240902375E+0001 +-1.04217005590104E+0001 -1.04240757158316E+0001 -1.04264495611986E+0001 -1.04288220956077E+0001 -1.04311933195532E+0001 +-1.04335632335280E+0001 -1.04359318380233E+0001 -1.04382991335287E+0001 -1.04406651205322E+0001 -1.04430297995200E+0001 +-1.04453931709768E+0001 -1.04477552353859E+0001 -1.04501159932285E+0001 -1.04524754449846E+0001 -1.04548335911324E+0001 +-1.04571904321484E+0001 -1.04595459685077E+0001 -1.04619002006836E+0001 -1.04642531291478E+0001 -1.04666047543705E+0001 +-1.04689550768202E+0001 -1.04713040969638E+0001 -1.04736518152664E+0001 -1.04759982321919E+0001 -1.04783433482023E+0001 +-1.04806871637579E+0001 -1.04830296793177E+0001 -1.04853708953388E+0001 -1.04877108122769E+0001 -1.04900494305858E+0001 +-1.04923867507181E+0001 -1.04947227731245E+0001 -1.04970574982541E+0001 -1.04993909265545E+0001 -1.05017230584717E+0001 +-1.05040538944501E+0001 -1.05063834349323E+0001 -1.05087116803595E+0001 -1.05110386311713E+0001 -1.05133642878055E+0001 +-1.05156886506986E+0001 -1.05180117202852E+0001 -1.05203334969985E+0001 -1.05226539812700E+0001 -1.05249731735296E+0001 +-1.05272910742057E+0001 -1.05296076837251E+0001 -1.05319230025128E+0001 -1.05342370309924E+0001 -1.05365497695858E+0001 +-1.05388612187135E+0001 -1.05411713787941E+0001 -1.05434802502449E+0001 -1.05457878334813E+0001 -1.05480941289175E+0001 +-1.05503991369657E+0001 -1.05527028580368E+0001 -1.05550052925400E+0001 -1.05573064408829E+0001 -1.05596063034715E+0001 +-1.05619048807103E+0001 -1.05642021730022E+0001 -1.05664981807484E+0001 -1.05687929043485E+0001 -1.05710863442008E+0001 +-1.05733785007017E+0001 -1.05756693742461E+0001 -1.05779589652274E+0001 -1.05802472740374E+0001 -1.05825343010662E+0001 +-1.05848200467025E+0001 -1.05871045113332E+0001 -1.05893876953439E+0001 -1.05916695991183E+0001 -1.05939502230387E+0001 +-1.05962295674860E+0001 -1.05985076328391E+0001 -1.06007844194757E+0001 -1.06030599277717E+0001 -1.06053341581016E+0001 +-1.06076071108381E+0001 -1.06098787863525E+0001 -1.06121491850146E+0001 -1.06144183071923E+0001 -1.06166861532523E+0001 +-1.06189527235595E+0001 -1.06212180184773E+0001 -1.06234820383675E+0001 -1.06257447835904E+0001 -1.06280062545047E+0001 +-1.06302664514675E+0001 -1.06325253748344E+0001 -1.06347830249593E+0001 -1.06370394021946E+0001 -1.06392945068913E+0001 +-1.06415483393985E+0001 -1.06438009000641E+0001 -1.06460521892342E+0001 -1.06483022072533E+0001 -1.06505509544646E+0001 +-1.06527984312095E+0001 -1.06550446378279E+0001 -1.06572895746582E+0001 -1.06595332420371E+0001 -1.06617756403000E+0001 +-1.06640167697804E+0001 -1.06662566308105E+0001 -1.06684952237209E+0001 -1.06707325488406E+0001 -1.06729686064969E+0001 +-1.06752033970159E+0001 -1.06774369207218E+0001 -1.06796691779375E+0001 -1.06819001689841E+0001 -1.06841298941814E+0001 +-1.06863583538475E+0001 -1.06885855482989E+0001 -1.06908114778506E+0001 -1.06930361428162E+0001 -1.06952595435076E+0001 +-1.06974816802352E+0001 -1.06997025533077E+0001 -1.07019221630324E+0001 -1.07041405097152E+0001 -1.07063575936601E+0001 +-1.07085734151698E+0001 -1.07107879745454E+0001 -1.07130012720864E+0001 -1.07152133080909E+0001 -1.07174240828553E+0001 +-1.07196335966745E+0001 -1.07218418498419E+0001 -1.07240488426493E+0001 -1.07262545753871E+0001 -1.07284590483439E+0001 +-1.07306622618070E+0001 -1.07328642160620E+0001 -1.07350649113931E+0001 -1.07372643480828E+0001 -1.07394625264123E+0001 +-1.07416594466609E+0001 -1.07438551091068E+0001 -1.07460495140264E+0001 -1.07482426616945E+0001 -1.07504345523846E+0001 +-1.07526251863684E+0001 -1.07548145639163E+0001 -1.07570026852970E+0001 -1.07591895507778E+0001 -1.07613751606244E+0001 +-1.07635595151010E+0001 -1.07657426144702E+0001 -1.07679244589931E+0001 -1.07701050489293E+0001 -1.07722843845369E+0001 +-1.07744624660723E+0001 -1.07766392937907E+0001 -1.07788148679453E+0001 -1.07809891887883E+0001 -1.07831622565700E+0001 +-1.07853340715393E+0001 -1.07875046339435E+0001 -1.07896739440286E+0001 -1.07918420020388E+0001 -1.07940088082168E+0001 +-1.07961743628041E+0001 -1.07983386660403E+0001 -1.08005017181636E+0001 -1.08026635194108E+0001 -1.08048240700171E+0001 +-1.08069833702160E+0001 -1.08091414202398E+0001 -1.08112982203190E+0001 -1.08134537706828E+0001 -1.08156080715587E+0001 +-1.08177611231729E+0001 -1.08199129257498E+0001 -1.08220634795125E+0001 -1.08242127846826E+0001 -1.08263608414799E+0001 +-1.08285076501231E+0001 -1.08306532108291E+0001 -1.08327975238133E+0001 -1.08349405892897E+0001 -1.08370824074707E+0001 +-1.08392229785673E+0001 -1.08413623027888E+0001 -1.08435003803431E+0001 -1.08456372114368E+0001 -1.08477727962745E+0001 +-1.08499071350597E+0001 -1.08520402279942E+0001 -1.08541720752785E+0001 -1.08563026771113E+0001 -1.08584320336899E+0001 +-1.08605601452103E+0001 -1.08626870118666E+0001 -1.08648126338519E+0001 -1.08669370113572E+0001 -1.08690601445725E+0001 +-1.08711820336860E+0001 -1.08733026788846E+0001 -1.08754220803536E+0001 -1.08775402382766E+0001 -1.08796571528361E+0001 +-1.08817728242128E+0001 -1.08838872525859E+0001 -1.08860004381334E+0001 -1.08881123810314E+0001 -1.08902230814547E+0001 +-1.08923325395767E+0001 -1.08944407555691E+0001 -1.08965477296022E+0001 -1.08986534618447E+0001 -1.09007579524641E+0001 +-1.09028612016260E+0001 -1.09049632094949E+0001 -1.09070639762334E+0001 -1.09091635020029E+0001 -1.09112617869632E+0001 +-1.09133588312726E+0001 -1.09154546350880E+0001 -1.09175491985647E+0001 -1.09196425218565E+0001 -1.09217346051158E+0001 +-1.09238254484934E+0001 -1.09259150521388E+0001 -1.09280034161997E+0001 -1.09300905408225E+0001 -1.09321764261523E+0001 +-1.09342610723322E+0001 -1.09363444795044E+0001 -1.09384266478091E+0001 -1.09405075773854E+0001 -1.09425872683707E+0001 +-1.09446657209010E+0001 -1.09467429351107E+0001 -1.09488189111328E+0001 -1.09508936490989E+0001 -1.09529671491389E+0001 +-1.09550394113815E+0001 -1.09571104359536E+0001 -1.09591802229809E+0001 -1.09612487725874E+0001 -1.09633160848957E+0001 +-1.09653821600269E+0001 -1.09674469981008E+0001 -1.09695105992354E+0001 -1.09715729635474E+0001 -1.09736340911521E+0001 +-1.09756939821632E+0001 -1.09777526366928E+0001 -1.09798100548518E+0001 -1.09818662367495E+0001 -1.09839211824936E+0001 +-1.09859748921905E+0001 -1.09880273659450E+0001 -1.09900786038605E+0001 -1.09921286060390E+0001 -1.09941773725808E+0001 +-1.09962249035849E+0001 -1.09982711991487E+0001 -1.10003162593683E+0001 -1.10023600843382E+0001 -1.10044026741514E+0001 +-1.10064440288996E+0001 -1.10084841486728E+0001 -1.10105230335597E+0001 -1.10125606836474E+0001 -1.10145970990216E+0001 +-1.10166322797666E+0001 -1.10186662259651E+0001 -1.10206989376984E+0001 -1.10227304150463E+0001 -1.10247606580872E+0001 +-1.10267896668979E+0001 -1.10288174415539E+0001 -1.10308439821290E+0001 -1.10328692886958E+0001 -1.10348933613253E+0001 +-1.10369162000871E+0001 -1.10389378050491E+0001 -1.10409581762780E+0001 -1.10429773138391E+0001 -1.10449952177958E+0001 +-1.10470118882106E+0001 -1.10490273251440E+0001 -1.10510415286555E+0001 -1.10530544988029E+0001 -1.10550662356425E+0001 +-1.10570767392292E+0001 -1.10590860096165E+0001 -1.10610940468564E+0001 -1.10631008509994E+0001 -1.10651064220946E+0001 +-1.10671107601895E+0001 -1.10691138653304E+0001 -1.10711157375619E+0001 -1.10731163769272E+0001 -1.10751157834682E+0001 +-1.10771139572251E+0001 -1.10791108982368E+0001 -1.10811066065407E+0001 -1.10831010821727E+0001 -1.10850943251675E+0001 +-1.10870863355578E+0001 -1.10890771133755E+0001 -1.10910666586505E+0001 -1.10930549714117E+0001 -1.10950420516861E+0001 +-1.10970278994996E+0001 -1.10990125148764E+0001 -1.11009958978395E+0001 -1.11029780484102E+0001 -1.11049589666086E+0001 +-1.11069386524531E+0001 -1.11089171059607E+0001 -1.11108943271472E+0001 -1.11128703160265E+0001 -1.11148450726116E+0001 +-1.11168185969136E+0001 -1.11187908889423E+0001 -1.11207619487061E+0001 -1.11227317762119E+0001 -1.11247003714652E+0001 +-1.11266677344700E+0001 -1.11286338652289E+0001 -1.11305987637430E+0001 -1.11325624300121E+0001 -1.11345248640342E+0001 +-1.11364860658064E+0001 -1.11384460353238E+0001 -1.11404047725803E+0001 -1.11423622775686E+0001 -1.11443185502795E+0001 +-1.11462735907027E+0001 -1.11482273988263E+0001 -1.11501799746370E+0001 -1.11521313181201E+0001 -1.11540814292592E+0001 +-1.11560303080369E+0001 -1.11579779544341E+0001 -1.11599243684302E+0001 -1.11618695500033E+0001 -1.11638134991300E+0001 +-1.11657562157855E+0001 -1.11676976999435E+0001 -1.11696379515763E+0001 -1.11715769706548E+0001 -1.11735147571484E+0001 +-1.11754513110250E+0001 -1.11773866322513E+0001 -1.11793207207923E+0001 -1.11812535766117E+0001 -1.11831851996718E+0001 +-1.11851155899333E+0001 -1.11870447473557E+0001 -1.11889726718968E+0001 -1.11908993635133E+0001 -1.11928248221600E+0001 +-1.11947490477908E+0001 -1.11966720403578E+0001 -1.11985937998117E+0001 -1.12005143261019E+0001 -1.12024336191764E+0001 +-1.12043516789815E+0001 -1.12062685054625E+0001 -1.12081840985627E+0001 -1.12100984582246E+0001 -1.12120115843887E+0001 +-1.12139234769945E+0001 -1.12158341359799E+0001 -1.12177435612813E+0001 -1.12196517528337E+0001 -1.12215587105709E+0001 +-1.12234644344249E+0001 -1.12253689243265E+0001 -1.12272721802052E+0001 -1.12291742019887E+0001 -1.12310749896036E+0001 +-1.12329745429750E+0001 -1.12348728620264E+0001 -1.12367699466801E+0001 -1.12386657968568E+0001 -1.12405604124760E+0001 +-1.12424537934556E+0001 -1.12443459397120E+0001 -1.12462368511605E+0001 -1.12481265277145E+0001 -1.12500149692865E+0001 +-1.12519021757872E+0001 -1.12537881471261E+0001 -1.12556728832110E+0001 -1.12575563839486E+0001 -1.12594386492441E+0001 +-1.12613196790011E+0001 -1.12631994731219E+0001 -1.12650780315075E+0001 -1.12669553540573E+0001 -1.12688314406693E+0001 +-1.12707062912402E+0001 -1.12725799056652E+0001 -1.12744522838381E+0001 -1.12763234256513E+0001 -1.12781933309956E+0001 +-1.12800619997608E+0001 -1.12819294318348E+0001 -1.12837956271045E+0001 -1.12856605854550E+0001 -1.12875243067704E+0001 +-1.12893867909330E+0001 -1.12912480378239E+0001 -1.12931080473228E+0001 -1.12949668193079E+0001 -1.12968243536560E+0001 +-1.12986806502424E+0001 -1.13005357089413E+0001 -1.13023895296251E+0001 -1.13042421121650E+0001 -1.13060934564309E+0001 +-1.13079435622909E+0001 -1.13097924296121E+0001 -1.13116400582600E+0001 -1.13134864480986E+0001 -1.13153315989908E+0001 +-1.13171755107977E+0001 -1.13190181833793E+0001 -1.13208596165940E+0001 -1.13226998102989E+0001 -1.13245387643497E+0001 +-1.13263764786006E+0001 -1.13282129529045E+0001 -1.13300481871127E+0001 -1.13318821810754E+0001 -1.13337149346411E+0001 +-1.13355464476570E+0001 -1.13373767199691E+0001 -1.13392057514216E+0001 -1.13410335418576E+0001 -1.13428600911187E+0001 +-1.13446853990450E+0001 -1.13465094654754E+0001 -1.13483322902473E+0001 -1.13501538731965E+0001 -1.13519742141578E+0001 +-1.13537933129642E+0001 -1.13556111694476E+0001 -1.13574277834383E+0001 -1.13592431547654E+0001 -1.13610572832562E+0001 +-1.13628701687372E+0001 -1.13646818110329E+0001 -1.13664922099667E+0001 -1.13683013653607E+0001 -1.13701092770354E+0001 +-1.13719159448100E+0001 -1.13737213685022E+0001 -1.13755255479284E+0001 -1.13773284829036E+0001 -1.13791301732413E+0001 +-1.13809306187538E+0001 -1.13827298192517E+0001 -1.13845277745446E+0001 -1.13863244844403E+0001 -1.13881199487455E+0001 +-1.13899141672653E+0001 -1.13917071398035E+0001 -1.13934988661626E+0001 -1.13952893461436E+0001 -1.13970785795460E+0001 +-1.13988665661681E+0001 -1.14006533058067E+0001 -1.14024387982573E+0001 -1.14042230433137E+0001 -1.14060060407688E+0001 +-1.14077877904138E+0001 -1.14095682920384E+0001 -1.14113475454312E+0001 -1.14131255503793E+0001 -1.14149023066682E+0001 +-1.14166778140824E+0001 -1.14184520724047E+0001 -1.14202250814166E+0001 -1.14219968408982E+0001 -1.14237673506282E+0001 +-1.14255366103840E+0001 -1.14273046199416E+0001 -1.14290713790754E+0001 -1.14308368875587E+0001 -1.14326011451633E+0001 +-1.14343641516594E+0001 -1.14361259068162E+0001 -1.14378864104012E+0001 -1.14396456621806E+0001 -1.14414036619194E+0001 +-1.14431604093809E+0001 -1.14449159043273E+0001 -1.14466701465192E+0001 -1.14484231357158E+0001 -1.14501748716752E+0001 +-1.14519253541538E+0001 -1.14536745829067E+0001 -1.14554225576878E+0001 -1.14571692782494E+0001 -1.14589147443425E+0001 +-1.14606589557166E+0001 -1.14624019121200E+0001 -1.14641436132996E+0001 -1.14658840590008E+0001 -1.14676232489676E+0001 +-1.14693611829427E+0001 -1.14710978606675E+0001 -1.14728332818819E+0001 -1.14745674463243E+0001 -1.14763003537321E+0001 +-1.14780320038409E+0001 -1.14797623963851E+0001 -1.14814915310978E+0001 -1.14832194077106E+0001 -1.14849460259538E+0001 +-1.14866713855562E+0001 -1.14883954862453E+0001 -1.14901183277474E+0001 -1.14918399097870E+0001 -1.14935602320876E+0001 +-1.14952792943711E+0001 -1.14969970963583E+0001 -1.14987136377682E+0001 -1.15004289183188E+0001 -1.15021429377265E+0001 +-1.15038556957064E+0001 -1.15055671919723E+0001 -1.15072774262365E+0001 -1.15089863982100E+0001 -1.15106941076024E+0001 +-1.15124005541218E+0001 -1.15141057374752E+0001 -1.15158096573681E+0001 -1.15175123135044E+0001 -1.15192137055870E+0001 +-1.15209138333172E+0001 -1.15226126963950E+0001 -1.15243102945189E+0001 -1.15260066273863E+0001 -1.15277016946929E+0001 +-1.15293954961333E+0001 -1.15310880314006E+0001 -1.15327793001864E+0001 -1.15344693021813E+0001 -1.15361580370741E+0001 +-1.15378455045526E+0001 -1.15395317043029E+0001 -1.15412166360100E+0001 -1.15429002993574E+0001 -1.15445826940271E+0001 +-1.15462638197002E+0001 -1.15479436760558E+0001 -1.15496222627721E+0001 -1.15512995795257E+0001 -1.15529756259919E+0001 +-1.15546504018447E+0001 -1.15563239067567E+0001 -1.15579961403990E+0001 -1.15596671024414E+0001 -1.15613367925525E+0001 +-1.15630052103993E+0001 -1.15646723556476E+0001 -1.15663382279617E+0001 -1.15680028270046E+0001 -1.15696661524380E+0001 +-1.15713282039221E+0001 -1.15729889811159E+0001 -1.15746484836768E+0001 -1.15763067112610E+0001 -1.15779636635234E+0001 +-1.15796193401174E+0001 -1.15812737406951E+0001 -1.15829268649071E+0001 -1.15845787124029E+0001 -1.15862292828305E+0001 +-1.15878785758364E+0001 -1.15895265910659E+0001 -1.15911733281629E+0001 -1.15928187867701E+0001 -1.15944629665284E+0001 +-1.15961058670779E+0001 -1.15977474880568E+0001 -1.15993878291024E+0001 -1.16010268898503E+0001 -1.16026646699349E+0001 +-1.16043011689893E+0001 -1.16059363866450E+0001 -1.16075703225324E+0001 -1.16092029762805E+0001 -1.16108343475167E+0001 +-1.16124644358673E+0001 -1.16140932409572E+0001 -1.16157207624099E+0001 -1.16173469998474E+0001 -1.16189719528907E+0001 +-1.16205956211590E+0001 -1.16222180042705E+0001 -1.16238391018419E+0001 -1.16254589134885E+0001 -1.16270774388243E+0001 +-1.16286946774621E+0001 -1.16303106290129E+0001 -1.16319252930869E+0001 -1.16335386692925E+0001 -1.16351507572370E+0001 +-1.16367615565262E+0001 -1.16383710667646E+0001 -1.16399792875554E+0001 -1.16415862185004E+0001 -1.16431918592000E+0001 +-1.16447962092534E+0001 -1.16463992682582E+0001 -1.16480010358108E+0001 -1.16496015115063E+0001 -1.16512006949383E+0001 +-1.16527985856992E+0001 -1.16543951833799E+0001 -1.16559904875700E+0001 -1.16575844978579E+0001 -1.16591772138304E+0001 +-1.16607686350731E+0001 -1.16623587611701E+0001 -1.16639475917045E+0001 -1.16655351262576E+0001 -1.16671213644096E+0001 +-1.16687063057394E+0001 -1.16702899498244E+0001 -1.16718722962407E+0001 -1.16734533445630E+0001 -1.16750330943649E+0001 +-1.16766115452182E+0001 -1.16781886966938E+0001 -1.16797645483611E+0001 -1.16813390997879E+0001 -1.16829123505411E+0001 +-1.16844843001859E+0001 -1.16860549482862E+0001 -1.16876242944048E+0001 -1.16891923381028E+0001 -1.16907590789403E+0001 +-1.16923245164758E+0001 -1.16938886502665E+0001 -1.16954514798683E+0001 -1.16970130048358E+0001 -1.16985732247222E+0001 +-1.17001321390793E+0001 -1.17016897474577E+0001 -1.17032460494064E+0001 -1.17048010444734E+0001 -1.17063547322050E+0001 +-1.17079071121464E+0001 -1.17094581838415E+0001 -1.17110079468326E+0001 -1.17125564006608E+0001 -1.17141035448660E+0001 +-1.17156493789864E+0001 -1.17171939025592E+0001 -1.17187371151201E+0001 -1.17202790162035E+0001 -1.17218196053424E+0001 +-1.17233588820685E+0001 -1.17248968459122E+0001 -1.17264334964025E+0001 -1.17279688330670E+0001 -1.17295028554321E+0001 +-1.17310355630229E+0001 -1.17325669553628E+0001 -1.17340970319743E+0001 -1.17356257923783E+0001 -1.17371532360945E+0001 +-1.17386793626411E+0001 -1.17402041715350E+0001 -1.17417276622920E+0001 -1.17432498344262E+0001 -1.17447706874507E+0001 +-1.17462902208769E+0001 -1.17478084342152E+0001 -1.17493253269744E+0001 -1.17508408986622E+0001 -1.17523551487847E+0001 +-1.17538680768470E+0001 -1.17553796823525E+0001 -1.17568899648035E+0001 -1.17583989237009E+0001 -1.17599065585442E+0001 +-1.17614128688317E+0001 -1.17629178540602E+0001 -1.17644215137253E+0001 -1.17659238473212E+0001 -1.17674248543407E+0001 +-1.17689245342755E+0001 -1.17704228866157E+0001 -1.17719199108501E+0001 -1.17734156064664E+0001 -1.17749099729507E+0001 +-1.17764030097879E+0001 -1.17778947164616E+0001 -1.17793850924538E+0001 -1.17808741372455E+0001 -1.17823618503163E+0001 +-1.17838482311442E+0001 -1.17853332792063E+0001 -1.17868169939779E+0001 -1.17882993749334E+0001 -1.17897804215455E+0001 +-1.17912601332859E+0001 -1.17927385096246E+0001 -1.17942155500307E+0001 -1.17956912539716E+0001 -1.17971656209135E+0001 +-1.17986386503213E+0001 -1.18001103416586E+0001 -1.18015806943876E+0001 -1.18030497079691E+0001 -1.18045173818628E+0001 +-1.18059837155268E+0001 -1.18074487084180E+0001 -1.18089123599920E+0001 -1.18103746697031E+0001 -1.18118356370041E+0001 +-1.18132952613467E+0001 -1.18147535421810E+0001 -1.18162104789560E+0001 -1.18176660711193E+0001 -1.18191203181172E+0001 +-1.18205732193945E+0001 -1.18220247743949E+0001 -1.18234749825607E+0001 -1.18249238433329E+0001 -1.18263713561510E+0001 +-1.18278175204533E+0001 -1.18292623356769E+0001 -1.18307058012573E+0001 -1.18321479166289E+0001 -1.18335886812247E+0001 +-1.18350280944764E+0001 -1.18364661558142E+0001 -1.18379028646673E+0001 -1.18393382204633E+0001 -1.18407722226285E+0001 +-1.18422048705880E+0001 -1.18436361637656E+0001 -1.18450661015836E+0001 -1.18464946834630E+0001 -1.18479219088236E+0001 +-1.18493477770840E+0001 -1.18507722876610E+0001 -1.18521954399705E+0001 -1.18536172334271E+0001 -1.18550376674436E+0001 +-1.18564567414321E+0001 -1.18578744548029E+0001 -1.18592908069653E+0001 -1.18607057973270E+0001 -1.18621194252946E+0001 +-1.18635316902732E+0001 -1.18649425916667E+0001 -1.18663521288778E+0001 -1.18677603013075E+0001 -1.18691671083558E+0001 +-1.18705725494213E+0001 -1.18719766239013E+0001 -1.18733793311916E+0001 -1.18747806706870E+0001 -1.18761806417807E+0001 +-1.18775792438646E+0001 -1.18789764763296E+0001 -1.18803723385648E+0001 -1.18817668299583E+0001 -1.18831599498969E+0001 +-1.18845516977659E+0001 -1.18859420729494E+0001 -1.18873310748301E+0001 -1.18887187027894E+0001 -1.18901049562075E+0001 +-1.18914898344631E+0001 -1.18928733369338E+0001 -1.18942554629957E+0001 -1.18956362120235E+0001 -1.18970155833909E+0001 +-1.18983935764701E+0001 -1.18997701906319E+0001 -1.19011454252459E+0001 -1.19025192796804E+0001 -1.19038917533022E+0001 +-1.19052628454771E+0001 -1.19066325555693E+0001 -1.19080008829419E+0001 -1.19093678269564E+0001 -1.19107333869732E+0001 +-1.19120975623514E+0001 -1.19134603524488E+0001 -1.19148217566217E+0001 -1.19161817742252E+0001 -1.19175404046131E+0001 +-1.19188976471379E+0001 -1.19202535011508E+0001 -1.19216079660015E+0001 -1.19229610410386E+0001 -1.19243127256094E+0001 +-1.19256630190596E+0001 -1.19270119207340E+0001 -1.19283594299758E+0001 -1.19297055461269E+0001 -1.19310502685280E+0001 +-1.19323935965184E+0001 -1.19337355294362E+0001 -1.19350760666180E+0001 -1.19364152073993E+0001 -1.19377529511142E+0001 +-1.19390892970954E+0001 -1.19404242446744E+0001 -1.19417577931813E+0001 -1.19430899419450E+0001 -1.19444206902930E+0001 +-1.19457500375516E+0001 -1.19470779830456E+0001 -1.19484045260987E+0001 -1.19497296660331E+0001 -1.19510534021699E+0001 +-1.19523757338286E+0001 -1.19536966603277E+0001 -1.19550161809842E+0001 -1.19563342951138E+0001 -1.19576510020311E+0001 +-1.19589663010490E+0001 -1.19602801914794E+0001 -1.19615926726329E+0001 -1.19629037438185E+0001 -1.19642134043443E+0001 +-1.19655216535168E+0001 -1.19668284906412E+0001 -1.19681339150216E+0001 -1.19694379259605E+0001 -1.19707405227594E+0001 +-1.19720417047183E+0001 -1.19733414711359E+0001 -1.19746398213097E+0001 -1.19759367545357E+0001 -1.19772322701088E+0001 +-1.19785263673225E+0001 -1.19798190454690E+0001 -1.19811103038392E+0001 -1.19824001417227E+0001 -1.19836885584078E+0001 +-1.19849755531815E+0001 -1.19862611253294E+0001 -1.19875452741359E+0001 -1.19888279988841E+0001 -1.19901092988557E+0001 +-1.19913891733313E+0001 -1.19926676215898E+0001 -1.19939446429093E+0001 -1.19952202365662E+0001 -1.19964944018358E+0001 +-1.19977671379920E+0001 -1.19990384443074E+0001 -1.20003083200534E+0001 -1.20015767645000E+0001 -1.20028437769160E+0001 +-1.20041093565687E+0001 -1.20053735027242E+0001 -1.20066362146475E+0001 -1.20078974916019E+0001 -1.20091573328497E+0001 +-1.20104157376518E+0001 -1.20116727052678E+0001 -1.20129282349561E+0001 -1.20141823259735E+0001 -1.20154349775759E+0001 +-1.20166861890176E+0001 -1.20179359595517E+0001 -1.20191842884300E+0001 -1.20204311749030E+0001 -1.20216766182199E+0001 +-1.20229206176287E+0001 -1.20241631723758E+0001 -1.20254042817066E+0001 -1.20266439448651E+0001 -1.20278821610940E+0001 +-1.20291189296347E+0001 -1.20303542497272E+0001 -1.20315881206104E+0001 -1.20328205415218E+0001 -1.20340515116975E+0001 +-1.20352810303726E+0001 -1.20365090967804E+0001 -1.20377357101535E+0001 -1.20389608697227E+0001 -1.20401845747178E+0001 +-1.20414068243672E+0001 -1.20426276178981E+0001 -1.20438469545361E+0001 -1.20450648335058E+0001 -1.20462812540305E+0001 +-1.20474962153321E+0001 -1.20487097166311E+0001 -1.20499217571470E+0001 -1.20511323360977E+0001 -1.20523414527001E+0001 +-1.20535491061694E+0001 -1.20547552957198E+0001 -1.20559600205643E+0001 -1.20571632799144E+0001 -1.20583650729802E+0001 +-1.20595653989708E+0001 -1.20607642570938E+0001 -1.20619616465556E+0001 -1.20631575665613E+0001 -1.20643520163145E+0001 +-1.20655449950180E+0001 -1.20667365018727E+0001 -1.20679265360786E+0001 -1.20691150968342E+0001 -1.20703021833370E+0001 +-1.20714877947829E+0001 -1.20726719303666E+0001 -1.20738545892815E+0001 -1.20750357707198E+0001 -1.20762154738723E+0001 +-1.20773936979286E+0001 -1.20785704420768E+0001 -1.20797457055040E+0001 -1.20809194873957E+0001 -1.20820917869364E+0001 +-1.20832626033092E+0001 -1.20844319356958E+0001 -1.20855997832768E+0001 -1.20867661452312E+0001 -1.20879310207371E+0001 +-1.20890944089710E+0001 -1.20902563091083E+0001 -1.20914167203230E+0001 -1.20925756417879E+0001 -1.20937330726743E+0001 +-1.20948890121525E+0001 -1.20960434593913E+0001 -1.20971964135582E+0001 -1.20983478738197E+0001 -1.20994978393407E+0001 +-1.21006463092848E+0001 -1.21017932828145E+0001 -1.21029387590909E+0001 -1.21040827372739E+0001 -1.21052252165221E+0001 +-1.21063661959925E+0001 -1.21075056748413E+0001 -1.21086436522231E+0001 -1.21097801272913E+0001 -1.21109150991980E+0001 +-1.21120485670939E+0001 -1.21131805301287E+0001 -1.21143109874506E+0001 -1.21154399382065E+0001 -1.21165673815420E+0001 +-1.21176933166015E+0001 -1.21188177425282E+0001 -1.21199406584637E+0001 -1.21210620635486E+0001 -1.21221819569222E+0001 +-1.21233003377223E+0001 -1.21244172050856E+0001 -1.21255325581474E+0001 -1.21266463960419E+0001 -1.21277587179018E+0001 +-1.21288695228585E+0001 -1.21299788100424E+0001 -1.21310865785823E+0001 -1.21321928276058E+0001 -1.21332975562394E+0001 +-1.21344007636080E+0001 -1.21355024488355E+0001 -1.21366026110443E+0001 -1.21377012493556E+0001 -1.21387983628894E+0001 +-1.21398939507644E+0001 -1.21409880120978E+0001 -1.21420805460057E+0001 -1.21431715516029E+0001 -1.21442610280029E+0001 +-1.21453489743179E+0001 -1.21464353896589E+0001 -1.21475202731354E+0001 -1.21486036238559E+0001 -1.21496854409274E+0001 +-1.21507657234557E+0001 -1.21518444705453E+0001 -1.21529216812994E+0001 -1.21539973548200E+0001 -1.21550714902078E+0001 +-1.21561440865620E+0001 -1.21572151429809E+0001 -1.21582846585612E+0001 -1.21593526323984E+0001 -1.21604190635867E+0001 +-1.21614839512192E+0001 -1.21625472943876E+0001 -1.21636090921821E+0001 -1.21646693436919E+0001 -1.21657280480049E+0001 +-1.21667852042076E+0001 -1.21678408113852E+0001 -1.21688948686218E+0001 -1.21699473750001E+0001 -1.21709983296014E+0001 +-1.21720477315060E+0001 -1.21730955797927E+0001 -1.21741418735390E+0001 -1.21751866118213E+0001 -1.21762297937146E+0001 +-1.21772714182926E+0001 -1.21783114846278E+0001 -1.21793499917913E+0001 -1.21803869388531E+0001 -1.21814223248818E+0001 +-1.21824561489447E+0001 -1.21834884101079E+0001 -1.21845191074362E+0001 -1.21855482399930E+0001 -1.21865758068406E+0001 +-1.21876018070399E+0001 -1.21886262396506E+0001 -1.21896491037310E+0001 -1.21906703983383E+0001 -1.21916901225284E+0001 +-1.21927082753557E+0001 -1.21937248558734E+0001 -1.21947398631337E+0001 -1.21957532961873E+0001 -1.21967651540834E+0001 +-1.21977754358704E+0001 -1.21987841405951E+0001 -1.21997912673031E+0001 -1.22007968150387E+0001 -1.22018007828450E+0001 +-1.22028031697637E+0001 -1.22038039748354E+0001 -1.22048031970992E+0001 -1.22058008355931E+0001 -1.22067968893538E+0001 +-1.22077913574166E+0001 -1.22087842388157E+0001 -1.22097755325838E+0001 -1.22107652377526E+0001 -1.22117533533523E+0001 +-1.22127398784120E+0001 -1.22137248119593E+0001 -1.22147081530208E+0001 -1.22156899006215E+0001 -1.22166700537855E+0001 +-1.22176486115352E+0001 -1.22186255728922E+0001 -1.22196009368765E+0001 -1.22205747025068E+0001 -1.22215468688007E+0001 +-1.22225174347744E+0001 -1.22234863994430E+0001 -1.22244537618201E+0001 -1.22254195209182E+0001 -1.22263836757484E+0001 +-1.22273462253207E+0001 -1.22283071686435E+0001 -1.22292665047243E+0001 -1.22302242325691E+0001 -1.22311803511828E+0001 +-1.22321348595687E+0001 -1.22330877567292E+0001 -1.22340390416653E+0001 -1.22349887133766E+0001 -1.22359367708615E+0001 +-1.22368832131172E+0001 -1.22378280391397E+0001 -1.22387712479234E+0001 -1.22397128384617E+0001 -1.22406528097467E+0001 +-1.22415911607691E+0001 -1.22425278905186E+0001 -1.22434629979833E+0001 -1.22443964821502E+0001 -1.22453283420050E+0001 +-1.22462585765321E+0001 -1.22471871847147E+0001 -1.22481141655347E+0001 -1.22490395179727E+0001 -1.22499632410080E+0001 +-1.22508853336188E+0001 -1.22518057947817E+0001 -1.22527246234724E+0001 -1.22536418186652E+0001 -1.22545573793329E+0001 +-1.22554713044474E+0001 -1.22563835929790E+0001 -1.22572942438970E+0001 -1.22582032561692E+0001 -1.22591106287624E+0001 +-1.22600163606419E+0001 -1.22609204507717E+0001 -1.22618228981147E+0001 -1.22627237016326E+0001 -1.22636228602855E+0001 +-1.22645203730325E+0001 -1.22654162388313E+0001 -1.22663104566385E+0001 -1.22672030254093E+0001 -1.22680939440975E+0001 +-1.22689832116560E+0001 -1.22698708270360E+0001 -1.22707567891878E+0001 -1.22716410970602E+0001 -1.22725237496009E+0001 +-1.22734047457561E+0001 -1.22742840844709E+0001 -1.22751617646892E+0001 -1.22760377853535E+0001 -1.22769121454051E+0001 +-1.22777848437839E+0001 -1.22786558794286E+0001 -1.22795252512769E+0001 -1.22803929582648E+0001 -1.22812589993273E+0001 +-1.22821233733980E+0001 -1.22829860794094E+0001 -1.22838471162926E+0001 -1.22847064829775E+0001 -1.22855641783926E+0001 +-1.22864202014653E+0001 -1.22872745511217E+0001 -1.22881272262865E+0001 -1.22889782258834E+0001 -1.22898275488345E+0001 +-1.22906751940609E+0001 -1.22915211604823E+0001 -1.22923654470173E+0001 -1.22932080525829E+0001 -1.22940489760952E+0001 +-1.22948882164688E+0001 -1.22957257726171E+0001 -1.22965616434523E+0001 -1.22973958278853E+0001 -1.22982283248257E+0001 +-1.22990591331818E+0001 -1.22998882518608E+0001 -1.23007156797685E+0001 -1.23015414158093E+0001 -1.23023654588867E+0001 +-1.23031878079027E+0001 -1.23040084617579E+0001 -1.23048274193521E+0001 -1.23056446795833E+0001 -1.23064602413485E+0001 +-1.23072741035435E+0001 -1.23080862650628E+0001 -1.23088967247995E+0001 -1.23097054816455E+0001 -1.23105125344915E+0001 +-1.23113178822269E+0001 -1.23121215237399E+0001 -1.23129234579173E+0001 -1.23137236836447E+0001 -1.23145221998065E+0001 +-1.23153190052858E+0001 -1.23161140989643E+0001 -1.23169074797228E+0001 -1.23176991464404E+0001 -1.23184890979952E+0001 +-1.23192773332639E+0001 -1.23200638511222E+0001 -1.23208486504442E+0001 -1.23216317301030E+0001 -1.23224130889702E+0001 +-1.23231927259163E+0001 -1.23239706398107E+0001 -1.23247468295211E+0001 -1.23255212939143E+0001 -1.23262940318557E+0001 +-1.23270650422096E+0001 -1.23278343238387E+0001 -1.23286018756047E+0001 -1.23293676963681E+0001 -1.23301317849879E+0001 +-1.23308941403220E+0001 -1.23316547612270E+0001 -1.23324136465583E+0001 -1.23331707951699E+0001 -1.23339262059147E+0001 +-1.23346798776442E+0001 -1.23354318092087E+0001 -1.23361819994573E+0001 -1.23369304472378E+0001 -1.23376771513967E+0001 +-1.23384221107792E+0001 -1.23391653242294E+0001 -1.23399067905901E+0001 -1.23406465087026E+0001 -1.23413844774073E+0001 +-1.23421206955431E+0001 -1.23428551619477E+0001 -1.23435878754577E+0001 -1.23443188349081E+0001 -1.23450480391329E+0001 +-1.23457754869649E+0001 -1.23465011772354E+0001 -1.23472251087746E+0001 -1.23479472804114E+0001 -1.23486676909735E+0001 +-1.23493863392872E+0001 -1.23501032241778E+0001 -1.23508183444690E+0001 -1.23515316989835E+0001 -1.23522432865427E+0001 +-1.23529531059666E+0001 -1.23536611560742E+0001 -1.23543674356829E+0001 -1.23550719436093E+0001 -1.23557746786682E+0001 +-1.23564756396736E+0001 -1.23571748254380E+0001 -1.23578722347728E+0001 -1.23585678664879E+0001 -1.23592617193923E+0001 +-1.23599537922933E+0001 -1.23606440839974E+0001 -1.23613325933095E+0001 -1.23620193190334E+0001 -1.23627042599717E+0001 +-1.23633874149255E+0001 -1.23640687826950E+0001 -1.23647483620788E+0001 -1.23654261518745E+0001 -1.23661021508783E+0001 +-1.23667763578852E+0001 -1.23674487716889E+0001 -1.23681193910819E+0001 -1.23687882148554E+0001 -1.23694552417995E+0001 +-1.23701204707027E+0001 -1.23707839003526E+0001 -1.23714455295353E+0001 -1.23721053570359E+0001 -1.23727633816380E+0001 +-1.23734196021240E+0001 -1.23740740172752E+0001 -1.23747266258714E+0001 -1.23753774266914E+0001 -1.23760264185127E+0001 +-1.23766736001112E+0001 -1.23773189702621E+0001 -1.23779625277388E+0001 -1.23786042713140E+0001 -1.23792441997586E+0001 +-1.23798823118427E+0001 -1.23805186063349E+0001 -1.23811530820025E+0001 -1.23817857376118E+0001 -1.23824165719276E+0001 +-1.23830455837136E+0001 -1.23836727717321E+0001 -1.23842981347443E+0001 -1.23849216715101E+0001 -1.23855433807881E+0001 +-1.23861632613356E+0001 -1.23867813119090E+0001 -1.23873975312629E+0001 -1.23880119181510E+0001 -1.23886244713257E+0001 +-1.23892351895382E+0001 -1.23898440715382E+0001 -1.23904511160744E+0001 -1.23910563218943E+0001 -1.23916596877438E+0001 +-1.23922612123678E+0001 -1.23928608945101E+0001 -1.23934587329128E+0001 -1.23940547263172E+0001 -1.23946488734631E+0001 +-1.23952411730892E+0001 -1.23958316239326E+0001 -1.23964202247297E+0001 -1.23970069742152E+0001 -1.23975918711228E+0001 +-1.23981749141848E+0001 -1.23987561021322E+0001 -1.23993354336951E+0001 -1.23999129076019E+0001 -1.24004885225801E+0001 +-1.24010622773557E+0001 -1.24016341706536E+0001 -1.24022042011975E+0001 -1.24027723677095E+0001 -1.24033386689110E+0001 +-1.24039031035217E+0001 -1.24044656702603E+0001 -1.24050263678441E+0001 -1.24055851949892E+0001 -1.24061421504105E+0001 +-1.24066972328215E+0001 -1.24072504409348E+0001 -1.24078017734613E+0001 -1.24083512291110E+0001 -1.24088988065925E+0001 +-1.24094445046131E+0001 -1.24099883218790E+0001 -1.24105302570950E+0001 -1.24110703089648E+0001 -1.24116084761908E+0001 +-1.24121447574740E+0001 -1.24126791515144E+0001 -1.24132116570106E+0001 -1.24137422726600E+0001 -1.24142709971586E+0001 +-1.24147978292016E+0001 -1.24153227674823E+0001 -1.24158458106933E+0001 -1.24163669575258E+0001 -1.24168862066695E+0001 +-1.24174035568133E+0001 -1.24179190066444E+0001 -1.24184325548490E+0001 -1.24189442001121E+0001 -1.24194539411173E+0001 +-1.24199617765470E+0001 -1.24204677050825E+0001 -1.24209717254036E+0001 -1.24214738361890E+0001 -1.24219740361162E+0001 +-1.24224723238613E+0001 -1.24229686980994E+0001 -1.24234631575040E+0001 -1.24239557007477E+0001 -1.24244463265016E+0001 +-1.24249350334357E+0001 -1.24254218202188E+0001 -1.24259066855182E+0001 -1.24263896280003E+0001 -1.24268706463299E+0001 +-1.24273497391709E+0001 -1.24278269051857E+0001 -1.24283021430355E+0001 -1.24287754513803E+0001 -1.24292468288790E+0001 +-1.24297162741890E+0001 -1.24301837859665E+0001 -1.24306493628666E+0001 -1.24311130035431E+0001 -1.24315747066485E+0001 +-1.24320344708340E+0001 -1.24324922947497E+0001 -1.24329481770445E+0001 -1.24334021163657E+0001 -1.24338541113599E+0001 +-1.24343041606719E+0001 -1.24347522629456E+0001 -1.24351984168237E+0001 -1.24356426209474E+0001 -1.24360848739569E+0001 +-1.24365251744909E+0001 -1.24369635211871E+0001 -1.24373999126818E+0001 -1.24378343476101E+0001 -1.24382668246059E+0001 +-1.24386973423019E+0001 -1.24391258993293E+0001 -1.24395524943184E+0001 -1.24399771258981E+0001 -1.24403997926959E+0001 +-1.24408204933384E+0001 -1.24412392264506E+0001 -1.24416559906566E+0001 -1.24420707845789E+0001 -1.24424836068390E+0001 +-1.24428944560572E+0001 -1.24433033308523E+0001 -1.24437102298422E+0001 -1.24441151516431E+0001 -1.24445180948705E+0001 +-1.24449190581383E+0001 -1.24453180400592E+0001 -1.24457150392447E+0001 -1.24461100543051E+0001 -1.24465030838494E+0001 +-1.24468941264854E+0001 -1.24472831808196E+0001 -1.24476702454573E+0001 -1.24480553190026E+0001 -1.24484384000582E+0001 +-1.24488194872259E+0001 -1.24491985791058E+0001 -1.24495756742970E+0001 -1.24499507713975E+0001 -1.24503238690039E+0001 +-1.24506949657114E+0001 -1.24510640601142E+0001 -1.24514311508053E+0001 -1.24517962363762E+0001 -1.24521593154173E+0001 +-1.24525203865179E+0001 -1.24528794482658E+0001 -1.24532364992477E+0001 -1.24535915380492E+0001 -1.24539445632542E+0001 +-1.24542955734459E+0001 -1.24546445672060E+0001 -1.24549915431149E+0001 -1.24553364997519E+0001 -1.24556794356950E+0001 +-1.24560203495209E+0001 -1.24563592398052E+0001 -1.24566961051222E+0001 -1.24570309440448E+0001 -1.24573637551451E+0001 +-1.24576945369933E+0001 -1.24580232881590E+0001 -1.24583500072102E+0001 -1.24586746927137E+0001 -1.24589973432352E+0001 +-1.24593179573391E+0001 -1.24596365335883E+0001 -1.24599530705450E+0001 -1.24602675667697E+0001 -1.24605800208218E+0001 +-1.24608904312595E+0001 -1.24611987966398E+0001 -1.24615051155183E+0001 -1.24618093864497E+0001 -1.24621116079869E+0001 +-1.24624117786821E+0001 -1.24627098970860E+0001 -1.24630059617480E+0001 -1.24632999712166E+0001 -1.24635919240387E+0001 +-1.24638818187601E+0001 -1.24641696539253E+0001 -1.24644554280778E+0001 -1.24647391397596E+0001 -1.24650207875115E+0001 +-1.24653003698732E+0001 -1.24655778853830E+0001 -1.24658533325781E+0001 -1.24661267099943E+0001 -1.24663980161664E+0001 +-1.24666672496277E+0001 -1.24669344089105E+0001 -1.24671994925457E+0001 -1.24674624990630E+0001 -1.24677234269909E+0001 +-1.24679822748566E+0001 -1.24682390411862E+0001 -1.24684937245045E+0001 -1.24687463233349E+0001 -1.24689968361997E+0001 +-1.24692452616201E+0001 -1.24694915981158E+0001 -1.24697358442054E+0001 -1.24699779984064E+0001 -1.24702180592348E+0001 +-1.24704560252054E+0001 -1.24706918948320E+0001 -1.24709256666269E+0001 -1.24711573391014E+0001 -1.24713869107653E+0001 +-1.24716143801274E+0001 -1.24718397456952E+0001 -1.24720630059747E+0001 -1.24722841594713E+0001 -1.24725032046884E+0001 +-1.24727201401287E+0001 -1.24729349642934E+0001 -1.24731476756827E+0001 -1.24733582727953E+0001 -1.24735667541289E+0001 +-1.24737731181797E+0001 -1.24739773634430E+0001 -1.24741794884126E+0001 -1.24743794915811E+0001 -1.24745773714399E+0001 +-1.24747731264793E+0001 -1.24749667551882E+0001 -1.24751582560543E+0001 -1.24753476275641E+0001 -1.24755348682028E+0001 +-1.24757199764545E+0001 -1.24759029508019E+0001 -1.24760837897266E+0001 -1.24762624917088E+0001 -1.24764390552277E+0001 +-1.24766134787611E+0001 -1.24767857607856E+0001 -1.24769558997766E+0001 -1.24771238942082E+0001 -1.24772897425534E+0001 +-1.24774534432837E+0001 -1.24776149948697E+0001 -1.24777743957806E+0001 -1.24779316444843E+0001 -1.24780867394476E+0001 +-1.24782396791360E+0001 -1.24783904620138E+0001 -1.24785390865440E+0001 -1.24786855511884E+0001 -1.24788298544077E+0001 +-1.24789719946611E+0001 -1.24791119704068E+0001 -1.24792497801017E+0001 -1.24793854222013E+0001 -1.24795188951602E+0001 +-1.24796501974315E+0001 -1.24797793274671E+0001 -1.24799062837179E+0001 -1.24800310646332E+0001 -1.24801536686614E+0001 +-1.24802740942494E+0001 -1.24803923398431E+0001 -1.24805084038870E+0001 -1.24806222848245E+0001 -1.24807339810976E+0001 +-1.24808434911472E+0001 -1.24809508134130E+0001 -1.24810559463333E+0001 -1.24811588883454E+0001 -1.24812596378851E+0001 +-1.24813581933872E+0001 -1.24814545532852E+0001 -1.24815487160113E+0001 -1.24816406799965E+0001 -1.24817304436707E+0001 +-1.24818180054623E+0001 -1.24819033637987E+0001 -1.24819865171061E+0001 -1.24820674638092E+0001 -1.24821462023317E+0001 +-1.24822227310959E+0001 -1.24822970485232E+0001 -1.24823691530333E+0001 -1.24824390430451E+0001 -1.24825067169760E+0001 +-1.24825721732423E+0001 -1.24826354102589E+0001 -1.24826964264397E+0001 -1.24827552201972E+0001 -1.24828117899428E+0001 +-1.24828661340866E+0001 -1.24829182510374E+0001 -1.24829681392029E+0001 -1.24830157969895E+0001 -1.24830612228024E+0001 +-1.24831044150455E+0001 -1.24831453721215E+0001 -1.24831840924320E+0001 -1.24832205743773E+0001 -1.24832548163563E+0001 +-1.24832868167668E+0001 -1.24833165740055E+0001 -1.24833440864677E+0001 -1.24833693525475E+0001 -1.24833923706377E+0001 +-1.24834131391302E+0001 -1.24834316564152E+0001 -1.24834479208821E+0001 -1.24834619309187E+0001 -1.24834736849119E+0001 +-1.24834831812471E+0001 -1.24834904183086E+0001 -1.24834953944796E+0001 -1.24834981081418E+0001 -1.24834985576758E+0001 +-1.24834967414610E+0001 -1.24834926578757E+0001 -1.24834863052966E+0001 -1.24834776820995E+0001 -1.24834667866588E+0001 +-1.24834536173478E+0001 -1.24834381725385E+0001 -1.24834204506017E+0001 -1.24834004499070E+0001 -1.24833781688227E+0001 +-1.24833536057157E+0001 -1.24833267589521E+0001 -1.24832976268965E+0001 -1.24832662079123E+0001 -1.24832325003616E+0001 +-1.24831965026056E+0001 -1.24831582130038E+0001 -1.24831176299147E+0001 -1.24830747516958E+0001 -1.24830295767030E+0001 +-1.24829821032911E+0001 -1.24829323298139E+0001 -1.24828802546236E+0001 -1.24828258760713E+0001 -1.24827691925070E+0001 +-1.24827102022795E+0001 -1.24826489037361E+0001 -1.24825852952230E+0001 -1.24825193750855E+0001 -1.24824511416670E+0001 +-1.24823805933105E+0001 -1.24823077283570E+0001 -1.24822325451467E+0001 -1.24821550420184E+0001 -1.24820752173100E+0001 +-1.24819930693578E+0001 -1.24819085964968E+0001 -1.24818217970614E+0001 -1.24817326693840E+0001 -1.24816412117963E+0001 +-1.24815474226285E+0001 -1.24814513002098E+0001 -1.24813528428680E+0001 -1.24812520489296E+0001 -1.24811489167203E+0001 +-1.24810434445639E+0001 -1.24809356307836E+0001 -1.24808254737011E+0001 -1.24807129716368E+0001 -1.24805981229101E+0001 +-1.24804809258390E+0001 -1.24803613787402E+0001 -1.24802394799295E+0001 -1.24801152277212E+0001 -1.24799886204284E+0001 +-1.24798596563630E+0001 -1.24797283338358E+0001 -1.24795946511562E+0001 -1.24794586066326E+0001 -1.24793201985718E+0001 +-1.24791794252797E+0001 -1.24790362850610E+0001 -1.24788907762188E+0001 -1.24787428970555E+0001 -1.24785926458719E+0001 +-1.24784400209676E+0001 -1.24782850206411E+0001 -1.24781276431897E+0001 -1.24779678869093E+0001 -1.24778057500948E+0001 +-1.24776412310396E+0001 -1.24774743280362E+0001 -1.24773050393758E+0001 -1.24771333633479E+0001 -1.24769592982416E+0001 +-1.24767828423440E+0001 -1.24766039939416E+0001 -1.24764227513192E+0001 -1.24762391127606E+0001 -1.24760530765485E+0001 +-1.24758646409641E+0001 -1.24756738042875E+0001 -1.24754805647975E+0001 -1.24752849207719E+0001 -1.24750868704872E+0001 +-1.24748864122184E+0001 -1.24746835442396E+0001 -1.24744782648235E+0001 -1.24742705722417E+0001 -1.24740604647646E+0001 +-1.24738479406611E+0001 -1.24736329981992E+0001 -1.24734156356456E+0001 -1.24731958512656E+0001 -1.24729736433234E+0001 +-1.24727490100822E+0001 -1.24725219498035E+0001 -1.24722924607480E+0001 -1.24720605411749E+0001 -1.24718261893424E+0001 +-1.24715894035073E+0001 -1.24713501819253E+0001 -1.24711085228509E+0001 -1.24708644245371E+0001 -1.24706178852361E+0001 +-1.24703689031985E+0001 -1.24701174766739E+0001 -1.24698636039107E+0001 -1.24696072831558E+0001 -1.24693485126553E+0001 +-1.24690872906537E+0001 -1.24688236153946E+0001 -1.24685574851199E+0001 -1.24682888980709E+0001 -1.24680178524873E+0001 +-1.24677443466076E+0001 -1.24674683786691E+0001 -1.24671899469079E+0001 -1.24669090495590E+0001 -1.24666256848560E+0001 +-1.24663398510312E+0001 -1.24660515463160E+0001 -1.24657607689405E+0001 -1.24654675171332E+0001 -1.24651717891218E+0001 +-1.24648735831326E+0001 -1.24645728973908E+0001 -1.24642697301202E+0001 -1.24639640795436E+0001 -1.24636559438823E+0001 +-1.24633453213567E+0001 -1.24630322101856E+0001 -1.24627166085870E+0001 -1.24623985147774E+0001 -1.24620779269721E+0001 +-1.24617548433854E+0001 -1.24614292622300E+0001 -1.24611011817178E+0001 -1.24607706000590E+0001 -1.24604375154631E+0001 +-1.24601019261381E+0001 -1.24597638302908E+0001 -1.24594232261267E+0001 -1.24590801118502E+0001 -1.24587344856646E+0001 +-1.24583863457717E+0001 -1.24580356903723E+0001 -1.24576825176657E+0001 -1.24573268258505E+0001 -1.24569686131235E+0001 +-1.24566078776807E+0001 -1.24562446177165E+0001 -1.24558788314246E+0001 -1.24555105169969E+0001 -1.24551396726246E+0001 +-1.24547662964972E+0001 -1.24543903868034E+0001 -1.24540119417305E+0001 -1.24536309594645E+0001 -1.24532474381904E+0001 +-1.24528613760917E+0001 -1.24524727713509E+0001 -1.24520816221492E+0001 -1.24516879266666E+0001 -1.24512916830818E+0001 +-1.24508928895725E+0001 -1.24504915443149E+0001 -1.24500876454843E+0001 -1.24496811912544E+0001 -1.24492721797979E+0001 +-1.24488606092864E+0001 -1.24484464778901E+0001 -1.24480297837779E+0001 -1.24476105251178E+0001 -1.24471887000763E+0001 +-1.24467643068187E+0001 -1.24463373435093E+0001 -1.24459078083108E+0001 -1.24454756993853E+0001 -1.24450410148929E+0001 +-1.24446037529932E+0001 -1.24441639118441E+0001 -1.24437214896025E+0001 -1.24432764844239E+0001 -1.24428288944630E+0001 +-1.24423787178727E+0001 -1.24419259528052E+0001 -1.24414705974110E+0001 -1.24410126498399E+0001 -1.24405521082402E+0001 +-1.24400889707589E+0001 -1.24396232355419E+0001 -1.24391549007339E+0001 -1.24386839644784E+0001 -1.24382104249176E+0001 +-1.24377342801925E+0001 -1.24372555284429E+0001 -1.24367741678076E+0001 -1.24362901964237E+0001 -1.24358036124274E+0001 +-1.24353144139538E+0001 -1.24348225991365E+0001 -1.24343281661081E+0001 -1.24338311129996E+0001 -1.24333314379415E+0001 +-1.24328291390624E+0001 -1.24323242144899E+0001 -1.24318166623506E+0001 -1.24313064807697E+0001 -1.24307936678710E+0001 +-1.24302782217774E+0001 -1.24297601406105E+0001 -1.24292394224905E+0001 -1.24287160655367E+0001 -1.24281900678669E+0001 +-1.24276614275979E+0001 -1.24271301428450E+0001 -1.24265962117227E+0001 -1.24260596323438E+0001 -1.24255204028203E+0001 +-1.24249785212628E+0001 -1.24244339857806E+0001 -1.24238867944820E+0001 -1.24233369454739E+0001 -1.24227844368621E+0001 +-1.24222292667511E+0001 -1.24216714332443E+0001 -1.24211109344437E+0001 -1.24205477684502E+0001 -1.24199819333636E+0001 +-1.24194134272822E+0001 -1.24188422483034E+0001 -1.24182683945231E+0001 -1.24176918640362E+0001 -1.24171126549363E+0001 +-1.24165307653157E+0001 -1.24159461932657E+0001 -1.24153589368762E+0001 -1.24147689942359E+0001 -1.24141763634324E+0001 +-1.24135810425519E+0001 -1.24129830296797E+0001 -1.24123823228995E+0001 -1.24117789202940E+0001 -1.24111728199447E+0001 +-1.24105640199318E+0001 -1.24099525183343E+0001 -1.24093383132301E+0001 -1.24087214026957E+0001 -1.24081017848067E+0001 +-1.24074794576370E+0001 -1.24068544192597E+0001 -1.24062266677464E+0001 -1.24055962011679E+0001 -1.24049630175932E+0001 +-1.24043271150905E+0001 -1.24036884917269E+0001 -1.24030471455676E+0001 -1.24024030746776E+0001 -1.24017562771198E+0001 +-1.24011067509563E+0001 -1.24004544942480E+0001 -1.23997995050544E+0001 -1.23991417814339E+0001 -1.23984813214437E+0001 +-1.23978181231397E+0001 -1.23971521845767E+0001 -1.23964835038083E+0001 -1.23958120788868E+0001 -1.23951379078632E+0001 +-1.23944609887875E+0001 -1.23937813197082E+0001 -1.23930988986730E+0001 -1.23924137237281E+0001 -1.23917257929184E+0001 +-1.23910351042879E+0001 -1.23903416558791E+0001 -1.23896454457335E+0001 -1.23889464718912E+0001 -1.23882447323912E+0001 +-1.23875402252712E+0001 -1.23868329485679E+0001 -1.23861229003166E+0001 -1.23854100785513E+0001 -1.23846944813051E+0001 +-1.23839761066095E+0001 -1.23832549524952E+0001 -1.23825310169912E+0001 -1.23818042981258E+0001 -1.23810747939258E+0001 +-1.23803425024168E+0001 -1.23796074216232E+0001 -1.23788695495683E+0001 -1.23781288842739E+0001 -1.23773854237611E+0001 +-1.23766391660493E+0001 -1.23758901091569E+0001 -1.23751382511009E+0001 -1.23743835898975E+0001 -1.23736261235613E+0001 +-1.23728658501058E+0001 -1.23721027675432E+0001 -1.23713368738849E+0001 -1.23705681671406E+0001 -1.23697966453188E+0001 +-1.23690223064272E+0001 -1.23682451484720E+0001 -1.23674651694582E+0001 -1.23666823673896E+0001 -1.23658967402689E+0001 +-1.23651082860974E+0001 -1.23643170028754E+0001 -1.23635228886016E+0001 -1.23627259412741E+0001 -1.23619261588895E+0001 +-1.23611235394427E+0001 -1.23603180809282E+0001 -1.23595097813389E+0001 -1.23586986386664E+0001 -1.23578846509012E+0001 +-1.23570678160326E+0001 -1.23562481320488E+0001 -1.23554255969366E+0001 -1.23546002086815E+0001 -1.23537719652681E+0001 +-1.23529408646797E+0001 -1.23521069048980E+0001 -1.23512700839042E+0001 -1.23504303996778E+0001 -1.23495878501970E+0001 +-1.23487424334391E+0001 -1.23478941473802E+0001 -1.23470429899948E+0001 -1.23461889592567E+0001 -1.23453320531382E+0001 +-1.23444722696102E+0001 -1.23436096066429E+0001 -1.23427440622048E+0001 -1.23418756342635E+0001 -1.23410043207853E+0001 +-1.23401301197352E+0001 -1.23392530290771E+0001 -1.23383730467738E+0001 -1.23374901707865E+0001 -1.23366043990755E+0001 +-1.23357157296000E+0001 -1.23348241603178E+0001 -1.23339296891853E+0001 -1.23330323141580E+0001 -1.23321320331900E+0001 +-1.23312288442345E+0001 -1.23303227452431E+0001 -1.23294137341664E+0001 -1.23285018089538E+0001 -1.23275869675534E+0001 +-1.23266692079121E+0001 -1.23257485279756E+0001 -1.23248249256886E+0001 -1.23238983989942E+0001 -1.23229689458345E+0001 +-1.23220365641504E+0001 -1.23211012518817E+0001 -1.23201630069668E+0001 -1.23192218273429E+0001 -1.23182777109460E+0001 +-1.23173306557112E+0001 -1.23163806595718E+0001 -1.23154277204604E+0001 -1.23144718363083E+0001 -1.23135130050453E+0001 +-1.23125512246003E+0001 -1.23115864929008E+0001 -1.23106188078733E+0001 -1.23096481674429E+0001 -1.23086745695336E+0001 +-1.23076980120680E+0001 -1.23067184929680E+0001 -1.23057360101535E+0001 -1.23047505615439E+0001 -1.23037621450570E+0001 +-1.23027707586095E+0001 -1.23017764001170E+0001 -1.23007790674937E+0001 -1.22997787586529E+0001 -1.22987754715060E+0001 +-1.22977692039641E+0001 -1.22967599539365E+0001 -1.22957477193315E+0001 -1.22947324980561E+0001 -1.22937142880161E+0001 +-1.22926930871162E+0001 -1.22916688932598E+0001 -1.22906417043490E+0001 -1.22896115182850E+0001 -1.22885783329675E+0001 +-1.22875421462950E+0001 -1.22865029561650E+0001 -1.22854607604737E+0001 -1.22844155571158E+0001 -1.22833673439853E+0001 +-1.22823161189748E+0001 -1.22812618799755E+0001 -1.22802046248776E+0001 -1.22791443515700E+0001 -1.22780810579403E+0001 +-1.22770147418752E+0001 -1.22759454012599E+0001 -1.22748730339785E+0001 -1.22737976379139E+0001 -1.22727192109479E+0001 +-1.22716377509608E+0001 -1.22705532558318E+0001 -1.22694657234394E+0001 -1.22683751516600E+0001 -1.22672815383693E+0001 +-1.22661848814419E+0001 -1.22650851787510E+0001 -1.22639824281685E+0001 -1.22628766275653E+0001 -1.22617677748111E+0001 +-1.22606558677742E+0001 -1.22595409043218E+0001 -1.22584228823199E+0001 -1.22573017996333E+0001 -1.22561776541256E+0001 +-1.22550504436591E+0001 -1.22539201660950E+0001 -1.22527868192933E+0001 -1.22516504011127E+0001 -1.22505109094108E+0001 +-1.22493683420439E+0001 -1.22482226968671E+0001 -1.22470739717344E+0001 -1.22459221644984E+0001 -1.22447672730108E+0001 +-1.22436092951217E+0001 -1.22424482286804E+0001 -1.22412840715346E+0001 -1.22401168215312E+0001 -1.22389464765154E+0001 +-1.22377730343317E+0001 -1.22365964928232E+0001 -1.22354168498317E+0001 -1.22342341031977E+0001 -1.22330482507609E+0001 +-1.22318592903594E+0001 -1.22306672198303E+0001 -1.22294720370095E+0001 -1.22282737397314E+0001 -1.22270723258297E+0001 +-1.22258677931364E+0001 -1.22246601394826E+0001 -1.22234493626982E+0001 -1.22222354606116E+0001 -1.22210184310504E+0001 +-1.22197982718407E+0001 -1.22185749808075E+0001 -1.22173485557745E+0001 -1.22161189945644E+0001 -1.22148862949985E+0001 +-1.22136504548969E+0001 -1.22124114720788E+0001 -1.22111693443617E+0001 -1.22099240695622E+0001 -1.22086756454959E+0001 +-1.22074240699765E+0001 -1.22061693408172E+0001 -1.22049114558297E+0001 -1.22036504128246E+0001 -1.22023862096110E+0001 +-1.22011188439973E+0001 -1.21998483137901E+0001 -1.21985746167954E+0001 -1.21972977508176E+0001 -1.21960177136597E+0001 +-1.21947345031243E+0001 -1.21934481170119E+0001 -1.21921585531225E+0001 -1.21908658092541E+0001 -1.21895698832045E+0001 +-1.21882707727695E+0001 -1.21869684757439E+0001 -1.21856629899215E+0001 -1.21843543130948E+0001 -1.21830424430549E+0001 +-1.21817273775919E+0001 -1.21804091144947E+0001 -1.21790876515508E+0001 -1.21777629865467E+0001 -1.21764351172677E+0001 +-1.21751040414978E+0001 -1.21737697570198E+0001 -1.21724322616154E+0001 -1.21710915530648E+0001 -1.21697476291473E+0001 +-1.21684004876410E+0001 -1.21670501263226E+0001 -1.21656965429678E+0001 -1.21643397353510E+0001 -1.21629797012451E+0001 +-1.21616164384225E+0001 -1.21602499446538E+0001 -1.21588802177085E+0001 -1.21575072553550E+0001 -1.21561310553606E+0001 +-1.21547516154911E+0001 -1.21533689335114E+0001 -1.21519830071850E+0001 -1.21505938342744E+0001 -1.21492014125404E+0001 +-1.21478057397432E+0001 -1.21464068136417E+0001 -1.21450046319931E+0001 -1.21435991925539E+0001 -1.21421904930793E+0001 +-1.21407785313232E+0001 -1.21393633050383E+0001 -1.21379448119760E+0001 -1.21365230498868E+0001 -1.21350980165199E+0001 +-1.21336697096230E+0001 -1.21322381269430E+0001 -1.21308032662251E+0001 -1.21293651252142E+0001 -1.21279237016527E+0001 +-1.21264789932830E+0001 -1.21250309978456E+0001 -1.21235797130801E+0001 -1.21221251367248E+0001 -1.21206672665166E+0001 +-1.21192061001916E+0001 -1.21177416354842E+0001 -1.21162738701284E+0001 -1.21148028018560E+0001 -1.21133284283984E+0001 +-1.21118507474853E+0001 -1.21103697568452E+0001 -1.21088854542061E+0001 -1.21073978372938E+0001 -1.21059069038335E+0001 +-1.21044126515492E+0001 -1.21029150781633E+0001 -1.21014141813974E+0001 -1.20999099589719E+0001 -1.20984024086057E+0001 +-1.20968915280166E+0001 -1.20953773149214E+0001 -1.20938597670355E+0001 -1.20923388820731E+0001 -1.20908146577474E+0001 +-1.20892870917700E+0001 -1.20877561818516E+0001 -1.20862219257018E+0001 -1.20846843210287E+0001 -1.20831433655395E+0001 +-1.20815990569398E+0001 -1.20800513929343E+0001 -1.20785003712266E+0001 -1.20769459895187E+0001 -1.20753882455118E+0001 +-1.20738271369057E+0001 -1.20722626613990E+0001 -1.20706948166890E+0001 -1.20691236004722E+0001 -1.20675490104433E+0001 +-1.20659710442962E+0001 -1.20643896997238E+0001 -1.20628049744173E+0001 -1.20612168660669E+0001 -1.20596253723613E+0001 +-1.20580304909891E+0001 -1.20564322196361E+0001 -1.20548305559883E+0001 -1.20532254977296E+0001 -1.20516170425432E+0001 +-1.20500051881106E+0001 -1.20483899321127E+0001 -1.20467712722286E+0001 -1.20451492061370E+0001 -1.20435237315144E+0001 +-1.20418948460369E+0001 -1.20402625473790E+0001 -1.20386268332140E+0001 -1.20369877012142E+0001 -1.20353451490507E+0001 +-1.20336991743931E+0001 -1.20320497749100E+0001 -1.20303969482693E+0001 -1.20287406921364E+0001 -1.20270810041767E+0001 +-1.20254178820541E+0001 -1.20237513234311E+0001 -1.20220813259688E+0001 -1.20204078873278E+0001 -1.20187310051669E+0001 +-1.20170506771440E+0001 -1.20153669009155E+0001 -1.20136796741371E+0001 -1.20119889944625E+0001 -1.20102948595450E+0001 +-1.20085972670366E+0001 -1.20068962145876E+0001 -1.20051916998473E+0001 -1.20034837204640E+0001 -1.20017722740850E+0001 +-1.20000573583556E+0001 -1.19983389709208E+0001 -1.19966171094235E+0001 -1.19948917715063E+0001 -1.19931629548101E+0001 +-1.19914306569746E+0001 -1.19896948756385E+0001 -1.19879556084391E+0001 -1.19862128530127E+0001 -1.19844666069941E+0001 +-1.19827168680170E+0001 -1.19809636337145E+0001 -1.19792069017173E+0001 -1.19774466696565E+0001 -1.19756829351601E+0001 +-1.19739156958564E+0001 -1.19721449493720E+0001 -1.19703706933323E+0001 -1.19685929253612E+0001 -1.19668116430821E+0001 +-1.19650268441165E+0001 -1.19632385260850E+0001 -1.19614466866072E+0001 -1.19596513233012E+0001 -1.19578524337839E+0001 +-1.19560500156711E+0001 -1.19542440665775E+0001 -1.19524345841165E+0001 -1.19506215659002E+0001 -1.19488050095396E+0001 +-1.19469849126446E+0001 -1.19451612728239E+0001 -1.19433340876846E+0001 -1.19415033548329E+0001 -1.19396690718741E+0001 +-1.19378312364119E+0001 -1.19359898460488E+0001 -1.19341448983863E+0001 -1.19322963910247E+0001 -1.19304443215626E+0001 +-1.19285886875982E+0001 -1.19267294867281E+0001 -1.19248667165475E+0001 -1.19230003746508E+0001 -1.19211304586310E+0001 +-1.19192569660797E+0001 -1.19173798945877E+0001 -1.19154992417445E+0001 -1.19136150051380E+0001 -1.19117271823558E+0001 +-1.19098357709831E+0001 -1.19079407686047E+0001 -1.19060421728042E+0001 -1.19041399811637E+0001 -1.19022341912644E+0001 +-1.19003248006857E+0001 -1.18984118070067E+0001 -1.18964952078047E+0001 -1.18945750006558E+0001 -1.18926511831351E+0001 +-1.18907237528166E+0001 -1.18887927072728E+0001 -1.18868580440749E+0001 -1.18849197607936E+0001 -1.18829778549979E+0001 +-1.18810323242551E+0001 -1.18790831661324E+0001 -1.18771303781951E+0001 -1.18751739580075E+0001 -1.18732139031326E+0001 +-1.18712502111321E+0001 -1.18692828795669E+0001 -1.18673119059964E+0001 -1.18653372879788E+0001 -1.18633590230712E+0001 +-1.18613771088296E+0001 -1.18593915428084E+0001 -1.18574023225613E+0001 -1.18554094456404E+0001 -1.18534129095969E+0001 +-1.18514127119809E+0001 -1.18494088503407E+0001 -1.18474013222237E+0001 -1.18453901251767E+0001 -1.18433752567444E+0001 +-1.18413567144707E+0001 -1.18393344958984E+0001 -1.18373085985692E+0001 -1.18352790200232E+0001 -1.18332457577991E+0001 +-1.18312088094355E+0001 -1.18291681724686E+0001 -1.18271238444343E+0001 -1.18250758228669E+0001 -1.18230241052991E+0001 +-1.18209686892630E+0001 -1.18189095722896E+0001 -1.18168467519080E+0001 -1.18147802256471E+0001 -1.18127099910334E+0001 +-1.18106360455932E+0001 -1.18085583868511E+0001 -1.18064770123307E+0001 -1.18043919195544E+0001 -1.18023031060431E+0001 +-1.18002105693170E+0001 -1.17981143068949E+0001 -1.17960143162942E+0001 -1.17939105950312E+0001 -1.17918031406212E+0001 +-1.17896919505782E+0001 -1.17875770224149E+0001 -1.17854583536428E+0001 -1.17833359417723E+0001 -1.17812097843127E+0001 +-1.17790798787719E+0001 -1.17769462226567E+0001 -1.17748088134725E+0001 -1.17726676487241E+0001 -1.17705227259143E+0001 +-1.17683740425454E+0001 -1.17662215961181E+0001 -1.17640653841318E+0001 -1.17619054040852E+0001 -1.17597416534753E+0001 +-1.17575741297985E+0001 -1.17554028305492E+0001 -1.17532277532209E+0001 -1.17510488953067E+0001 -1.17488662542973E+0001 +-1.17466798276827E+0001 -1.17444896129520E+0001 -1.17422956075929E+0001 -1.17400978090916E+0001 -1.17378962149336E+0001 +-1.17356908226025E+0001 -1.17334816295817E+0001 -1.17312686333526E+0001 -1.17290518313955E+0001 -1.17268312211902E+0001 +-1.17246068002143E+0001 -1.17223785659448E+0001 -1.17201465158576E+0001 -1.17179106474268E+0001 -1.17156709581259E+0001 +-1.17134274454272E+0001 -1.17111801068013E+0001 -1.17089289397181E+0001 -1.17066739416459E+0001 -1.17044151100522E+0001 +-1.17021524424030E+0001 -1.16998859361633E+0001 -1.16976155887970E+0001 -1.16953413977663E+0001 -1.16930633605326E+0001 +-1.16907814745562E+0001 -1.16884957372960E+0001 -1.16862061462096E+0001 -1.16839126987538E+0001 -1.16816153923839E+0001 +-1.16793142245539E+0001 -1.16770091927169E+0001 -1.16747002943246E+0001 -1.16723875268278E+0001 -1.16700708876755E+0001 +-1.16677503743163E+0001 -1.16654259841969E+0001 -1.16630977147632E+0001 -1.16607655634597E+0001 -1.16584295277300E+0001 +-1.16560896050164E+0001 -1.16537457927596E+0001 -1.16513980883996E+0001 -1.16490464893748E+0001 -1.16466909931231E+0001 +-1.16443315970803E+0001 -1.16419682986816E+0001 -1.16396010953611E+0001 -1.16372299845510E+0001 -1.16348549636830E+0001 +-1.16324760301873E+0001 -1.16300931814931E+0001 -1.16277064150282E+0001 -1.16253157282193E+0001 -1.16229211184916E+0001 +-1.16205225832698E+0001 -1.16181201199770E+0001 -1.16157137260348E+0001 -1.16133033988641E+0001 -1.16108891358843E+0001 +-1.16084709345138E+0001 -1.16060487921697E+0001 -1.16036227062679E+0001 -1.16011926742233E+0001 -1.15987586934493E+0001 +-1.15963207613581E+0001 -1.15938788753611E+0001 -1.15914330328683E+0001 -1.15889832312882E+0001 -1.15865294680285E+0001 +-1.15840717404957E+0001 -1.15816100460945E+0001 -1.15791443822296E+0001 -1.15766747463034E+0001 -1.15742011357177E+0001 +-1.15717235478724E+0001 -1.15692419801672E+0001 -1.15667564300000E+0001 -1.15642668947676E+0001 -1.15617733718655E+0001 +-1.15592758586884E+0001 -1.15567743526293E+0001 -1.15542688510803E+0001 -1.15517593514324E+0001 -1.15492458510751E+0001 +-1.15467283473970E+0001 -1.15442068377851E+0001 -1.15416813196259E+0001 -1.15391517903038E+0001 -1.15366182472029E+0001 +-1.15340806877056E+0001 -1.15315391091929E+0001 -1.15289935090455E+0001 -1.15264438846416E+0001 -1.15238902333596E+0001 +-1.15213325525755E+0001 -1.15187708396649E+0001 -1.15162050920019E+0001 -1.15136353069593E+0001 -1.15110614819092E+0001 +-1.15084836142218E+0001 -1.15059017012667E+0001 -1.15033157404120E+0001 -1.15007257290246E+0001 -1.14981316644704E+0001 +-1.14955335441139E+0001 -1.14929313653187E+0001 -1.14903251254468E+0001 -1.14877148218593E+0001 -1.14851004519158E+0001 +-1.14824820129752E+0001 -1.14798595023949E+0001 -1.14772329175311E+0001 -1.14746022557388E+0001 -1.14719675143720E+0001 +-1.14693286907833E+0001 -1.14666857823240E+0001 -1.14640387863444E+0001 -1.14613877001940E+0001 -1.14587325212200E+0001 +-1.14560732467698E+0001 -1.14534098741885E+0001 -1.14507424008203E+0001 -1.14480708240088E+0001 -1.14453951410956E+0001 +-1.14427153494212E+0001 -1.14400314463256E+0001 -1.14373434291470E+0001 -1.14346512952225E+0001 -1.14319550418879E+0001 +-1.14292546664784E+0001 -1.14265501663271E+0001 -1.14238415387668E+0001 -1.14211287811282E+0001 -1.14184118907418E+0001 +-1.14156908649362E+0001 -1.14129657010389E+0001 -1.14102363963767E+0001 -1.14075029482743E+0001 -1.14047653540560E+0001 +-1.14020236110446E+0001 -1.13992777165620E+0001 -1.13965276679283E+0001 -1.13937734624630E+0001 -1.13910150974840E+0001 +-1.13882525703084E+0001 -1.13854858782516E+0001 -1.13827150186284E+0001 -1.13799399887520E+0001 -1.13771607859342E+0001 +-1.13743774074864E+0001 -1.13715898507182E+0001 -1.13687981129379E+0001 -1.13660021914532E+0001 -1.13632020835699E+0001 +-1.13603977865932E+0001 -1.13575892978267E+0001 -1.13547766145731E+0001 -1.13519597341337E+0001 -1.13491386538089E+0001 +-1.13463133708974E+0001 -1.13434838826973E+0001 -1.13406501865049E+0001 -1.13378122796159E+0001 -1.13349701593243E+0001 +-1.13321238229233E+0001 -1.13292732677047E+0001 -1.13264184909593E+0001 -1.13235594899763E+0001 -1.13206962620441E+0001 +-1.13178288044499E+0001 -1.13149571144795E+0001 -1.13120811894176E+0001 -1.13092010265476E+0001 -1.13063166231518E+0001 +-1.13034279765115E+0001 -1.13005350839066E+0001 -1.12976379426158E+0001 -1.12947365499167E+0001 -1.12918309030855E+0001 +-1.12889209993975E+0001 -1.12860068361268E+0001 -1.12830884105461E+0001 -1.12801657199266E+0001 -1.12772387615391E+0001 +-1.12743075326528E+0001 -1.12713720305357E+0001 -1.12684322524545E+0001 -1.12654881956750E+0001 -1.12625398574616E+0001 +-1.12595872350773E+0001 -1.12566303257844E+0001 -1.12536691268439E+0001 -1.12507036355154E+0001 -1.12477338490571E+0001 +-1.12447597647266E+0001 -1.12417813797799E+0001 -1.12387986914719E+0001 -1.12358116970565E+0001 -1.12328203937860E+0001 +-1.12298247789119E+0001 -1.12268248496841E+0001 -1.12238206033520E+0001 -1.12208120371629E+0001 -1.12177991483638E+0001 +-1.12147819341998E+0001 -1.12117603919150E+0001 -1.12087345187528E+0001 -1.12057043119547E+0001 -1.12026697687615E+0001 +-1.11996308864125E+0001 -1.11965876621459E+0001 -1.11935400931992E+0001 -1.11904881768077E+0001 -1.11874319102061E+0001 +-1.11843712906282E+0001 -1.11813063153063E+0001 -1.11782369814711E+0001 -1.11751632863529E+0001 -1.11720852271805E+0001 +-1.11690028011809E+0001 -1.11659160055808E+0001 -1.11628248376053E+0001 -1.11597292944783E+0001 -1.11566293734229E+0001 +-1.11535250716600E+0001 -1.11504163864107E+0001 -1.11473033148937E+0001 -1.11441858543271E+0001 -1.11410640019279E+0001 +-1.11379377549116E+0001 -1.11348071104926E+0001 -1.11316720658842E+0001 -1.11285326182985E+0001 -1.11253887649461E+0001 +-1.11222405030372E+0001 -1.11190878297798E+0001 -1.11159307423812E+0001 -1.11127692380477E+0001 -1.11096033139845E+0001 +-1.11064329673947E+0001 -1.11032581954811E+0001 -1.11000789954450E+0001 -1.10968953644869E+0001 -1.10937072998050E+0001 +-1.10905147985979E+0001 -1.10873178580617E+0001 -1.10841164753920E+0001 -1.10809106477827E+0001 -1.10777003724273E+0001 +-1.10744856465173E+0001 -1.10712664672433E+0001 -1.10680428317948E+0001 -1.10648147373602E+0001 -1.10615821811262E+0001 +-1.10583451602792E+0001 -1.10551036720036E+0001 -1.10518577134826E+0001 -1.10486072818992E+0001 -1.10453523744338E+0001 +-1.10420929882667E+0001 -1.10388291205764E+0001 -1.10355607685410E+0001 -1.10322879293363E+0001 -1.10290106001375E+0001 +-1.10257287781191E+0001 -1.10224424604531E+0001 -1.10191516443118E+0001 -1.10158563268650E+0001 -1.10125565052828E+0001 +-1.10092521767320E+0001 -1.10059433383805E+0001 -1.10026299873933E+0001 -1.09993121209353E+0001 -1.09959897361696E+0001 +-1.09926628302582E+0001 -1.09893314003622E+0001 -1.09859954436410E+0001 -1.09826549572534E+0001 -1.09793099383567E+0001 +-1.09759603841066E+0001 -1.09726062916586E+0001 -1.09692476581665E+0001 -1.09658844807823E+0001 -1.09625167566579E+0001 +-1.09591444829433E+0001 -1.09557676567874E+0001 -1.09523862753382E+0001 -1.09490003357422E+0001 -1.09456098351446E+0001 +-1.09422147706903E+0001 -1.09388151395220E+0001 -1.09354109387813E+0001 -1.09320021656094E+0001 -1.09285888171455E+0001 +-1.09251708905277E+0001 -1.09217483828936E+0001 -1.09183212913785E+0001 -1.09148896131179E+0001 -1.09114533452446E+0001 +-1.09080124848916E+0001 -1.09045670291897E+0001 -1.09011169752689E+0001 -1.08976623202579E+0001 -1.08942030612846E+0001 +-1.08907391954751E+0001 -1.08872707199551E+0001 -1.08837976318481E+0001 -1.08803199282771E+0001 -1.08768376063640E+0001 +-1.08733506632290E+0001 -1.08698590959915E+0001 -1.08663629017696E+0001 -1.08628620776803E+0001 -1.08593566208392E+0001 +-1.08558465283607E+0001 -1.08523317973586E+0001 -1.08488124249443E+0001 -1.08452884082295E+0001 -1.08417597443232E+0001 +-1.08382264303351E+0001 -1.08346884633716E+0001 -1.08311458405393E+0001 -1.08275985589433E+0001 -1.08240466156871E+0001 +-1.08204900078739E+0001 -1.08169287326046E+0001 -1.08133627869797E+0001 -1.08097921680986E+0001 -1.08062168730582E+0001 +-1.08026368989563E+0001 -1.07990522428882E+0001 -1.07954629019478E+0001 -1.07918688732284E+0001 -1.07882701538222E+0001 +-1.07846667408194E+0001 -1.07810586313102E+0001 -1.07774458223831E+0001 -1.07738283111243E+0001 -1.07702060946209E+0001 +-1.07665791699571E+0001 -1.07629475342167E+0001 -1.07593111844822E+0001 -1.07556701178350E+0001 -1.07520243313550E+0001 +-1.07483738221208E+0001 -1.07447185872106E+0001 -1.07410586237006E+0001 -1.07373939286665E+0001 -1.07337244991820E+0001 +-1.07300503323202E+0001 -1.07263714251528E+0001 -1.07226877747506E+0001 -1.07189993781826E+0001 -1.07153062325173E+0001 +-1.07116083348217E+0001 -1.07079056821614E+0001 -1.07041982716011E+0001 -1.07004861002047E+0001 -1.06967691650337E+0001 +-1.06930474631500E+0001 -1.06893209916130E+0001 -1.06855897474810E+0001 -1.06818537278122E+0001 -1.06781129296624E+0001 +-1.06743673500875E+0001 -1.06706169861404E+0001 -1.06668618348746E+0001 -1.06631018933417E+0001 -1.06593371585917E+0001 +-1.06555676276739E+0001 -1.06517932976365E+0001 -1.06480141655263E+0001 -1.06442302283886E+0001 -1.06404414832679E+0001 +-1.06366479272080E+0001 -1.06328495572504E+0001 -1.06290463704361E+0001 -1.06252383638051E+0001 -1.06214255343959E+0001 +-1.06176078792451E+0001 -1.06137853953898E+0001 -1.06099580798644E+0001 -1.06061259297024E+0001 -1.06022889419372E+0001 +-1.05984471135996E+0001 -1.05946004417198E+0001 -1.05907489233272E+0001 -1.05868925554495E+0001 -1.05830313351131E+0001 +-1.05791652593433E+0001 -1.05752943251649E+0001 -1.05714185296005E+0001 -1.05675378696726E+0001 -1.05636523424015E+0001 +-1.05597619448067E+0001 -1.05558666739063E+0001 -1.05519665267182E+0001 -1.05480615002576E+0001 -1.05441515915395E+0001 +-1.05402367975777E+0001 -1.05363171153844E+0001 -1.05323925419710E+0001 -1.05284630743474E+0001 -1.05245287095220E+0001 +-1.05205894445035E+0001 -1.05166452762976E+0001 -1.05126962019095E+0001 -1.05087422183436E+0001 -1.05047833226028E+0001 +-1.05008195116888E+0001 -1.04968507826021E+0001 -1.04928771323417E+0001 -1.04888985579067E+0001 -1.04849150562930E+0001 +-1.04809266244969E+0001 -1.04769332595133E+0001 -1.04729349583350E+0001 -1.04689317179544E+0001 -1.04649235353631E+0001 +-1.04609104075500E+0001 -1.04568923315042E+0001 -1.04528693042138E+0001 -1.04488413226642E+0001 -1.04448083838409E+0001 +-1.04407704847279E+0001 -1.04367276223077E+0001 -1.04326797935618E+0001 -1.04286269954711E+0001 -1.04245692250144E+0001 +-1.04205064791697E+0001 -1.04164387549138E+0001 -1.04123660492219E+0001 -1.04082883590696E+0001 -1.04042056814289E+0001 +-1.04001180132729E+0001 -1.03960253515715E+0001 -1.03919276932949E+0001 -1.03878250354121E+0001 -1.03837173748893E+0001 +-1.03796047086933E+0001 -1.03754870337893E+0001 -1.03713643471404E+0001 -1.03672366457096E+0001 -1.03631039264582E+0001 +-1.03589661863463E+0001 -1.03548234223330E+0001 -1.03506756313763E+0001 -1.03465228104328E+0001 -1.03423649564578E+0001 +-1.03382020664054E+0001 -1.03340341372289E+0001 -1.03298611658804E+0001 -1.03256831493104E+0001 -1.03215000844687E+0001 +-1.03173119683031E+0001 -1.03131187977611E+0001 -1.03089205697887E+0001 -1.03047172813308E+0001 -1.03005089293309E+0001 +-1.02962955107309E+0001 -1.02920770224724E+0001 -1.02878534614960E+0001 -1.02836248247400E+0001 -1.02793911091420E+0001 +-1.02751523116387E+0001 -1.02709084291657E+0001 -1.02666594586564E+0001 -1.02624053970442E+0001 -1.02581462412608E+0001 +-1.02538819882366E+0001 -1.02496126349016E+0001 -1.02453381781828E+0001 -1.02410586150084E+0001 -1.02367739423034E+0001 +-1.02324841569930E+0001 -1.02281892560002E+0001 -1.02238892362479E+0001 -1.02195840946565E+0001 -1.02152738281457E+0001 +-1.02109584336354E+0001 -1.02066379080419E+0001 -1.02023122482821E+0001 -1.01979814512714E+0001 -1.01936455139233E+0001 +-1.01893044331503E+0001 -1.01849582058648E+0001 -1.01806068289770E+0001 -1.01762502993955E+0001 -1.01718886140292E+0001 +-1.01675217697845E+0001 -1.01631497635670E+0001 -1.01587725922814E+0001 -1.01543902528312E+0001 -1.01500027421177E+0001 +-1.01456100570429E+0001 -1.01412121945059E+0001 -1.01368091514052E+0001 -1.01324009246385E+0001 -1.01279875111019E+0001 +-1.01235689076903E+0001 -1.01191451112977E+0001 -1.01147161188166E+0001 -1.01102819271383E+0001 -1.01058425331538E+0001 +-1.01013979337510E+0001 -1.00969481258188E+0001 -1.00924931062436E+0001 -1.00880328719106E+0001 -1.00835674197047E+0001 +-1.00790967465087E+0001 -1.00746208492048E+0001 -1.00701397246733E+0001 -1.00656533697944E+0001 -1.00611617814462E+0001 +-1.00566649565065E+0001 -1.00521628918502E+0001 -1.00476555843533E+0001 -1.00431430308890E+0001 -1.00386252283298E+0001 +-1.00341021735469E+0001 -1.00295738634107E+0001 -1.00250402947898E+0001 -1.00205014645522E+0001 -1.00159573695649E+0001 +-1.00114080066925E+0001 -1.00068533727997E+0001 -1.00022934647494E+0001 -9.99772827940342E+0000 -9.99315781362236E+0000 +-9.98858206426564E+0000 -9.98400102819187E+0000 -9.97941470225771E+0000 -9.97482308331928E+0000 -9.97022616823153E+0000 +-9.96562395384785E+0000 -9.96101643702059E+0000 -9.95640361460050E+0000 -9.95178548343802E+0000 -9.94716204038241E+0000 +-9.94253328228046E+0000 -9.93789920597897E+0000 -9.93325980832356E+0000 -9.92861508615761E+0000 -9.92396503632438E+0000 +-9.91930965566553E+0000 -9.91464894102171E+0000 -9.90998288923220E+0000 -9.90531149713468E+0000 -9.90063476156695E+0000 +-9.89595267936420E+0000 -9.89126524736128E+0000 -9.88657246239143E+0000 -9.88187432128711E+0000 -9.87717082087897E+0000 +-9.87246195799776E+0000 -9.86774772947092E+0000 -9.86302813212717E+0000 -9.85830316279214E+0000 -9.85357281829056E+0000 +-9.84883709544749E+0000 -9.84409599108494E+0000 -9.83934950202456E+0000 -9.83459762508653E+0000 -9.82984035709114E+0000 +-9.82507769485483E+0000 -9.82030963519560E+0000 -9.81553617492875E+0000 -9.81075731086878E+0000 -9.80597303982893E+0000 +-9.80118335862153E+0000 -9.79638826405721E+0000 -9.79158775294582E+0000 -9.78678182209580E+0000 -9.78197046831485E+0000 +-9.77715368840893E+0000 -9.77233147918321E+0000 -9.76750383744104E+0000 -9.76267075998567E+0000 -9.75783224361840E+0000 +-9.75298828513917E+0000 -9.74813888134736E+0000 -9.74328402904086E+0000 -9.73842372501633E+0000 -9.73355796606927E+0000 +-9.72868674899428E+0000 -9.72381007058436E+0000 -9.71892792763128E+0000 -9.71404031692623E+0000 -9.70914723525868E+0000 +-9.70424867941711E+0000 -9.69934464618825E+0000 -9.69443513235922E+0000 -9.68952013471414E+0000 -9.68459965003683E+0000 +-9.67967367510971E+0000 -9.67474220671454E+0000 -9.66980524163102E+0000 -9.66486277663887E+0000 -9.65991480851483E+0000 +-9.65496133403633E+0000 -9.65000234997831E+0000 -9.64503785311513E+0000 -9.64006784022024E+0000 -9.63509230806494E+0000 +-9.63011125342018E+0000 -9.62512467305521E+0000 -9.62013256373882E+0000 -9.61513492223810E+0000 -9.61013174531865E+0000 +-9.60512302974553E+0000 -9.60010877228217E+0000 -9.59508896969112E+0000 -9.59006361873332E+0000 -9.58503271616951E+0000 +-9.57999625875766E+0000 -9.57495424325577E+0000 -9.56990666642059E+0000 -9.56485352500727E+0000 -9.55979481576992E+0000 +-9.55473053546132E+0000 -9.54966068083377E+0000 -9.54458524863742E+0000 -9.53950423562139E+0000 -9.53441763853448E+0000 +-9.52932545412375E+0000 -9.52422767913424E+0000 -9.51912431031167E+0000 -9.51401534439856E+0000 -9.50890077813790E+0000 +-9.50378060827074E+0000 -9.49865483153667E+0000 -9.49352344467468E+0000 -9.48838644442230E+0000 -9.48324382751571E+0000 +-9.47809559069049E+0000 -9.47294173068042E+0000 -9.46778224421860E+0000 -9.46261712803619E+0000 -9.45744637886446E+0000 +-9.45226999343151E+0000 -9.44708796846658E+0000 -9.44190030069603E+0000 -9.43670698684582E+0000 -9.43150802364028E+0000 +-9.42630340780306E+0000 -9.42109313605613E+0000 -9.41587720512098E+0000 -9.41065561171661E+0000 -9.40542835256247E+0000 +-9.40019542437528E+0000 -9.39495682387235E+0000 -9.38971254776766E+0000 -9.38446259277555E+0000 -9.37920695560922E+0000 +-9.37394563297983E+0000 -9.36867862159761E+0000 -9.36340591817202E+0000 -9.35812751941069E+0000 -9.35284342202135E+0000 +-9.34755362270857E+0000 -9.34225811817714E+0000 -9.33695690513048E+0000 -9.33164998027121E+0000 -9.32633734029901E+0000 +-9.32101898191456E+0000 -9.31569490181619E+0000 -9.31036509670128E+0000 -9.30502956326598E+0000 -9.29968829820496E+0000 +-9.29434129821300E+0000 -9.28898855998159E+0000 -9.28363008020290E+0000 -9.27826585556693E+0000 -9.27289588276301E+0000 +-9.26752015847876E+0000 -9.26213867940078E+0000 -9.25675144221555E+0000 -9.25135844360625E+0000 -9.24595968025665E+0000 +-9.24055514884913E+0000 -9.23514484606358E+0000 -9.22972876858046E+0000 -9.22430691307738E+0000 -9.21887927623266E+0000 +-9.21344585472173E+0000 -9.20800664521937E+0000 -9.20256164439979E+0000 -9.19711084893561E+0000 -9.19165425549738E+0000 +-9.18619186075614E+0000 -9.18072366138051E+0000 -9.17524965403800E+0000 -9.16976983539621E+0000 -9.16428420211980E+0000 +-9.15879275087286E+0000 -9.15329547831959E+0000 -9.14779238112044E+0000 -9.14228345593722E+0000 -9.13676869942913E+0000 +-9.13124810825445E+0000 -9.12572167907058E+0000 -9.12018940853352E+0000 -9.11465129329770E+0000 -9.10910733001708E+0000 +-9.10355751534428E+0000 -9.09800184593018E+0000 -9.09244031842491E+0000 -9.08687292947798E+0000 -9.08129967573643E+0000 +-9.07572055384685E+0000 -9.07013556045524E+0000 -9.06454469220500E+0000 -9.05894794573942E+0000 -9.05334531770086E+0000 +-9.04773680472920E+0000 -9.04212240346442E+0000 -9.03650211054435E+0000 -9.03087592260681E+0000 -9.02524383628679E+0000 +-9.01960584821973E+0000 -9.01396195503878E+0000 -9.00831215337632E+0000 -9.00265643986370E+0000 -8.99699481113123E+0000 +-8.99132726380731E+0000 -8.98565379451998E+0000 -8.97997439989479E+0000 -8.97428907655819E+0000 -8.96859782113347E+0000 +-8.96290063024389E+0000 -8.95719750051114E+0000 -8.95148842855610E+0000 -8.94577341099762E+0000 -8.94005244445430E+0000 +-8.93432552554259E+0000 -8.92859265087895E+0000 -8.92285381707791E+0000 -8.91710902075283E+0000 -8.91135825851609E+0000 +-8.90560152697844E+0000 -8.89983882275044E+0000 -8.89407014244000E+0000 -8.88829548265551E+0000 -8.88251484000307E+0000 +-8.87672821108799E+0000 -8.87093559251389E+0000 -8.86513698088390E+0000 -8.85933237279971E+0000 -8.85352176486185E+0000 +-8.84770515366938E+0000 -8.84188253582079E+0000 -8.83605390791274E+0000 -8.83021926654089E+0000 -8.82437860830032E+0000 +-8.81853192978372E+0000 -8.81267922758400E+0000 -8.80682049829159E+0000 -8.80095573849690E+0000 -8.79508494478796E+0000 +-8.78920811375303E+0000 -8.78332524197799E+0000 -8.77743632604779E+0000 -8.77154136254683E+0000 -8.76564034805756E+0000 +-8.75973327916176E+0000 -8.75382015243974E+0000 -8.74790096447077E+0000 -8.74197571183242E+0000 -8.73604439110272E+0000 +-8.73010699885606E+0000 -8.72416353166795E+0000 -8.71821398611064E+0000 -8.71225835875771E+0000 -8.70629664617900E+0000 +-8.70032884494469E+0000 -8.69435495162327E+0000 -8.68837496278218E+0000 -8.68238887498785E+0000 -8.67639668480524E+0000 +-8.67039838879805E+0000 -8.66439398352907E+0000 -8.65838346555995E+0000 -8.65236683145099E+0000 -8.64634407776111E+0000 +-8.64031520104857E+0000 -8.63428019787034E+0000 -8.62823906478195E+0000 -8.62219179833664E+0000 -8.61613839508948E+0000 +-8.61007885159177E+0000 -8.60401316439447E+0000 -8.59794133004687E+0000 -8.59186334509809E+0000 -8.58577920609525E+0000 +-8.57968890958455E+0000 -8.57359245211092E+0000 -8.56748983021828E+0000 -8.56138104044908E+0000 -8.55526607934496E+0000 +-8.54914494344609E+0000 -8.54301762929197E+0000 -8.53688413341956E+0000 -8.53074445236643E+0000 -8.52459858266786E+0000 +-8.51844652085833E+0000 -8.51228826347096E+0000 -8.50612380703751E+0000 -8.49995314808950E+0000 -8.49377628315551E+0000 +-8.48759320876525E+0000 -8.48140392144501E+0000 -8.47520841772166E+0000 -8.46900669411980E+0000 -8.46279874716276E+0000 +-8.45658457337356E+0000 -8.45036416927394E+0000 -8.44413753138349E+0000 -8.43790465622124E+0000 -8.43166554030529E+0000 +-8.42542018015240E+0000 -8.41916857227795E+0000 -8.41291071319620E+0000 -8.40664659942058E+0000 -8.40037622746240E+0000 +-8.39409959383306E+0000 -8.38781669504158E+0000 -8.38152752759720E+0000 -8.37523208800621E+0000 -8.36893037277537E+0000 +-8.36262237840947E+0000 -8.35630810141174E+0000 -8.34998753828495E+0000 -8.34366068553095E+0000 -8.33732753964841E+0000 +-8.33098809713783E+0000 -8.32464235449675E+0000 -8.31829030822132E+0000 -8.31193195480728E+0000 -8.30556729074829E+0000 +-8.29919631253824E+0000 -8.29281901666877E+0000 -8.28643539963059E+0000 -8.28004545791305E+0000 -8.27364918800458E+0000 +-8.26724658639273E+0000 -8.26083764956252E+0000 -8.25442237399966E+0000 -8.24800075618737E+0000 -8.24157279260885E+0000 +-8.23513847974414E+0000 -8.22869781407439E+0000 -8.22225079207806E+0000 -8.21579741023288E+0000 -8.20933766501594E+0000 +-8.20287155290134E+0000 -8.19639907036458E+0000 -8.18992021387839E+0000 -8.18343497991418E+0000 -8.17694336494333E+0000 +-8.17044536543449E+0000 -8.16394097785633E+0000 -8.15743019867591E+0000 -8.15091302435940E+0000 -8.14438945137090E+0000 +-8.13785947617521E+0000 -8.13132309523371E+0000 -8.12478030500802E+0000 -8.11823110195860E+0000 -8.11167548254321E+0000 +-8.10511344322026E+0000 -8.09854498044638E+0000 -8.09197009067657E+0000 -8.08538877036540E+0000 -8.07880101596538E+0000 +-8.07220682392835E+0000 -8.06560619070547E+0000 -8.05899911274537E+0000 -8.05238558649648E+0000 -8.04576560840678E+0000 +-8.03913917492105E+0000 -8.03250628248429E+0000 -8.02586692754039E+0000 -8.01922110653163E+0000 -8.01256881589870E+0000 +-8.00591005208207E+0000 -7.99924481152107E+0000 -7.99257309065183E+0000 -7.98589488591233E+0000 -7.97921019373712E+0000 +-7.97251901056006E+0000 -7.96582133281481E+0000 -7.95911715693296E+0000 -7.95240647934452E+0000 -7.94568929647926E+0000 +-7.93896560476560E+0000 -7.93223540063036E+0000 -7.92549868049900E+0000 -7.91875544079676E+0000 -7.91200567794681E+0000 +-7.90524938837189E+0000 -7.89848656849267E+0000 -7.89171721472917E+0000 -7.88494132350070E+0000 -7.87815889122407E+0000 +-7.87136991431635E+0000 -7.86457438919228E+0000 -7.85777231226621E+0000 -7.85096367995106E+0000 -7.84414848865822E+0000 +-7.83732673479858E+0000 -7.83049841478169E+0000 -7.82366352501481E+0000 -7.81682206190544E+0000 -7.80997402186017E+0000 +-7.80311940128217E+0000 -7.79625819657645E+0000 -7.78939040414343E+0000 -7.78251602038608E+0000 -7.77563504170325E+0000 +-7.76874746449380E+0000 -7.76185328515567E+0000 -7.75495250008453E+0000 -7.74804510567697E+0000 -7.74113109832524E+0000 +-7.73421047442343E+0000 -7.72728323036290E+0000 -7.72034936253385E+0000 -7.71340886732560E+0000 -7.70646174112653E+0000 +-7.69950798032369E+0000 -7.69254758130251E+0000 -7.68558054044797E+0000 -7.67860685414325E+0000 -7.67162651877084E+0000 +-7.66463953071161E+0000 -7.65764588634556E+0000 -7.65064558205017E+0000 -7.64363861420543E+0000 -7.63662497918540E+0000 +-7.62960467336688E+0000 -7.62257769312237E+0000 -7.61554403482569E+0000 -7.60850369484888E+0000 -7.60145666956123E+0000 +-7.59440295533250E+0000 -7.58734254853130E+0000 -7.58027544552351E+0000 -7.57320164267594E+0000 -7.56612113635219E+0000 +-7.55903392291657E+0000 -7.55193999873040E+0000 -7.54483936015527E+0000 -7.53773200355113E+0000 -7.53061792527637E+0000 +-7.52349712168848E+0000 -7.51636958914355E+0000 -7.50923532399725E+0000 -7.50209432260317E+0000 -7.49494658131425E+0000 +-7.48779209648228E+0000 -7.48063086445677E+0000 -7.47346288158860E+0000 -7.46628814422434E+0000 -7.45910664871190E+0000 +-7.45191839139579E+0000 -7.44472336862214E+0000 -7.43752157673225E+0000 -7.43031301207020E+0000 -7.42309767097572E+0000 +-7.41587554979014E+0000 -7.40864664485048E+0000 -7.40141095249487E+0000 -7.39416846906011E+0000 -7.38691919088023E+0000 +-7.37966311428977E+0000 -7.37240023562163E+0000 -7.36513055120736E+0000 -7.35785405737670E+0000 -7.35057075045938E+0000 +-7.34328062678378E+0000 -7.33598368267667E+0000 -7.32867991446301E+0000 -7.32136931846730E+0000 -7.31405189101451E+0000 +-7.30672762842437E+0000 -7.29939652701955E+0000 -7.29205858311957E+0000 -7.28471379304256E+0000 -7.27736215310642E+0000 +-7.27000365962749E+0000 -7.26263830892026E+0000 -7.25526609729900E+0000 -7.24788702107662E+0000 -7.24050107656399E+0000 +-7.23310826007287E+0000 -7.22570856791071E+0000 -7.21830199638680E+0000 -7.21088854180766E+0000 -7.20346820047848E+0000 +-7.19604096870421E+0000 -7.18860684278820E+0000 -7.18116581903246E+0000 -7.17371789373715E+0000 -7.16626306320404E+0000 +-7.15880132372922E+0000 -7.15133267161218E+0000 -7.14385710314809E+0000 -7.13637461463213E+0000 -7.12888520235879E+0000 +-7.12138886261982E+0000 -7.11388559170700E+0000 -7.10637538591209E+0000 -7.09885824152207E+0000 -7.09133415482643E+0000 +-7.08380312211102E+0000 -7.07626513966170E+0000 -7.06872020376409E+0000 -7.06116831070040E+0000 -7.05360945675329E+0000 +-7.04604363820249E+0000 -7.03847085132861E+0000 -7.03089109241091E+0000 -7.02330435772569E+0000 -7.01571064354948E+0000 +-7.00810994615722E+0000 -7.00050226182316E+0000 -6.99288758681996E+0000 -6.98526591741916E+0000 -6.97763724989045E+0000 +-6.97000158050400E+0000 -6.96235890552657E+0000 -6.95470922122558E+0000 -6.94705252386711E+0000 -6.93938880971518E+0000 +-6.93171807503268E+0000 -6.92404031608248E+0000 -6.91635552912498E+0000 -6.90866371041989E+0000 -6.90096485622598E+0000 +-6.89325896280070E+0000 -6.88554602640033E+0000 -6.87782604327981E+0000 -6.87009900969178E+0000 -6.86236492189096E+0000 +-6.85462377612748E+0000 -6.84687556865197E+0000 -6.83912029571388E+0000 -6.83135795356111E+0000 -6.82358853843994E+0000 +-6.81581204659665E+0000 -6.80802847427572E+0000 -6.80023781771979E+0000 -6.79244007317061E+0000 -6.78463523686992E+0000 +-6.77682330505763E+0000 -6.76900427397072E+0000 -6.76117813984911E+0000 -6.75334489892680E+0000 -6.74550454743940E+0000 +-6.73765708162205E+0000 -6.72980249770580E+0000 -6.72194079192172E+0000 -6.71407196050200E+0000 -6.70619599967426E+0000 +-6.69831290566731E+0000 -6.69042267470695E+0000 -6.68252530302038E+0000 -6.67462078683070E+0000 -6.66670912236145E+0000 +-6.65879030583415E+0000 -6.65086433347119E+0000 -6.64293120149136E+0000 -6.63499090611253E+0000 -6.62704344355370E+0000 +-6.61908881002955E+0000 -6.61112700175613E+0000 -6.60315801494630E+0000 -6.59518184581339E+0000 -6.58719849056888E+0000 +-6.57920794542315E+0000 -6.57121020658406E+0000 -6.56320527026173E+0000 -6.55519313266109E+0000 -6.54717378998816E+0000 +-6.53914723844832E+0000 -6.53111347424397E+0000 -6.52307249357636E+0000 -6.51502429264838E+0000 -6.50696886765832E+0000 +-6.49890621480495E+0000 -6.49083633028613E+0000 -6.48275921029722E+0000 -6.47467485103334E+0000 -6.46658324868918E+0000 +-6.45848439945689E+0000 -6.45037829952707E+0000 -6.44226494509144E+0000 -6.43414433233852E+0000 -6.42601645745640E+0000 +-6.41788131663134E+0000 -6.40973890604914E+0000 -6.40158922189448E+0000 -6.39343226035089E+0000 -6.38526801759895E+0000 +-6.37709648982172E+0000 -6.36891767319662E+0000 -6.36073156390421E+0000 -6.35253815812075E+0000 -6.34433745202182E+0000 +-6.33612944178412E+0000 -6.32791412358097E+0000 -6.31969149358338E+0000 -6.31146154796488E+0000 -6.30322428289423E+0000 +-6.29497969454133E+0000 -6.28672777907445E+0000 -6.27846853265964E+0000 -6.27020195146315E+0000 -6.26192803164872E+0000 +-6.25364676938011E+0000 -6.24535816081857E+0000 -6.23706220212603E+0000 -6.22875888946191E+0000 -6.22044821898385E+0000 +-6.21213018685035E+0000 -6.20380478921743E+0000 -6.19547202223953E+0000 -6.18713188207039E+0000 -6.17878436486308E+0000 +-6.17042946676952E+0000 -6.16206718393914E+0000 -6.15369751252160E+0000 -6.14532044866382E+0000 -6.13693598851432E+0000 +-6.12854412821753E+0000 -6.12014486391740E+0000 -6.11173819175906E+0000 -6.10332410788192E+0000 -6.09490260842927E+0000 +-6.08647368953984E+0000 -6.07803734735171E+0000 -6.06959357800315E+0000 -6.06114237762927E+0000 -6.05268374236539E+0000 +-6.04421766834685E+0000 -6.03574415170397E+0000 -6.02726318856958E+0000 -6.01877477507423E+0000 -6.01027890734622E+0000 +-6.00177558151381E+0000 -5.99326479370393E+0000 -5.98474654004144E+0000 -5.97622081665145E+0000 -5.96768761965745E+0000 +-5.95914694518137E+0000 -5.95059878934308E+0000 -5.94204314826311E+0000 -5.93348001805998E+0000 -5.92490939485174E+0000 +-5.91633127475325E+0000 -5.90774565388028E+0000 -5.89915252834658E+0000 -5.89055189426404E+0000 -5.88194374774571E+0000 +-5.87332808490100E+0000 -5.86470490183842E+0000 -5.85607419466714E+0000 -5.84743595949317E+0000 -5.83879019242181E+0000 +-5.83013688955816E+0000 -5.82147604700640E+0000 -5.81280766086616E+0000 -5.80413172723956E+0000 -5.79544824222694E+0000 +-5.78675720192587E+0000 -5.77805860243461E+0000 -5.76935243984894E+0000 -5.76063871026395E+0000 -5.75191740977266E+0000 +-5.74318853446880E+0000 -5.73445208044382E+0000 -5.72570804378756E+0000 -5.71695642058876E+0000 -5.70819720693680E+0000 +-5.69943039891723E+0000 -5.69065599261558E+0000 -5.68187398411737E+0000 -5.67308436950520E+0000 -5.66428714486074E+0000 +-5.65548230626564E+0000 -5.64666984979976E+0000 -5.63784977154069E+0000 -5.62902206756667E+0000 -5.62018673395278E+0000 +-5.61134376677524E+0000 -5.60249316210820E+0000 -5.59363491602267E+0000 -5.58476902459142E+0000 -5.57589548388501E+0000 +-5.56701428997144E+0000 -5.55812543891943E+0000 -5.54922892679588E+0000 -5.54032474966561E+0000 -5.53141290359463E+0000 +-5.52249338464480E+0000 -5.51356618887871E+0000 -5.50463131235688E+0000 -5.49568875113937E+0000 -5.48673850128557E+0000 +-5.47778055885101E+0000 -5.46881491989348E+0000 -5.45984158046758E+0000 -5.45086053662703E+0000 -5.44187178442485E+0000 +-5.43287531991245E+0000 -5.42387113913946E+0000 -5.41485923815617E+0000 -5.40583961300945E+0000 -5.39681225974755E+0000 +-5.38777717441440E+0000 -5.37873435305596E+0000 -5.36968379171435E+0000 -5.36062548643190E+0000 -5.35155943325071E+0000 +-5.34248562820972E+0000 -5.33340406734669E+0000 -5.32431474669966E+0000 -5.31521766230685E+0000 -5.30611281019992E+0000 +-5.29700018641506E+0000 -5.28787978698347E+0000 -5.27875160793769E+0000 -5.26961564530870E+0000 -5.26047189512428E+0000 +-5.25132035341289E+0000 -5.24216101620163E+0000 -5.23299387951533E+0000 -5.22381893938041E+0000 -5.21463619181804E+0000 +-5.20544563285193E+0000 -5.19624725850190E+0000 -5.18704106478799E+0000 -5.17782704772935E+0000 -5.16860520334330E+0000 +-5.15937552764490E+0000 -5.15013801665100E+0000 -5.14089266637438E+0000 -5.13163947282806E+0000 -5.12237843202365E+0000 +-5.11310953997190E+0000 -5.10383279268126E+0000 -5.09454818616018E+0000 -5.08525571641530E+0000 -5.07595537945213E+0000 +-5.06664717127569E+0000 -5.05733108788991E+0000 -5.04800712529504E+0000 -5.03867527949410E+0000 -5.02933554648553E+0000 +-5.01998792226800E+0000 -5.01063240284043E+0000 -5.00126898419740E+0000 -4.99189766233394E+0000 -4.98251843324556E+0000 +-4.97313129292365E+0000 -4.96373623736099E+0000 -4.95433326254670E+0000 -4.94492236447013E+0000 -4.93550353912087E+0000 +-4.92607678248396E+0000 -4.91664209054602E+0000 -4.90719945929163E+0000 -4.89774888470356E+0000 -4.88829036276456E+0000 +-4.87882388945536E+0000 -4.86934946075553E+0000 -4.85986707264419E+0000 -4.85037672109866E+0000 -4.84087840209554E+0000 +-4.83137211160988E+0000 -4.82185784561534E+0000 -4.81233560008445E+0000 -4.80280537098974E+0000 -4.79326715430034E+0000 +-4.78372094598649E+0000 -4.77416674201640E+0000 -4.76460453835625E+0000 -4.75503433097288E+0000 -4.74545611582835E+0000 +-4.73586988888883E+0000 -4.72627564611594E+0000 -4.71667338346924E+0000 -4.70706309690968E+0000 -4.69744478239659E+0000 +-4.68781843588658E+0000 -4.67818405333583E+0000 -4.66854163069979E+0000 -4.65889116393237E+0000 -4.64923264898630E+0000 +-4.63956608181411E+0000 -4.62989145836514E+0000 -4.62020877458872E+0000 -4.61051802643419E+0000 -4.60081920984658E+0000 +-4.59111232077316E+0000 -4.58139735515806E+0000 -4.57167430894424E+0000 -4.56194317807490E+0000 -4.55220395849074E+0000 +-4.54245664613086E+0000 -4.53270123693505E+0000 -4.52293772683993E+0000 -4.51316611178231E+0000 -4.50338638769745E+0000 +-4.49359855051966E+0000 -4.48380259618102E+0000 -4.47399852061335E+0000 -4.46418631974848E+0000 -4.45436598951324E+0000 +-4.44453752583786E+0000 -4.43470092464850E+0000 -4.42485618187106E+0000 -4.41500329342989E+0000 -4.40514225524907E+0000 +-4.39527306325044E+0000 -4.38539571335468E+0000 -4.37551020148294E+0000 -4.36561652355249E+0000 -4.35571467548198E+0000 +-4.34580465318754E+0000 -4.33588645258419E+0000 -4.32596006958602E+0000 -4.31602550010598E+0000 -4.30608274005613E+0000 +-4.29613178534623E+0000 -4.28617263188539E+0000 -4.27620527558292E+0000 -4.26622971234542E+0000 -4.25624593807925E+0000 +-4.24625394868735E+0000 -4.23625374007543E+0000 -4.22624530814323E+0000 -4.21622864879419E+0000 -4.20620375792760E+0000 +-4.19617063144165E+0000 -4.18612926523383E+0000 -4.17607965520142E+0000 -4.16602179723986E+0000 -4.15595568724166E+0000 +-4.14588132110134E+0000 -4.13579869470982E+0000 -4.12570780395754E+0000 -4.11560864473495E+0000 -4.10550121292931E+0000 +-4.09538550442812E+0000 -4.08526151511728E+0000 -4.07512924088041E+0000 -4.06498867760183E+0000 -4.05483982116402E+0000 +-4.04468266744834E+0000 -4.03451721233409E+0000 -4.02434345170036E+0000 -4.01416138142531E+0000 -4.00397099738484E+0000 +-3.99377229545439E+0000 -3.98356527150827E+0000 -3.97334992141873E+0000 -3.96312624105826E+0000 -3.95289422629753E+0000 +-3.94265387300538E+0000 -3.93240517705090E+0000 -3.92214813430019E+0000 -3.91188274061983E+0000 -3.90160899187413E+0000 +-3.89132688392669E+0000 -3.88103641264092E+0000 -3.87073757387611E+0000 -3.86043036349361E+0000 -3.85011477735225E+0000 +-3.83979081130883E+0000 -3.82945846122152E+0000 -3.81911772294393E+0000 -3.80876859233149E+0000 -3.79841106523622E+0000 +-3.78804513751015E+0000 -3.77767080500416E+0000 -3.76728806356823E+0000 -3.75689690904983E+0000 -3.74649733729620E+0000 +-3.73608934415370E+0000 -3.72567292546614E+0000 -3.71524807707942E+0000 -3.70481479483260E+0000 -3.69437307457019E+0000 +-3.68392291212945E+0000 -3.67346430335101E+0000 -3.66299724407304E+0000 -3.65252173013027E+0000 -3.64203775735928E+0000 +-3.63154532159433E+0000 -3.62104441866745E+0000 -3.61053504441179E+0000 -3.60001719465708E+0000 -3.58949086523421E+0000 +-3.57895605196950E+0000 -3.56841275069223E+0000 -3.55786095722624E+0000 -3.54730066739808E+0000 -3.53673187703043E+0000 +-3.52615458194578E+0000 -3.51556877796588E+0000 -3.50497446091094E+0000 -3.49437162659956E+0000 -3.48376027084896E+0000 +-3.47314038947729E+0000 -3.46251197829906E+0000 -3.45187503312741E+0000 -3.44122954977774E+0000 -3.43057552406094E+0000 +-3.41991295178673E+0000 -3.40924182876506E+0000 -3.39856215080545E+0000 -3.38787391371443E+0000 -3.37717711329788E+0000 +-3.36647174536120E+0000 -3.35575780570662E+0000 -3.34503529013887E+0000 -3.33430419445767E+0000 -3.32356451446321E+0000 +-3.31281624595590E+0000 -3.30205938473182E+0000 -3.29129392658865E+0000 -3.28051986732157E+0000 -3.26973720272440E+0000 +-3.25894592859186E+0000 -3.24814604071457E+0000 -3.23733753488273E+0000 -3.22652040688718E+0000 -3.21569465251628E+0000 +-3.20486026755702E+0000 -3.19401724779482E+0000 -3.18316558901597E+0000 -3.17230528700270E+0000 -3.16143633753882E+0000 +-3.15055873640517E+0000 -3.13967247938194E+0000 -3.12877756224793E+0000 -3.11787398078127E+0000 -3.10696173075985E+0000 +-3.09604080795725E+0000 -3.08511120814910E+0000 -3.07417292710761E+0000 -3.06322596060545E+0000 -3.05227030441370E+0000 +-3.04130595430115E+0000 -3.03033290603662E+0000 -3.01935115538799E+0000 -3.00836069812090E+0000 -2.99736153000003E+0000 +-2.98635364678967E+0000 -2.97533704425246E+0000 -2.96431171814947E+0000 -2.95327766424157E+0000 -2.94223487828754E+0000 +-2.93118335604436E+0000 -2.92012309326992E+0000 -2.90905408571939E+0000 -2.89797632914861E+0000 -2.88688981930818E+0000 +-2.87579455195146E+0000 -2.86469052282996E+0000 -2.85357772769316E+0000 -2.84245616228873E+0000 -2.83132582236408E+0000 +-2.82018670366642E+0000 -2.80903880193978E+0000 -2.79788211292885E+0000 -2.78671663237537E+0000 -2.77554235602247E+0000 +-2.76435927960847E+0000 -2.75316739887353E+0000 -2.74196670955553E+0000 -2.73075720739189E+0000 -2.71953888811595E+0000 +-2.70831174746536E+0000 -2.69707578117186E+0000 -2.68583098496720E+0000 -2.67457735458220E+0000 -2.66331488574770E+0000 +-2.65204357419179E+0000 -2.64076341564169E+0000 -2.62947440582366E+0000 -2.61817654046217E+0000 -2.60686981528352E+0000 +-2.59555422600761E+0000 -2.58422976835755E+0000 -2.57289643805325E+0000 -2.56155423081373E+0000 -2.55020314235799E+0000 +-2.53884316840231E+0000 -2.52747430466115E+0000 -2.51609654685035E+0000 -2.50470989068390E+0000 -2.49331433187172E+0000 +-2.48190986612735E+0000 -2.47049648915936E+0000 -2.45907419667537E+0000 -2.44764298438577E+0000 -2.43620284799499E+0000 +-2.42475378320705E+0000 -2.41329578572822E+0000 -2.40182885125841E+0000 -2.39035297550254E+0000 -2.37886815416005E+0000 +-2.36737438292903E+0000 -2.35587165750758E+0000 -2.34435997359378E+0000 -2.33283932688255E+0000 -2.32130971306970E+0000 +-2.30977112784740E+0000 -2.29822356690784E+0000 -2.28666702594319E+0000 -2.27510150064199E+0000 -2.26352698669280E+0000 +-2.25194347978459E+0000 -2.24035097560318E+0000 -2.22874946983347E+0000 -2.21713895816038E+0000 -2.20551943626515E+0000 +-2.19389089983088E+0000 -2.18225334453791E+0000 -2.17060676606343E+0000 -2.15895116008869E+0000 -2.14728652228951E+0000 +-2.13561284834168E+0000 -2.12393013391829E+0000 -2.11223837469515E+0000 -2.10053756634306E+0000 -2.08882770453465E+0000 +-2.07710878493799E+0000 -2.06538080322298E+0000 -2.05364375505769E+0000 -2.04189763610702E+0000 -2.03014244203723E+0000 +-2.01837816851321E+0000 -2.00660481119621E+0000 -1.99482236574886E+0000 -1.98303082783013E+0000 -1.97123019310266E+0000 +-1.95942045722177E+0000 -1.94760161584554E+0000 -1.93577366463069E+0000 -1.92393659923073E+0000 -1.91209041529964E+0000 +-1.90023510848960E+0000 -1.88837067445183E+0000 -1.87649710883670E+0000 -1.86461440729227E+0000 -1.85272256546659E+0000 +-1.84082157900730E+0000 -1.82891144355744E+0000 -1.81699215476328E+0000 -1.80506370826606E+0000 -1.79312609971021E+0000 +-1.78117932473242E+0000 -1.76922337897577E+0000 -1.75725825807649E+0000 -1.74528395767265E+0000 -1.73330047339869E+0000 +-1.72130780089219E+0000 -1.70930593578396E+0000 -1.69729487370796E+0000 -1.68527461029498E+0000 -1.67324514117581E+0000 +-1.66120646197760E+0000 -1.64915856832977E+0000 -1.63710145585765E+0000 -1.62503512018748E+0000 -1.61295955694413E+0000 +-1.60087476174886E+0000 -1.58878073022424E+0000 -1.57667745799154E+0000 -1.56456494067061E+0000 -1.55244317387860E+0000 +-1.54031215323312E+0000 -1.52817187435176E+0000 -1.51602233284575E+0000 -1.50386352433179E+0000 -1.49169544442202E+0000 +-1.47951808872585E+0000 -1.46733145285634E+0000 -1.45513553241926E+0000 -1.44293032302539E+0000 -1.43071582027869E+0000 +-1.41849201978721E+0000 -1.40625891715354E+0000 -1.39401650798072E+0000 -1.38176478787273E+0000 -1.36950375242759E+0000 +-1.35723339724609E+0000 -1.34495371792673E+0000 -1.33266471006755E+0000 -1.32036636926296E+0000 -1.30805869110873E+0000 +-1.29574167119881E+0000 -1.28341530512535E+0000 -1.27107958848092E+0000 -1.25873451685311E+0000 -1.24638008583315E+0000 +-1.23401629100863E+0000 -1.22164312796622E+0000 -1.20926059229123E+0000 -1.19686867956761E+0000 -1.18446738537887E+0000 +-1.17205670530620E+0000 -1.15963663493221E+0000 -1.14720716983720E+0000 -1.13476830559557E+0000 -1.12232003778809E+0000 +-1.10986236199051E+0000 -1.09739527377633E+0000 -1.08491876872131E+0000 -1.07243284239712E+0000 -1.05993749037589E+0000 +-1.04743270822564E+0000 -1.03491849151851E+0000 -1.02239483582025E+0000 -1.00986173669935E+0000 -9.97319189719747E-0001 +-9.84767190446291E-0001 -9.72205734442014E-0001 -9.59634817270853E-0001 -9.47054434492202E-0001 -9.34464581665452E-0001 +-9.21865254350450E-0001 -9.09256448103406E-0001 -8.96638158481892E-0001 -8.84010381039388E-0001 -8.71373111329831E-0001 +-8.58726344907609E-0001 -8.46070077323020E-0001 -8.33404304127271E-0001 -8.20729020867475E-0001 -8.08044223093020E-0001 +-7.95349906352840E-0001 -7.82646066188590E-0001 -7.69932698147841E-0001 -7.57209797773612E-0001 -7.44477360605742E-0001 +-7.31735382187708E-0001 -7.18983858058891E-0001 -7.06222783755948E-0001 -6.93452154819624E-0001 -6.80671966783393E-0001 +-6.67882215183454E-0001 -6.55082895554187E-0001 -6.42274003427246E-0001 -6.29455534335648E-0001 -6.16627483809225E-0001 +-6.03789847378266E-0001 -5.90942620567603E-0001 -5.78085798908432E-0001 -5.65219377922858E-0001 -5.52343353138440E-0001 +-5.39457720076371E-0001 -5.26562474259663E-0001 -5.13657611209055E-0001 -5.00743126445286E-0001 -4.87819015487730E-0001 +-4.74885273851214E-0001 -4.61941897053748E-0001 -4.48988880611978E-0001 -4.36026220037547E-0001 -4.23053910842555E-0001 +-4.10071948543191E-0001 -3.97080328646098E-0001 -3.84079046661554E-0001 -3.71068098098476E-0001 -3.58047478462595E-0001 +-3.45017183261461E-0001 -3.31977207997170E-0001 -3.18927548176362E-0001 -3.05868199297947E-0001 -2.92799156865840E-0001 +-2.79720416378950E-0001 -2.66631973335734E-0001 -2.53533823236467E-0001 -2.40425961572782E-0001 -2.27308383843592E-0001 +-2.14181085542350E-0001 -2.01044062160690E-0001 -1.87897309192067E-0001 -1.74740822126296E-0001 -1.61574596453647E-0001 +-1.48398627661209E-0001 -1.35212911236067E-0001 -1.22017442664400E-0001 -1.08812217431022E-0001 -9.55972310207471E-0002 +-8.23724789142943E-0002 -6.91379565928401E-0002 -5.58936595366504E-0002 -4.26395832259914E-0002 -2.93757231388554E-0002 +-1.61020747482326E-0002 -2.81863353302469E-0003 1.04746050360518E-0002 2.37776454810046E-0002 3.70904923333910E-0002 + 5.04131501229494E-0002 6.37456233785088E-0002 7.70879166325358E-0002 9.04400344161331E-0002 1.03801981265405E-0001 + 1.17173761715548E-0001 1.30555380302212E-0001 1.43946841562411E-0001 1.57348150036341E-0001 1.70759310261928E-0001 + 1.84180326781188E-0001 1.97611204137047E-0001 2.11051946871976E-0001 2.24502559529355E-0001 2.37963046658024E-0001 + 2.51433412802726E-0001 2.64913662510935E-0001 2.78403800335127E-0001 2.91903830820957E-0001 3.05413758523628E-0001 + 3.18933587993797E-0001 3.32463323785760E-0001 3.46002970456539E-0001 3.59552532559974E-0001 3.73112014656272E-0001 + 3.86681421301091E-0001 4.00260757054639E-0001 4.13850026479395E-0001 4.27449234136475E-0001 4.41058384589724E-0001 + 4.54677482402985E-0001 4.68306532142378E-0001 4.81945538374475E-0001 4.95594505666759E-0001 5.09253438588075E-0001 + 5.22922341711819E-0001 5.36601219605927E-0001 5.50290076843339E-0001 5.63988918000177E-0001 5.77697747649381E-0001 + 5.91416570369347E-0001 6.05145390733924E-0001 6.18884213324236E-0001 6.32633042720499E-0001 6.46391883501110E-0001 + 6.60160740249921E-0001 6.73939617549877E-0001 6.87728519985740E-0001 7.01527452140908E-0001 7.15336418605148E-0001 + 7.29155423964130E-0001 7.42984472806711E-0001 7.56823569724020E-0001 7.70672719308550E-0001 7.84531926151885E-0001 + 7.98401194846974E-0001 8.12280529989494E-0001 8.26169936175120E-0001 8.40069418001349E-0001 8.53978980067041E-0001 + 8.67898626972419E-0001 8.81828363315435E-0001 8.95768193701315E-0001 9.09718122731192E-0001 9.23678155009384E-0001 + 9.37648295142026E-0001 9.51628547735709E-0001 9.65618917396569E-0001 9.79619408737562E-0001 9.93630026365281E-0001 + 1.00765077489223E+0000 1.02168165893090E+0000 1.03572268309335E+0000 1.04977385199663E+0000 1.06383517025597E+0000 + 1.07790664248841E+0000 1.09198827331193E+0000 1.10608006734765E+0000 1.12018202921354E+0000 1.13429416353483E+0000 + 1.14841647493176E+0000 1.16254896802820E+0000 1.17669164745212E+0000 1.19084451782828E+0000 1.20500758378603E+0000 + 1.21918084995059E+0000 1.23336432095630E+0000 1.24755800143157E+0000 1.26176189600983E+0000 1.27597600932449E+0000 + 1.29020034601126E+0000 1.30443491070309E+0000 1.31867970804024E+0000 1.33293474265975E+0000 1.34720001920186E+0000 + 1.36147554230547E+0000 1.37576131661308E+0000 1.39005734676721E+0000 1.40436363741310E+0000 1.41868019319554E+0000 + 1.43300701876069E+0000 1.44734411875561E+0000 1.46169149782963E+0000 1.47604916063437E+0000 1.49041711181872E+0000 + 1.50479535603563E+0000 1.51918389793809E+0000 1.53358274218135E+0000 1.54799189342066E+0000 1.56241135631535E+0000 + 1.57684113551977E+0000 1.59128123569553E+0000 1.60573166150289E+0000 1.62019241760436E+0000 1.63466350866020E+0000 + 1.64914493933657E+0000 1.66363671429735E+0000 1.67813883821100E+0000 1.69265131574275E+0000 1.70717415156105E+0000 + 1.72170735033797E+0000 1.73625091674421E+0000 1.75080485545004E+0000 1.76536917112981E+0000 1.77994386845830E+0000 + 1.79452895211125E+0000 1.80912442676527E+0000 1.82373029709925E+0000 1.83834656779118E+0000 1.85297324352132E+0000 + 1.86761032897221E+0000 1.88225782882591E+0000 1.89691574776816E+0000 1.91158409048194E+0000 1.92626286165341E+0000 + 1.94095206597103E+0000 1.95565170812324E+0000 1.97036179279939E+0000 1.98508232469067E+0000 1.99981330849005E+0000 + 2.01455474888826E+0000 2.02930665058238E+0000 2.04406901826724E+0000 2.05884185663763E+0000 2.07362517039473E+0000 + 2.08841896423519E+0000 2.10322324286108E+0000 2.11803801097267E+0000 2.13286327327341E+0000 2.14769903446722E+0000 + 2.16254529925709E+0000 2.17740207235238E+0000 2.19226935845654E+0000 2.20714716228167E+0000 2.22203548853622E+0000 + 2.23693434193001E+0000 2.25184372717604E+0000 2.26676364898685E+0000 2.28169411207818E+0000 2.29663512116394E+0000 + 2.31158668096032E+0000 2.32654879618667E+0000 2.34152147156237E+0000 2.35650471180543E+0000 2.37149852164066E+0000 + 2.38650290578653E+0000 2.40151786896968E+0000 2.41654341591402E+0000 2.43157955134620E+0000 2.44662627999242E+0000 + 2.46168360658066E+0000 2.47675153584169E+0000 2.49183007250713E+0000 2.50691922130636E+0000 2.52201898697467E+0000 + 2.53712937424416E+0000 2.55225038785238E+0000 2.56738203253508E+0000 2.58252431302844E+0000 2.59767723407413E+0000 + 2.61284080041059E+0000 2.62801501678041E+0000 2.64319988792340E+0000 2.65839541858531E+0000 2.67360161351144E+0000 + 2.68881847744615E+0000 2.70404601513701E+0000 2.71928423133249E+0000 2.73453313078153E+0000 2.74979271823531E+0000 + 2.76506299844596E+0000 2.78034397616511E+0000 2.79563565614944E+0000 2.81093804315151E+0000 2.82625114192797E+0000 + 2.84157495723912E+0000 2.85690949384161E+0000 2.87225475649575E+0000 2.88761074996228E+0000 2.90297747900422E+0000 + 2.91835494838460E+0000 2.93374316287009E+0000 2.94914212722324E+0000 2.96455184621300E+0000 2.97997232460693E+0000 + 2.99540356717580E+0000 3.01084557868853E+0000 3.02629836391770E+0000 3.04176192763452E+0000 3.05723627461521E+0000 + 3.07272140963369E+0000 3.08821733746663E+0000 3.10372406289116E+0000 3.11924159068667E+0000 3.13476992563301E+0000 + 3.15030907251230E+0000 3.16585903610439E+0000 3.18141982119278E+0000 3.19699143256457E+0000 3.21257387500418E+0000 + 3.22816715329736E+0000 3.24377127223306E+0000 3.25938623659977E+0000 3.27501205119097E+0000 3.29064872079607E+0000 + 3.30629625020538E+0000 3.32195464421648E+0000 3.33762390762286E+0000 3.35330404522210E+0000 3.36899506180953E+0000 + 3.38469696218499E+0000 3.40040975114971E+0000 3.41613343350127E+0000 3.43186801404363E+0000 3.44761349758210E+0000 + 3.46336988891744E+0000 3.47913719285725E+0000 3.49491541420775E+0000 3.51070455777790E+0000 3.52650462837482E+0000 + 3.54231563081112E+0000 3.55813756989664E+0000 3.57397045044581E+0000 3.58981427727122E+0000 3.60566905518681E+0000 + 3.62153478901018E+0000 3.63741148355848E+0000 3.65329914365020E+0000 3.66919777410430E+0000 3.68510737974202E+0000 + 3.70102796538640E+0000 3.71695953585913E+0000 3.73290209598645E+0000 3.74885565059276E+0000 3.76482020450158E+0000 + 3.78079576254595E+0000 3.79678232955303E+0000 3.81277991035267E+0000 3.82878850977613E+0000 3.84480813265554E+0000 + 3.86083878382578E+0000 3.87688046812127E+0000 3.89293319037733E+0000 3.90899695543249E+0000 3.92507176812342E+0000 + 3.94115763329182E+0000 3.95725455577758E+0000 3.97336254042193E+0000 3.98948159206793E+0000 4.00561171555910E+0000 + 4.02175291574395E+0000 4.03790519746644E+0000 4.05406856557465E+0000 4.07024302491800E+0000 4.08642858034682E+0000 + 4.10262523671145E+0000 4.11883299886358E+0000 4.13505187165993E+0000 4.15128185995218E+0000 4.16752296859840E+0000 + 4.18377520245485E+0000 4.20003856637868E+0000 4.21631306523113E+0000 4.23259870387210E+0000 4.24889548716283E+0000 + 4.26520341996684E+0000 4.28152250714857E+0000 4.29785275357244E+0000 4.31419416410517E+0000 4.33054674361711E+0000 + 4.34691049697085E+0000 4.36328542904312E+0000 4.37967154470016E+0000 4.39606884881732E+0000 4.41247734626722E+0000 + 4.42889704192339E+0000 4.44532794066390E+0000 4.46177004736273E+0000 4.47822336689933E+0000 4.49468790415449E+0000 + 4.51116366400811E+0000 4.52765065134008E+0000 4.54414887103439E+0000 4.56065832797640E+0000 4.57717902705008E+0000 + 4.59371097314170E+0000 4.61025417113888E+0000 4.62680862592924E+0000 4.64337434240497E+0000 4.65995132545640E+0000 + 4.67653957997345E+0000 4.69313911085146E+0000 4.70974992298579E+0000 4.72637202127089E+0000 4.74300541060347E+0000 + 4.75965009588163E+0000 4.77630608200479E+0000 4.79297337387470E+0000 4.80965197639125E+0000 4.82634189445662E+0000 + 4.84304313297662E+0000 4.85975569685525E+0000 4.87647959099922E+0000 4.89321482031573E+0000 4.90996138971286E+0000 + 4.92671930410006E+0000 4.94348856839042E+0000 4.96026918749294E+0000 4.97706116632344E+0000 4.99386450979500E+0000 + 5.01067922282391E+0000 5.02750531032598E+0000 5.04434277722066E+0000 5.06119162842651E+0000 5.07805186886299E+0000 + 5.09492350345135E+0000 5.11180653711517E+0000 5.12870097477844E+0000 5.14560682136516E+0000 5.16252408180299E+0000 + 5.17945276101682E+0000 5.19639286393658E+0000 5.21334439549173E+0000 5.23030736061355E+0000 5.24728176423378E+0000 + 5.26426761128459E+0000 5.28126490670184E+0000 5.29827365541996E+0000 5.31529386237571E+0000 5.33232553250764E+0000 + 5.34936867075248E+0000 5.36642328205471E+0000 5.38348937135061E+0000 5.40056694358600E+0000 5.41765600370354E+0000 + 5.43475655664815E+0000 5.45186860736521E+0000 5.46899216080374E+0000 5.48612722191001E+0000 5.50327379563487E+0000 + 5.52043188692778E+0000 5.53760150074186E+0000 5.55478264202884E+0000 5.57197531574502E+0000 5.58917952684351E+0000 + 5.60639528028150E+0000 5.62362258101803E+0000 5.64086143400937E+0000 5.65811184421818E+0000 5.67537381660441E+0000 + 5.69264735612933E+0000 5.70993246775879E+0000 5.72722915645727E+0000 5.74453742718788E+0000 5.76185728492010E+0000 + 5.77918873462158E+0000 5.79653178126318E+0000 5.81388642981346E+0000 5.83125268524373E+0000 5.84863055252845E+0000 + 5.86602003664120E+0000 5.88342114255693E+0000 5.90083387525328E+0000 5.91825823970657E+0000 5.93569424089446E+0000 + 5.95314188380007E+0000 5.97060117340106E+0000 5.98807211468238E+0000 6.00555471262760E+0000 6.02304897221802E+0000 + 6.04055489844131E+0000 6.05807249628469E+0000 6.07560177073810E+0000 6.09314272678648E+0000 6.11069536942432E+0000 + 6.12825970363974E+0000 6.14583573442860E+0000 6.16342346678357E+0000 6.18102290569914E+0000 6.19863405617298E+0000 + 6.21625692320231E+0000 6.23389151178344E+0000 6.25153782691905E+0000 6.26919587360817E+0000 6.28686565685484E+0000 + 6.30454718166084E+0000 6.32224045303110E+0000 6.33994547597149E+0000 6.35766225548878E+0000 6.37539079658927E+0000 + 6.39313110428475E+0000 6.41088318358607E+0000 6.42864703949999E+0000 6.44642267704376E+0000 6.46421010122867E+0000 + 6.48200931707197E+0000 6.49982032958860E+0000 6.51764314379488E+0000 6.53547776471078E+0000 6.55332419735487E+0000 + 6.57118244674939E+0000 6.58905251791612E+0000 6.60693441587682E+0000 6.62482814565647E+0000 6.64273371228137E+0000 + 6.66065112077786E+0000 6.67858037617225E+0000 6.69652148349542E+0000 6.71447444777732E+0000 6.73243927405019E+0000 + 6.75041596734445E+0000 6.76840453269506E+0000 6.78640497513561E+0000 6.80441729970335E+0000 6.82244151143595E+0000 + 6.84047761537158E+0000 6.85852561654929E+0000 6.87658552000858E+0000 6.89465733079351E+0000 6.91274105394450E+0000 + 6.93083669450880E+0000 6.94894425753182E+0000 6.96706374805626E+0000 6.98519517113391E+0000 7.00333853181201E+0000 + 7.02149383514052E+0000 7.03966108617078E+0000 7.05784028995640E+0000 7.07603145154826E+0000 7.09423457600315E+0000 + 7.11244966837603E+0000 7.13067673372598E+0000 7.14891577710978E+0000 7.16716680358559E+0000 7.18542981821611E+0000 + 7.20370482606222E+0000 7.22199183218618E+0000 7.24029084165431E+0000 7.25860185952843E+0000 7.27692489087667E+0000 + 7.29525994076857E+0000 7.31360701427093E+0000 7.33196611645371E+0000 7.35033725238691E+0000 7.36872042714685E+0000 + 7.38711564580217E+0000 7.40552291342965E+0000 7.42394223510701E+0000 7.44237361590785E+0000 7.46081706091172E+0000 + 7.47927257519859E+0000 7.49774016384754E+0000 7.51621983193991E+0000 7.53471158456068E+0000 7.55321542679303E+0000 + 7.57173136372103E+0000 7.59025940043148E+0000 7.60879954201164E+0000 7.62735179355150E+0000 7.64591616013968E+0000 + 7.66449264686617E+0000 7.68308125882550E+0000 7.70168200110993E+0000 7.72029487881355E+0000 7.73891989703225E+0000 + 7.75755706086329E+0000 7.77620637540394E+0000 7.79486784575374E+0000 7.81354147701313E+0000 7.83222727428347E+0000 + 7.85092524266702E+0000 7.86963538726741E+0000 7.88835771319191E+0000 7.90709222554415E+0000 7.92583892943139E+0000 + 7.94459782996501E+0000 7.96336893225271E+0000 7.98215224140540E+0000 8.00094776253400E+0000 8.01975550075258E+0000 + 8.03857546117661E+0000 8.05740764892198E+0000 8.07625206910325E+0000 8.09510872683950E+0000 8.11397762724800E+0000 + 8.13285877545150E+0000 8.15175217656997E+0000 8.17065783572843E+0000 8.18957575804461E+0000 8.20850594865033E+0000 + 8.22744841266785E+0000 8.24640315522493E+0000 8.26537018145063E+0000 8.28434949647362E+0000 8.30334110542435E+0000 + 8.32234501343464E+0000 8.34136122564041E+0000 8.36038974717212E+0000 8.37943058316750E+0000 8.39848373876248E+0000 + 8.41754921909387E+0000 8.43662702930169E+0000 8.45571717452594E+0000 8.47481965990892E+0000 8.49393449059016E+0000 + 8.51306167171469E+0000 8.53220120842889E+0000 8.55135310587593E+0000 8.57051736920448E+0000 8.58969400356318E+0000 + 8.60888301409977E+0000 8.62808440596609E+0000 8.64729818431351E+0000 8.66652435429614E+0000 8.68576292106536E+0000 + 8.70501388977937E+0000 8.72427726559272E+0000 8.74355305366362E+0000 8.76284125915026E+0000 8.78214188721495E+0000 + 8.80145494301496E+0000 8.82078043171578E+0000 8.84011835847969E+0000 8.85946872847171E+0000 8.87883154685596E+0000 + 8.89820681880110E+0000 8.91759454947396E+0000 8.93699474404593E+0000 8.95640740768522E+0000 8.97583254556594E+0000 + 8.99527016285856E+0000 9.01472026473721E+0000 9.03418285637781E+0000 9.05365794295722E+0000 9.07314552965136E+0000 + 9.09264562164026E+0000 9.11215822410213E+0000 9.13168334221973E+0000 9.15122098117445E+0000 9.17077114615040E+0000 + 9.19033384233080E+0000 9.20990907490068E+0000 9.22949684904961E+0000 9.24909716996171E+0000 9.26871004283021E+0000 + 9.28833547284194E+0000 9.30797346519194E+0000 9.32762402506978E+0000 9.34728715767051E+0000 9.36696286818824E+0000 + 9.38665116181983E+0000 9.40635204376485E+0000 9.42606551921835E+0000 9.44579159338082E+0000 9.46553027145364E+0000 + 9.48528155864096E+0000 9.50504546014145E+0000 9.52482198116195E+0000 9.54461112690660E+0000 9.56441290258681E+0000 + 9.58422731340397E+0000 9.60405436456949E+0000 9.62389406129569E+0000 9.64374640879123E+0000 9.66361141227117E+0000 + 9.68348907694690E+0000 9.70337940803438E+0000 9.72328241074774E+0000 9.74319809030840E+0000 9.76312645193138E+0000 + 9.78306750083539E+0000 9.80302124224454E+0000 9.82298768137844E+0000 9.84296682345939E+0000 9.86295867371336E+0000 + 9.88296323736449E+0000 9.90298051964146E+0000 9.92301052576840E+0000 9.94305326097856E+0000 9.96310873049970E+0000 + 9.98317693956051E+0000 1.00032578933960E+0001 1.00233515972422E+0001 1.00434580563305E+0001 1.00635772758960E+0001 + 1.00837092611791E+0001 1.01038540174140E+0001 1.01240115498449E+0001 1.01441818637076E+0001 1.01643649642455E+0001 + 1.01845608567045E+0001 1.02047695463243E+0001 1.02249910383543E+0001 1.02452253380352E+0001 1.02654724506192E+0001 + 1.02857323813550E+0001 1.03060051354887E+0001 1.03262907182770E+0001 1.03465891349678E+0001 1.03669003908162E+0001 + 1.03872244910753E+0001 1.04075614410048E+0001 1.04279112458571E+0001 1.04482739108907E+0001 1.04686494413654E+0001 + 1.04890378425452E+0001 1.05094391196862E+0001 1.05298532780570E+0001 1.05502803229164E+0001 1.05707202595313E+0001 + 1.05911730931684E+0001 1.06116388290947E+0001 1.06321174725799E+0001 1.06526090288916E+0001 1.06731135033023E+0001 + 1.06936309010825E+0001 1.07141612275099E+0001 1.07347044878533E+0001 1.07552606873896E+0001 1.07758298313992E+0001 + 1.07964119251555E+0001 1.08170069739417E+0001 1.08376149830355E+0001 1.08582359577176E+0001 1.08788699032729E+0001 + 1.08995168249857E+0001 1.09201767281383E+0001 1.09408496180185E+0001 1.09615354999114E+0001 1.09822343791074E+0001 + 1.10029462608981E+0001 1.10236711505695E+0001 1.10444090534183E+0001 1.10651599747343E+0001 1.10859239198125E+0001 + 1.11067008939489E+0001 1.11274909024414E+0001 1.11482939505858E+0001 1.11691100436819E+0001 1.11899391870274E+0001 + 1.12107813859283E+0001 1.12316366456852E+0001 1.12525049716005E+0001 1.12733863689791E+0001 1.12942808431280E+0001 + 1.13151883993532E+0001 1.13361090429662E+0001 1.13570427792719E+0001 1.13779896135838E+0001 1.13989495512132E+0001 + 1.14199225974716E+0001 1.14409087576768E+0001 1.14619080371403E+0001 1.14829204411789E+0001 1.15039459751142E+0001 + 1.15249846442602E+0001 1.15460364539412E+0001 1.15671014094732E+0001 1.15881795161813E+0001 1.16092707793923E+0001 + 1.16303752044268E+0001 1.16514927966118E+0001 1.16726235612713E+0001 1.16937675037388E+0001 1.17149246293420E+0001 + 1.17360949434096E+0001 1.17572784512731E+0001 1.17784751582667E+0001 1.17996850697254E+0001 1.18209081909808E+0001 + 1.18421445273743E+0001 1.18633940842391E+0001 1.18846568669177E+0001 1.19059328807452E+0001 1.19272221310666E+0001 + 1.19485246232197E+0001 1.19698403625543E+0001 1.19911693544108E+0001 1.20125116041326E+0001 1.20338671170729E+0001 + 1.20552358985760E+0001 1.20766179539896E+0001 1.20980132886688E+0001 1.21194219079579E+0001 1.21408438172175E+0001 + 1.21622790217970E+0001 1.21837275270500E+0001 1.22051893383377E+0001 1.22266644610153E+0001 1.22481529004408E+0001 + 1.22696546619718E+0001 1.22911697509716E+0001 1.23126981728037E+0001 1.23342399328275E+0001 1.23557950364120E+0001 + 1.23773634889175E+0001 1.23989452957157E+0001 1.24205404621689E+0001 1.24421489936530E+0001 1.24637708955333E+0001 + 1.24854061731821E+0001 1.25070548319736E+0001 1.25287168772792E+0001 1.25503923144751E+0001 1.25720811489382E+0001 + 1.25937833860425E+0001 1.26154990311697E+0001 1.26372280897003E+0001 1.26589705670094E+0001 1.26807264684839E+0001 + 1.27024957995054E+0001 1.27242785654580E+0001 1.27460747717277E+0001 1.27678844237025E+0001 1.27897075267656E+0001 + 1.28115440863084E+0001 1.28333941077207E+0001 1.28552575963958E+0001 1.28771345577251E+0001 1.28990249971020E+0001 + 1.29209289199188E+0001 1.29428463315744E+0001 1.29647772374628E+0001 1.29867216429884E+0001 1.30086795535426E+0001 + 1.30306509745323E+0001 1.30526359113564E+0001 1.30746343694172E+0001 1.30966463541208E+0001 1.31186718708695E+0001 + 1.31407109250758E+0001 1.31627635221411E+0001 1.31848296674752E+0001 1.32069093664931E+0001 1.32290026245973E+0001 + 1.32511094472065E+0001 1.32732298397322E+0001 1.32953638075887E+0001 1.33175113561928E+0001 1.33396724909607E+0001 + 1.33618472173111E+0001 1.33840355406637E+0001 1.34062374664335E+0001 1.34284530000504E+0001 1.34506821469331E+0001 + 1.34729249125039E+0001 1.34951813021907E+0001 1.35174513214178E+0001 1.35397349756167E+0001 1.35620322702097E+0001 + 1.35843432106321E+0001 1.36066678023125E+0001 1.36290060506826E+0001 1.36513579611755E+0001 1.36737235392265E+0001 + 1.36961027902716E+0001 1.37184957197469E+0001 1.37409023330910E+0001 1.37633226357411E+0001 1.37857566331395E+0001 + 1.38082043307258E+0001 1.38306657339453E+0001 1.38531408482404E+0001 1.38756296790552E+0001 1.38981322318386E+0001 + 1.39206485120339E+0001 1.39431785250926E+0001 1.39657222764617E+0001 1.39882797715945E+0001 1.40108510159443E+0001 + 1.40334360149572E+0001 1.40560347740938E+0001 1.40786472988093E+0001 1.41012735945596E+0001 1.41239136667991E+0001 + 1.41465675209929E+0001 1.41692351625943E+0001 1.41919165970712E+0001 1.42146118298824E+0001 1.42373208664912E+0001 + 1.42600437123637E+0001 1.42827803729642E+0001 1.43055308537632E+0001 1.43282951602259E+0001 1.43510732978229E+0001 + 1.43738652720230E+0001 1.43966710883014E+0001 1.44194907521305E+0001 1.44423242689817E+0001 1.44651716443313E+0001 + 1.44880328836570E+0001 1.45109079924377E+0001 1.45337969761476E+0001 1.45566998402719E+0001 1.45796165902866E+0001 + 1.46025472316796E+0001 1.46254917699307E+0001 1.46484502105249E+0001 1.46714225589476E+0001 1.46944088206873E+0001 + 1.47174090012331E+0001 1.47404231060709E+0001 1.47634511406913E+0001 1.47864931105914E+0001 1.48095490212572E+0001 + 1.48326188781884E+0001 1.48557026868747E+0001 1.48788004528159E+0001 1.49019121815126E+0001 1.49250378784536E+0001 + 1.49481775491494E+0001 1.49713311990963E+0001 1.49944988337965E+0001 1.50176804587490E+0001 1.50408760794671E+0001 + 1.50640857014504E+0001 1.50873093302070E+0001 1.51105469712474E+0001 1.51337986300750E+0001 1.51570643122058E+0001 + 1.51803440231497E+0001 1.52036377684180E+0001 1.52269455535288E+0001 1.52502673839881E+0001 1.52736032653228E+0001 + 1.52969532030419E+0001 1.53203172026678E+0001 1.53436952697220E+0001 1.53670874097197E+0001 1.53904936281887E+0001 + 1.54139139306462E+0001 1.54373483226236E+0001 1.54607968096406E+0001 1.54842593972243E+0001 1.55077360909090E+0001 + 1.55312268962152E+0001 1.55547318186763E+0001 1.55782508638276E+0001 1.56017840371960E+0001 1.56253313443166E+0001 + 1.56488927907266E+0001 1.56724683819620E+0001 1.56960581235534E+0001 1.57196620210461E+0001 1.57432800799788E+0001 + 1.57669123058913E+0001 1.57905587043251E+0001 1.58142192808227E+0001 1.58378940409274E+0001 1.58615829901900E+0001 + 1.58852861341511E+0001 1.59090034783594E+0001 1.59327350283647E+0001 1.59564807897168E+0001 1.59802407679690E+0001 + 1.60040149686711E+0001 1.60278033973764E+0001 1.60516060596410E+0001 1.60754229610193E+0001 1.60992541070682E+0001 + 1.61230995033502E+0001 1.61469591554214E+0001 1.61708330688407E+0001 1.61947212491723E+0001 1.62186237019760E+0001 + 1.62425404328196E+0001 1.62664714472658E+0001 1.62904167508832E+0001 1.63143763492371E+0001 1.63383502478991E+0001 + 1.63623384524326E+0001 1.63863409684182E+0001 1.64103578014201E+0001 1.64343889570127E+0001 1.64584344407767E+0001 + 1.64824942582827E+0001 1.65065684151059E+0001 1.65306569168288E+0001 1.65547597690293E+0001 1.65788769772853E+0001 + 1.66030085471803E+0001 1.66271544842966E+0001 1.66513147942178E+0001 1.66754894825290E+0001 1.66996785548181E+0001 + 1.67238820166722E+0001 1.67480998736764E+0001 1.67723321314252E+0001 1.67965787955063E+0001 1.68208398715124E+0001 + 1.68451153650376E+0001 1.68694052816727E+0001 1.68937096270183E+0001 1.69180284066688E+0001 1.69423616262238E+0001 + 1.69667092912769E+0001 1.69910714074340E+0001 1.70154479802959E+0001 1.70398390154614E+0001 1.70642445185367E+0001 + 1.70886644951279E+0001 1.71130989508401E+0001 1.71375478912778E+0001 1.71620113220552E+0001 1.71864892487747E+0001 + 1.72109816770535E+0001 1.72354886124995E+0001 1.72600100607269E+0001 1.72845460273493E+0001 1.73090965179854E+0001 + 1.73336615382468E+0001 1.73582410937515E+0001 1.73828351901238E+0001 1.74074438329781E+0001 1.74320670279421E+0001 + 1.74567047806286E+0001 1.74813570966699E+0001 1.75060239816858E+0001 1.75307054413042E+0001 1.75554014811514E+0001 + 1.75801121068562E+0001 1.76048373240455E+0001 1.76295771383548E+0001 1.76543315554118E+0001 1.76791005808500E+0001 + 1.77038842203056E+0001 1.77286824794119E+0001 1.77534953638060E+0001 1.77783228791232E+0001 1.78031650310058E+0001 + 1.78280218250911E+0001 1.78528932670206E+0001 1.78777793624386E+0001 1.79026801169848E+0001 1.79275955363073E+0001 + 1.79525256260522E+0001 1.79774703918629E+0001 1.80024298393864E+0001 1.80274039742799E+0001 1.80523928021858E+0001 + 1.80773963287565E+0001 1.81024145596475E+0001 1.81274475005148E+0001 1.81524951570073E+0001 1.81775575347865E+0001 + 1.82026346395069E+0001 1.82277264768263E+0001 1.82528330524074E+0001 1.82779543719116E+0001 1.83030904409952E+0001 + 1.83282412653280E+0001 1.83534068505705E+0001 1.83785872023891E+0001 1.84037823264525E+0001 1.84289922284261E+0001 + 1.84542169139804E+0001 1.84794563887845E+0001 1.85047106585107E+0001 1.85299797288289E+0001 1.85552636054190E+0001 + 1.85805622939497E+0001 1.86058758000991E+0001 1.86312041295459E+0001 1.86565472879674E+0001 1.86819052810424E+0001 + 1.87072781144516E+0001 1.87326657938793E+0001 1.87580683250053E+0001 1.87834857135158E+0001 1.88089179650979E+0001 + 1.88343650854331E+0001 1.88598270802140E+0001 1.88853039551250E+0001 1.89107957158631E+0001 1.89363023681144E+0001 + 1.89618239175688E+0001 1.89873603699270E+0001 1.90129117308770E+0001 1.90384780061195E+0001 1.90640592013488E+0001 + 1.90896553222619E+0001 1.91152663745634E+0001 1.91408923639501E+0001 1.91665332961247E+0001 1.91921891767897E+0001 + 1.92178600116476E+0001 1.92435458064065E+0001 1.92692465667724E+0001 1.92949622984506E+0001 1.93206930071547E+0001 + 1.93464386985879E+0001 1.93721993784666E+0001 1.93979750524995E+0001 1.94237657264011E+0001 1.94495714058876E+0001 + 1.94753920966732E+0001 1.95012278044760E+0001 1.95270785350112E+0001 1.95529442940015E+0001 1.95788250871674E+0001 + 1.96047209202270E+0001 1.96306317989047E+0001 1.96565577289275E+0001 1.96824987160135E+0001 1.97084547658951E+0001 + 1.97344258842986E+0001 1.97604120769502E+0001 1.97864133495823E+0001 1.98124297079248E+0001 1.98384611577067E+0001 + 1.98645077046667E+0001 1.98905693545375E+0001 1.99166461130499E+0001 1.99427379859480E+0001 1.99688449789664E+0001 + 1.99949670978431E+0001 2.00211043483187E+0001 2.00472567361348E+0001 2.00734242670333E+0001 2.00996069467619E+0001 + 2.01258047810643E+0001 2.01520177756820E+0001 2.01782459363649E+0001 2.02044892688591E+0001 2.02307477789218E+0001 + 2.02570214722946E+0001 2.02833103547364E+0001 2.03096144319952E+0001 2.03359337098263E+0001 2.03622681939878E+0001 + 2.03886178902349E+0001 2.04149828043237E+0001 2.04413629420178E+0001 2.04677583090715E+0001 2.04941689112475E+0001 + 2.05205947543091E+0001 2.05470358440198E+0001 2.05734921861476E+0001 2.05999637864525E+0001 2.06264506507041E+0001 + 2.06529527846724E+0001 2.06794701941235E+0001 2.07060028848318E+0001 2.07325508625663E+0001 2.07591141330995E+0001 + 2.07856927022067E+0001 2.08122865756659E+0001 2.08388957592470E+0001 2.08655202587306E+0001 2.08921600799004E+0001 + 2.09188152285278E+0001 2.09454857104010E+0001 2.09721715312971E+0001 2.09988726970023E+0001 2.10255892132991E+0001 + 2.10523210859774E+0001 2.10790683208206E+0001 2.11058309236141E+0001 2.11326089001550E+0001 2.11594022562267E+0001 + 2.11862109976255E+0001 2.12130351301394E+0001 2.12398746595672E+0001 2.12667295916999E+0001 2.12935999323345E+0001 + 2.13204856872708E+0001 2.13473868623068E+0001 2.13743034632398E+0001 2.14012354958732E+0001 2.14281829660085E+0001 + 2.14551458794476E+0001 2.14821242419957E+0001 2.15091180594600E+0001 2.15361273376438E+0001 2.15631520823590E+0001 + 2.15901922994126E+0001 2.16172479946117E+0001 2.16443191737726E+0001 2.16714058427069E+0001 2.16985080072282E+0001 + 2.17256256731498E+0001 2.17527588462908E+0001 2.17799075324629E+0001 2.18070717374912E+0001 2.18342514671876E+0001 + 2.18614467273810E+0001 2.18886575238894E+0001 2.19158838625344E+0001 2.19431257491415E+0001 2.19703831895376E+0001 + 2.19976561895483E+0001 2.20249447550032E+0001 2.20522488917259E+0001 2.20795686055508E+0001 2.21069039023087E+0001 + 2.21342547878303E+0001 2.21616212679492E+0001 2.21890033485060E+0001 2.22164010353245E+0001 2.22438143342533E+0001 + 2.22712432511271E+0001 2.22986877917838E+0001 2.23261479620642E+0001 2.23536237678099E+0001 2.23811152148664E+0001 + 2.24086223090744E+0001 2.24361450562801E+0001 2.24636834623307E+0001 2.24912375330732E+0001 2.25188072743586E+0001 + 2.25463926920320E+0001 2.25739937919452E+0001 2.26016105799590E+0001 2.26292430619160E+0001 2.26568912436742E+0001 + 2.26845551310926E+0001 2.27122347300219E+0001 2.27399300463267E+0001 2.27676410858639E+0001 2.27953678544909E+0001 + 2.28231103580720E+0001 2.28508686024707E+0001 2.28786425935514E+0001 2.29064323371758E+0001 2.29342378392121E+0001 + 2.29620591055254E+0001 2.29898961419876E+0001 2.30177489544685E+0001 2.30456175488362E+0001 2.30735019309650E+0001 + 2.31014021067276E+0001 2.31293180819976E+0001 2.31572498626501E+0001 2.31851974545625E+0001 2.32131608636146E+0001 + 2.32411400956853E+0001 2.32691351566509E+0001 2.32971460523959E+0001 2.33251727888028E+0001 2.33532153717524E+0001 + 2.33812738071338E+0001 2.34093481008313E+0001 2.34374382587293E+0001 2.34655442867233E+0001 2.34936661906941E+0001 + 2.35218039765377E+0001 2.35499576501461E+0001 2.35781272174127E+0001 2.36063126842282E+0001 2.36345140564899E+0001 + 2.36627313400932E+0001 2.36909645409405E+0001 2.37192136649219E+0001 2.37474787179481E+0001 2.37757597059153E+0001 + 2.38040566347227E+0001 2.38323695102763E+0001 2.38606983384834E+0001 2.38890431252457E+0001 2.39174038764750E+0001 + 2.39457805980746E+0001 2.39741732959556E+0001 2.40025819760303E+0001 2.40310066442080E+0001 2.40594473064048E+0001 + 2.40879039685296E+0001 2.41163766365034E+0001 2.41448653162388E+0001 2.41733700136556E+0001 2.42018907346692E+0001 + 2.42304274852022E+0001 2.42589802711755E+0001 2.42875490985089E+0001 2.43161339731305E+0001 2.43447349009593E+0001 + 2.43733518879244E+0001 2.44019849399529E+0001 2.44306340629737E+0001 2.44592992629096E+0001 2.44879805456985E+0001 + 2.45166779172678E+0001 2.45453913835527E+0001 2.45741209504849E+0001 2.46028666239999E+0001 2.46316284100376E+0001 + 2.46604063145278E+0001 2.46892003434132E+0001 2.47180105026373E+0001 2.47468367981364E+0001 2.47756792358505E+0001 + 2.48045378217275E+0001 2.48334125617102E+0001 2.48623034617449E+0001 2.48912105277741E+0001 2.49201337657496E+0001 + 2.49490731816222E+0001 2.49780287813373E+0001 2.50070005708485E+0001 2.50359885561102E+0001 2.50649927430723E+0001 + 2.50940131376938E+0001 2.51230497459255E+0001 2.51521025737311E+0001 2.51811716270622E+0001 2.52102569118815E+0001 + 2.52393584341526E+0001 2.52684761998325E+0001 2.52976102148859E+0001 2.53267604852799E+0001 2.53559270169744E+0001 + 2.53851098159421E+0001 2.54143088881447E+0001 2.54435242395521E+0001 2.54727558761397E+0001 2.55020038038738E+0001 + 2.55312680287270E+0001 2.55605485566739E+0001 2.55898453936898E+0001 2.56191585457500E+0001 2.56484880188291E+0001 + 2.56778338189106E+0001 2.57071959519672E+0001 2.57365744239833E+0001 2.57659692409425E+0001 2.57953804088229E+0001 + 2.58248079336163E+0001 2.58542518212971E+0001 2.58837120778580E+0001 2.59131887092863E+0001 2.59426817215708E+0001 + 2.59721911206980E+0001 2.60017169126622E+0001 2.60312591034563E+0001 2.60608176990709E+0001 2.60903927055024E+0001 + 2.61199841287435E+0001 2.61495919747931E+0001 2.61792162496522E+0001 2.62088569593170E+0001 2.62385141097875E+0001 + 2.62681877070654E+0001 2.62978777571534E+0001 2.63275842660560E+0001 2.63573072397776E+0001 2.63870466843255E+0001 + 2.64168026057041E+0001 2.64465750099262E+0001 2.64763639029961E+0001 2.65061692909303E+0001 2.65359911797377E+0001 + 2.65658295754329E+0001 2.65956844840266E+0001 2.66255559115407E+0001 2.66554438639832E+0001 2.66853483473806E+0001 + 2.67152693677481E+0001 2.67452069311021E+0001 2.67751610434716E+0001 2.68051317108739E+0001 2.68351189393334E+0001 + 2.68651227348792E+0001 2.68951431035284E+0001 2.69251800513157E+0001 2.69552335842682E+0001 2.69853037084122E+0001 + 2.70153904297813E+0001 2.70454937544064E+0001 2.70756136883192E+0001 2.71057502375552E+0001 2.71359034081497E+0001 + 2.71660732061409E+0001 2.71962596375643E+0001 2.72264627084596E+0001 2.72566824248643E+0001 2.72869187928245E+0001 + 2.73171718183748E+0001 2.73474415075671E+0001 2.73777278664420E+0001 2.74080309010433E+0001 2.74383506174208E+0001 + 2.74686870216246E+0001 2.74990401196992E+0001 2.75294099176981E+0001 2.75597964216759E+0001 2.75901996376751E+0001 + 2.76206195717623E+0001 2.76510562299854E+0001 2.76815096183982E+0001 2.77119797430651E+0001 2.77424666100424E+0001 + 2.77729702253873E+0001 2.78034905951627E+0001 2.78340277254310E+0001 2.78645816222543E+0001 2.78951522916987E+0001 + 2.79257397398278E+0001 2.79563439727099E+0001 2.79869649964139E+0001 2.80176028170044E+0001 2.80482574405587E+0001 + 2.80789288731439E+0001 2.81096171208301E+0001 2.81403221896962E+0001 2.81710440858169E+0001 2.82017828152639E+0001 + 2.82325383841189E+0001 2.82633107984584E+0001 2.82941000643623E+0001 2.83249061879105E+0001 2.83557291751877E+0001 + 2.83865690322718E+0001 2.84174257652494E+0001 2.84482993802130E+0001 2.84791898832373E+0001 2.85100972804184E+0001 + 2.85410215778429E+0001 2.85719627816015E+0001 2.86029208977843E+0001 2.86338959324812E+0001 2.86648878917904E+0001 + 2.86958967818055E+0001 2.87269226086255E+0001 2.87579653783396E+0001 2.87890250970504E+0001 2.88201017708579E+0001 + 2.88511954058640E+0001 2.88823060081686E+0001 2.89134335838726E+0001 2.89445781390832E+0001 2.89757396799041E+0001 + 2.90069182124444E+0001 2.90381137428067E+0001 2.90693262771047E+0001 2.91005558214456E+0001 2.91318023819404E+0001 + 2.91630659647035E+0001 2.91943465758468E+0001 2.92256442214866E+0001 2.92569589077320E+0001 2.92882906407094E+0001 + 2.93196394265324E+0001 2.93510052713182E+0001 2.93823881811923E+0001 2.94137881622728E+0001 2.94452052206798E+0001 + 2.94766393625432E+0001 2.95080905939840E+0001 2.95395589211330E+0001 2.95710443501121E+0001 2.96025468870503E+0001 + 2.96340665380822E+0001 2.96656033093341E+0001 2.96971572069415E+0001 2.97287282370335E+0001 2.97603164057473E+0001 + 2.97919217192211E+0001 2.98235441835841E+0001 2.98551838049825E+0001 2.98868405895500E+0001 2.99185145434294E+0001 + 2.99502056727588E+0001 2.99819139836845E+0001 3.00136394823494E+0001 3.00453821748970E+0001 3.00771420674746E+0001 + 3.01089191662295E+0001 3.01407134773090E+0001 3.01725250068621E+0001 3.02043537610416E+0001 3.02361997459993E+0001 + 3.02680629678871E+0001 3.02999434328576E+0001 3.03318411470727E+0001 3.03637561166825E+0001 3.03956883478431E+0001 + 3.04276378467212E+0001 3.04596046194729E+0001 3.04915886722565E+0001 3.05235900112384E+0001 3.05556086425813E+0001 + 3.05876445724471E+0001 3.06196978070047E+0001 3.06517683524216E+0001 3.06838562148641E+0001 3.07159614005013E+0001 + 3.07480839155078E+0001 3.07802237660489E+0001 3.08123809583049E+0001 3.08445554984419E+0001 3.08767473926409E+0001 + 3.09089566470757E+0001 3.09411832679225E+0001 3.09734272613659E+0001 3.10056886335824E+0001 3.10379673907491E+0001 + 3.10702635390526E+0001 3.11025770846745E+0001 3.11349080338014E+0001 3.11672563926177E+0001 3.11996221673098E+0001 + 3.12320053640660E+0001 3.12644059890754E+0001 3.12968240485307E+0001 3.13292595486200E+0001 3.13617124955363E+0001 + 3.13941828954758E+0001 3.14266707546321E+0001 3.14591760792018E+0001 3.14916988753785E+0001 3.15242391493694E+0001 + 3.15567969073691E+0001 3.15893721555758E+0001 3.16219649001941E+0001 3.16545751474259E+0001 3.16872029034803E+0001 + 3.17198481745563E+0001 3.17525109668650E+0001 3.17851912866126E+0001 3.18178891400084E+0001 3.18506045332642E+0001 + 3.18833374725864E+0001 3.19160879641913E+0001 3.19488560142936E+0001 3.19816416291060E+0001 3.20144448148467E+0001 + 3.20472655777285E+0001 3.20801039239732E+0001 3.21129598598018E+0001 3.21458333914306E+0001 3.21787245250825E+0001 + 3.22116332669839E+0001 3.22445596233520E+0001 3.22775036004232E+0001 3.23104652044140E+0001 3.23434444415579E+0001 + 3.23764413180779E+0001 3.24094558402094E+0001 3.24424880141823E+0001 3.24755378462296E+0001 3.25086053425803E+0001 + 3.25416905094726E+0001 3.25747933531438E+0001 3.26079138798295E+0001 3.26410520957625E+0001 3.26742080071917E+0001 + 3.27073816203520E+0001 3.27405729414868E+0001 3.27737819768345E+0001 3.28070087326460E+0001 3.28402532151613E+0001 + 3.28735154306305E+0001 3.29067953852955E+0001 3.29400930854117E+0001 3.29734085372229E+0001 3.30067417469845E+0001 + 3.30400927209457E+0001 3.30734614653638E+0001 3.31068479864862E+0001 3.31402522905755E+0001 3.31736743838846E+0001 + 3.32071142726763E+0001 3.32405719632043E+0001 3.32740474617294E+0001 3.33075407745146E+0001 3.33410519078243E+0001 + 3.33745808679159E+0001 3.34081276610614E+0001 3.34416922935252E+0001 3.34752747715702E+0001 3.35088751014719E+0001 + 3.35424932894948E+0001 3.35761293419127E+0001 3.36097832649921E+0001 3.36434550650138E+0001 3.36771447482479E+0001 + 3.37108523209699E+0001 3.37445777894536E+0001 3.37783211599835E+0001 3.38120824388352E+0001 3.38458616322860E+0001 + 3.38796587466222E+0001 3.39134737881232E+0001 3.39473067630734E+0001 3.39811576777538E+0001 3.40150265384545E+0001 + 3.40489133514657E+0001 3.40828181230718E+0001 3.41167408595593E+0001 3.41506815672201E+0001 3.41846402523552E+0001 + 3.42186169212437E+0001 3.42526115801866E+0001 3.42866242354812E+0001 3.43206548934213E+0001 3.43547035602987E+0001 + 3.43887702424236E+0001 3.44228549460877E+0001 3.44569576775975E+0001 3.44910784432486E+0001 3.45252172493510E+0001 + 3.45593741022058E+0001 3.45935490081192E+0001 3.46277419733960E+0001 3.46619530043499E+0001 3.46961821072837E+0001 + 3.47304292885110E+0001 3.47646945543493E+0001 3.47989779110994E+0001 3.48332793650807E+0001 3.48675989226085E+0001 + 3.49019365900003E+0001 3.49362923735735E+0001 3.49706662796452E+0001 3.50050583145367E+0001 3.50394684845687E+0001 + 3.50738967960569E+0001 3.51083432553296E+0001 3.51428078687150E+0001 3.51772906425340E+0001 3.52117915831168E+0001 + 3.52463106967862E+0001 3.52808479898704E+0001 3.53154034687104E+0001 3.53499771396255E+0001 3.53845690089511E+0001 + 3.54191790830282E+0001 3.54538073681833E+0001 3.54884538707593E+0001 3.55231185970824E+0001 3.55578015535029E+0001 + 3.55925027463563E+0001 3.56272221819818E+0001 3.56619598667166E+0001 3.56967158069183E+0001 3.57314900089132E+0001 + 3.57662824790605E+0001 3.58010932236994E+0001 3.58359222491817E+0001 3.58707695618523E+0001 3.59056351680665E+0001 + 3.59405190741709E+0001 3.59754212865191E+0001 3.60103418114650E+0001 3.60452806553585E+0001 3.60802378245644E+0001 + 3.61152133254363E+0001 3.61502071643263E+0001 3.61852193476043E+0001 3.62202498816223E+0001 3.62552987727468E+0001 + 3.62903660273369E+0001 3.63254516517591E+0001 3.63605556523780E+0001 3.63956780355602E+0001 3.64308188076702E+0001 + 3.64659779750855E+0001 3.65011555441633E+0001 3.65363515212848E+0001 3.65715659128218E+0001 3.66067987251372E+0001 + 3.66420499646138E+0001 3.66773196376307E+0001 3.67126077505563E+0001 3.67479143097717E+0001 3.67832393216631E+0001 + 3.68185827925972E+0001 3.68539447289641E+0001 3.68893251371483E+0001 3.69247240235254E+0001 3.69601413944874E+0001 + 3.69955772564208E+0001 3.70310316157102E+0001 3.70665044787438E+0001 3.71019958519119E+0001 3.71375057416044E+0001 + 3.71730341542116E+0001 3.72085810961325E+0001 3.72441465737556E+0001 3.72797305934801E+0001 3.73153331617013E+0001 + 3.73509542848169E+0001 3.73865939692278E+0001 3.74222522213313E+0001 3.74579290475303E+0001 3.74936244542241E+0001 + 3.75293384478209E+0001 3.75650710347218E+0001 3.76008222213368E+0001 3.76365920140688E+0001 3.76723804193261E+0001 + 3.77081874435207E+0001 3.77440130930627E+0001 3.77798573743639E+0001 3.78157202938419E+0001 3.78516018578994E+0001 + 3.78875020729593E+0001 3.79234209454426E+0001 3.79593584817521E+0001 3.79953146883217E+0001 3.80312895715633E+0001 + 3.80672831378997E+0001 3.81032953937502E+0001 3.81393263455502E+0001 3.81753759997064E+0001 3.82114443626615E+0001 + 3.82475314408312E+0001 3.82836372406455E+0001 3.83197617685346E+0001 3.83559050309341E+0001 3.83920670342668E+0001 + 3.84282477849720E+0001 3.84644472894797E+0001 3.85006655542293E+0001 3.85369025856489E+0001 3.85731583901870E+0001 + 3.86094329742737E+0001 3.86457263443517E+0001 3.86820385068586E+0001 3.87183694682444E+0001 3.87547192349466E+0001 + 3.87910878134098E+0001 3.88274752100806E+0001 3.88638814314018E+0001 3.89003064838289E+0001 3.89367503738067E+0001 + 3.89732131077853E+0001 3.90096946922131E+0001 3.90461951335510E+0001 3.90827144382420E+0001 3.91192526127561E+0001 + 3.91558096635308E+0001 3.91923855970344E+0001 3.92289804197262E+0001 3.92655941380599E+0001 3.93022267584984E+0001 + 3.93388782875081E+0001 3.93755487315466E+0001 3.94122380970803E+0001 3.94489463905720E+0001 3.94856736184938E+0001 + 3.95224197873085E+0001 3.95591849034845E+0001 3.95959689734937E+0001 3.96327720038134E+0001 3.96695940009031E+0001 + 3.97064349712437E+0001 3.97432949213126E+0001 3.97801738575799E+0001 3.98170717865250E+0001 3.98539887146253E+0001 + 3.98909246483618E+0001 3.99278795942173E+0001 3.99648535586639E+0001 4.00018465481990E+0001 4.00388585692963E+0001 + 4.00758896284351E+0001 4.01129397321201E+0001 4.01500088868197E+0001 4.01870970990385E+0001 4.02242043752594E+0001 + 4.02613307219654E+0001 4.02984761456592E+0001 4.03356406528364E+0001 4.03728242499892E+0001 4.04100269436021E+0001 + 4.04472487401836E+0001 4.04844896462309E+0001 4.05217496682344E+0001 4.05590288127059E+0001 4.05963270861394E+0001 + 4.06336444950448E+0001 4.06709810459161E+0001 4.07083367452633E+0001 4.07457115995912E+0001 4.07831056154137E+0001 + 4.08205187992280E+0001 4.08579511575535E+0001 4.08954026969004E+0001 4.09328734237697E+0001 4.09703633446843E+0001 + 4.10078724661635E+0001 4.10454007947083E+0001 4.10829483368470E+0001 4.11205150990845E+0001 4.11581010879581E+0001 + 4.11957063099744E+0001 4.12333307716599E+0001 4.12709744795320E+0001 4.13086374401209E+0001 4.13463196599514E+0001 + 4.13840211455408E+0001 4.14217419034248E+0001 4.14594819401282E+0001 4.14972412621773E+0001 4.15350198761116E+0001 + 4.15728177884594E+0001 4.16106350057489E+0001 4.16484715345177E+0001 4.16863273813015E+0001 4.17242025526357E+0001 + 4.17620970550543E+0001 4.18000108951037E+0001 4.18379440793178E+0001 4.18758966142432E+0001 4.19138685064099E+0001 + 4.19518597623792E+0001 4.19898703886865E+0001 4.20279003918749E+0001 4.20659497784964E+0001 4.21040185550901E+0001 + 4.21421067282190E+0001 4.21802143044260E+0001 4.22183412902559E+0001 4.22564876922770E+0001 4.22946535170322E+0001 + 4.23328387710790E+0001 4.23710434609711E+0001 4.24092675932770E+0001 4.24475111745414E+0001 4.24857742113309E+0001 + 4.25240567102046E+0001 4.25623586777219E+0001 4.26006801204530E+0001 4.26390210449572E+0001 4.26773814577973E+0001 + 4.27157613655490E+0001 4.27541607747753E+0001 4.27925796920408E+0001 4.28310181239249E+0001 4.28694760769922E+0001 + 4.29079535578185E+0001 4.29464505729738E+0001 4.29849671290358E+0001 4.30235032325854E+0001 4.30620588901893E+0001 + 4.31006341084303E+0001 4.31392288938896E+0001 4.31778432531501E+0001 4.32164771927892E+0001 4.32551307193880E+0001 + 4.32938038395387E+0001 4.33324965598149E+0001 4.33712088868178E+0001 4.34099408271213E+0001 4.34486923873246E+0001 + 4.34874635740125E+0001 4.35262543937770E+0001 4.35650648532082E+0001 4.36038949589056E+0001 4.36427447174556E+0001 + 4.36816141354630E+0001 4.37205032195179E+0001 4.37594119762271E+0001 4.37983404121769E+0001 4.38372885339722E+0001 + 4.38762563482269E+0001 4.39152438615311E+0001 4.39542510804895E+0001 4.39932780117124E+0001 4.40323246618009E+0001 + 4.40713910373597E+0001 4.41104771450155E+0001 4.41495829913583E+0001 4.41887085830003E+0001 4.42278539265681E+0001 + 4.42670190286626E+0001 4.43062038958997E+0001 4.43454085349003E+0001 4.43846329522821E+0001 4.44238771546516E+0001 + 4.44631411486407E+0001 4.45024249408652E+0001 4.45417285379444E+0001 4.45810519465031E+0001 4.46203951731586E+0001 + 4.46597582245486E+0001 4.46991411072904E+0001 4.47385438280162E+0001 4.47779663933434E+0001 4.48174088099167E+0001 + 4.48568710843556E+0001 4.48963532232974E+0001 4.49358552333761E+0001 4.49753771212218E+0001 4.50149188934702E+0001 + 4.50544805567679E+0001 4.50940621177360E+0001 4.51336635830266E+0001 4.51732849592736E+0001 4.52129262531198E+0001 + 4.52525874712082E+0001 4.52922686201819E+0001 4.53319697066836E+0001 4.53716907373637E+0001 4.54114317188687E+0001 + 4.54511926578398E+0001 4.54909735609344E+0001 4.55307744348011E+0001 4.55705952860881E+0001 4.56104361214511E+0001 + 4.56502969475459E+0001 4.56901777710282E+0001 4.57300785985499E+0001 4.57699994367686E+0001 4.58099402923490E+0001 + 4.58499011719432E+0001 4.58898820822214E+0001 4.59298830298358E+0001 4.59699040214527E+0001 4.60099450637481E+0001 + 4.60500061633702E+0001 4.60900873269984E+0001 4.61301885612957E+0001 4.61703098729322E+0001 4.62104512685710E+0001 + 4.62506127548968E+0001 4.62907943385781E+0001 4.63309960262832E+0001 4.63712178246915E+0001 4.64114597404787E+0001 + 4.64517217803223E+0001 4.64920039508997E+0001 4.65323062588941E+0001 4.65726287109792E+0001 4.66129713138453E+0001 + 4.66533340741698E+0001 4.66937169986395E+0001 4.67341200939372E+0001 4.67745433667569E+0001 4.68149868237797E+0001 + 4.68554504716922E+0001 4.68959343171900E+0001 4.69364383669654E+0001 4.69769626277048E+0001 4.70175071061112E+0001 + 4.70580718088695E+0001 4.70986567426826E+0001 4.71392619142425E+0001 4.71798873302541E+0001 4.72205329974076E+0001 + 4.72611989224151E+0001 4.73018851119705E+0001 4.73425915727730E+0001 4.73833183115348E+0001 4.74240653349643E+0001 + 4.74648326497572E+0001 4.75056202626292E+0001 4.75464281802870E+0001 4.75872564094370E+0001 4.76281049567933E+0001 + 4.76689738290697E+0001 4.77098630329783E+0001 4.77507725752330E+0001 4.77917024625476E+0001 4.78326527016507E+0001 + 4.78736232992414E+0001 4.79146142620502E+0001 4.79556255967982E+0001 4.79966573102029E+0001 4.80377094089963E+0001 + 4.80787818998924E+0001 4.81198747896142E+0001 4.81609880848973E+0001 4.82021217924648E+0001 4.82432759190469E+0001 + 4.82844504713685E+0001 4.83256454561633E+0001 4.83668608801654E+0001 4.84080967501068E+0001 4.84493530727268E+0001 + 4.84906298547485E+0001 4.85319271029184E+0001 4.85732448239723E+0001 4.86145830246478E+0001 4.86559417116878E+0001 + 4.86973208918334E+0001 4.87387205718278E+0001 4.87801407584084E+0001 4.88215814583309E+0001 4.88630426783311E+0001 + 4.89045244251611E+0001 4.89460267055656E+0001 4.89875495262986E+0001 4.90290928941158E+0001 4.90706568157566E+0001 + 4.91122412979839E+0001 4.91538463475481E+0001 4.91954719712012E+0001 4.92371181757080E+0001 4.92787849678170E+0001 + 4.93204723542949E+0001 4.93621803418955E+0001 4.94039089373837E+0001 4.94456581475206E+0001 4.94874279790747E+0001 + 4.95292184387999E+0001 4.95710295334720E+0001 4.96128612698576E+0001 4.96547136547160E+0001 4.96965866948303E+0001 + 4.97384803969544E+0001 4.97803947678713E+0001 4.98223298143494E+0001 4.98642855431717E+0001 4.99062619610995E+0001 + 4.99482590749212E+0001 4.99902768914035E+0001 5.00323154173384E+0001 5.00743746594908E+0001 5.01164546246509E+0001 + 5.01585553195964E+0001 5.02006767511211E+0001 5.02428189259917E+0001 5.02849818510076E+0001 5.03271655329536E+0001 + 5.03693699786163E+0001 5.04115951947806E+0001 5.04538411882422E+0001 5.04961079657933E+0001 5.05383955342222E+0001 + 5.05807039003248E+0001 5.06230330708950E+0001 5.06653830527339E+0001 5.07077538526282E+0001 5.07501454773937E+0001 + 5.07925579338080E+0001 5.08349912286867E+0001 5.08774453688329E+0001 5.09199203610406E+0001 5.09624162121218E+0001 + 5.10049329288759E+0001 5.10474705181132E+0001 5.10900289866404E+0001 5.11326083412714E+0001 5.11752085888111E+0001 + 5.12178297360661E+0001 5.12604717898557E+0001 5.13031347569904E+0001 5.13458186442931E+0001 5.13885234585687E+0001 + 5.14312492066401E+0001 5.14739958953214E+0001 5.15167635314410E+0001 5.15595521218111E+0001 5.16023616732509E+0001 + 5.16451921925945E+0001 5.16880436866595E+0001 5.17309161622634E+0001 5.17738096262492E+0001 5.18167240854364E+0001 + 5.18596595466479E+0001 5.19026160167214E+0001 5.19455935024871E+0001 5.19885920107754E+0001 5.20316115484129E+0001 + 5.20746521222500E+0001 5.21177137391096E+0001 5.21607964058385E+0001 5.22039001292615E+0001 5.22470249162270E+0001 + 5.22901707735764E+0001 5.23333377081472E+0001 5.23765257267842E+0001 5.24197348363323E+0001 5.24629650436309E+0001 + 5.25062163555285E+0001 5.25494887788755E+0001 5.25927823205257E+0001 5.26360969873185E+0001 5.26794327861062E+0001 + 5.27227897237444E+0001 5.27661678070817E+0001 5.28095670429793E+0001 5.28529874382875E+0001 5.28964289998712E+0001 + 5.29398917345752E+0001 5.29833756492681E+0001 5.30268807508073E+0001 5.30704070460488E+0001 5.31139545418609E+0001 + 5.31575232451105E+0001 5.32011131626605E+0001 5.32447243013739E+0001 5.32883566681121E+0001 5.33320102697580E+0001 + 5.33756851131693E+0001 5.34193812052199E+0001 5.34630985527856E+0001 5.35068371627349E+0001 5.35505970419435E+0001 + 5.35943781972856E+0001 5.36381806356385E+0001 5.36820043638854E+0001 5.37258493888985E+0001 5.37697157175498E+0001 + 5.38136033567371E+0001 5.38575123133360E+0001 5.39014425942278E+0001 5.39453942062955E+0001 5.39893671564314E+0001 + 5.40333614515202E+0001 5.40773770984506E+0001 5.41214141041019E+0001 5.41654724753771E+0001 5.42095522191685E+0001 + 5.42536533423572E+0001 5.42977758518464E+0001 5.43419197545263E+0001 5.43860850573001E+0001 5.44302717670580E+0001 + 5.44744798906995E+0001 5.45187094351331E+0001 5.45629604072474E+0001 5.46072328139489E+0001 5.46515266621445E+0001 + 5.46958419587372E+0001 5.47401787106337E+0001 5.47845369247298E+0001 5.48289166079448E+0001 5.48733177671911E+0001 + 5.49177404093698E+0001 5.49621845413949E+0001 5.50066501701767E+0001 5.50511373026347E+0001 5.50956459456811E+0001 + 5.51401761062334E+0001 5.51847277912038E+0001 5.52293010075155E+0001 5.52738957620877E+0001 5.53185120618418E+0001 + 5.53631499136936E+0001 5.54078093245789E+0001 5.54524903014062E+0001 5.54971928511095E+0001 5.55419169806100E+0001 + 5.55866626968455E+0001 5.56314300067370E+0001 5.56762189172205E+0001 5.57210294352190E+0001 5.57658615676683E+0001 + 5.58107153215060E+0001 5.58555907036625E+0001 5.59004877210718E+0001 5.59454063806734E+0001 5.59903466894139E+0001 + 5.60353086542182E+0001 5.60802922820349E+0001 5.61252975798016E+0001 5.61703245544668E+0001 5.62153732129682E+0001 + 5.62604435622561E+0001 5.63055356092791E+0001 5.63506493609711E+0001 5.63957848242990E+0001 5.64409420062002E+0001 + 5.64861209136288E+0001 5.65313215535371E+0001 5.65765439328770E+0001 5.66217880586100E+0001 5.66670539376846E+0001 + 5.67123415770584E+0001 5.67576509836872E+0001 5.68029821645396E+0001 5.68483351265641E+0001 5.68937098767383E+0001 + 5.69391064220035E+0001 5.69845247693411E+0001 5.70299649257031E+0001 5.70754268980654E+0001 5.71209106933929E+0001 + 5.71664163186524E+0001 5.72119437808160E+0001 5.72574930868486E+0001 5.73030642437261E+0001 5.73486572584243E+0001 + 5.73942721379135E+0001 5.74399088891714E+0001 5.74855675191702E+0001 5.75312480348966E+0001 5.75769504433229E+0001 + 5.76226747514283E+0001 5.76684209661998E+0001 5.77141890946095E+0001 5.77599791436569E+0001 5.78057911203123E+0001 + 5.78516250315643E+0001 5.78974808844087E+0001 5.79433586858268E+0001 5.79892584428053E+0001 5.80351801623365E+0001 + 5.80811238514179E+0001 5.81270895170401E+0001 5.81730771661914E+0001 5.82190868058715E+0001 5.82651184430761E+0001 + 5.83111720848083E+0001 5.83572477380621E+0001 5.84033454098317E+0001 5.84494651071236E+0001 5.84956068369411E+0001 + 5.85417706062854E+0001 5.85879564221632E+0001 5.86341642915831E+0001 5.86803942215429E+0001 5.87266462190601E+0001 + 5.87729202911323E+0001 5.88192164447810E+0001 5.88655346870164E+0001 5.89118750248454E+0001 5.89582374652855E+0001 + 5.90046220153508E+0001 5.90510286820609E+0001 5.90974574724241E+0001 5.91439083934747E+0001 5.91903814522175E+0001 + 5.92368766556738E+0001 5.92833940108758E+0001 5.93299335248430E+0001 5.93764952045931E+0001 5.94230790571582E+0001 + 5.94696850895652E+0001 5.95163133088354E+0001 5.95629637220063E+0001 5.96096363361066E+0001 5.96563311581576E+0001 + 5.97030481952042E+0001 5.97497874542751E+0001 5.97965489424078E+0001 5.98433326666309E+0001 5.98901386339858E+0001 + 5.99369668515174E+0001 5.99838173262524E+0001 6.00306900652395E+0001 6.00775850755199E+0001 6.01245023641422E+0001 + 6.01714419381369E+0001 6.02184038045580E+0001 6.02653879704521E+0001 6.03123944428644E+0001 6.03594232288433E+0001 + 6.04064743354429E+0001 6.04535477697100E+0001 6.05006435386949E+0001 6.05477616494627E+0001 6.05949021090510E+0001 + 6.06420649245283E+0001 6.06892501029452E+0001 6.07364576513646E+0001 6.07836875768462E+0001 6.08309398864385E+0001 + 6.08782145872210E+0001 6.09255116862441E+0001 6.09728311905747E+0001 6.10201731072793E+0001 6.10675374434213E+0001 + 6.11149242060728E+0001 6.11623334022952E+0001 6.12097650391679E+0001 6.12572191237523E+0001 6.13046956631279E+0001 + 6.13521946643650E+0001 6.13997161345396E+0001 6.14472600807148E+0001 6.14948265099847E+0001 6.15424154294233E+0001 + 6.15900268461010E+0001 6.16376607671082E+0001 6.16853171995190E+0001 6.17329961504256E+0001 6.17806976268967E+0001 + 6.18284216360225E+0001 6.18761681849028E+0001 6.19239372806060E+0001 6.19717289302334E+0001 6.20195431408683E+0001 + 6.20673799195993E+0001 6.21152392735239E+0001 6.21631212097273E+0001 6.22110257353179E+0001 6.22589528573735E+0001 + 6.23069025830064E+0001 6.23548749193051E+0001 6.24028698733728E+0001 6.24508874522999E+0001 6.24989276631986E+0001 + 6.25469905131704E+0001 6.25950760093147E+0001 6.26431841587382E+0001 6.26913149685442E+0001 6.27394684458395E+0001 + 6.27876445977399E+0001 6.28358434313395E+0001 6.28840649537669E+0001 6.29323091721217E+0001 6.29805760935214E+0001 + 6.30288657250803E+0001 6.30771780739051E+0001 6.31255131471244E+0001 6.31738709518540E+0001 6.32222514952009E+0001 + 6.32706547842972E+0001 6.33190808262570E+0001 6.33675296281981E+0001 6.34160011972617E+0001 6.34644955405547E+0001 + 6.35130126652111E+0001 6.35615525783596E+0001 6.36101152871179E+0001 6.36587007986218E+0001 6.37073091200054E+0001 + 6.37559402583938E+0001 6.38045942209155E+0001 6.38532710147174E+0001 6.39019706469262E+0001 6.39506931246779E+0001 + 6.39994384551119E+0001 6.40482066453624E+0001 6.40969977025761E+0001 6.41458116338854E+0001 6.41946484464479E+0001 + 6.42435081473850E+0001 6.42923907438526E+0001 6.43412962429938E+0001 6.43902246519592E+0001 6.44391759778955E+0001 + 6.44881502279422E+0001 6.45371474092644E+0001 6.45861675289998E+0001 6.46352105943170E+0001 6.46842766123464E+0001 + 6.47333655902603E+0001 6.47824775352128E+0001 6.48316124543526E+0001 6.48807703548482E+0001 6.49299512438520E+0001 + 6.49791551285271E+0001 6.50283820160366E+0001 6.50776319135366E+0001 6.51269048281956E+0001 6.51762007671805E+0001 + 6.52255197376617E+0001 6.52748617467932E+0001 6.53242268017548E+0001 6.53736149097131E+0001 6.54230260778386E+0001 + 6.54724603133072E+0001 6.55219176232858E+0001 6.55713980149558E+0001 6.56209014954838E+0001 6.56704280720587E+0001 + 6.57199777518435E+0001 6.57695505420343E+0001 6.58191464497941E+0001 6.58687654823207E+0001 6.59184076467900E+0001 + 6.59680729503762E+0001 6.60177614002805E+0001 6.60674730036808E+0001 6.61172077677602E+0001 6.61669656997146E+0001 + 6.62167468067310E+0001 6.62665510960014E+0001 6.63163785747165E+0001 6.63662292500703E+0001 6.64161031292533E+0001 + 6.64660002194632E+0001 6.65159205279051E+0001 6.65658640617603E+0001 6.66158308282393E+0001 6.66658208345380E+0001 + 6.67158340878632E+0001 6.67658705954127E+0001 6.68159303643897E+0001 6.68660134019956E+0001 6.69161197154426E+0001 + 6.69662493119376E+0001 6.70164021986839E+0001 6.70665783829008E+0001 6.71167778717845E+0001 6.71670006725581E+0001 + 6.72172467924283E+0001 6.72675162386131E+0001 6.73178090183264E+0001 6.73681251387807E+0001 6.74184646072008E+0001 + 6.74688274307991E+0001 6.75192136168025E+0001 6.75696231724251E+0001 6.76200561048863E+0001 6.76705124214241E+0001 + 6.77209921292488E+0001 6.77714952355946E+0001 6.78220217476810E+0001 6.78725716727422E+0001 6.79231450180032E+0001 + 6.79737417906981E+0001 6.80243619980556E+0001 6.80750056473098E+0001 6.81256727456930E+0001 6.81763633004393E+0001 + 6.82270773187920E+0001 6.82778148079797E+0001 6.83285757752474E+0001 6.83793602278256E+0001 6.84301681729685E+0001 + 6.84809996179101E+0001 6.85318545698901E+0001 6.85827330361590E+0001 6.86336350239635E+0001 6.86845605405451E+0001 + 6.87355095931525E+0001 6.87864821890380E+0001 6.88374783354448E+0001 6.88884980396360E+0001 6.89395413088514E+0001 + 6.89906081503523E+0001 6.90416985713946E+0001 6.90928125792307E+0001 6.91439501811128E+0001 6.91951113843061E+0001 + 6.92462961960700E+0001 6.92975046236661E+0001 6.93487366743502E+0001 6.93999923553874E+0001 6.94512716740464E+0001 + 6.95025746375904E+0001 6.95539012532827E+0001 6.96052515283918E+0001 6.96566254701866E+0001 6.97080230859428E+0001 + 6.97594443829221E+0001 6.98108893684002E+0001 6.98623580496587E+0001 6.99138504339589E+0001 6.99653665285878E+0001 + 7.00169063408121E+0001 7.00684698779150E+0001 7.01200571471763E+0001 7.01716681558810E+0001 7.02233029112995E+0001 + 7.02749614207205E+0001 7.03266436914291E+0001 7.03783497307104E+0001 7.04300795458512E+0001 7.04818331441329E+0001 + 7.05336105328497E+0001 7.05854117192921E+0001 7.06372367107433E+0001 7.06890855145048E+0001 7.07409581378615E+0001 + 7.07928545881168E+0001 7.08447748725594E+0001 7.08967189984869E+0001 7.09486869732009E+0001 7.10006788039955E+0001 + 7.10526944981721E+0001 7.11047340630357E+0001 7.11567975058861E+0001 7.12088848340263E+0001 7.12609960547561E+0001 + 7.13131311753950E+0001 7.13652902032409E+0001 7.14174731456023E+0001 7.14696800097900E+0001 7.15219108031160E+0001 + 7.15741655328875E+0001 7.16264442064221E+0001 7.16787468310340E+0001 7.17310734140374E+0001 7.17834239627482E+0001 + 7.18357984844824E+0001 7.18881969865670E+0001 7.19406194763051E+0001 7.19930659610345E+0001 7.20455364480695E+0001 + 7.20980309447368E+0001 7.21505494583616E+0001 7.22030919962635E+0001 7.22556585657767E+0001 7.23082491742243E+0001 + 7.23608638289425E+0001 7.24135025372525E+0001 7.24661653064868E+0001 7.25188521439886E+0001 7.25715630570812E+0001 + 7.26242980531024E+0001 7.26770571393899E+0001 7.27298403232799E+0001 7.27826476121118E+0001 7.28354790132307E+0001 + 7.28883345339673E+0001 7.29412141816647E+0001 7.29941179636753E+0001 7.30470458873351E+0001 7.30999979599983E+0001 + 7.31529741889972E+0001 7.32059745816914E+0001 7.32589991454261E+0001 7.33120478875571E+0001 7.33651208154242E+0001 + 7.34182179363943E+0001 7.34713392578105E+0001 7.35244847870235E+0001 7.35776545314075E+0001 7.36308484983001E+0001 + 7.36840666950757E+0001 7.37373091290792E+0001 7.37905758076849E+0001 7.38438667382452E+0001 7.38971819281251E+0001 + 7.39505213846896E+0001 7.40038851153113E+0001 7.40572731273423E+0001 7.41106854281570E+0001 7.41641220251277E+0001 + 7.42175829256212E+0001 7.42710681370099E+0001 7.43245776666645E+0001 7.43781115219572E+0001 7.44316697102713E+0001 + 7.44852522389720E+0001 7.45388591154351E+0001 7.45924903470495E+0001 7.46461459411876E+0001 7.46998259052325E+0001 + 7.47535302465676E+0001 7.48072589725707E+0001 7.48610120906214E+0001 7.49147896081176E+0001 7.49685915324353E+0001 + 7.50224178709686E+0001 7.50762686311027E+0001 7.51301438202281E+0001 7.51840434457372E+0001 7.52379675150169E+0001 + 7.52919160354704E+0001 7.53458890144793E+0001 7.53998864594487E+0001 7.54539083777709E+0001 7.55079547768455E+0001 + 7.55620256640705E+0001 7.56161210468508E+0001 7.56702409325808E+0001 7.57243853286673E+0001 7.57785542425117E+0001 + 7.58327476815211E+0001 7.58869656531024E+0001 7.59412081646587E+0001 7.59954752236044E+0001 7.60497668373482E+0001 + 7.61040830132915E+0001 7.61584237588522E+0001 7.62127890814518E+0001 7.62671789884880E+0001 7.63215934873879E+0001 + 7.63760325855656E+0001 7.64304962904389E+0001 7.64849846094239E+0001 7.65394975499439E+0001 7.65940351194222E+0001 + 7.66485973252747E+0001 7.67031841749267E+0001 7.67577956758087E+0001 7.68124318353402E+0001 7.68670926609466E+0001 + 7.69217781600637E+0001 7.69764883401167E+0001 7.70312232085362E+0001 7.70859827727509E+0001 7.71407670401986E+0001 + 7.71955760183118E+0001 7.72504097145193E+0001 7.73052681362751E+0001 7.73601512909918E+0001 7.74150591861307E+0001 + 7.74699918291208E+0001 7.75249492274015E+0001 7.75799313884199E+0001 7.76349383196157E+0001 7.76899700284339E+0001 + 7.77450265223197E+0001 7.78001078087254E+0001 7.78552138950927E+0001 7.79103447888720E+0001 7.79655004975139E+0001 + 7.80206810284708E+0001 7.80758863891988E+0001 7.81311165871393E+0001 7.81863716297648E+0001 7.82416515245150E+0001 + 7.82969562788585E+0001 7.83522859002533E+0001 7.84076403961462E+0001 7.84630197740134E+0001 7.85184240413073E+0001 + 7.85738532054929E+0001 7.86293072740391E+0001 7.86847862544073E+0001 7.87402901540627E+0001 7.87958189804795E+0001 + 7.88513727411173E+0001 7.89069514434523E+0001 7.89625550949586E+0001 7.90181837030996E+0001 7.90738372753567E+0001 + 7.91295158191970E+0001 7.91852193421037E+0001 7.92409478515492E+0001 7.92967013550169E+0001 7.93524798599810E+0001 + 7.94082833739267E+0001 7.94641119043281E+0001 7.95199654586777E+0001 7.95758440444461E+0001 7.96317476691383E+0001 + 7.96876763402233E+0001 7.97436300651971E+0001 7.97996088515447E+0001 7.98556127067550E+0001 7.99116416383258E+0001 + 7.99676956537369E+0001 8.00237747604988E+0001 8.00798789660912E+0001 8.01360082780193E+0001 8.01921627037718E+0001 + 8.02483422508485E+0001 8.03045469267563E+0001 8.03607767389876E+0001 8.04170316950440E+0001 8.04733118024360E+0001 + 8.05296170686579E+0001 8.05859475012221E+0001 8.06423031076229E+0001 8.06986838953835E+0001 8.07550898720056E+0001 + 8.08115210449923E+0001 8.08679774218617E+0001 8.09244590101298E+0001 8.09809658172999E+0001 8.10374978508862E+0001 + 8.10940551184121E+0001 8.11506376273901E+0001 8.12072453853398E+0001 8.12638783997736E+0001 8.13205366782186E+0001 + 8.13772202281980E+0001 8.14339290572298E+0001 8.14906631728336E+0001 8.15474225825401E+0001 8.16042072938744E+0001 + 8.16610173143617E+0001 8.17178526515327E+0001 8.17747133129142E+0001 8.18315993060405E+0001 8.18885106384441E+0001 + 8.19454473176465E+0001 8.20024093511911E+0001 8.20593967466193E+0001 8.21164095114509E+0001 8.21734476532365E+0001 + 8.22305111795158E+0001 8.22876000978213E+0001 8.23447144156926E+0001 8.24018541406749E+0001 8.24590192803116E+0001 + 8.25162098421551E+0001 8.25734258337434E+0001 8.26306672626197E+0001 8.26879341363365E+0001 8.27452264624462E+0001 + 8.28025442484941E+0001 8.28598875020325E+0001 8.29172562306121E+0001 8.29746504418035E+0001 8.30320701431301E+0001 + 8.30895153421734E+0001 8.31469860464858E+0001 8.32044822636199E+0001 8.32620040011352E+0001 8.33195512666025E+0001 + 8.33771240675705E+0001 8.34347224116100E+0001 8.34923463062914E+0001 8.35499957591674E+0001 8.36076707778120E+0001 + 8.36653713697888E+0001 8.37230975426683E+0001 8.37808493040211E+0001 8.38386266614143E+0001 8.38964296224367E+0001 + 8.39542581946480E+0001 8.40121123856188E+0001 8.40699922029380E+0001 8.41278976541689E+0001 8.41858287469004E+0001 + 8.42437854887066E+0001 8.43017678871729E+0001 8.43597759498771E+0001 8.44178096844043E+0001 8.44758690983326E+0001 + 8.45339541992544E+0001 8.45920649947548E+0001 8.46502014924154E+0001 8.47083636998323E+0001 8.47665516245943E+0001 + 8.48247652742975E+0001 8.48830046565163E+0001 8.49412697788612E+0001 8.49995606489210E+0001 8.50578772742883E+0001 + 8.51162196625628E+0001 8.51745878213478E+0001 8.52329817582322E+0001 8.52914014808266E+0001 8.53498469967199E+0001 + 8.54083183135299E+0001 8.54668154388455E+0001 8.55253383802810E+0001 8.55838871454471E+0001 8.56424617419361E+0001 + 8.57010621773734E+0001 8.57596884593586E+0001 8.58183405954987E+0001 8.58770185934191E+0001 8.59357224607193E+0001 + 8.59944522050246E+0001 8.60532078339384E+0001 8.61119893550931E+0001 8.61707967760922E+0001 8.62296301045608E+0001 + 8.62884893481205E+0001 8.63473745143856E+0001 8.64062856109922E+0001 8.64652226455510E+0001 8.65241856256871E+0001 + 8.65831745590367E+0001 8.66421894532214E+0001 8.67012303158554E+0001 8.67602971545966E+0001 8.68193899770595E+0001 + 8.68785087908727E+0001 8.69376536036689E+0001 8.69968244230986E+0001 8.70560212567798E+0001 8.71152441123450E+0001 + 8.71744929974520E+0001 8.72337679197226E+0001 8.72930688868000E+0001 8.73523959063423E+0001 8.74117489859673E+0001 + 8.74711281333257E+0001 8.75305333560682E+0001 8.75899646618345E+0001 8.76494220582863E+0001 8.77089055530414E+0001 + 8.77684151537760E+0001 8.78279508681371E+0001 8.78875127037645E+0001 8.79471006683198E+0001 8.80067147694535E+0001 + 8.80663550148165E+0001 8.81260214120812E+0001 8.81857139688800E+0001 8.82454326928964E+0001 8.83051775917738E+0001 + 8.83649486731774E+0001 8.84247459447688E+0001 8.84845694142168E+0001 8.85444190891867E+0001 8.86042949773255E+0001 + 8.86641970863166E+0001 8.87241254238252E+0001 8.87840799975202E+0001 8.88440608150740E+0001 8.89040678841484E+0001 + 8.89641012124266E+0001 8.90241608075848E+0001 8.90842466772738E+0001 8.91443588291986E+0001 8.92044972710173E+0001 + 8.92646620104242E+0001 8.93248530550882E+0001 8.93850704126780E+0001 8.94453140909027E+0001 8.95055840974273E+0001 + 8.95658804399427E+0001 8.96262031261285E+0001 8.96865521636792E+0001 8.97469275602743E+0001 8.98073293236012E+0001 + 8.98677574613575E+0001 8.99282119812378E+0001 8.99886928909182E+0001 9.00492001981074E+0001 9.01097339104927E+0001 + 9.01702940357682E+0001 9.02308805816392E+0001 9.02914935557965E+0001 9.03521329659379E+0001 9.04127988197761E+0001 + 9.04734911250016E+0001 9.05342098893088E+0001 9.05949551204285E+0001 9.06557268260331E+0001 9.07165250138569E+0001 + 9.07773496915906E+0001 9.08382008669469E+0001 9.08990785476381E+0001 9.09599827413840E+0001 9.10209134558754E+0001 + 9.10818706988284E+0001 9.11428544779737E+0001 9.12038648010202E+0001 9.12649016756768E+0001 9.13259651096669E+0001 + 9.13870551107175E+0001 9.14481716865375E+0001 9.15093148448541E+0001 9.15704845933833E+0001 9.16316809398559E+0001 + 9.16929038919916E+0001 9.17541534575139E+0001 9.18154296441608E+0001 9.18767324596520E+0001 9.19380619117219E+0001 + 9.19994180080939E+0001 9.20608007565097E+0001 9.21222101646927E+0001 9.21836462403917E+0001 9.22451089913229E+0001 + 9.23065984252280E+0001 9.23681145498522E+0001 9.24296573729298E+0001 9.24912269022134E+0001 9.25528231454191E+0001 + 9.26144461103031E+0001 9.26760958046034E+0001 9.27377722360798E+0001 9.27994754124593E+0001 9.28612053415018E+0001 + 9.29229620309452E+0001 9.29847454885494E+0001 9.30465557220632E+0001 9.31083927392247E+0001 9.31702565477972E+0001 + 9.32321471555406E+0001 9.32940645701965E+0001 9.33560087995356E+0001 9.34179798512960E+0001 9.34799777332628E+0001 + 9.35420024531668E+0001 9.36040540187896E+0001 9.36661324378802E+0001 9.37282377182128E+0001 9.37903698675509E+0001 + 9.38525288936544E+0001 9.39147148042903E+0001 9.39769276072220E+0001 9.40391673102313E+0001 9.41014339210778E+0001 + 9.41637274475434E+0001 9.42260478973876E+0001 9.42883952783923E+0001 9.43507695983280E+0001 9.44131708649766E+0001 + 9.44755990861122E+0001 9.45380542695093E+0001 9.46005364229532E+0001 9.46630455542181E+0001 9.47255816710895E+0001 + 9.47881447813634E+0001 9.48507348927997E+0001 9.49133520131982E+0001 9.49759961503405E+0001 9.50386673120156E+0001 + 9.51013655060233E+0001 9.51640907401306E+0001 9.52268430221411E+0001 9.52896223598545E+0001 9.53524287610562E+0001 + 9.54152622335387E+0001 9.54781227850981E+0001 9.55410104235380E+0001 9.56039251566544E+0001 9.56668669922510E+0001 + 9.57298359381093E+0001 9.57928320020401E+0001 9.58558551918613E+0001 9.59189055153583E+0001 9.59819829803491E+0001 + 9.60450875946262E+0001 9.61082193660113E+0001 9.61713783023006E+0001 9.62345644113157E+0001 9.62977777008637E+0001 + 9.63610181787408E+0001 9.64242858527832E+0001 9.64875807307908E+0001 9.65509028205925E+0001 9.66142521299844E+0001 + 9.66776286668137E+0001 9.67410324388766E+0001 9.68044634539874E+0001 9.68679217199897E+0001 9.69314072446869E+0001 + 9.69949200359297E+0001 9.70584601015107E+0001 9.71220274492662E+0001 9.71856220870322E+0001 9.72492440226306E+0001 + 9.73128932639011E+0001 9.73765698186508E+0001 9.74402736947413E+0001 9.75040048999799E+0001 9.75677634422100E+0001 + 9.76315493292750E+0001 9.76953625690003E+0001 9.77592031692329E+0001 9.78230711378055E+0001 9.78869664825543E+0001 + 9.79508892113263E+0001 9.80148393319723E+0001 9.80788168523213E+0001 9.81428217802168E+0001 9.82068541235094E+0001 + 9.82709138900573E+0001 9.83350010877002E+0001 9.83991157242708E+0001 9.84632578076416E+0001 9.85274273456707E+0001 + 9.85916243461834E+0001 9.86558488170449E+0001 9.87201007661315E+0001 9.87843802012576E+0001 9.88486871303212E+0001 + 9.89130215611549E+0001 9.89773835016385E+0001 9.90417729596047E+0001 9.91061899429515E+0001 9.91706344595077E+0001 + 9.92351065171606E+0001 9.92996061237718E+0001 9.93641332871994E+0001 9.94286880153122E+0001 9.94932703159866E+0001 + 9.95578801970987E+0001 9.96225176664993E+0001 9.96871827320792E+0001 9.97518754017074E+0001 9.98165956832490E+0001 + 9.98813435845987E+0001 9.99461191136106E+0001 1.00010922278183E+0002 1.00075753086195E+0002 1.00140611545510E+0002 + 1.00205497664017E+0002 1.00270411449615E+0002 1.00335352910158E+0002 1.00400322053563E+0002 1.00465318887701E+0002 + 1.00530343420450E+0002 1.00595395659722E+0002 1.00660475613392E+0002 1.00725583289342E+0002 1.00790718695483E+0002 + 1.00855881839710E+0002 1.00921072729903E+0002 1.00986291373963E+0002 1.01051537779796E+0002 1.01116811955289E+0002 + 1.01182113908333E+0002 1.01247443646847E+0002 1.01312801178733E+0002 1.01378186511872E+0002 1.01443599654187E+0002 + 1.01509040613582E+0002 1.01574509397964E+0002 1.01640006015219E+0002 1.01705530473293E+0002 1.01771082780065E+0002 + 1.01836662943456E+0002 1.01902270971382E+0002 1.01967906871741E+0002 1.02033570652478E+0002 1.02099262321480E+0002 + 1.02164981886668E+0002 1.02230729355978E+0002 1.02296504737310E+0002 1.02362308038584E+0002 1.02428139267740E+0002 + 1.02493998432677E+0002 1.02559885541344E+0002 1.02625800601643E+0002 1.02691743621504E+0002 1.02757714608858E+0002 + 1.02823713571655E+0002 1.02889740517788E+0002 1.02955795455211E+0002 1.03021878391839E+0002 1.03087989335628E+0002 + 1.03154128294489E+0002 1.03220295276372E+0002 1.03286490289207E+0002 1.03352713340937E+0002 1.03418964439493E+0002 + 1.03485243592818E+0002 1.03551550808857E+0002 1.03617886095555E+0002 1.03684249460846E+0002 1.03750640912680E+0002 + 1.03817060458997E+0002 1.03883508107755E+0002 1.03949983866892E+0002 1.04016487744371E+0002 1.04083019748122E+0002 + 1.04149579886106E+0002 1.04216168166287E+0002 1.04282784596602E+0002 1.04349429185018E+0002 1.04416101939485E+0002 + 1.04482802867958E+0002 1.04549531978402E+0002 1.04616289278776E+0002 1.04683074777040E+0002 1.04749888481157E+0002 + 1.04816730399077E+0002 1.04883600538785E+0002 1.04950498908248E+0002 1.05017425515405E+0002 1.05084380368240E+0002 + 1.05151363474738E+0002 1.05218374842847E+0002 1.05285414480546E+0002 1.05352482395803E+0002 1.05419578596611E+0002 + 1.05486703090915E+0002 1.05553855886708E+0002 1.05621036991971E+0002 1.05688246414676E+0002 1.05755484162808E+0002 + 1.05822750244340E+0002 1.05890044667256E+0002 1.05957367439532E+0002 1.06024718569176E+0002 1.06092098064153E+0002 + 1.06159505932442E+0002 1.06226942182056E+0002 1.06294406820969E+0002 1.06361899857165E+0002 1.06429421298657E+0002 + 1.06496971153403E+0002 1.06564549429429E+0002 1.06632156134714E+0002 1.06699791277253E+0002 1.06767454865057E+0002 + 1.06835146906109E+0002 1.06902867408414E+0002 1.06970616379974E+0002 1.07038393828785E+0002 1.07106199762856E+0002 + 1.07174034190189E+0002 1.07241897118783E+0002 1.07309788556656E+0002 1.07377708511816E+0002 1.07445656992251E+0002 + 1.07513634005994E+0002 1.07581639561034E+0002 1.07649673665404E+0002 1.07717736327114E+0002 1.07785827554165E+0002 + 1.07853947354586E+0002 1.07922095736390E+0002 1.07990272707589E+0002 1.08058478276208E+0002 1.08126712450266E+0002 + 1.08194975237787E+0002 1.08263266646790E+0002 1.08331586685300E+0002 1.08399935361336E+0002 1.08468312682936E+0002 + 1.08536718658120E+0002 1.08605153294920E+0002 1.08673616601361E+0002 1.08742108585473E+0002 1.08810629255283E+0002 + 1.08879178618844E+0002 1.08947756684174E+0002 1.09016363459311E+0002 1.09084998952294E+0002 1.09153663171153E+0002 + 1.09222356123948E+0002 1.09291077818688E+0002 1.09359828263433E+0002 1.09428607466234E+0002 1.09497415435114E+0002 + 1.09566252178119E+0002 1.09635117703324E+0002 1.09704012018737E+0002 1.09772935132423E+0002 1.09841887052440E+0002 + 1.09910867786831E+0002 1.09979877343641E+0002 1.10048915730931E+0002 1.10117982956748E+0002 1.10187079029157E+0002 + 1.10256203956214E+0002 1.10325357745972E+0002 1.10394540406483E+0002 1.10463751945812E+0002 1.10532992372023E+0002 + 1.10602261693184E+0002 1.10671559917351E+0002 1.10740887052576E+0002 1.10810243106931E+0002 1.10879628088507E+0002 + 1.10949042005348E+0002 1.11018484865519E+0002 1.11087956677110E+0002 1.11157457448171E+0002 1.11226987186793E+0002 + 1.11296545901048E+0002 1.11366133599003E+0002 1.11435750288725E+0002 1.11505395978307E+0002 1.11575070675826E+0002 + 1.11644774389358E+0002 1.11714507126987E+0002 1.11784268896786E+0002 1.11854059706845E+0002 1.11923879565252E+0002 + 1.11993728480083E+0002 1.12063606459429E+0002 1.12133513511380E+0002 1.12203449644021E+0002 1.12273414865445E+0002 + 1.12343409183740E+0002 1.12413432606998E+0002 1.12483485143326E+0002 1.12553566800797E+0002 1.12623677587515E+0002 + 1.12693817511582E+0002 1.12763986581092E+0002 1.12834184804156E+0002 1.12904412188843E+0002 1.12974668743292E+0002 + 1.13044954475593E+0002 1.13115269393845E+0002 1.13185613506146E+0002 1.13255986820615E+0002 1.13326389345347E+0002 + 1.13396821088470E+0002 1.13467282058081E+0002 1.13537772262290E+0002 1.13608291709220E+0002 1.13678840406963E+0002 + 1.13749418363659E+0002 1.13820025587399E+0002 1.13890662086323E+0002 1.13961327868528E+0002 1.14032022942155E+0002 + 1.14102747315304E+0002 1.14173500996097E+0002 1.14244283992677E+0002 1.14315096313148E+0002 1.14385937965642E+0002 + 1.14456808958286E+0002 1.14527709299211E+0002 1.14598638996540E+0002 1.14669598058393E+0002 1.14740586492924E+0002 + 1.14811604308237E+0002 1.14882651512496E+0002 1.14953728113796E+0002 1.15024834120315E+0002 1.15095969540165E+0002 + 1.15167134381488E+0002 1.15238328652423E+0002 1.15309552361104E+0002 1.15380805515691E+0002 1.15452088124300E+0002 + 1.15523400195092E+0002 1.15594741736218E+0002 1.15666112755803E+0002 1.15737513262014E+0002 1.15808943262985E+0002 + 1.15880402766870E+0002 1.15951891781813E+0002 1.16023410315978E+0002 1.16094958377514E+0002 1.16166535974574E+0002 + 1.16238143115315E+0002 1.16309779807877E+0002 1.16381446060444E+0002 1.16453141881153E+0002 1.16524867278170E+0002 + 1.16596622259672E+0002 1.16668406833796E+0002 1.16740221008727E+0002 1.16812064792615E+0002 1.16883938193626E+0002 + 1.16955841219933E+0002 1.17027773879701E+0002 1.17099736181106E+0002 1.17171728132310E+0002 1.17243749741472E+0002 + 1.17315801016793E+0002 1.17387881966424E+0002 1.17459992598545E+0002 1.17532132921343E+0002 1.17604302943000E+0002 + 1.17676502671663E+0002 1.17748732115534E+0002 1.17820991282798E+0002 1.17893280181626E+0002 1.17965598820203E+0002 + 1.18037947206707E+0002 1.18110325349345E+0002 1.18182733256289E+0002 1.18255170935710E+0002 1.18327638395829E+0002 + 1.18400135644817E+0002 1.18472662690863E+0002 1.18545219542167E+0002 1.18617806206941E+0002 1.18690422693325E+0002 + 1.18763069009568E+0002 1.18835745163854E+0002 1.18908451164363E+0002 1.18981187019315E+0002 1.19053952736900E+0002 + 1.19126748325321E+0002 1.19199573792786E+0002 1.19272429147498E+0002 1.19345314397647E+0002 1.19418229551451E+0002 + 1.19491174617131E+0002 1.19564149602872E+0002 1.19637154516895E+0002 1.19710189367415E+0002 1.19783254162637E+0002 + 1.19856348910772E+0002 1.19929473620039E+0002 1.20002628298654E+0002 1.20075812954837E+0002 1.20149027596802E+0002 + 1.20222272232767E+0002 1.20295546870947E+0002 1.20368851519575E+0002 1.20442186186868E+0002 1.20515550881056E+0002 + 1.20588945610354E+0002 1.20662370382993E+0002 1.20735825207189E+0002 1.20809310091186E+0002 1.20882825043208E+0002 + 1.20956370071497E+0002 1.21029945184258E+0002 1.21103550389751E+0002 1.21177185696193E+0002 1.21250851111821E+0002 + 1.21324546644882E+0002 1.21398272303617E+0002 1.21472028096239E+0002 1.21545814031014E+0002 1.21619630116169E+0002 + 1.21693476359949E+0002 1.21767352770610E+0002 1.21841259356377E+0002 1.21915196125508E+0002 1.21989163086243E+0002 + 1.22063160246838E+0002 1.22137187615535E+0002 1.22211245200593E+0002 1.22285333010255E+0002 1.22359451052776E+0002 + 1.22433599336411E+0002 1.22507777869417E+0002 1.22581986660043E+0002 1.22656225716560E+0002 1.22730495047224E+0002 + 1.22804794660281E+0002 1.22879124564002E+0002 1.22953484766640E+0002 1.23027875276475E+0002 1.23102296101758E+0002 + 1.23176747250759E+0002 1.23251228731755E+0002 1.23325740552983E+0002 1.23400282722752E+0002 1.23474855249300E+0002 + 1.23549458140914E+0002 1.23624091405858E+0002 1.23698755052424E+0002 1.23773449088876E+0002 1.23848173523474E+0002 + 1.23922928364521E+0002 1.23997713620276E+0002 1.24072529299035E+0002 1.24147375409062E+0002 1.24222251958650E+0002 + 1.24297158956080E+0002 1.24372096409631E+0002 1.24447064327603E+0002 1.24522062718260E+0002 1.24597091589908E+0002 + 1.24672150950831E+0002 1.24747240809319E+0002 1.24822361173661E+0002 1.24897512052146E+0002 1.24972693453066E+0002 + 1.25047905384737E+0002 1.25123147855432E+0002 1.25198420873453E+0002 1.25273724447102E+0002 1.25349058584673E+0002 + 1.25424423294472E+0002 1.25499818584805E+0002 1.25575244463965E+0002 1.25650700940259E+0002 1.25726188021995E+0002 + 1.25801705717469E+0002 1.25877254035000E+0002 1.25952832982897E+0002 1.26028442569459E+0002 1.26104082803009E+0002 + 1.26179753691849E+0002 1.26255455244303E+0002 1.26331187468669E+0002 1.26406950373293E+0002 1.26482743966451E+0002 + 1.26558568256488E+0002 1.26634423251722E+0002 1.26710308960464E+0002 1.26786225391035E+0002 1.26862172551776E+0002 + 1.26938150450980E+0002 1.27014159096997E+0002 1.27090198498146E+0002 1.27166268662738E+0002 1.27242369599127E+0002 + 1.27318501315639E+0002 1.27394663820588E+0002 1.27470857122327E+0002 1.27547081229160E+0002 1.27623336149437E+0002 + 1.27699621891515E+0002 1.27775938463699E+0002 1.27852285874345E+0002 1.27928664131766E+0002 1.28005073244338E+0002 + 1.28081513220382E+0002 1.28157984068239E+0002 1.28234485796253E+0002 1.28311018412795E+0002 1.28387581926159E+0002 + 1.28464176344740E+0002 1.28540801676856E+0002 1.28617457930872E+0002 1.28694145115132E+0002 1.28770863238002E+0002 + 1.28847612307804E+0002 1.28924392332916E+0002 1.29001203321692E+0002 1.29078045282487E+0002 1.29154918223652E+0002 + 1.29231822153546E+0002 1.29308757080529E+0002 1.29385723012980E+0002 1.29462719959225E+0002 1.29539747927662E+0002 + 1.29616806926639E+0002 1.29693896964516E+0002 1.29771018049676E+0002 1.29848170190471E+0002 1.29925353395280E+0002 + 1.30002567672476E+0002 1.30079813030417E+0002 1.30157089477500E+0002 1.30234397022068E+0002 1.30311735672509E+0002 + 1.30389105437211E+0002 1.30466506324530E+0002 1.30543938342864E+0002 1.30621401500575E+0002 1.30698895806057E+0002 + 1.30776421267685E+0002 1.30853977893847E+0002 1.30931565692921E+0002 1.31009184673294E+0002 1.31086834843361E+0002 + 1.31164516211495E+0002 1.31242228786101E+0002 1.31319972575555E+0002 1.31397747588253E+0002 1.31475553832592E+0002 + 1.31553391316949E+0002 1.31631260049740E+0002 1.31709160039361E+0002 1.31787091294183E+0002 1.31865053822628E+0002 + 1.31943047633096E+0002 1.32021072733969E+0002 1.32099129133669E+0002 1.32177216840584E+0002 1.32255335863116E+0002 + 1.32333486209685E+0002 1.32411667888689E+0002 1.32489880908535E+0002 1.32568125277630E+0002 1.32646401004393E+0002 + 1.32724708097219E+0002 1.32803046564532E+0002 1.32881416414748E+0002 1.32959817656276E+0002 1.33038250297530E+0002 + 1.33116714346917E+0002 1.33195209812882E+0002 1.33273736703813E+0002 1.33352295028159E+0002 1.33430884794314E+0002 + 1.33509506010727E+0002 1.33588158685805E+0002 1.33666842827981E+0002 1.33745558445666E+0002 1.33824305547296E+0002 + 1.33903084141319E+0002 1.33981894236131E+0002 1.34060735840187E+0002 1.34139608961905E+0002 1.34218513609732E+0002 + 1.34297449792080E+0002 1.34376417517407E+0002 1.34455416794142E+0002 1.34534447630715E+0002 1.34613510035571E+0002 + 1.34692604017149E+0002 1.34771729583903E+0002 1.34850886744247E+0002 1.34930075506658E+0002 1.35009295879550E+0002 + 1.35088547871379E+0002 1.35167831490609E+0002 1.35247146745660E+0002 1.35326493645010E+0002 1.35405872197087E+0002 + 1.35485282410347E+0002 1.35564724293254E+0002 1.35644197854235E+0002 1.35723703101783E+0002 1.35803240044330E+0002 + 1.35882808690352E+0002 1.35962409048276E+0002 1.36042041126595E+0002 1.36121704933739E+0002 1.36201400478207E+0002 + 1.36281127768427E+0002 1.36360886812876E+0002 1.36440677620034E+0002 1.36520500198349E+0002 1.36600354556289E+0002 + 1.36680240702335E+0002 1.36760158644953E+0002 1.36840108392607E+0002 1.36920089953783E+0002 1.37000103336937E+0002 + 1.37080148550562E+0002 1.37160225603118E+0002 1.37240334503087E+0002 1.37320475258970E+0002 1.37400647879207E+0002 + 1.37480852372308E+0002 1.37561088746737E+0002 1.37641357010998E+0002 1.37721657173555E+0002 1.37801989242889E+0002 + 1.37882353227520E+0002 1.37962749135910E+0002 1.38043176976546E+0002 1.38123636757915E+0002 1.38204128488531E+0002 + 1.38284652176862E+0002 1.38365207831419E+0002 1.38445795460684E+0002 1.38526415073167E+0002 1.38607066677348E+0002 + 1.38687750281730E+0002 1.38768465894827E+0002 1.38849213525111E+0002 1.38929993181111E+0002 1.39010804871319E+0002 + 1.39091648604230E+0002 1.39172524388370E+0002 1.39253432232232E+0002 1.39334372144316E+0002 1.39415344133140E+0002 + 1.39496348207223E+0002 1.39577384375061E+0002 1.39658452645162E+0002 1.39739553026051E+0002 1.39820685526254E+0002 + 1.39901850154260E+0002 1.39983046918602E+0002 1.40064275827786E+0002 1.40145536890344E+0002 1.40226830114796E+0002 + 1.40308155509647E+0002 1.40389513083435E+0002 1.40470902844689E+0002 1.40552324801916E+0002 1.40633778963645E+0002 + 1.40715265338415E+0002 1.40796783934740E+0002 1.40878334761168E+0002 1.40959917826218E+0002 1.41041533138410E+0002 + 1.41123180706305E+0002 1.41204860538408E+0002 1.41286572643286E+0002 1.41368317029432E+0002 1.41450093705440E+0002 + 1.41531902679795E+0002 1.41613743961072E+0002 1.41695617557794E+0002 1.41777523478508E+0002 1.41859461731758E+0002 + 1.41941432326093E+0002 1.42023435270046E+0002 1.42105470572187E+0002 1.42187538241051E+0002 1.42269638285168E+0002 + 1.42351770713121E+0002 1.42433935533449E+0002 1.42516132754699E+0002 1.42598362385426E+0002 1.42680624434197E+0002 + 1.42762918909542E+0002 1.42845245820048E+0002 1.42927605174264E+0002 1.43009996980742E+0002 1.43092421248050E+0002 + 1.43174877984748E+0002 1.43257367199396E+0002 1.43339888900569E+0002 1.43422443096806E+0002 1.43505029796710E+0002 + 1.43587649008827E+0002 1.43670300741735E+0002 1.43752985003990E+0002 1.43835701804175E+0002 1.43918451150879E+0002 + 1.44001233052630E+0002 1.44084047518048E+0002 1.44166894555681E+0002 1.44249774174121E+0002 1.44332686381942E+0002 + 1.44415631187716E+0002 1.44498608600035E+0002 1.44581618627479E+0002 1.44664661278635E+0002 1.44747736562062E+0002 + 1.44830844486380E+0002 1.44913985060146E+0002 1.44997158291975E+0002 1.45080364190431E+0002 1.45163602764122E+0002 + 1.45246874021621E+0002 1.45330177971540E+0002 1.45413514622465E+0002 1.45496883982974E+0002 1.45580286061693E+0002 + 1.45663720867204E+0002 1.45747188408099E+0002 1.45830688692979E+0002 1.45914221730454E+0002 1.45997787529119E+0002 + 1.46081386097572E+0002 1.46165017444426E+0002 1.46248681578290E+0002 1.46332378507763E+0002 1.46416108241428E+0002 + 1.46499870787942E+0002 1.46583666155886E+0002 1.46667494353875E+0002 1.46751355390523E+0002 1.46835249274423E+0002 + 1.46919176014231E+0002 1.47003135618528E+0002 1.47087128095936E+0002 1.47171153455100E+0002 1.47255211704596E+0002 + 1.47339302853074E+0002 1.47423426909150E+0002 1.47507583881441E+0002 1.47591773778575E+0002 1.47675996609178E+0002 + 1.47760252381864E+0002 1.47844541105274E+0002 1.47928862788031E+0002 1.48013217438765E+0002 1.48097605066108E+0002 + 1.48182025678685E+0002 1.48266479285143E+0002 1.48350965894104E+0002 1.48435485514205E+0002 1.48520038154085E+0002 + 1.48604623822379E+0002 1.48689242527726E+0002 1.48773894278776E+0002 1.48858579084157E+0002 1.48943296952515E+0002 + 1.49028047892498E+0002 1.49112831912738E+0002 1.49197649021895E+0002 1.49282499228608E+0002 1.49367382541528E+0002 + 1.49452298969311E+0002 1.49537248520592E+0002 1.49622231204023E+0002 1.49707247028284E+0002 1.49792296001990E+0002 + 1.49877378133828E+0002 1.49962493432442E+0002 1.50047641906483E+0002 1.50132823564614E+0002 1.50218038415500E+0002 + 1.50303286467795E+0002 1.50388567730166E+0002 1.50473882211267E+0002 1.50559229919778E+0002 1.50644610864354E+0002 + 1.50730025053665E+0002 1.50815472496368E+0002 1.50900953201148E+0002 1.50986467176670E+0002 1.51072014431604E+0002 + 1.51157594974618E+0002 1.51243208814398E+0002 1.51328855959597E+0002 1.51414536418906E+0002 1.51500250201010E+0002 + 1.51585997314582E+0002 1.51671777768279E+0002 1.51757591570808E+0002 1.51843438730848E+0002 1.51929319257077E+0002 + 1.52015233158170E+0002 1.52101180442831E+0002 1.52187161119728E+0002 1.52273175197570E+0002 1.52359222685016E+0002 + 1.52445303590779E+0002 1.52531417923539E+0002 1.52617565691999E+0002 1.52703746904845E+0002 1.52789961570783E+0002 + 1.52876209698483E+0002 1.52962491296665E+0002 1.53048806374019E+0002 1.53135154939238E+0002 1.53221537001038E+0002 + 1.53307952568106E+0002 1.53394401649151E+0002 1.53480884252880E+0002 1.53567400387998E+0002 1.53653950063192E+0002 + 1.53740533287193E+0002 1.53827150068708E+0002 1.53913800416423E+0002 1.54000484339078E+0002 1.54087201845377E+0002 + 1.54173952944020E+0002 1.54260737643734E+0002 1.54347555953220E+0002 1.54434407881214E+0002 1.54521293436428E+0002 + 1.54608212627576E+0002 1.54695165463370E+0002 1.54782151952550E+0002 1.54869172103827E+0002 1.54956225925936E+0002 + 1.55043313427585E+0002 1.55130434617506E+0002 1.55217589504431E+0002 1.55304778097088E+0002 1.55392000404201E+0002 + 1.55479256434508E+0002 1.55566546196729E+0002 1.55653869699607E+0002 1.55741226951868E+0002 1.55828617962266E+0002 + 1.55916042739515E+0002 1.56003501292358E+0002 1.56090993629543E+0002 1.56178519759796E+0002 1.56266079691875E+0002 + 1.56353673434503E+0002 1.56441300996452E+0002 1.56528962386430E+0002 1.56616657613213E+0002 1.56704386685524E+0002 + 1.56792149612131E+0002 1.56879946401776E+0002 1.56967777063197E+0002 1.57055641605173E+0002 1.57143540036428E+0002 + 1.57231472365725E+0002 1.57319438601826E+0002 1.57407438753486E+0002 1.57495472829465E+0002 1.57583540838506E+0002 + 1.57671642789388E+0002 1.57759778690852E+0002 1.57847948551680E+0002 1.57936152380618E+0002 1.58024390186445E+0002 + 1.58112661977921E+0002 1.58200967763805E+0002 1.58289307552870E+0002 1.58377681353883E+0002 1.58466089175618E+0002 + 1.58554531026854E+0002 1.58643006916340E+0002 1.58731516852884E+0002 1.58820060845217E+0002 1.58908638902158E+0002 + 1.58997251032455E+0002 1.59085897244895E+0002 1.59174577548260E+0002 1.59263291951342E+0002 1.59352040462894E+0002 + 1.59440823091718E+0002 1.59529639846594E+0002 1.59618490736309E+0002 1.59707375769649E+0002 1.59796294955402E+0002 + 1.59885248302355E+0002 1.59974235819289E+0002 1.60063257515019E+0002 1.60152313398321E+0002 1.60241403477987E+0002 + 1.60330527762810E+0002 1.60419686261590E+0002 1.60508878983128E+0002 1.60598105936209E+0002 1.60687367129656E+0002 + 1.60776662572243E+0002 1.60865992272786E+0002 1.60955356240083E+0002 1.61044754482940E+0002 1.61134187010171E+0002 + 1.61223653830555E+0002 1.61313154952932E+0002 1.61402690386090E+0002 1.61492260138843E+0002 1.61581864219992E+0002 + 1.61671502638372E+0002 1.61761175402782E+0002 1.61850882522038E+0002 1.61940624004954E+0002 1.62030399860345E+0002 + 1.62120210097037E+0002 1.62210054723848E+0002 1.62299933749571E+0002 1.62389847183069E+0002 1.62479795033145E+0002 + 1.62569777308614E+0002 1.62659794018320E+0002 1.62749845171078E+0002 1.62839930775710E+0002 1.62930050841045E+0002 + 1.63020205375917E+0002 1.63110394389158E+0002 1.63200617889612E+0002 1.63290875886087E+0002 1.63381168387426E+0002 + 1.63471495402468E+0002 1.63561856940050E+0002 1.63652253009015E+0002 1.63742683618180E+0002 1.63833148776408E+0002 + 1.63923648492524E+0002 1.64014182775376E+0002 1.64104751633811E+0002 1.64195355076678E+0002 1.64285993112808E+0002 + 1.64376665751057E+0002 1.64467373000272E+0002 1.64558114869291E+0002 1.64648891366985E+0002 1.64739702502200E+0002 + 1.64830548283782E+0002 1.64921428720576E+0002 1.65012343821443E+0002 1.65103293595261E+0002 1.65194278050865E+0002 + 1.65285297197112E+0002 1.65376351042865E+0002 1.65467439597000E+0002 1.65558562868358E+0002 1.65649720865815E+0002 + 1.65740913598227E+0002 1.65832141074461E+0002 1.65923403303397E+0002 1.66014700293879E+0002 1.66106032054788E+0002 + 1.66197398595003E+0002 1.66288799923386E+0002 1.66380236048812E+0002 1.66471706980141E+0002 1.66563212726265E+0002 + 1.66654753296054E+0002 1.66746328698391E+0002 1.66837938942135E+0002 1.66929584036196E+0002 1.67021263989427E+0002 + 1.67112978810717E+0002 1.67204728508950E+0002 1.67296513093021E+0002 1.67388332571805E+0002 1.67480186954192E+0002 + 1.67572076249064E+0002 1.67664000465302E+0002 1.67755959611812E+0002 1.67847953697485E+0002 1.67939982731205E+0002 + 1.68032046721859E+0002 1.68124145678357E+0002 1.68216279609591E+0002 1.68308448524440E+0002 1.68400652431832E+0002 + 1.68492891340647E+0002 1.68585165259792E+0002 1.68677474198161E+0002 1.68769818164656E+0002 1.68862197168193E+0002 + 1.68954611217658E+0002 1.69047060321987E+0002 1.69139544490048E+0002 1.69232063730782E+0002 1.69324618053084E+0002 + 1.69417207465871E+0002 1.69509831978045E+0002 1.69602491598525E+0002 1.69695186336237E+0002 1.69787916200075E+0002 + 1.69880681198974E+0002 1.69973481341840E+0002 1.70066316637589E+0002 1.70159187095156E+0002 1.70252092723440E+0002 + 1.70345033531394E+0002 1.70438009527916E+0002 1.70531020721934E+0002 1.70624067122386E+0002 1.70717148738189E+0002 + 1.70810265578275E+0002 1.70903417651563E+0002 1.70996604967004E+0002 1.71089827533517E+0002 1.71183085360037E+0002 + 1.71276378455488E+0002 1.71369706828824E+0002 1.71463070488968E+0002 1.71556469444855E+0002 1.71649903705438E+0002 + 1.71743373279649E+0002 1.71836878176422E+0002 1.71930418404703E+0002 1.72023993973449E+0002 1.72117604891595E+0002 + 1.72211251168072E+0002 1.72304932811850E+0002 1.72398649831855E+0002 1.72492402237054E+0002 1.72586190036396E+0002 + 1.72680013238827E+0002 1.72773871853289E+0002 1.72867765888757E+0002 1.72961695354170E+0002 1.73055660258495E+0002 + 1.73149660610678E+0002 1.73243696419686E+0002 1.73337767694473E+0002 1.73431874444006E+0002 1.73526016677228E+0002 + 1.73620194403142E+0002 1.73714407630665E+0002 1.73808656368808E+0002 1.73902940626493E+0002 1.73997260412718E+0002 + 1.74091615736445E+0002 1.74186006606644E+0002 1.74280433032276E+0002 1.74374895022313E+0002 1.74469392585754E+0002 + 1.74563925731549E+0002 1.74658494468684E+0002 1.74753098806133E+0002 1.74847738752873E+0002 1.74942414317884E+0002 + 1.75037125510142E+0002 1.75131872338643E+0002 1.75226654812359E+0002 1.75321472940272E+0002 1.75416326731367E+0002 + 1.75511216194638E+0002 1.75606141339067E+0002 1.75701102173654E+0002 1.75796098707360E+0002 1.75891130949207E+0002 + 1.75986198908173E+0002 1.76081302593251E+0002 1.76176442013442E+0002 1.76271617177728E+0002 1.76366828095117E+0002 + 1.76462074774616E+0002 1.76557357225200E+0002 1.76652675455887E+0002 1.76748029475664E+0002 1.76843419293553E+0002 + 1.76938844918546E+0002 1.77034306359648E+0002 1.77129803625867E+0002 1.77225336726206E+0002 1.77320905669680E+0002 + 1.77416510465293E+0002 1.77512151122060E+0002 1.77607827648993E+0002 1.77703540055096E+0002 1.77799288349393E+0002 + 1.77895072540905E+0002 1.77990892638623E+0002 1.78086748651585E+0002 1.78182640588824E+0002 1.78278568459322E+0002 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 8.49898852027388E+0001 8.49468438709679E+0001 8.49038337885178E+0001 + 8.48608549125942E+0001 8.48179072004646E+0001 8.47749906094583E+0001 8.47321050969626E+0001 8.46892506204255E+0001 + 8.46464271373560E+0001 8.46036346053207E+0001 8.45608729819497E+0001 8.45181422249311E+0001 8.44754422920134E+0001 + 8.44327731410038E+0001 8.43901347297725E+0001 8.43475270162447E+0001 8.43049499584093E+0001 8.42624035143128E+0001 + 8.42198876420607E+0001 8.41774022998214E+0001 8.41349474458176E+0001 8.40925230383356E+0001 8.40501290357179E+0001 + 8.40077653963685E+0001 8.39654320787494E+0001 8.39231290413823E+0001 8.38808562428468E+0001 8.38386136417819E+0001 + 8.37964011968855E+0001 8.37542188669163E+0001 8.37120666106874E+0001 8.36699443870743E+0001 8.36278521550108E+0001 + 8.35857898734863E+0001 8.35437575015517E+0001 8.35017549983165E+0001 8.34597823229461E+0001 8.34178394346661E+0001 + 8.33759262927592E+0001 8.33340428565660E+0001 8.32921890854888E+0001 8.32503649389830E+0001 8.32085703765642E+0001 + 8.31668053578068E+0001 8.31250698423414E+0001 8.30833637898578E+0001 8.30416871601018E+0001 8.30000399128791E+0001 + 8.29584220080503E+0001 8.29168334055349E+0001 8.28752740653125E+0001 8.28337439474146E+0001 8.27922430119355E+0001 + 8.27507712190225E+0001 8.27093285288830E+0001 8.26679149017795E+0001 8.26265302980335E+0001 8.25851746780220E+0001 + 8.25438480021804E+0001 8.25025502309998E+0001 8.24612813250274E+0001 8.24200412448696E+0001 8.23788299511885E+0001 + 8.23376474047012E+0001 8.22964935661834E+0001 8.22553683964672E+0001 8.22142718564401E+0001 8.21732039070471E+0001 + 8.21321645092875E+0001 8.20911536242204E+0001 8.20501712129574E+0001 8.20092172366692E+0001 8.19682916565815E+0001 + 8.19273944339748E+0001 8.18865255301857E+0001 8.18456849066106E+0001 8.18048725246969E+0001 8.17640883459496E+0001 + 8.17233323319305E+0001 8.16826044442546E+0001 8.16419046445955E+0001 8.16012328946799E+0001 8.15605891562914E+0001 + 8.15199733912680E+0001 8.14793855615027E+0001 8.14388256289470E+0001 8.13982935556038E+0001 8.13577893035324E+0001 + 8.13173128348485E+0001 8.12768641117187E+0001 8.12364430963730E+0001 8.11960497510854E+0001 8.11556840381935E+0001 + 8.11153459200876E+0001 8.10750353592077E+0001 8.10347523180562E+0001 8.09944967591846E+0001 8.09542686452004E+0001 + 8.09140679387671E+0001 8.08738946026011E+0001 8.08337485994730E+0001 8.07936298922095E+0001 8.07535384436881E+0001 + 8.07134742168453E+0001 8.06734371746671E+0001 8.06334272801963E+0001 8.05934444965286E+0001 8.05534887868146E+0001 + 8.05135601142595E+0001 8.04736584421177E+0001 8.04337837337044E+0001 8.03939359523820E+0001 8.03541150615706E+0001 + 8.03143210247423E+0001 8.02745538054239E+0001 8.02348133671948E+0001 8.01950996736874E+0001 8.01554126885877E+0001 + 8.01157523756348E+0001 8.00761186986224E+0001 8.00365116213965E+0001 7.99969311078567E+0001 7.99573771219524E+0001 + 7.99178496276920E+0001 7.98783485891305E+0001 7.98388739703811E+0001 7.97994257356066E+0001 7.97600038490230E+0001 + 7.97206082749002E+0001 7.96812389775596E+0001 7.96418959213747E+0001 7.96025790707740E+0001 7.95632883902350E+0001 + 7.95240238442913E+0001 7.94847853975249E+0001 7.94455730145731E+0001 7.94063866601249E+0001 7.93672262989202E+0001 + 7.93280918957514E+0001 7.92889834154656E+0001 7.92499008229564E+0001 7.92108440831744E+0001 7.91718131611199E+0001 + 7.91328080218452E+0001 7.90938286304546E+0001 7.90548749521032E+0001 7.90159469519990E+0001 7.89770445954018E+0001 + 7.89381678476203E+0001 7.88993166740173E+0001 7.88604910400078E+0001 7.88216909110539E+0001 7.87829162526739E+0001 + 7.87441670304331E+0001 7.87054432099499E+0001 7.86667447568959E+0001 7.86280716369899E+0001 7.85894238160038E+0001 + 7.85508012597600E+0001 7.85122039341326E+0001 7.84736318050436E+0001 7.84350848384701E+0001 7.83965630004360E+0001 + 7.83580662570196E+0001 7.83195945743462E+0001 7.82811479185931E+0001 7.82427262559885E+0001 7.82043295528114E+0001 + 7.81659577753882E+0001 7.81276108901000E+0001 7.80892888633742E+0001 7.80509916616916E+0001 7.80127192515804E+0001 + 7.79744715996198E+0001 7.79362486724406E+0001 7.78980504367221E+0001 7.78598768591920E+0001 7.78217279066318E+0001 + 7.77836035458679E+0001 7.77455037437816E+0001 7.77074284672987E+0001 7.76693776833984E+0001 7.76313513591073E+0001 + 7.75933494615040E+0001 7.75553719577140E+0001 7.75174188149117E+0001 7.74794900003253E+0001 7.74415854812256E+0001 + 7.74037052249392E+0001 7.73658491988368E+0001 7.73280173703420E+0001 7.72902097069233E+0001 7.72524261761029E+0001 + 7.72146667454485E+0001 7.71769313825774E+0001 7.71392200551570E+0001 7.71015327309011E+0001 7.70638693775753E+0001 + 7.70262299629918E+0001 7.69886144550106E+0001 7.69510228215420E+0001 7.69134550305452E+0001 7.68759110500245E+0001 + 7.68383908480374E+0001 7.68008943926861E+0001 7.67634216521217E+0001 7.67259725945440E+0001 7.66885471882015E+0001 + 7.66511454013890E+0001 7.66137672024524E+0001 7.65764125597809E+0001 7.65390814418174E+0001 7.65017738170473E+0001 + 7.64644896540076E+0001 7.64272289212809E+0001 7.63899915874972E+0001 7.63527776213372E+0001 7.63155869915258E+0001 + 7.62784196668368E+0001 7.62412756160923E+0001 7.62041548081598E+0001 7.61670572119550E+0001 7.61299827964427E+0001 + 7.60929315306335E+0001 7.60559033835832E+0001 7.60188983243993E+0001 7.59819163222307E+0001 7.59449573462799E+0001 + 7.59080213657898E+0001 7.58711083500551E+0001 7.58342182684162E+0001 7.57973510902576E+0001 7.57605067850141E+0001 + 7.57236853221660E+0001 7.56868866712390E+0001 7.56501108018077E+0001 7.56133576834916E+0001 7.55766272859563E+0001 + 7.55399195789139E+0001 7.55032345321262E+0001 7.54665721153972E+0001 7.54299322985785E+0001 7.53933150515689E+0001 + 7.53567203443115E+0001 7.53201481467972E+0001 7.52835984290629E+0001 7.52470711611893E+0001 7.52105663133062E+0001 + 7.51740838555868E+0001 7.51376237582517E+0001 7.51011859915668E+0001 7.50647705258431E+0001 7.50283773314380E+0001 + 7.49920063787533E+0001 7.49556576382404E+0001 7.49193310803895E+0001 7.48830266757425E+0001 7.48467443948830E+0001 + 7.48104842084418E+0001 7.47742460870934E+0001 7.47380300015597E+0001 7.47018359226054E+0001 7.46656638210418E+0001 + 7.46295136677261E+0001 7.45933854335573E+0001 7.45572790894837E+0001 7.45211946064951E+0001 7.44851319556276E+0001 + 7.44490911079622E+0001 7.44130720346241E+0001 7.43770747067833E+0001 7.43410990956552E+0001 7.43051451724988E+0001 + 7.42692129086191E+0001 7.42333022753644E+0001 7.41974132441260E+0001 7.41615457863435E+0001 7.41256998734976E+0001 + 7.40898754771144E+0001 7.40540725687645E+0001 7.40182911200608E+0001 7.39825311026651E+0001 7.39467924882766E+0001 + 7.39110752486441E+0001 7.38753793555580E+0001 7.38397047808533E+0001 7.38040514964064E+0001 7.37684194741430E+0001 + 7.37328086860258E+0001 7.36972191040667E+0001 7.36616507003188E+0001 7.36261034468783E+0001 7.35905773158867E+0001 + 7.35550722795282E+0001 7.35195883100295E+0001 7.34841253796631E+0001 7.34486834607413E+0001 7.34132625256241E+0001 + 7.33778625467102E+0001 7.33424834964454E+0001 7.33071253473157E+0001 7.32717880718526E+0001 7.32364716426283E+0001 + 7.32011760322608E+0001 7.31659012134069E+0001 7.31306471587708E+0001 7.30954138410971E+0001 7.30602012331730E+0001 + 7.30250093078306E+0001 7.29898380379408E+0001 7.29546873964219E+0001 7.29195573562301E+0001 7.28844478903685E+0001 + 7.28493589718789E+0001 7.28142905738476E+0001 7.27792426694027E+0001 7.27442152317159E+0001 7.27092082339983E+0001 + 7.26742216495071E+0001 7.26392554515371E+0001 7.26043096134298E+0001 7.25693841085654E+0001 7.25344789103672E+0001 + 7.24995939923015E+0001 7.24647293278741E+0001 7.24298848906363E+0001 7.23950606541782E+0001 7.23602565921317E+0001 + 7.23254726781718E+0001 7.22907088860165E+0001 7.22559651894204E+0001 7.22212415621849E+0001 7.21865379781506E+0001 + 7.21518544111988E+0001 7.21171908352540E+0001 7.20825472242815E+0001 7.20479235522869E+0001 7.20133197933194E+0001 + 7.19787359214663E+0001 7.19441719108570E+0001 7.19096277356654E+0001 7.18751033701006E+0001 7.18405987884181E+0001 + 7.18061139649110E+0001 7.17716488739145E+0001 7.17372034898048E+0001 7.17027777869987E+0001 7.16683717399528E+0001 + 7.16339853231667E+0001 7.15996185111788E+0001 7.15652712785683E+0001 7.15309435999553E+0001 7.14966354499996E+0001 + 7.14623468034042E+0001 7.14280776349102E+0001 7.13938279192976E+0001 7.13595976313894E+0001 7.13253867460493E+0001 + 7.12911952381795E+0001 7.12570230827205E+0001 7.12228702546585E+0001 7.11887367290144E+0001 7.11546224808523E+0001 + 7.11205274852740E+0001 7.10864517174234E+0001 7.10523951524831E+0001 7.10183577656753E+0001 7.09843395322634E+0001 + 7.09503404275489E+0001 7.09163604268724E+0001 7.08823995056174E+0001 7.08484576392040E+0001 7.08145348030932E+0001 + 7.07806309727833E+0001 7.07467461238160E+0001 7.07128802317687E+0001 7.06790332722603E+0001 7.06452052209478E+0001 + 7.06113960535290E+0001 7.05776057457387E+0001 7.05438342733518E+0001 7.05100816121833E+0001 7.04763477380857E+0001 + 7.04426326269520E+0001 7.04089362547128E+0001 7.03752585973383E+0001 7.03415996308371E+0001 7.03079593312578E+0001 + 7.02743376746857E+0001 7.02407346372472E+0001 7.02071501951050E+0001 7.01735843244626E+0001 7.01400370015604E+0001 + 7.01065082026784E+0001 7.00729979041344E+0001 7.00395060822854E+0001 7.00060327135245E+0001 6.99725777742873E+0001 + 6.99391412410434E+0001 6.99057230903031E+0001 6.98723232986151E+0001 6.98389418425635E+0001 6.98055786987750E+0001 + 6.97722338439088E+0001 6.97389072546675E+0001 6.97055989077883E+0001 6.96723087800473E+0001 6.96390368482575E+0001 + 6.96057830892720E+0001 6.95725474799794E+0001 6.95393299973064E+0001 6.95061306182184E+0001 6.94729493197185E+0001 + 6.94397860788454E+0001 6.94066408726776E+0001 6.93735136783292E+0001 6.93404044729534E+0001 6.93073132337399E+0001 + 6.92742399379157E+0001 6.92411845627454E+0001 6.92081470855296E+0001 6.91751274836098E+0001 6.91421257343594E+0001 + 6.91091418151932E+0001 6.90761757035594E+0001 6.90432273769475E+0001 6.90102968128811E+0001 6.89773839889206E+0001 + 6.89444888826644E+0001 6.89116114717474E+0001 6.88787517338405E+0001 6.88459096466529E+0001 6.88130851879290E+0001 + 6.87802783354507E+0001 6.87474890670361E+0001 6.87147173605408E+0001 6.86819631938552E+0001 6.86492265449067E+0001 + 6.86165073916608E+0001 6.85838057121159E+0001 6.85511214843115E+0001 6.85184546863186E+0001 6.84858052962481E+0001 + 6.84531732922434E+0001 6.84205586524879E+0001 6.83879613552006E+0001 6.83553813786320E+0001 6.83228187010734E+0001 + 6.82902733008514E+0001 6.82577451563259E+0001 6.82252342458963E+0001 6.81927405479947E+0001 6.81602640410904E+0001 + 6.81278047036889E+0001 6.80953625143300E+0001 6.80629374515901E+0001 6.80305294940807E+0001 6.79981386204493E+0001 + 6.79657648093787E+0001 6.79334080395862E+0001 6.79010682898270E+0001 6.78687455388900E+0001 6.78364397655976E+0001 + 6.78041509488111E+0001 6.77718790674243E+0001 6.77396241003685E+0001 6.77073860266080E+0001 6.76751648251425E+0001 + 6.76429604750090E+0001 6.76107729552760E+0001 6.75786022450495E+0001 6.75464483234698E+0001 6.75143111697122E+0001 + 6.74821907629855E+0001 6.74500870825353E+0001 6.74180001076403E+0001 6.73859298176155E+0001 6.73538761918094E+0001 + 6.73218392096039E+0001 6.72898188504187E+0001 6.72578150937052E+0001 6.72258279189499E+0001 6.71938573056752E+0001 + 6.71619032334360E+0001 6.71299656818231E+0001 6.70980446304604E+0001 6.70661400590056E+0001 6.70342519471525E+0001 + 6.70023802746281E+0001 6.69705250211932E+0001 6.69386861666422E+0001 6.69068636908053E+0001 6.68750575735451E+0001 + 6.68432677947586E+0001 6.68114943343767E+0001 6.67797371723648E+0001 6.67479962887203E+0001 6.67162716634773E+0001 + 6.66845632767009E+0001 6.66528711084912E+0001 6.66211951389811E+0001 6.65895353483386E+0001 6.65578917167629E+0001 + 6.65262642244894E+0001 6.64946528517851E+0001 6.64630575789511E+0001 6.64314783863215E+0001 6.63999152542644E+0001 + 6.63683681631805E+0001 6.63368370935035E+0001 6.63053220257012E+0001 6.62738229402753E+0001 6.62423398177580E+0001 + 6.62108726387164E+0001 6.61794213837502E+0001 6.61479860334935E+0001 6.61165665686090E+0001 6.60851629697988E+0001 + 6.60537752177920E+0001 6.60224032933540E+0001 6.59910471772820E+0001 6.59597068504052E+0001 6.59283822935861E+0001 + 6.58970734877195E+0001 6.58657804137342E+0001 6.58345030525901E+0001 6.58032413852792E+0001 6.57719953928284E+0001 + 6.57407650562935E+0001 6.57095503567665E+0001 6.56783512753683E+0001 6.56471677932545E+0001 6.56159998916113E+0001 + 6.55848475516602E+0001 6.55537107546494E+0001 6.55225894818641E+0001 6.54914837146207E+0001 6.54603934342654E+0001 + 6.54293186221788E+0001 6.53982592597727E+0001 6.53672153284903E+0001 6.53361868098060E+0001 6.53051736852289E+0001 + 6.52741759362984E+0001 6.52431935445842E+0001 6.52122264916881E+0001 6.51812747592463E+0001 6.51503383289237E+0001 + 6.51194171824176E+0001 6.50885113014573E+0001 6.50576206678041E+0001 6.50267452632490E+0001 6.49958850696163E+0001 + 6.49650400687599E+0001 6.49342102425661E+0001 6.49033955729525E+0001 6.48725960418681E+0001 6.48418116312928E+0001 + 6.48110423232381E+0001 6.47802880997446E+0001 6.47495489428879E+0001 6.47188248347709E+0001 6.46881157575290E+0001 + 6.46574216933287E+0001 6.46267426243680E+0001 6.45960785328748E+0001 6.45654294011067E+0001 6.45347952113561E+0001 + 6.45041759459417E+0001 6.44735715872148E+0001 6.44429821175584E+0001 6.44124075193847E+0001 6.43818477751373E+0001 + 6.43513028672885E+0001 6.43207727783443E+0001 6.42902574908386E+0001 6.42597569873378E+0001 6.42292712504357E+0001 + 6.41988002627598E+0001 6.41683440069654E+0001 6.41379024657393E+0001 6.41074756217986E+0001 6.40770634578909E+0001 + 6.40466659567921E+0001 6.40162831013101E+0001 6.39859148742820E+0001 6.39555612585750E+0001 6.39252222370875E+0001 + 6.38948977927457E+0001 6.38645879085068E+0001 6.38342925673585E+0001 6.38040117523178E+0001 6.37737454464312E+0001 + 6.37434936327747E+0001 6.37132562944549E+0001 6.36830334146081E+0001 6.36528249763982E+0001 6.36226309630227E+0001 + 6.35924513577039E+0001 6.35622861436980E+0001 6.35321353042864E+0001 6.35019988227829E+0001 6.34718766825312E+0001 + 6.34417688669014E+0001 6.34116753592962E+0001 6.33815961431447E+0001 6.33515312019071E+0001 6.33214805190722E+0001 + 6.32914440781568E+0001 6.32614218627099E+0001 6.32314138563057E+0001 6.32014200425514E+0001 6.31714404050792E+0001 + 6.31414749275538E+0001 6.31115235936661E+0001 6.30815863871368E+0001 6.30516632917176E+0001 6.30217542911853E+0001 + 6.29918593693477E+0001 6.29619785100407E+0001 6.29321116971299E+0001 6.29022589145073E+0001 6.28724201460956E+0001 + 6.28425953758457E+0001 6.28127845877358E+0001 6.27829877657747E+0001 6.27532048939970E+0001 6.27234359564679E+0001 + 6.26936809372801E+0001 6.26639398205548E+0001 6.26342125904410E+0001 6.26044992311172E+0001 6.25747997267884E+0001 + 6.25451140616890E+0001 6.25154422200818E+0001 6.24857841862556E+0001 6.24561399445307E+0001 6.24265094792517E+0001 + 6.23968927747941E+0001 6.23672898155601E+0001 6.23377005859805E+0001 6.23081250705116E+0001 6.22785632536404E+0001 + 6.22490151198814E+0001 6.22194806537751E+0001 6.21899598398914E+0001 6.21604526628262E+0001 6.21309591072048E+0001 + 6.21014791576798E+0001 6.20720127989298E+0001 6.20425600156619E+0001 6.20131207926123E+0001 6.19836951145417E+0001 + 6.19542829662403E+0001 6.19248843325251E+0001 6.18954991982409E+0001 6.18661275482581E+0001 6.18367693674763E+0001 + 6.18074246408213E+0001 6.17780933532471E+0001 6.17487754897325E+0001 6.17194710352875E+0001 6.16901799749447E+0001 + 6.16609022937662E+0001 6.16316379768409E+0001 6.16023870092841E+0001 6.15731493762388E+0001 6.15439250628739E+0001 + 6.15147140543863E+0001 6.14855163359985E+0001 6.14563318929609E+0001 6.14271607105491E+0001 6.13980027740676E+0001 + 6.13688580688451E+0001 6.13397265802396E+0001 6.13106082936328E+0001 6.12815031944362E+0001 6.12524112680837E+0001 + 6.12233325000400E+0001 6.11942668757938E+0001 6.11652143808597E+0001 6.11361750007812E+0001 6.11071487211250E+0001 + 6.10781355274864E+0001 6.10491354054863E+0001 6.10201483407719E+0001 6.09911743190160E+0001 6.09622133259173E+0001 + 6.09332653472030E+0001 6.09043303686226E+0001 6.08754083759552E+0001 6.08464993550039E+0001 6.08176032915982E+0001 + 6.07887201715936E+0001 6.07598499808710E+0001 6.07309927053386E+0001 6.07021483309290E+0001 6.06733168436005E+0001 + 6.06444982293377E+0001 6.06156924741507E+0001 6.05868995640768E+0001 6.05581194851766E+0001 6.05293522235373E+0001 + 6.05005977652712E+0001 6.04718560965169E+0001 6.04431272034387E+0001 6.04144110722251E+0001 6.03857076890911E+0001 + 6.03570170402766E+0001 6.03283391120469E+0001 6.02996738906926E+0001 6.02710213625293E+0001 6.02423815138991E+0001 + 6.02137543311674E+0001 6.01851398007269E+0001 6.01565379089931E+0001 6.01279486424086E+0001 6.00993719874397E+0001 + 6.00708079305788E+0001 6.00422564583420E+0001 6.00137175572717E+0001 5.99851912139353E+0001 5.99566774149226E+0001 + 5.99281761468518E+0001 5.98996873963627E+0001 5.98712111501229E+0001 5.98427473948213E+0001 5.98142961171760E+0001 + 5.97858573039243E+0001 5.97574309418333E+0001 5.97290170176908E+0001 5.97006155183117E+0001 5.96722264305344E+0001 + 5.96438497412220E+0001 5.96154854372608E+0001 5.95871335055640E+0001 5.95587939330678E+0001 5.95304667067323E+0001 + 5.95021518135421E+0001 5.94738492405073E+0001 5.94455589746611E+0001 5.94172810030613E+0001 5.93890153127895E+0001 + 5.93607618909517E+0001 5.93325207246784E+0001 5.93042918011232E+0001 5.92760751074649E+0001 5.92478706309061E+0001 + 5.92196783586720E+0001 5.91914982780133E+0001 5.91633303762045E+0001 5.91351746405425E+0001 5.91070310583499E+0001 + 5.90788996169720E+0001 5.90507803037777E+0001 5.90226731061616E+0001 5.89945780115383E+0001 5.89664950073497E+0001 + 5.89384240810602E+0001 5.89103652201558E+0001 5.88823184121488E+0001 5.88542836445747E+0001 5.88262609049899E+0001 + 5.87982501809772E+0001 5.87702514601413E+0001 5.87422647301113E+0001 5.87142899785385E+0001 5.86863271930980E+0001 + 5.86583763614886E+0001 5.86304374714319E+0001 5.86025105106731E+0001 5.85745954669794E+0001 5.85466923281431E+0001 + 5.85188010819777E+0001 5.84909217163216E+0001 5.84630542190345E+0001 5.84351985780008E+0001 5.84073547811258E+0001 + 5.83795228163401E+0001 5.83517026715955E+0001 5.83238943348674E+0001 5.82960977941543E+0001 5.82683130374758E+0001 + 5.82405400528773E+0001 5.82127788284242E+0001 5.81850293522058E+0001 5.81572916123342E+0001 5.81295655969441E+0001 + 5.81018512941917E+0001 5.80741486922574E+0001 5.80464577793441E+0001 5.80187785436751E+0001 5.79911109734987E+0001 + 5.79634550570842E+0001 5.79358107827236E+0001 5.79081781387313E+0001 5.78805571134448E+0001 5.78529476952223E+0001 + 5.78253498724463E+0001 5.77977636335198E+0001 5.77701889668685E+0001 5.77426258609410E+0001 5.77150743042076E+0001 + 5.76875342851600E+0001 5.76600057923129E+0001 5.76324888142039E+0001 5.76049833393897E+0001 5.75774893564524E+0001 + 5.75500068539929E+0001 5.75225358206370E+0001 5.74950762450304E+0001 5.74676281158413E+0001 5.74401914217594E+0001 + 5.74127661514971E+0001 5.73853522937868E+0001 5.73579498373847E+0001 5.73305587710680E+0001 5.73031790836344E+0001 + 5.72758107639044E+0001 5.72484538007199E+0001 5.72211081829444E+0001 5.71937738994631E+0001 5.71664509391816E+0001 + 5.71391392910286E+0001 5.71118389439528E+0001 5.70845498869261E+0001 5.70572721089390E+0001 5.70300055990065E+0001 + 5.70027503461619E+0001 5.69755063394625E+0001 5.69482735679846E+0001 5.69210520208278E+0001 5.68938416871108E+0001 + 5.68666425559746E+0001 5.68394546165819E+0001 5.68122778581152E+0001 5.67851122697786E+0001 5.67579578407968E+0001 + 5.67308145604166E+0001 5.67036824179053E+0001 5.66765614025499E+0001 5.66494515036602E+0001 5.66223527105655E+0001 + 5.65952650126168E+0001 5.65681883991846E+0001 5.65411228596620E+0001 5.65140683834617E+0001 5.64870249600170E+0001 + 5.64599925787825E+0001 5.64329712292331E+0001 5.64059609008642E+0001 5.63789615831915E+0001 5.63519732657526E+0001 + 5.63249959381044E+0001 5.62980295898243E+0001 5.62710742105106E+0001 5.62441297897822E+0001 5.62171963172779E+0001 + 5.61902737826564E+0001 5.61633621755978E+0001 5.61364614858028E+0001 5.61095717029906E+0001 5.60826928169022E+0001 + 5.60558248172981E+0001 5.60289676939592E+0001 5.60021214366864E+0001 5.59752860353012E+0001 5.59484614796444E+0001 + 5.59216477595777E+0001 5.58948448649818E+0001 5.58680527857590E+0001 5.58412715118296E+0001 5.58145010331352E+0001 + 5.57877413396370E+0001 5.57609924213153E+0001 5.57342542681716E+0001 5.57075268702267E+0001 5.56808102175204E+0001 + 5.56541043001131E+0001 5.56274091080840E+0001 5.56007246315341E+0001 5.55740508605819E+0001 5.55473877853652E+0001 + 5.55207353960442E+0001 5.54940936827961E+0001 5.54674626358178E+0001 5.54408422453278E+0001 5.54142325015614E+0001 + 5.53876333947751E+0001 5.53610449152440E+0001 5.53344670532632E+0001 5.53078997991470E+0001 5.52813431432281E+0001 + 5.52547970758603E+0001 5.52282615874146E+0001 5.52017366682833E+0001 5.51752223088757E+0001 5.51487184996228E+0001 + 5.51222252309723E+0001 5.50957424933927E+0001 5.50692702773706E+0001 5.50428085734126E+0001 5.50163573720434E+0001 + 5.49899166638069E+0001 5.49634864392670E+0001 5.49370666890050E+0001 5.49106574036218E+0001 5.48842585737373E+0001 + 5.48578701899902E+0001 5.48314922430380E+0001 5.48051247235573E+0001 5.47787676222426E+0001 5.47524209298079E+0001 + 5.47260846369853E+0001 5.46997587345263E+0001 5.46734432132009E+0001 5.46471380637971E+0001 5.46208432771221E+0001 + 5.45945588440010E+0001 5.45682847552785E+0001 5.45420210018166E+0001 5.45157675744969E+0001 5.44895244642189E+0001 + 5.44632916619000E+0001 5.44370691584763E+0001 5.44108569449032E+0001 5.43846550121531E+0001 5.43584633512177E+0001 + 5.43322819531064E+0001 5.43061108088466E+0001 5.42799499094842E+0001 5.42537992460840E+0001 5.42276588097282E+0001 + 5.42015285915167E+0001 5.41754085825684E+0001 5.41492987740201E+0001 5.41231991570257E+0001 5.40971097227585E+0001 + 5.40710304624092E+0001 5.40449613671856E+0001 5.40189024283151E+0001 5.39928536370413E+0001 5.39668149846273E+0001 + 5.39407864623518E+0001 5.39147680615147E+0001 5.38887597734297E+0001 5.38627615894317E+0001 5.38367735008712E+0001 + 5.38107954991168E+0001 5.37848275755557E+0001 5.37588697215915E+0001 5.37329219286460E+0001 5.37069841881590E+0001 + 5.36810564915874E+0001 5.36551388304053E+0001 5.36292311961043E+0001 5.36033335801947E+0001 5.35774459742024E+0001 + 5.35515683696726E+0001 5.35257007581665E+0001 5.34998431312627E+0001 5.34739954805583E+0001 5.34481577976663E+0001 + 5.34223300742180E+0001 5.33965123018617E+0001 5.33707044722621E+0001 5.33449065771024E+0001 5.33191186080821E+0001 + 5.32933405569184E+0001 5.32675724153448E+0001 5.32418141751124E+0001 5.32160658279893E+0001 5.31903273657613E+0001 + 5.31645987802300E+0001 5.31388800632142E+0001 5.31131712065508E+0001 5.30874722020921E+0001 5.30617830417082E+0001 + 5.30361037172854E+0001 5.30104342207279E+0001 5.29847745439558E+0001 5.29591246789062E+0001 5.29334846175329E+0001 + 5.29078543518068E+0001 5.28822338737146E+0001 5.28566231752608E+0001 5.28310222484659E+0001 5.28054310853674E+0001 + 5.27798496780182E+0001 5.27542780184896E+0001 5.27287160988685E+0001 5.27031639112578E+0001 5.26776214477777E+0001 + 5.26520887005644E+0001 5.26265656617705E+0001 5.26010523235661E+0001 5.25755486781358E+0001 5.25500547176817E+0001 + 5.25245704344219E+0001 5.24990958205913E+0001 5.24736308684406E+0001 5.24481755702365E+0001 5.24227299182628E+0001 + 5.23972939048175E+0001 5.23718675222179E+0001 5.23464507627947E+0001 5.23210436188961E+0001 5.22956460828862E+0001 + 5.22702581471436E+0001 5.22448798040659E+0001 5.22195110460642E+0001 5.21941518655660E+0001 5.21688022550160E+0001 + 5.21434622068741E+0001 5.21181317136147E+0001 5.20928107677310E+0001 5.20674993617291E+0001 5.20421974881331E+0001 + 5.20169051394811E+0001 5.19916223083280E+0001 5.19663489872456E+0001 5.19410851688183E+0001 5.19158308456489E+0001 + 5.18905860103544E+0001 5.18653506555688E+0001 5.18401247739399E+0001 5.18149083581329E+0001 5.17897014008269E+0001 + 5.17645038947180E+0001 5.17393158325166E+0001 5.17141372069498E+0001 5.16889680107585E+0001 5.16638082367002E+0001 + 5.16386578775480E+0001 5.16135169260897E+0001 5.15883853751285E+0001 5.15632632174836E+0001 5.15381504459887E+0001 + 5.15130470534921E+0001 5.14879530328599E+0001 5.14628683769706E+0001 5.14377930787203E+0001 5.14127271310179E+0001 + 5.13876705267892E+0001 5.13626232589744E+0001 5.13375853205287E+0001 5.13125567044231E+0001 5.12875374036425E+0001 + 5.12625274111880E+0001 5.12375267200746E+0001 5.12125353233328E+0001 5.11875532140084E+0001 5.11625803851618E+0001 + 5.11376168298672E+0001 5.11126625412159E+0001 5.10877175123123E+0001 5.10627817362761E+0001 5.10378552062414E+0001 + 5.10129379153580E+0001 5.09880298567898E+0001 5.09631310237157E+0001 5.09382414093281E+0001 5.09133610068361E+0001 + 5.08884898094620E+0001 5.08636278104432E+0001 5.08387750030315E+0001 5.08139313804931E+0001 5.07890969361092E+0001 + 5.07642716631749E+0001 5.07394555550010E+0001 5.07146486049113E+0001 5.06898508062446E+0001 5.06650621523541E+0001 + 5.06402826366077E+0001 5.06155122523875E+0001 5.05907509930898E+0001 5.05659988521248E+0001 5.05412558229180E+0001 + 5.05165218989083E+0001 5.04917970735492E+0001 5.04670813403085E+0001 5.04423746926677E+0001 5.04176771241231E+0001 + 5.03929886281849E+0001 5.03683091983771E+0001 5.03436388282387E+0001 5.03189775113209E+0001 5.02943252411911E+0001 + 5.02696820114293E+0001 5.02450478156303E+0001 5.02204226474028E+0001 5.01958065003681E+0001 5.01711993681640E+0001 + 5.01466012444399E+0001 5.01220121228595E+0001 5.00974319971012E+0001 5.00728608608570E+0001 5.00482987078315E+0001 + 5.00237455317455E+0001 4.99992013263304E+0001 4.99746660853340E+0001 4.99501398025168E+0001 4.99256224716528E+0001 + 4.99011140865300E+0001 4.98766146409496E+0001 4.98521241287266E+0001 4.98276425436902E+0001 4.98031698796821E+0001 + 4.97787061305582E+0001 4.97542512901882E+0001 4.97298053524540E+0001 4.97053683112524E+0001 4.96809401604934E+0001 + 4.96565208940992E+0001 4.96321105060075E+0001 4.96077089901665E+0001 4.95833163405410E+0001 4.95589325511066E+0001 + 4.95345576158535E+0001 4.95101915287848E+0001 4.94858342839165E+0001 4.94614858752790E+0001 4.94371462969139E+0001 + 4.94128155428779E+0001 4.93884936072403E+0001 4.93641804840830E+0001 4.93398761675012E+0001 4.93155806516044E+0001 + 4.92912939305127E+0001 4.92670159983617E+0001 4.92427468492989E+0001 4.92184864774845E+0001 4.91942348770926E+0001 + 4.91699920423092E+0001 4.91457579673339E+0001 4.91215326463794E+0001 4.90973160736705E+0001 4.90731082434457E+0001 + 4.90489091499550E+0001 4.90247187874638E+0001 4.90005371502472E+0001 4.89763642325948E+0001 4.89522000288091E+0001 + 4.89280445332051E+0001 4.89038977401087E+0001 4.88797596438618E+0001 4.88556302388162E+0001 4.88315095193381E+0001 + 4.88073974798047E+0001 4.87832941146072E+0001 4.87591994181479E+0001 4.87351133848438E+0001 4.87110360091222E+0001 + 4.86869672854241E+0001 4.86629072082027E+0001 4.86388557719238E+0001 4.86148129710649E+0001 4.85907788001172E+0001 + 4.85667532535832E+0001 4.85427363259777E+0001 4.85187280118294E+0001 4.84947283056765E+0001 4.84707372020726E+0001 + 4.84467546955817E+0001 4.84227807807803E+0001 4.83988154522574E+0001 4.83748587046136E+0001 4.83509105324627E+0001 + 4.83269709304303E+0001 4.83030398931539E+0001 4.82791174152829E+0001 4.82552034914788E+0001 4.82312981164158E+0001 + 4.82074012847799E+0001 4.81835129912691E+0001 4.81596332305927E+0001 4.81357619974732E+0001 4.81118992866440E+0001 + 4.80880450928511E+0001 4.80641994108523E+0001 4.80403622354172E+0001 4.80165335613270E+0001 4.79927133833753E+0001 + 4.79689016963674E+0001 4.79450984951197E+0001 4.79213037744609E+0001 4.78975175292321E+0001 4.78737397542854E+0001 + 4.78499704444843E+0001 4.78262095947048E+0001 4.78024571998342E+0001 4.77787132547712E+0001 4.77549777544269E+0001 + 4.77312506937234E+0001 4.77075320675940E+0001 4.76838218709845E+0001 4.76601200988520E+0001 4.76364267461643E+0001 + 4.76127418079022E+0001 4.75890652790560E+0001 4.75653971546298E+0001 4.75417374296372E+0001 4.75180860991044E+0001 + 4.74944431580681E+0001 4.74708086015768E+0001 4.74471824246907E+0001 4.74235646224808E+0001 4.73999551900300E+0001 + 4.73763541224312E+0001 4.73527614147906E+0001 4.73291770622235E+0001 4.73056010598578E+0001 4.72820334028331E+0001 + 4.72584740862979E+0001 4.72349231054140E+0001 4.72113804553538E+0001 4.71878461313002E+0001 4.71643201284482E+0001 + 4.71408024420030E+0001 4.71172930671810E+0001 4.70937919992102E+0001 4.70702992333290E+0001 4.70468147647875E+0001 + 4.70233385888456E+0001 4.69998707007755E+0001 4.69764110958593E+0001 4.69529597693902E+0001 4.69295167166733E+0001 + 4.69060819330232E+0001 4.68826554137661E+0001 4.68592371542388E+0001 4.68358271497892E+0001 4.68124253957751E+0001 + 4.67890318875665E+0001 4.67656466205430E+0001 4.67422695900950E+0001 4.67189007916240E+0001 4.66955402205431E+0001 + 4.66721878722735E+0001 4.66488437422498E+0001 4.66255078259155E+0001 4.66021801187252E+0001 4.65788606161439E+0001 + 4.65555493136479E+0001 4.65322462067233E+0001 4.65089512908668E+0001 4.64856645615855E+0001 4.64623860143978E+0001 + 4.64391156448318E+0001 4.64158534484262E+0001 4.63925994207296E+0001 4.63693535573027E+0001 4.63461158537143E+0001 + 4.63228863055452E+0001 4.62996649083859E+0001 4.62764516578377E+0001 4.62532465495111E+0001 4.62300495790284E+0001 + 4.62068607420204E+0001 4.61836800341306E+0001 4.61605074510097E+0001 4.61373429883215E+0001 4.61141866417375E+0001 + 4.60910384069414E+0001 4.60678982796253E+0001 4.60447662554927E+0001 4.60216423302570E+0001 4.59985264996411E+0001 + 4.59754187593786E+0001 4.59523191052120E+0001 4.59292275328958E+0001 4.59061440381929E+0001 4.58830686168761E+0001 + 4.58600012647294E+0001 4.58369419775462E+0001 4.58138907511289E+0001 4.57908475812913E+0001 4.57678124638560E+0001 + 4.57447853946562E+0001 4.57217663695342E+0001 4.56987553843428E+0001 4.56757524349441E+0001 4.56527575172101E+0001 + 4.56297706270230E+0001 4.56067917602744E+0001 4.55838209128655E+0001 4.55608580807076E+0001 4.55379032597215E+0001 + 4.55149564458372E+0001 4.54920176349950E+0001 4.54690868231450E+0001 4.54461640062455E+0001 4.54232491802666E+0001 + 4.54003423411864E+0001 4.53774434849931E+0001 4.53545526076840E+0001 4.53316697052661E+0001 4.53087947737564E+0001 + 4.52859278091810E+0001 4.52630688075754E+0001 4.52402177649844E+0001 4.52173746774623E+0001 4.51945395410738E+0001 + 4.51717123518913E+0001 4.51488931059978E+0001 4.51260817994850E+0001 4.51032784284541E+0001 4.50804829890165E+0001 + 4.50576954772910E+0001 4.50349158894074E+0001 4.50121442215036E+0001 4.49893804697278E+0001 4.49666246302366E+0001 + 4.49438766991960E+0001 4.49211366727814E+0001 4.48984045471768E+0001 4.48756803185765E+0001 4.48529639831824E+0001 + 4.48302555372067E+0001 4.48075549768700E+0001 4.47848622984027E+0001 4.47621774980432E+0001 4.47395005720397E+0001 + 4.47168315166491E+0001 4.46941703281378E+0001 4.46715170027803E+0001 4.46488715368611E+0001 4.46262339266731E+0001 + 4.46036041685172E+0001 4.45809822587051E+0001 4.45583681935559E+0001 4.45357619693979E+0001 4.45131635825694E+0001 + 4.44905730294153E+0001 4.44679903062912E+0001 4.44454154095605E+0001 4.44228483355965E+0001 4.44002890807795E+0001 + 4.43777376415002E+0001 4.43551940141568E+0001 4.43326581951572E+0001 4.43101301809176E+0001 4.42876099678620E+0001 + 4.42650975524249E+0001 4.42425929310479E+0001 4.42200961001810E+0001 4.41976070562846E+0001 4.41751257958261E+0001 + 4.41526523152819E+0001 4.41301866111369E+0001 4.41077286798846E+0001 4.40852785180272E+0001 4.40628361220749E+0001 + 4.40404014885466E+0001 4.40179746139700E+0001 4.39955554948810E+0001 4.39731441278234E+0001 4.39507405093502E+0001 + 4.39283446360222E+0001 4.39059565044090E+0001 4.38835761110881E+0001 4.38612034526460E+0001 4.38388385256769E+0001 + 4.38164813267831E+0001 4.37941318525760E+0001 4.37717900996745E+0001 4.37494560647066E+0001 4.37271297443073E+0001 + 4.37048111351208E+0001 4.36825002337992E+0001 4.36601970370025E+0001 4.36379015413994E+0001 4.36156137436666E+0001 + 4.35933336404881E+0001 4.35710612285573E+0001 4.35487965045746E+0001 4.35265394652491E+0001 4.35042901072980E+0001 + 4.34820484274459E+0001 4.34598144224263E+0001 4.34375880889791E+0001 4.34153694238545E+0001 4.33931584238091E+0001 + 4.33709550856079E+0001 4.33487594060233E+0001 4.33265713818364E+0001 4.33043910098356E+0001 4.32822182868176E+0001 + 4.32600532095869E+0001 4.32378957749554E+0001 4.32157459797438E+0001 4.31936038207793E+0001 4.31714692948977E+0001 + 4.31493423989427E+0001 4.31272231297652E+0001 4.31051114842244E+0001 4.30830074591869E+0001 4.30609110515275E+0001 + 4.30388222581270E+0001 4.30167410758770E+0001 4.29946675016733E+0001 4.29726015324219E+0001 4.29505431650350E+0001 + 4.29284923964335E+0001 4.29064492235446E+0001 4.28844136433043E+0001 4.28623856526554E+0001 4.28403652485482E+0001 + 4.28183524279416E+0001 4.27963471878001E+0001 4.27743495250979E+0001 4.27523594368155E+0001 4.27303769199397E+0001 + 4.27084019714676E+0001 4.26864345884010E+0001 4.26644747677507E+0001 4.26425225065343E+0001 4.26205778017776E+0001 + 4.25986406505116E+0001 4.25767110497774E+0001 4.25547889966218E+0001 4.25328744880992E+0001 4.25109675212713E+0001 + 4.24890680932072E+0001 4.24671762009831E+0001 4.24452918416832E+0001 4.24234150123976E+0001 4.24015457102243E+0001 + 4.23796839322689E+0001 4.23578296756431E+0001 4.23359829374676E+0001 4.23141437148682E+0001 4.22923120049792E+0001 + 4.22704878049416E+0001 4.22486711119029E+0001 4.22268619230188E+0001 4.22050602354518E+0001 4.21832660463707E+0001 + 4.21614793529518E+0001 4.21397001523787E+0001 4.21179284418417E+0001 4.20961642185383E+0001 4.20744074796727E+0001 + 4.20526582224562E+0001 4.20309164441073E+0001 4.20091821418506E+0001 4.19874553129190E+0001 4.19657359545510E+0001 + 4.19440240639924E+0001 4.19223196384960E+0001 4.19006226753220E+0001 4.18789331717360E+0001 4.18572511250118E+0001 + 4.18355765324290E+0001 4.18139093912749E+0001 4.17922496988427E+0001 4.17705974524336E+0001 4.17489526493538E+0001 + 4.17273152869174E+0001 4.17056853624454E+0001 4.16840628732645E+0001 4.16624478167089E+0001 4.16408401901192E+0001 + 4.16192399908427E+0001 4.15976472162332E+0001 4.15760618636511E+0001 4.15544839304638E+0001 4.15329134140450E+0001 + 4.15113503117746E+0001 4.14897946210400E+0001 4.14682463392338E+0001 4.14467054637569E+0001 4.14251719920146E+0001 + 4.14036459214209E+0001 4.13821272493946E+0001 4.13606159733614E+0001 4.13391120907541E+0001 4.13176155990113E+0001 + 4.12961264955780E+0001 4.12746447779059E+0001 4.12531704434530E+0001 4.12317034896836E+0001 4.12102439140685E+0001 + 4.11887917140848E+0001 4.11673468872155E+0001 4.11459094309510E+0001 4.11244793427865E+0001 4.11030566202251E+0001 + 4.10816412607750E+0001 4.10602332619505E+0001 4.10388326212737E+0001 4.10174393362709E+0001 4.09960534044765E+0001 + 4.09746748234299E+0001 4.09533035906765E+0001 4.09319397037687E+0001 4.09105831602652E+0001 4.08892339577296E+0001 + 4.08678920937326E+0001 4.08465575658512E+0001 4.08252303716679E+0001 4.08039105087710E+0001 4.07825979747557E+0001 + 4.07612927672230E+0001 4.07399948837795E+0001 4.07187043220382E+0001 4.06974210796186E+0001 4.06761451541447E+0001 + 4.06548765432484E+0001 4.06336152445660E+0001 4.06123612557402E+0001 4.05911145744202E+0001 4.05698751982605E+0001 + 4.05486431249217E+0001 4.05274183520704E+0001 4.05062008773786E+0001 4.04849906985250E+0001 4.04637878131935E+0001 + 4.04425922190741E+0001 4.04214039138625E+0001 4.04002228952602E+0001 4.03790491609742E+0001 4.03578827087183E+0001 + 4.03367235362111E+0001 4.03155716411771E+0001 4.02944270213468E+0001 4.02732896744561E+0001 4.02521595982472E+0001 + 4.02310367904672E+0001 4.02099212488695E+0001 4.01888129712130E+0001 4.01677119552618E+0001 4.01466181987865E+0001 + 4.01255316995625E+0001 4.01044524553715E+0001 4.00833804640001E+0001 4.00623157232410E+0001 4.00412582308924E+0001 + 4.00202079847579E+0001 3.99991649826466E+0001 3.99781292223734E+0001 3.99571007017585E+0001 3.99360794186275E+0001 + 3.99150653708118E+0001 3.98940585561480E+0001 3.98730589724784E+0001 3.98520666176506E+0001 3.98310814895172E+0001 + 3.98101035859371E+0001 3.97891329047739E+0001 3.97681694438973E+0001 3.97472132011814E+0001 3.97262641745063E+0001 + 3.97053223617574E+0001 3.96843877608252E+0001 3.96634603696060E+0001 3.96425401860010E+0001 3.96216272079165E+0001 + 3.96007214332648E+0001 3.95798228599625E+0001 3.95589314859325E+0001 3.95380473091022E+0001 3.95171703274044E+0001 + 3.94963005387772E+0001 3.94754379411639E+0001 3.94545825325129E+0001 3.94337343107781E+0001 3.94128932739180E+0001 + 3.93920594198966E+0001 3.93712327466828E+0001 3.93504132522512E+0001 3.93296009345807E+0001 3.93087957916559E+0001 + 3.92879978214662E+0001 3.92672070220061E+0001 3.92464233912756E+0001 3.92256469272787E+0001 3.92048776280255E+0001 + 3.91841154915305E+0001 3.91633605158135E+0001 3.91426126988990E+0001 3.91218720388169E+0001 3.91011385336014E+0001 + 3.90804121812926E+0001 3.90596929799347E+0001 3.90389809275769E+0001 3.90182760222739E+0001 3.89975782620850E+0001 + 3.89768876450736E+0001 3.89562041693096E+0001 3.89355278328665E+0001 3.89148586338227E+0001 3.88941965702620E+0001 + 3.88735416402728E+0001 3.88528938419481E+0001 3.88322531733860E+0001 3.88116196326893E+0001 3.87909932179649E+0001 + 3.87703739273260E+0001 3.87497617588888E+0001 3.87291567107756E+0001 3.87085587811126E+0001 3.86879679680306E+0001 + 3.86673842696664E+0001 3.86468076841597E+0001 3.86262382096558E+0001 3.86056758443051E+0001 3.85851205862615E+0001 + 3.85645724336843E+0001 3.85440313847377E+0001 3.85234974375894E+0001 3.85029705904126E+0001 3.84824508413853E+0001 + 3.84619381886887E+0001 3.84414326305099E+0001 3.84209341650403E+0001 3.84004427904757E+0001 3.83799585050159E+0001 + 3.83594813068660E+0001 3.83390111942351E+0001 3.83185481653368E+0001 3.82980922183895E+0001 3.82776433516160E+0001 + 3.82572015632431E+0001 3.82367668515027E+0001 3.82163392146302E+0001 3.81959186508666E+0001 3.81755051584560E+0001 + 3.81550987356481E+0001 3.81346993806962E+0001 3.81143070918584E+0001 3.80939218673966E+0001 3.80735437055774E+0001 + 3.80531726046719E+0001 3.80328085629550E+0001 3.80124515787064E+0001 3.79921016502097E+0001 3.79717587757535E+0001 + 3.79514229536293E+0001 3.79310941821344E+0001 3.79107724595691E+0001 3.78904577842385E+0001 3.78701501544523E+0001 + 3.78498495685234E+0001 3.78295560247698E+0001 3.78092695215132E+0001 3.77889900570795E+0001 3.77687176297991E+0001 + 3.77484522380062E+0001 3.77281938800390E+0001 3.77079425542400E+0001 3.76876982589564E+0001 3.76674609925386E+0001 + 3.76472307533416E+0001 3.76270075397238E+0001 3.76067913500487E+0001 3.75865821826832E+0001 3.75663800359984E+0001 + 3.75461849083692E+0001 3.75259967981749E+0001 3.75058157037985E+0001 3.74856416236272E+0001 3.74654745560520E+0001 + 3.74453144994680E+0001 3.74251614522743E+0001 3.74050154128734E+0001 3.73848763796728E+0001 3.73647443510828E+0001 + 3.73446193255184E+0001 3.73245013013982E+0001 3.73043902771449E+0001 3.72842862511845E+0001 3.72641892219475E+0001 + 3.72440991878677E+0001 3.72240161473836E+0001 3.72039400989366E+0001 3.71838710409724E+0001 3.71638089719403E+0001 + 3.71437538902938E+0001 3.71237057944895E+0001 3.71036646829885E+0001 3.70836305542553E+0001 3.70636034067580E+0001 + 3.70435832389686E+0001 3.70235700493633E+0001 3.70035638364212E+0001 3.69835645986257E+0001 3.69635723344634E+0001 + 3.69435870424250E+0001 3.69236087210050E+0001 3.69036373687011E+0001 3.68836729840147E+0001 3.68637155654514E+0001 + 3.68437651115198E+0001 3.68238216207324E+0001 3.68038850916052E+0001 3.67839555226578E+0001 3.67640329124139E+0001 + 3.67441172593998E+0001 3.67242085621461E+0001 3.67043068191869E+0001 3.66844120290594E+0001 3.66645241903048E+0001 + 3.66446433014675E+0001 3.66247693610959E+0001 3.66049023677411E+0001 3.65850423199585E+0001 3.65651892163065E+0001 + 3.65453430553471E+0001 3.65255038356455E+0001 3.65056715557710E+0001 3.64858462142956E+0001 3.64660278097953E+0001 + 3.64462163408493E+0001 3.64264118060397E+0001 3.64066142039531E+0001 3.63868235331784E+0001 3.63670397923084E+0001 + 3.63472629799394E+0001 3.63274930946705E+0001 3.63077301351046E+0001 3.62879740998480E+0001 3.62682249875098E+0001 + 3.62484827967028E+0001 3.62287475260431E+0001 3.62090191741499E+0001 3.61892977396461E+0001 3.61695832211571E+0001 + 3.61498756173123E+0001 3.61301749267439E+0001 3.61104811480875E+0001 3.60907942799820E+0001 3.60711143210694E+0001 + 3.60514412699949E+0001 3.60317751254069E+0001 3.60121158859570E+0001 3.59924635502999E+0001 3.59728181170936E+0001 + 3.59531795849996E+0001 3.59335479526813E+0001 3.59139232188067E+0001 3.58943053820463E+0001 3.58746944410733E+0001 + 3.58550903945645E+0001 3.58354932412001E+0001 3.58159029796623E+0001 3.57963196086377E+0001 3.57767431268149E+0001 + 3.57571735328862E+0001 3.57376108255463E+0001 3.57180550034935E+0001 3.56985060654293E+0001 3.56789640100574E+0001 + 3.56594288360853E+0001 3.56399005422228E+0001 3.56203791271833E+0001 3.56008645896826E+0001 3.55813569284401E+0001 + 3.55618561421776E+0001 3.55423622296202E+0001 3.55228751894957E+0001 3.55033950205345E+0001 3.54839217214710E+0001 + 3.54644552910415E+0001 3.54449957279855E+0001 3.54255430310452E+0001 3.54060971989660E+0001 3.53866582304962E+0001 + 3.53672261243864E+0001 3.53478008793909E+0001 3.53283824942660E+0001 3.53089709677711E+0001 3.52895662986687E+0001 + 3.52701684857237E+0001 3.52507775277041E+0001 3.52313934233806E+0001 3.52120161715264E+0001 3.51926457709178E+0001 + 3.51732822203340E+0001 3.51539255185565E+0001 3.51345756643694E+0001 3.51152326565605E+0001 3.50958964939194E+0001 + 3.50765671752384E+0001 3.50572446993133E+0001 3.50379290649419E+0001 3.50186202709244E+0001 3.49993183160648E+0001 + 3.49800231991686E+0001 3.49607349190445E+0001 3.49414534745040E+0001 3.49221788643607E+0001 3.49029110874315E+0001 + 3.48836501425354E+0001 3.48643960284938E+0001 3.48451487441314E+0001 3.48259082882751E+0001 3.48066746597543E+0001 + 3.47874478574010E+0001 3.47682278800500E+0001 3.47490147265382E+0001 3.47298083957055E+0001 3.47106088863944E+0001 + 3.46914161974491E+0001 3.46722303277170E+0001 3.46530512760480E+0001 3.46338790412946E+0001 3.46147136223112E+0001 + 3.45955550179549E+0001 3.45764032270857E+0001 3.45572582485656E+0001 3.45381200812594E+0001 3.45189887240337E+0001 + 3.44998641757583E+0001 3.44807464353048E+0001 3.44616355015477E+0001 3.44425313733637E+0001 3.44234340496318E+0001 + 3.44043435292332E+0001 3.43852598110521E+0001 3.43661828939746E+0001 3.43471127768893E+0001 3.43280494586868E+0001 + 3.43089929382607E+0001 3.42899432145064E+0001 3.42709002863216E+0001 3.42518641526070E+0001 3.42328348122648E+0001 + 3.42138122641999E+0001 3.41947965073192E+0001 3.41757875405325E+0001 3.41567853627506E+0001 3.41377899728884E+0001 + 3.41188013698613E+0001 3.40998195525881E+0001 3.40808445199891E+0001 3.40618762709875E+0001 3.40429148045081E+0001 + 3.40239601194783E+0001 3.40050122148273E+0001 3.39860710894871E+0001 3.39671367423915E+0001 3.39482091724762E+0001 + 3.39292883786796E+0001 3.39103743599421E+0001 3.38914671152059E+0001 3.38725666434158E+0001 3.38536729435188E+0001 + 3.38347860144634E+0001 3.38159058552004E+0001 3.37970324646831E+0001 3.37781658418671E+0001 3.37593059857091E+0001 + 3.37404528951688E+0001 3.37216065692071E+0001 3.37027670067882E+0001 3.36839342068769E+0001 3.36651081684413E+0001 + 3.36462888904506E+0001 3.36274763718769E+0001 3.36086706116935E+0001 3.35898716088761E+0001 3.35710793624025E+0001 + 3.35522938712522E+0001 3.35335151344073E+0001 3.35147431508509E+0001 3.34959779195687E+0001 3.34772194395487E+0001 + 3.34584677097799E+0001 3.34397227292539E+0001 3.34209844969640E+0001 3.34022530119060E+0001 3.33835282730765E+0001 + 3.33648102794753E+0001 3.33460990301032E+0001 3.33273945239628E+0001 3.33086967600597E+0001 3.32900057374000E+0001 + 3.32713214549922E+0001 3.32526439118474E+0001 3.32339731069779E+0001 3.32153090393972E+0001 3.31966517081217E+0001 + 3.31780011121695E+0001 3.31593572505598E+0001 3.31407201223144E+0001 3.31220897264566E+0001 3.31034660620112E+0001 + 3.30848491280053E+0001 3.30662389234676E+0001 3.30476354474286E+0001 3.30290386989201E+0001 3.30104486769768E+0001 + 3.29918653806339E+0001 3.29732888089290E+0001 3.29547189609012E+0001 3.29361558355916E+0001 3.29175994320426E+0001 + 3.28990497492991E+0001 3.28805067864069E+0001 3.28619705424136E+0001 3.28434410163686E+0001 3.28249182073235E+0001 + 3.28064021143310E+0001 3.27878927364453E+0001 3.27693900727227E+0001 3.27508941222210E+0001 3.27324048840000E+0001 + 3.27139223571204E+0001 3.26954465406446E+0001 3.26769774336379E+0001 3.26585150351653E+0001 3.26400593442948E+0001 + 3.26216103600953E+0001 3.26031680816382E+0001 3.25847325079949E+0001 3.25663036382400E+0001 3.25478814714487E+0001 + 3.25294660066981E+0001 3.25110572430665E+0001 3.24926551796344E+0001 3.24742598154836E+0001 3.24558711496967E+0001 + 3.24374891813590E+0001 3.24191139095564E+0001 3.24007453333767E+0001 3.23823834519092E+0001 3.23640282642449E+0001 + 3.23456797694756E+0001 3.23273379666954E+0001 3.23090028549990E+0001 3.22906744334833E+0001 3.22723527012467E+0001 + 3.22540376573880E+0001 3.22357293010091E+0001 3.22174276312116E+0001 3.21991326471002E+0001 3.21808443477793E+0001 + 3.21625627323562E+0001 3.21442877999388E+0001 3.21260195496366E+0001 3.21077579805606E+0001 3.20895030918226E+0001 + 3.20712548825370E+0001 3.20530133518182E+0001 3.20347784987829E+0001 3.20165503225488E+0001 3.19983288222349E+0001 + 3.19801139969616E+0001 3.19619058458509E+0001 3.19437043680255E+0001 3.19255095626102E+0001 3.19073214287305E+0001 + 3.18891399655136E+0001 3.18709651720877E+0001 3.18527970475823E+0001 3.18346355911288E+0001 3.18164808018589E+0001 + 3.17983326789060E+0001 3.17801912214054E+0001 3.17620564284925E+0001 3.17439282993049E+0001 3.17258068329810E+0001 + 3.17076920286603E+0001 3.16895838854838E+0001 3.16714824025940E+0001 3.16533875791340E+0001 3.16352994142485E+0001 + 3.16172179070832E+0001 3.15991430567852E+0001 3.15810748625027E+0001 3.15630133233847E+0001 3.15449584385822E+0001 + 3.15269102072468E+0001 3.15088686285314E+0001 3.14908337015900E+0001 3.14728054255775E+0001 3.14547837996507E+0001 + 3.14367688229666E+0001 3.14187604946841E+0001 3.14007588139627E+0001 3.13827637799633E+0001 3.13647753918480E+0001 + 3.13467936487795E+0001 3.13288185499222E+0001 3.13108500944411E+0001 3.12928882815026E+0001 3.12749331102742E+0001 + 3.12569845799242E+0001 3.12390426896221E+0001 3.12211074385385E+0001 3.12031788258451E+0001 3.11852568507144E+0001 + 3.11673415123199E+0001 3.11494328098368E+0001 3.11315307424406E+0001 3.11136353093081E+0001 3.10957465096169E+0001 + 3.10778643425459E+0001 3.10599888072750E+0001 3.10421199029848E+0001 3.10242576288570E+0001 3.10064019840747E+0001 + 3.09885529678211E+0001 3.09707105792810E+0001 3.09528748176404E+0001 3.09350456820855E+0001 3.09172231718039E+0001 + 3.08994072859840E+0001 3.08815980238155E+0001 3.08637953844884E+0001 3.08459993671941E+0001 3.08282099711248E+0001 + 3.08104271954735E+0001 3.07926510394343E+0001 3.07748815022018E+0001 3.07571185829719E+0001 3.07393622809415E+0001 + 3.07216125953078E+0001 3.07038695252693E+0001 3.06861330700254E+0001 3.06684032287761E+0001 3.06506800007224E+0001 + 3.06329633850663E+0001 3.06152533810100E+0001 3.05975499877577E+0001 3.05798532045130E+0001 3.05621630304817E+0001 + 3.05444794648693E+0001 3.05268025068828E+0001 3.05091321557299E+0001 3.04914684106189E+0001 3.04738112707589E+0001 + 3.04561607353598E+0001 3.04385168036327E+0001 3.04208794747890E+0001 3.04032487480406E+0001 3.03856246226011E+0001 + 3.03680070976842E+0001 3.03503961725043E+0001 3.03327918462767E+0001 3.03151941182177E+0001 3.02976029875441E+0001 + 3.02800184534729E+0001 3.02624405152230E+0001 3.02448691720131E+0001 3.02273044230627E+0001 3.02097462675925E+0001 + 3.01921947048234E+0001 3.01746497339772E+0001 3.01571113542761E+0001 3.01395795649439E+0001 3.01220543652037E+0001 + 3.01045357542802E+0001 3.00870237313988E+0001 3.00695182957852E+0001 3.00520194466656E+0001 3.00345271832675E+0001 + 3.00170415048184E+0001 2.99995624105467E+0001 2.99820898996815E+0001 2.99646239714526E+0001 2.99471646250897E+0001 + 2.99297118598244E+0001 2.99122656748875E+0001 2.98948260695117E+0001 2.98773930429292E+0001 2.98599665943736E+0001 + 2.98425467230787E+0001 2.98251334282788E+0001 2.98077267092090E+0001 2.97903265651049E+0001 2.97729329952026E+0001 + 2.97555459987388E+0001 2.97381655749509E+0001 2.97207917230766E+0001 2.97034244423543E+0001 2.96860637320227E+0001 + 2.96687095913214E+0001 2.96513620194903E+0001 2.96340210157700E+0001 2.96166865794012E+0001 2.95993587096256E+0001 + 2.95820374056851E+0001 2.95647226668222E+0001 2.95474144922799E+0001 2.95301128813016E+0001 2.95128178331314E+0001 + 2.94955293470136E+0001 2.94782474221932E+0001 2.94609720579155E+0001 2.94437032534263E+0001 2.94264410079720E+0001 + 2.94091853207992E+0001 2.93919361911553E+0001 2.93746936182876E+0001 2.93574576014445E+0001 2.93402281398741E+0001 + 2.93230052328258E+0001 2.93057888795486E+0001 2.92885790792924E+0001 2.92713758313072E+0001 2.92541791348437E+0001 + 2.92369889891527E+0001 2.92198053934859E+0001 2.92026283470947E+0001 2.91854578492313E+0001 2.91682938991483E+0001 + 2.91511364960986E+0001 2.91339856393352E+0001 2.91168413281120E+0001 2.90997035616829E+0001 2.90825723393021E+0001 + 2.90654476602246E+0001 2.90483295237049E+0001 2.90312179289988E+0001 2.90141128753618E+0001 2.89970143620500E+0001 + 2.89799223883196E+0001 2.89628369534274E+0001 2.89457580566302E+0001 2.89286856971856E+0001 2.89116198743510E+0001 + 2.88945605873842E+0001 2.88775078355434E+0001 2.88604616180871E+0001 2.88434219342741E+0001 2.88263887833634E+0001 + 2.88093621646143E+0001 2.87923420772865E+0001 2.87753285206397E+0001 2.87583214939339E+0001 2.87413209964296E+0001 + 2.87243270273874E+0001 2.87073395860682E+0001 2.86903586717330E+0001 2.86733842836430E+0001 2.86564164210602E+0001 + 2.86394550832460E+0001 2.86225002694625E+0001 2.86055519789719E+0001 2.85886102110367E+0001 2.85716749649195E+0001 + 2.85547462398832E+0001 2.85378240351910E+0001 2.85209083501058E+0001 2.85039991838911E+0001 2.84870965358109E+0001 + 2.84702004051284E+0001 2.84533107911082E+0001 2.84364276930139E+0001 2.84195511101101E+0001 2.84026810416613E+0001 + 2.83858174869319E+0001 2.83689604451869E+0001 2.83521099156911E+0001 2.83352658977096E+0001 2.83184283905077E+0001 + 2.83015973933506E+0001 2.82847729055039E+0001 2.82679549262331E+0001 2.82511434548041E+0001 2.82343384904824E+0001 + 2.82175400325343E+0001 2.82007480802256E+0001 2.81839626328225E+0001 2.81671836895915E+0001 2.81504112497987E+0001 + 2.81336453127106E+0001 2.81168858775938E+0001 2.81001329437149E+0001 2.80833865103405E+0001 2.80666465767374E+0001 + 2.80499131421725E+0001 2.80331862059125E+0001 2.80164657672246E+0001 2.79997518253756E+0001 2.79830443796325E+0001 + 2.79663434292627E+0001 2.79496489735333E+0001 2.79329610117112E+0001 2.79162795430638E+0001 2.78996045668583E+0001 + 2.78829360823620E+0001 2.78662740888422E+0001 2.78496185855661E+0001 2.78329695718012E+0001 2.78163270468148E+0001 + 2.77996910098742E+0001 2.77830614602465E+0001 2.77664383971995E+0001 2.77498218200000E+0001 2.77332117279157E+0001 + 2.77166081202138E+0001 2.77000109961615E+0001 2.76834203550260E+0001 2.76668361960747E+0001 2.76502585185745E+0001 + 2.76336873217928E+0001 2.76171226049966E+0001 2.76005643674531E+0001 2.75840126084292E+0001 2.75674673271917E+0001 + 2.75509285230077E+0001 2.75343961951441E+0001 2.75178703428675E+0001 2.75013509654446E+0001 2.74848380621421E+0001 + 2.74683316322266E+0001 2.74518316749645E+0001 2.74353381896222E+0001 2.74188511754661E+0001 2.74023706317622E+0001 + 2.73858965577767E+0001 2.73694289527757E+0001 2.73529678160249E+0001 2.73365131467903E+0001 2.73200649443375E+0001 + 2.73036232079320E+0001 2.72871879368392E+0001 2.72707591303247E+0001 2.72543367876534E+0001 2.72379209080905E+0001 + 2.72215114909009E+0001 2.72051085353493E+0001 2.71887120407004E+0001 2.71723220062188E+0001 2.71559384311687E+0001 + 2.71395613148142E+0001 2.71231906564196E+0001 2.71068264552485E+0001 2.70904687105648E+0001 2.70741174216319E+0001 + 2.70577725877131E+0001 2.70414342080718E+0001 2.70251022819708E+0001 2.70087768086731E+0001 2.69924577874411E+0001 + 2.69761452175375E+0001 2.69598390982242E+0001 2.69435394287636E+0001 2.69272462084172E+0001 2.69109594364468E+0001 + 2.68946791121139E+0001 2.68784052346795E+0001 2.68621378034049E+0001 2.68458768175504E+0001 2.68296222763771E+0001 + 2.68133741791449E+0001 2.67971325251139E+0001 2.67808973135442E+0001 2.67646685436952E+0001 2.67484462148264E+0001 + 2.67322303261968E+0001 2.67160208770653E+0001 2.66998178666906E+0001 2.66836212943310E+0001 2.66674311592446E+0001 + 2.66512474606893E+0001 2.66350701979227E+0001 2.66188993702018E+0001 2.66027349767840E+0001 2.65865770169260E+0001 + 2.65704254898841E+0001 2.65542803949144E+0001 2.65381417312732E+0001 2.65220094982158E+0001 2.65058836949977E+0001 + 2.64897643208738E+0001 2.64736513750988E+0001 2.64575448569273E+0001 2.64414447656131E+0001 2.64253511004103E+0001 + 2.64092638605721E+0001 2.63931830453519E+0001 2.63771086540024E+0001 2.63610406857763E+0001 2.63449791399256E+0001 + 2.63289240157022E+0001 2.63128753123577E+0001 2.62968330291432E+0001 2.62807971653097E+0001 2.62647677201076E+0001 + 2.62487446927869E+0001 2.62327280825978E+0001 2.62167178887895E+0001 2.62007141106110E+0001 2.61847167473114E+0001 + 2.61687257981388E+0001 2.61527412623411E+0001 2.61367631391664E+0001 2.61207914278616E+0001 2.61048261276736E+0001 + 2.60888672378490E+0001 2.60729147576340E+0001 2.60569686862743E+0001 2.60410290230153E+0001 2.60250957671018E+0001 + 2.60091689177786E+0001 2.59932484742897E+0001 2.59773344358790E+0001 2.59614268017899E+0001 2.59455255712654E+0001 + 2.59296307435479E+0001 2.59137423178795E+0001 2.58978602935021E+0001 2.58819846696570E+0001 2.58661154455851E+0001 + 2.58502526205268E+0001 2.58343961937222E+0001 2.58185461644108E+0001 2.58027025318319E+0001 2.57868652952243E+0001 + 2.57710344538261E+0001 2.57552100068751E+0001 2.57393919536092E+0001 2.57235802932649E+0001 2.57077750250788E+0001 + 2.56919761482871E+0001 2.56761836621254E+0001 2.56603975658287E+0001 2.56446178586317E+0001 2.56288445397687E+0001 + 2.56130776084734E+0001 2.55973170639791E+0001 2.55815629055185E+0001 2.55658151323242E+0001 2.55500737436278E+0001 + 2.55343387386607E+0001 2.55186101166539E+0001 2.55028878768375E+0001 2.54871720184417E+0001 2.54714625406959E+0001 + 2.54557594428288E+0001 2.54400627240690E+0001 2.54243723836443E+0001 2.54086884207822E+0001 2.53930108347095E+0001 + 2.53773396246526E+0001 2.53616747898374E+0001 2.53460163294892E+0001 2.53303642428330E+0001 2.53147185290930E+0001 + 2.52990791874929E+0001 2.52834462172561E+0001 2.52678196176054E+0001 2.52521993877630E+0001 2.52365855269504E+0001 + 2.52209780343889E+0001 2.52053769092989E+0001 2.51897821509008E+0001 2.51741937584137E+0001 2.51586117310570E+0001 + 2.51430360680486E+0001 2.51274667686069E+0001 2.51119038319488E+0001 2.50963472572913E+0001 2.50807970438505E+0001 + 2.50652531908418E+0001 2.50497156974808E+0001 2.50341845629814E+0001 2.50186597865580E+0001 2.50031413674236E+0001 + 2.49876293047912E+0001 2.49721235978729E+0001 2.49566242458804E+0001 2.49411312480244E+0001 2.49256446035159E+0001 + 2.49101643115644E+0001 2.48946903713792E+0001 2.48792227821691E+0001 2.48637615431420E+0001 2.48483066535056E+0001 + 2.48328581124667E+0001 2.48174159192315E+0001 2.48019800730057E+0001 2.47865505729945E+0001 2.47711274184023E+0001 + 2.47557106084328E+0001 2.47403001422895E+0001 2.47248960191748E+0001 2.47094982382907E+0001 2.46941067988388E+0001 + 2.46787217000196E+0001 2.46633429410335E+0001 2.46479705210799E+0001 2.46326044393574E+0001 2.46172446950645E+0001 + 2.46018912873989E+0001 2.45865442155573E+0001 2.45712034787362E+0001 2.45558690761312E+0001 2.45405410069375E+0001 + 2.45252192703492E+0001 2.45099038655603E+0001 2.44945947917638E+0001 2.44792920481521E+0001 2.44639956339171E+0001 + 2.44487055482498E+0001 2.44334217903407E+0001 2.44181443593798E+0001 2.44028732545559E+0001 2.43876084750577E+0001 + 2.43723500200730E+0001 2.43570978887889E+0001 2.43418520803918E+0001 2.43266125940675E+0001 2.43113794290012E+0001 + 2.42961525843773E+0001 2.42809320593794E+0001 2.42657178531910E+0001 2.42505099649939E+0001 2.42353083939701E+0001 + 2.42201131393007E+0001 2.42049242001657E+0001 2.41897415757450E+0001 2.41745652652175E+0001 2.41593952677612E+0001 + 2.41442315825540E+0001 2.41290742087723E+0001 2.41139231455925E+0001 2.40987783921898E+0001 2.40836399477393E+0001 + 2.40685078114144E+0001 2.40533819823889E+0001 2.40382624598351E+0001 2.40231492429249E+0001 2.40080423308294E+0001 + 2.39929417227191E+0001 2.39778474177637E+0001 2.39627594151322E+0001 2.39476777139925E+0001 2.39326023135125E+0001 + 2.39175332128589E+0001 2.39024704111976E+0001 2.38874139076942E+0001 2.38723637015128E+0001 2.38573197918178E+0001 + 2.38422821777719E+0001 2.38272508585376E+0001 2.38122258332767E+0001 2.37972071011497E+0001 2.37821946613170E+0001 + 2.37671885129380E+0001 2.37521886551712E+0001 2.37371950871744E+0001 2.37222078081050E+0001 2.37072268171190E+0001 + 2.36922521133724E+0001 2.36772836960198E+0001 2.36623215642153E+0001 2.36473657171124E+0001 2.36324161538634E+0001 + 2.36174728736204E+0001 2.36025358755340E+0001 2.35876051587549E+0001 2.35726807224324E+0001 2.35577625657151E+0001 + 2.35428506877511E+0001 2.35279450876874E+0001 2.35130457646706E+0001 2.34981527178460E+0001 2.34832659463586E+0001 + 2.34683854493524E+0001 2.34535112259708E+0001 2.34386432753560E+0001 2.34237815966498E+0001 2.34089261889930E+0001 + 2.33940770515257E+0001 2.33792341833873E+0001 2.33643975837162E+0001 2.33495672516501E+0001 2.33347431863259E+0001 + 2.33199253868798E+0001 2.33051138524469E+0001 2.32903085821619E+0001 2.32755095751583E+0001 2.32607168305691E+0001 + 2.32459303475263E+0001 2.32311501251612E+0001 2.32163761626043E+0001 2.32016084589851E+0001 2.31868470134325E+0001 + 2.31720918250746E+0001 2.31573428930385E+0001 2.31426002164504E+0001 2.31278637944362E+0001 2.31131336261202E+0001 + 2.30984097106268E+0001 2.30836920470786E+0001 2.30689806345982E+0001 2.30542754723067E+0001 2.30395765593249E+0001 + 2.30248838947726E+0001 2.30101974777687E+0001 2.29955173074311E+0001 2.29808433828771E+0001 2.29661757032233E+0001 + 2.29515142675853E+0001 2.29368590750775E+0001 2.29222101248142E+0001 2.29075674159081E+0001 2.28929309474716E+0001 + 2.28783007186162E+0001 2.28636767284521E+0001 2.28490589760891E+0001 2.28344474606361E+0001 2.28198421812010E+0001 + 2.28052431368909E+0001 2.27906503268120E+0001 2.27760637500699E+0001 2.27614834057691E+0001 2.27469092930130E+0001 + 2.27323414109048E+0001 2.27177797585463E+0001 2.27032243350385E+0001 2.26886751394818E+0001 2.26741321709756E+0001 + 2.26595954286184E+0001 2.26450649115076E+0001 2.26305406187404E+0001 2.26160225494123E+0001 2.26015107026186E+0001 + 2.25870050774534E+0001 2.25725056730101E+0001 2.25580124883807E+0001 2.25435255226571E+0001 2.25290447749301E+0001 + 2.25145702442891E+0001 2.25001019298232E+0001 2.24856398306203E+0001 2.24711839457678E+0001 2.24567342743518E+0001 + 2.24422908154575E+0001 2.24278535681696E+0001 2.24134225315717E+0001 2.23989977047465E+0001 2.23845790867756E+0001 + 2.23701666767402E+0001 2.23557604737203E+0001 2.23413604767950E+0001 2.23269666850426E+0001 2.23125790975402E+0001 + 2.22981977133647E+0001 2.22838225315914E+0001 2.22694535512949E+0001 2.22550907715491E+0001 2.22407341914268E+0001 + 2.22263838100000E+0001 2.22120396263398E+0001 2.21977016395163E+0001 2.21833698485988E+0001 2.21690442526556E+0001 + 2.21547248507541E+0001 2.21404116419610E+0001 2.21261046253417E+0001 2.21118037999611E+0001 2.20975091648828E+0001 + 2.20832207191700E+0001 2.20689384618844E+0001 2.20546623920871E+0001 2.20403925088384E+0001 2.20261288111973E+0001 + 2.20118712982223E+0001 2.19976199689707E+0001 2.19833748224990E+0001 2.19691358578629E+0001 2.19549030741167E+0001 + 2.19406764703145E+0001 2.19264560455086E+0001 2.19122417987515E+0001 2.18980337290936E+0001 2.18838318355852E+0001 + 2.18696361172752E+0001 2.18554465732119E+0001 2.18412632024424E+0001 2.18270860040133E+0001 2.18129149769696E+0001 + 2.17987501203559E+0001 2.17845914332158E+0001 2.17704389145917E+0001 2.17562925635254E+0001 2.17421523790574E+0001 + 2.17280183602276E+0001 2.17138905060749E+0001 2.16997688156371E+0001 2.16856532879512E+0001 2.16715439220531E+0001 + 2.16574407169780E+0001 2.16433436717601E+0001 2.16292527854323E+0001 2.16151680570272E+0001 2.16010894855759E+0001 + 2.15870170701089E+0001 2.15729508096555E+0001 2.15588907032441E+0001 2.15448367499025E+0001 2.15307889486571E+0001 + 2.15167472985335E+0001 2.15027117985566E+0001 2.14886824477499E+0001 2.14746592451362E+0001 2.14606421897375E+0001 + 2.14466312805745E+0001 2.14326265166673E+0001 2.14186278970347E+0001 2.14046354206948E+0001 2.13906490866648E+0001 + 2.13766688939606E+0001 2.13626948415974E+0001 2.13487269285895E+0001 2.13347651539500E+0001 2.13208095166914E+0001 + 2.13068600158248E+0001 2.12929166503608E+0001 2.12789794193086E+0001 2.12650483216766E+0001 2.12511233564726E+0001 + 2.12372045227028E+0001 2.12232918193730E+0001 2.12093852454874E+0001 2.11954848000501E+0001 2.11815904820635E+0001 + 2.11677022905295E+0001 2.11538202244486E+0001 2.11399442828208E+0001 2.11260744646446E+0001 2.11122107689182E+0001 + 2.10983531946381E+0001 2.10845017408004E+0001 2.10706564064001E+0001 2.10568171904311E+0001 2.10429840918863E+0001 + 2.10291571097578E+0001 2.10153362430366E+0001 2.10015214907128E+0001 2.09877128517755E+0001 2.09739103252128E+0001 + 2.09601139100119E+0001 2.09463236051589E+0001 2.09325394096390E+0001 2.09187613224365E+0001 2.09049893425348E+0001 + 2.08912234689158E+0001 2.08774637005611E+0001 2.08637100364509E+0001 2.08499624755647E+0001 2.08362210168807E+0001 + 2.08224856593762E+0001 2.08087564020279E+0001 2.07950332438110E+0001 2.07813161837000E+0001 2.07676052206683E+0001 + 2.07539003536886E+0001 2.07402015817323E+0001 2.07265089037699E+0001 2.07128223187709E+0001 2.06991418257038E+0001 + 2.06854674235364E+0001 2.06717991112351E+0001 2.06581368877656E+0001 2.06444807520925E+0001 2.06308307031794E+0001 + 2.06171867399890E+0001 2.06035488614830E+0001 2.05899170666219E+0001 2.05762913543657E+0001 2.05626717236728E+0001 + 2.05490581735011E+0001 2.05354507028074E+0001 2.05218493105472E+0001 2.05082539956754E+0001 2.04946647571458E+0001 + 2.04810815939112E+0001 2.04675045049233E+0001 2.04539334891330E+0001 2.04403685454900E+0001 2.04268096729432E+0001 + 2.04132568704404E+0001 2.03997101369284E+0001 2.03861694713531E+0001 2.03726348726595E+0001 2.03591063397912E+0001 + 2.03455838716912E+0001 2.03320674673015E+0001 2.03185571255628E+0001 2.03050528454151E+0001 2.02915546257973E+0001 + 2.02780624656473E+0001 2.02645763639020E+0001 2.02510963194974E+0001 2.02376223313684E+0001 2.02241543984488E+0001 + 2.02106925196717E+0001 2.01972366939691E+0001 2.01837869202718E+0001 2.01703431975099E+0001 2.01569055246122E+0001 + 2.01434739005068E+0001 2.01300483241207E+0001 2.01166287943797E+0001 2.01032153102090E+0001 2.00898078705324E+0001 + 2.00764064742731E+0001 2.00630111203529E+0001 2.00496218076928E+0001 2.00362385352129E+0001 2.00228613018323E+0001 + 2.00094901064687E+0001 1.99961249480394E+0001 1.99827658254603E+0001 1.99694127376464E+0001 1.99560656835117E+0001 + 1.99427246619692E+0001 1.99293896719311E+0001 1.99160607123083E+0001 1.99027377820107E+0001 1.98894208799475E+0001 + 1.98761100050267E+0001 1.98628051561553E+0001 1.98495063322394E+0001 1.98362135321840E+0001 1.98229267548930E+0001 + 1.98096459992696E+0001 1.97963712642158E+0001 1.97831025486326E+0001 1.97698398514202E+0001 1.97565831714773E+0001 + 1.97433325077023E+0001 1.97300878589921E+0001 1.97168492242427E+0001 1.97036166023492E+0001 1.96903899922057E+0001 + 1.96771693927051E+0001 1.96639548027396E+0001 1.96507462212001E+0001 1.96375436469769E+0001 1.96243470789588E+0001 + 1.96111565160339E+0001 1.95979719570893E+0001 1.95847934010112E+0001 1.95716208466844E+0001 1.95584542929930E+0001 + 1.95452937388202E+0001 1.95321391830480E+0001 1.95189906245574E+0001 1.95058480622285E+0001 1.94927114949404E+0001 + 1.94795809215712E+0001 1.94664563409977E+0001 1.94533377520963E+0001 1.94402251537420E+0001 1.94271185448086E+0001 + 1.94140179241695E+0001 1.94009232906966E+0001 1.93878346432610E+0001 1.93747519807329E+0001 1.93616753019811E+0001 + 1.93486046058739E+0001 1.93355398912784E+0001 1.93224811570605E+0001 1.93094284020855E+0001 1.92963816252174E+0001 + 1.92833408253192E+0001 1.92703060012531E+0001 1.92572771518802E+0001 1.92442542760605E+0001 1.92312373726532E+0001 + 1.92182264405163E+0001 1.92052214785072E+0001 1.91922224854816E+0001 1.91792294602949E+0001 1.91662424018012E+0001 + 1.91532613088535E+0001 1.91402861803040E+0001 1.91273170150038E+0001 1.91143538118031E+0001 1.91013965695510E+0001 + 1.90884452870956E+0001 1.90754999632842E+0001 1.90625605969629E+0001 1.90496271869767E+0001 1.90366997321700E+0001 + 1.90237782313859E+0001 1.90108626834665E+0001 1.89979530872531E+0001 1.89850494415858E+0001 1.89721517453039E+0001 + 1.89592599972455E+0001 1.89463741962478E+0001 1.89334943411472E+0001 1.89206204307788E+0001 1.89077524639769E+0001 + 1.88948904395747E+0001 1.88820343564045E+0001 1.88691842132976E+0001 1.88563400090841E+0001 1.88435017425935E+0001 + 1.88306694126539E+0001 1.88178430180928E+0001 1.88050225577363E+0001 1.87922080304099E+0001 1.87793994349380E+0001 + 1.87665967701436E+0001 1.87538000348495E+0001 1.87410092278768E+0001 1.87282243480459E+0001 1.87154453941763E+0001 + 1.87026723650863E+0001 1.86899052595933E+0001 1.86771440765139E+0001 1.86643888146635E+0001 1.86516394728565E+0001 + 1.86388960499063E+0001 1.86261585446256E+0001 1.86134269558257E+0001 1.86007012823172E+0001 1.85879815229098E+0001 + 1.85752676764118E+0001 1.85625597416309E+0001 1.85498577173737E+0001 1.85371616024458E+0001 1.85244713956518E+0001 + 1.85117870957953E+0001 1.84991087016791E+0001 1.84864362121047E+0001 1.84737696258729E+0001 1.84611089417835E+0001 + 1.84484541586350E+0001 1.84358052752254E+0001 1.84231622903514E+0001 1.84105252028088E+0001 1.83978940113924E+0001 + 1.83852687148960E+0001 1.83726493121126E+0001 1.83600358018340E+0001 1.83474281828511E+0001 1.83348264539540E+0001 + 1.83222306139314E+0001 1.83096406615715E+0001 1.82970565956613E+0001 1.82844784149867E+0001 1.82719061183329E+0001 + 1.82593397044839E+0001 1.82467791722229E+0001 1.82342245203321E+0001 1.82216757475925E+0001 1.82091328527844E+0001 + 1.81965958346870E+0001 1.81840646920787E+0001 1.81715394237366E+0001 1.81590200284372E+0001 1.81465065049556E+0001 + 1.81339988520665E+0001 1.81214970685432E+0001 1.81090011531581E+0001 1.80965111046827E+0001 1.80840269218876E+0001 + 1.80715486035422E+0001 1.80590761484152E+0001 1.80466095552742E+0001 1.80341488228859E+0001 1.80216939500160E+0001 + 1.80092449354291E+0001 1.79968017778890E+0001 1.79843644761588E+0001 1.79719330289999E+0001 1.79595074351735E+0001 + 1.79470876934394E+0001 1.79346738025567E+0001 1.79222657612832E+0001 1.79098635683761E+0001 1.78974672225914E+0001 + 1.78850767226843E+0001 1.78726920674090E+0001 1.78603132555186E+0001 1.78479402857655E+0001 1.78355731569009E+0001 + 1.78232118676752E+0001 1.78108564168378E+0001 1.77985068031372E+0001 1.77861630253208E+0001 1.77738250821353E+0001 + 1.77614929723261E+0001 1.77491666946379E+0001 1.77368462478145E+0001 1.77245316305985E+0001 1.77122228417318E+0001 + 1.76999198799552E+0001 1.76876227440085E+0001 1.76753314326309E+0001 1.76630459445602E+0001 1.76507662785335E+0001 + 1.76384924332869E+0001 1.76262244075556E+0001 1.76139622000738E+0001 1.76017058095749E+0001 1.75894552347910E+0001 + 1.75772104744537E+0001 1.75649715272935E+0001 1.75527383920397E+0001 1.75405110674211E+0001 1.75282895521652E+0001 + 1.75160738449987E+0001 1.75038639446474E+0001 1.74916598498361E+0001 1.74794615592889E+0001 1.74672690717284E+0001 + 1.74550823858769E+0001 1.74429015004553E+0001 1.74307264141839E+0001 1.74185571257818E+0001 1.74063936339674E+0001 + 1.73942359374580E+0001 1.73820840349701E+0001 1.73699379252190E+0001 1.73577976069195E+0001 1.73456630787851E+0001 + 1.73335343395285E+0001 1.73214113878616E+0001 1.73092942224952E+0001 1.72971828421393E+0001 1.72850772455028E+0001 + 1.72729774312939E+0001 1.72608833982196E+0001 1.72487951449863E+0001 1.72367126702993E+0001 1.72246359728630E+0001 + 1.72125650513807E+0001 1.72004999045553E+0001 1.71884405310882E+0001 1.71763869296801E+0001 1.71643390990310E+0001 + 1.71522970378397E+0001 1.71402607448041E+0001 1.71282302186214E+0001 1.71162054579877E+0001 1.71041864615982E+0001 + 1.70921732281472E+0001 1.70801657563282E+0001 1.70681640448337E+0001 1.70561680923552E+0001 1.70441778975835E+0001 + 1.70321934592084E+0001 1.70202147759186E+0001 1.70082418464023E+0001 1.69962746693464E+0001 1.69843132434371E+0001 + 1.69723575673596E+0001 1.69604076397984E+0001 1.69484634594368E+0001 1.69365250249573E+0001 1.69245923350418E+0001 + 1.69126653883708E+0001 1.69007441836243E+0001 1.68888287194812E+0001 1.68769189946195E+0001 1.68650150077165E+0001 + 1.68531167574483E+0001 1.68412242424903E+0001 1.68293374615172E+0001 1.68174564132023E+0001 1.68055810962184E+0001 + 1.67937115092373E+0001 1.67818476509300E+0001 1.67699895199663E+0001 1.67581371150156E+0001 1.67462904347460E+0001 + 1.67344494778249E+0001 1.67226142429188E+0001 1.67107847286932E+0001 1.66989609338129E+0001 1.66871428569417E+0001 + 1.66753304967425E+0001 1.66635238518775E+0001 1.66517229210078E+0001 1.66399277027936E+0001 1.66281381958945E+0001 + 1.66163543989690E+0001 1.66045763106748E+0001 1.65928039296686E+0001 1.65810372546064E+0001 1.65692762841432E+0001 + 1.65575210169333E+0001 1.65457714516299E+0001 1.65340275868855E+0001 1.65222894213516E+0001 1.65105569536790E+0001 + 1.64988301825174E+0001 1.64871091065160E+0001 1.64753937243226E+0001 1.64636840345846E+0001 1.64519800359484E+0001 + 1.64402817270595E+0001 1.64285891065624E+0001 1.64169021731012E+0001 1.64052209253184E+0001 1.63935453618565E+0001 + 1.63818754813564E+0001 1.63702112824587E+0001 1.63585527638027E+0001 1.63468999240271E+0001 1.63352527617697E+0001 + 1.63236112756675E+0001 1.63119754643565E+0001 1.63003453264721E+0001 1.62887208606484E+0001 1.62771020655191E+0001 + 1.62654889397170E+0001 1.62538814818737E+0001 1.62422796906204E+0001 1.62306835645872E+0001 1.62190931024034E+0001 + 1.62075083026974E+0001 1.61959291640969E+0001 1.61843556852286E+0001 1.61727878647186E+0001 1.61612257011918E+0001 + 1.61496691932727E+0001 1.61381183395846E+0001 1.61265731387501E+0001 1.61150335893909E+0001 1.61034996901280E+0001 + 1.60919714395816E+0001 1.60804488363708E+0001 1.60689318791141E+0001 1.60574205664291E+0001 1.60459148969326E+0001 + 1.60344148692406E+0001 1.60229204819681E+0001 1.60114317337294E+0001 1.59999486231381E+0001 1.59884711488068E+0001 + 1.59769993093473E+0001 1.59655331033707E+0001 1.59540725294871E+0001 1.59426175863059E+0001 1.59311682724357E+0001 + 1.59197245864842E+0001 1.59082865270583E+0001 1.58968540927642E+0001 1.58854272822071E+0001 1.58740060939915E+0001 + 1.58625905267213E+0001 1.58511805789990E+0001 1.58397762494269E+0001 1.58283775366063E+0001 1.58169844391373E+0001 + 1.58055969556200E+0001 1.57942150846529E+0001 1.57828388248342E+0001 1.57714681747610E+0001 1.57601031330299E+0001 + 1.57487436982365E+0001 1.57373898689755E+0001 1.57260416438410E+0001 1.57146990214263E+0001 1.57033620003238E+0001 + 1.56920305791251E+0001 1.56807047564212E+0001 1.56693845308021E+0001 1.56580699008570E+0001 1.56467608651744E+0001 + 1.56354574223422E+0001 1.56241595709470E+0001 1.56128673095752E+0001 1.56015806368120E+0001 1.55902995512420E+0001 + 1.55790240514489E+0001 1.55677541360158E+0001 1.55564898035249E+0001 1.55452310525576E+0001 1.55339778816947E+0001 + 1.55227302895157E+0001 1.55114882746002E+0001 1.55002518355262E+0001 1.54890209708713E+0001 1.54777956792125E+0001 + 1.54665759591255E+0001 1.54553618091859E+0001 1.54441532279678E+0001 1.54329502140452E+0001 1.54217527659910E+0001 + 1.54105608823773E+0001 1.53993745617755E+0001 1.53881938027564E+0001 1.53770186038898E+0001 1.53658489637448E+0001 + 1.53546848808898E+0001 1.53435263538925E+0001 1.53323733813198E+0001 1.53212259617376E+0001 1.53100840937113E+0001 + 1.52989477758057E+0001 1.52878170065845E+0001 1.52766917846108E+0001 1.52655721084470E+0001 1.52544579766547E+0001 + 1.52433493877948E+0001 1.52322463404273E+0001 1.52211488331116E+0001 1.52100568644064E+0001 1.51989704328695E+0001 + 1.51878895370581E+0001 1.51768141755286E+0001 1.51657443468366E+0001 1.51546800495371E+0001 1.51436212821843E+0001 + 1.51325680433316E+0001 1.51215203315318E+0001 1.51104781453369E+0001 1.50994414832981E+0001 1.50884103439659E+0001 + 1.50773847258902E+0001 1.50663646276201E+0001 1.50553500477039E+0001 1.50443409846892E+0001 1.50333374371230E+0001 + 1.50223394035514E+0001 1.50113468825200E+0001 1.50003598725734E+0001 1.49893783722557E+0001 1.49784023801101E+0001 + 1.49674318946795E+0001 1.49564669145055E+0001 1.49455074381293E+0001 1.49345534640915E+0001 1.49236049909318E+0001 + 1.49126620171891E+0001 1.49017245414020E+0001 1.48907925621079E+0001 1.48798660778438E+0001 1.48689450871460E+0001 + 1.48580295885498E+0001 1.48471195805903E+0001 1.48362150618014E+0001 1.48253160307167E+0001 1.48144224858687E+0001 + 1.48035344257896E+0001 1.47926518490106E+0001 1.47817747540624E+0001 1.47709031394750E+0001 1.47600370037776E+0001 + 1.47491763454987E+0001 1.47383211631663E+0001 1.47274714553075E+0001 1.47166272204489E+0001 1.47057884571162E+0001 + 1.46949551638347E+0001 1.46841273391286E+0001 1.46733049815219E+0001 1.46624880895376E+0001 1.46516766616982E+0001 + 1.46408706965253E+0001 1.46300701925401E+0001 1.46192751482629E+0001 1.46084855622135E+0001 1.45977014329109E+0001 + 1.45869227588735E+0001 1.45761495386190E+0001 1.45653817706645E+0001 1.45546194535263E+0001 1.45438625857202E+0001 + 1.45331111657611E+0001 1.45223651921636E+0001 1.45116246634413E+0001 1.45008895781073E+0001 1.44901599346740E+0001 + 1.44794357316532E+0001 1.44687169675559E+0001 1.44580036408927E+0001 1.44472957501734E+0001 1.44365932939070E+0001 + 1.44258962706021E+0001 1.44152046787664E+0001 1.44045185169074E+0001 1.43938377835314E+0001 1.43831624771444E+0001 + 1.43724925962517E+0001 1.43618281393579E+0001 1.43511691049670E+0001 1.43405154915823E+0001 1.43298672977066E+0001 + 1.43192245218420E+0001 1.43085871624898E+0001 1.42979552181509E+0001 1.42873286873254E+0001 1.42767075685130E+0001 + 1.42660918602126E+0001 1.42554815609224E+0001 1.42448766691401E+0001 1.42342771833627E+0001 1.42236831020867E+0001 + 1.42130944238079E+0001 1.42025111470214E+0001 1.41919332702218E+0001 1.41813607919031E+0001 1.41707937105585E+0001 + 1.41602320246807E+0001 1.41496757327620E+0001 1.41391248332936E+0001 1.41285793247666E+0001 1.41180392056712E+0001 + 1.41075044744970E+0001 1.40969751297331E+0001 1.40864511698678E+0001 1.40759325933892E+0001 1.40654193987843E+0001 + 1.40549115845399E+0001 1.40444091491419E+0001 1.40339120910758E+0001 1.40234204088265E+0001 1.40129341008781E+0001 + 1.40024531657143E+0001 1.39919776018183E+0001 1.39815074076724E+0001 1.39710425817585E+0001 1.39605831225580E+0001 + 1.39501290285515E+0001 1.39396802982191E+0001 1.39292369300404E+0001 1.39187989224943E+0001 1.39083662740591E+0001 + 1.38979389832128E+0001 1.38875170484325E+0001 1.38771004681947E+0001 1.38666892409756E+0001 1.38562833652507E+0001 + 1.38458828394949E+0001 1.38354876621825E+0001 1.38250978317872E+0001 1.38147133467823E+0001 1.38043342056404E+0001 + 1.37939604068336E+0001 1.37835919488334E+0001 1.37732288301107E+0001 1.37628710491359E+0001 1.37525186043789E+0001 + 1.37421714943088E+0001 1.37318297173944E+0001 1.37214932721039E+0001 1.37111621569048E+0001 1.37008363702642E+0001 + 1.36905159106485E+0001 1.36802007765238E+0001 1.36698909663554E+0001 1.36595864786082E+0001 1.36492873117464E+0001 + 1.36389934642338E+0001 1.36287049345337E+0001 1.36184217211087E+0001 1.36081438224209E+0001 1.35978712369320E+0001 + 1.35876039631030E+0001 1.35773419993944E+0001 1.35670853442663E+0001 1.35568339961780E+0001 1.35465879535886E+0001 + 1.35363472149563E+0001 1.35261117787392E+0001 1.35158816433945E+0001 1.35056568073790E+0001 1.34954372691491E+0001 + 1.34852230271606E+0001 1.34750140798685E+0001 1.34648104257279E+0001 1.34546120631927E+0001 1.34444189907168E+0001 + 1.34342312067533E+0001 1.34240487097550E+0001 1.34138714981739E+0001 1.34036995704617E+0001 1.33935329250695E+0001 + 1.33833715604481E+0001 1.33732154750475E+0001 1.33630646673174E+0001 1.33529191357068E+0001 1.33427788786644E+0001 + 1.33326438946384E+0001 1.33225141820763E+0001 1.33123897394252E+0001 1.33022705651319E+0001 1.32921566576425E+0001 + 1.32820480154025E+0001 1.32719446368572E+0001 1.32618465204511E+0001 1.32517536646286E+0001 1.32416660678332E+0001 + 1.32315837285082E+0001 1.32215066450963E+0001 1.32114348160398E+0001 1.32013682397804E+0001 1.31913069147593E+0001 + 1.31812508394175E+0001 1.31712000121951E+0001 1.31611544315321E+0001 1.31511140958679E+0001 1.31410790036413E+0001 + 1.31310491532908E+0001 1.31210245432543E+0001 1.31110051719695E+0001 1.31009910378732E+0001 1.30909821394021E+0001 + 1.30809784749922E+0001 1.30709800430793E+0001 1.30609868420984E+0001 1.30509988704845E+0001 1.30410161266716E+0001 + 1.30310386090937E+0001 1.30210663161841E+0001 1.30110992463756E+0001 1.30011373981009E+0001 1.29911807697918E+0001 + 1.29812293598800E+0001 1.29712831667966E+0001 1.29613421889722E+0001 1.29514064248371E+0001 1.29414758728210E+0001 + 1.29315505313534E+0001 1.29216303988631E+0001 1.29117154737786E+0001 1.29018057545279E+0001 1.28919012395387E+0001 + 1.28820019272382E+0001 1.28721078160529E+0001 1.28622189044094E+0001 1.28523351907334E+0001 1.28424566734504E+0001 + 1.28325833509855E+0001 1.28227152217632E+0001 1.28128522842078E+0001 1.28029945367430E+0001 1.27931419777922E+0001 + 1.27832946057782E+0001 1.27734524191236E+0001 1.27636154162506E+0001 1.27537835955808E+0001 1.27439569555354E+0001 + 1.27341354945354E+0001 1.27243192110011E+0001 1.27145081033528E+0001 1.27047021700099E+0001 1.26949014093917E+0001 + 1.26851058199171E+0001 1.26753154000046E+0001 1.26655301480721E+0001 1.26557500625374E+0001 1.26459751418175E+0001 + 1.26362053843295E+0001 1.26264407884897E+0001 1.26166813527143E+0001 1.26069270754189E+0001 1.25971779550188E+0001 + 1.25874339899289E+0001 1.25776951785637E+0001 1.25679615193374E+0001 1.25582330106637E+0001 1.25485096509560E+0001 + 1.25387914386273E+0001 1.25290783720901E+0001 1.25193704497568E+0001 1.25096676700391E+0001 1.24999700313487E+0001 + 1.24902775320965E+0001 1.24805901706934E+0001 1.24709079455496E+0001 1.24612308550754E+0001 1.24515588976802E+0001 + 1.24418920717734E+0001 1.24322303757639E+0001 1.24225738080602E+0001 1.24129223670706E+0001 1.24032760512029E+0001 + 1.23936348588645E+0001 1.23839987884627E+0001 1.23743678384042E+0001 1.23647420070953E+0001 1.23551212929423E+0001 + 1.23455056943508E+0001 1.23358952097262E+0001 1.23262898374735E+0001 1.23166895759975E+0001 1.23070944237024E+0001 + 1.22975043789924E+0001 1.22879194402710E+0001 1.22783396059415E+0001 1.22687648744071E+0001 1.22591952440703E+0001 + 1.22496307133335E+0001 1.22400712805986E+0001 1.22305169442674E+0001 1.22209677027412E+0001 1.22114235544209E+0001 + 1.22018844977073E+0001 1.21923505310007E+0001 1.21828216527011E+0001 1.21732978612084E+0001 1.21637791549218E+0001 + 1.21542655322404E+0001 1.21447569915631E+0001 1.21352535312882E+0001 1.21257551498139E+0001 1.21162618455380E+0001 + 1.21067736168581E+0001 1.20972904621713E+0001 1.20878123798745E+0001 1.20783393683644E+0001 1.20688714260372E+0001 + 1.20594085512888E+0001 1.20499507425151E+0001 1.20404979981113E+0001 1.20310503164726E+0001 1.20216076959937E+0001 + 1.20121701350692E+0001 1.20027376320932E+0001 1.19933101854597E+0001 1.19838877935622E+0001 1.19744704547942E+0001 + 1.19650581675486E+0001 1.19556509302182E+0001 1.19462487411956E+0001 1.19368515988728E+0001 1.19274595016418E+0001 + 1.19180724478943E+0001 1.19086904360215E+0001 1.18993134644147E+0001 1.18899415314645E+0001 1.18805746355615E+0001 + 1.18712127750960E+0001 1.18618559484580E+0001 1.18525041540371E+0001 1.18431573902229E+0001 1.18338156554045E+0001 + 1.18244789479709E+0001 1.18151472663107E+0001 1.18058206088123E+0001 1.17964989738639E+0001 1.17871823598534E+0001 + 1.17778707651683E+0001 1.17685641881961E+0001 1.17592626273238E+0001 1.17499660809385E+0001 1.17406745474266E+0001 + 1.17313880251745E+0001 1.17221065125684E+0001 1.17128300079941E+0001 1.17035585098374E+0001 1.16942920164835E+0001 + 1.16850305263176E+0001 1.16757740377247E+0001 1.16665225490894E+0001 1.16572760587962E+0001 1.16480345652293E+0001 + 1.16387980667725E+0001 1.16295665618098E+0001 1.16203400487246E+0001 1.16111185259001E+0001 1.16019019917195E+0001 + 1.15926904445655E+0001 1.15834838828209E+0001 1.15742823048679E+0001 1.15650857090887E+0001 1.15558940938652E+0001 + 1.15467074575792E+0001 1.15375257986123E+0001 1.15283491153456E+0001 1.15191774061604E+0001 1.15100106694374E+0001 + 1.15008489035573E+0001 1.14916921069005E+0001 1.14825402778474E+0001 1.14733934147780E+0001 1.14642515160720E+0001 + 1.14551145801092E+0001 1.14459826052690E+0001 1.14368555899306E+0001 1.14277335324730E+0001 1.14186164312751E+0001 + 1.14095042847155E+0001 1.14003970911727E+0001 1.13912948490250E+0001 1.13821975566504E+0001 1.13731052124269E+0001 + 1.13640178147320E+0001 1.13549353619434E+0001 1.13458578524383E+0001 1.13367852845939E+0001 1.13277176567872E+0001 + 1.13186549673949E+0001 1.13095972147937E+0001 1.13005443973599E+0001 1.12914965134700E+0001 1.12824535614999E+0001 + 1.12734155398255E+0001 1.12643824468227E+0001 1.12553542808669E+0001 1.12463310403336E+0001 1.12373127235980E+0001 + 1.12282993290352E+0001 1.12192908550202E+0001 1.12102872999276E+0001 1.12012886621322E+0001 1.11922949400082E+0001 + 1.11833061319301E+0001 1.11743222362719E+0001 1.11653432514075E+0001 1.11563691757110E+0001 1.11474000075558E+0001 + 1.11384357453155E+0001 1.11294763873636E+0001 1.11205219320732E+0001 1.11115723778175E+0001 1.11026277229693E+0001 + 1.10936879659015E+0001 1.10847531049868E+0001 1.10758231385977E+0001 1.10668980651065E+0001 1.10579778828855E+0001 + 1.10490625903069E+0001 1.10401521857427E+0001 1.10312466675647E+0001 1.10223460341446E+0001 1.10134502838540E+0001 + 1.10045594150645E+0001 1.09956734261474E+0001 1.09867923154739E+0001 1.09779160814151E+0001 1.09690447223421E+0001 + 1.09601782366256E+0001 1.09513166226365E+0001 1.09424598787455E+0001 1.09336080033229E+0001 1.09247609947393E+0001 + 1.09159188513650E+0001 1.09070815715701E+0001 1.08982491537247E+0001 1.08894215961990E+0001 1.08805988973626E+0001 + 1.08717810555854E+0001 1.08629680692370E+0001 1.08541599366872E+0001 1.08453566563052E+0001 1.08365582264606E+0001 + 1.08277646455225E+0001 1.08189759118603E+0001 1.08101920238429E+0001 1.08014129798394E+0001 1.07926387782187E+0001 + 1.07838694173496E+0001 1.07751048956010E+0001 1.07663452113414E+0001 1.07575903629394E+0001 1.07488403487636E+0001 + 1.07400951671823E+0001 1.07313548165638E+0001 1.07226192952766E+0001 1.07138886016886E+0001 1.07051627341681E+0001 + 1.06964416910830E+0001 1.06877254708014E+0001 1.06790140716911E+0001 1.06703074921199E+0001 1.06616057304557E+0001 + 1.06529087850661E+0001 1.06442166543187E+0001 1.06355293365812E+0001 1.06268468302210E+0001 1.06181691336055E+0001 + 1.06094962451023E+0001 1.06008281630785E+0001 1.05921648859015E+0001 1.05835064119386E+0001 1.05748527395568E+0001 + 1.05662038671234E+0001 1.05575597930053E+0001 1.05489205155697E+0001 1.05402860331835E+0001 1.05316563442136E+0001 + 1.05230314470269E+0001 1.05144113399905E+0001 1.05057960214708E+0001 1.04971854898349E+0001 1.04885797434495E+0001 + 1.04799787806811E+0001 1.04713825998966E+0001 1.04627911994626E+0001 1.04542045777456E+0001 1.04456227331122E+0001 + 1.04370456639291E+0001 1.04284733685626E+0001 1.04199058453794E+0001 1.04113430927459E+0001 1.04027851090285E+0001 + 1.03942318925937E+0001 1.03856834418079E+0001 1.03771397550375E+0001 1.03686008306488E+0001 1.03600666670083E+0001 + 1.03515372624823E+0001 1.03430126154371E+0001 1.03344927242391E+0001 1.03259775872546E+0001 1.03174672028498E+0001 + 1.03089615693912E+0001 1.03004606852450E+0001 1.02919645487775E+0001 1.02834731583551E+0001 1.02749865123439E+0001 + 1.02665046091104E+0001 1.02580274470208E+0001 1.02495550244415E+0001 1.02410873397387E+0001 1.02326243912788E+0001 + 1.02241661774281E+0001 1.02157126965529E+0001 1.02072639470196E+0001 1.01988199271947E+0001 1.01903806354444E+0001 + 1.01819460701351E+0001 1.01735162296333E+0001 1.01650911123054E+0001 1.01566707165179E+0001 1.01482550406372E+0001 + 1.01398440830299E+0001 1.01314378420624E+0001 1.01230363161013E+0001 1.01146395035133E+0001 1.01062474026648E+0001 + 1.00978600119227E+0001 1.00894773296534E+0001 1.00810993542238E+0001 1.00727260840005E+0001 1.00643575173504E+0001 + 1.00559936526402E+0001 1.00476344882369E+0001 1.00392800225073E+0001 1.00309302538183E+0001 1.00225851805370E+0001 + 1.00142448010303E+0001 1.00059091136654E+0001 9.99757811680939E+0000 9.98925180882935E+0000 9.98093018809256E+0000 + 9.97261325296630E+0000 9.96430100181789E+0000 9.95599343301473E+0000 9.94769054492424E+0000 9.93939233591392E+0000 + 9.93109880435135E+0000 9.92280994860413E+0000 9.91452576703994E+0000 9.90624625802652E+0000 9.89797141993172E+0000 + 9.88970125112335E+0000 9.88143574996940E+0000 9.87317491483789E+0000 9.86491874409689E+0000 9.85666723611454E+0000 + 9.84842038925910E+0000 9.84017820189886E+0000 9.83194067240220E+0000 9.82370779913763E+0000 9.81547958047361E+0000 + 9.80725601477884E+0000 9.79903710042197E+0000 9.79082283577180E+0000 9.78261321919721E+0000 9.77440824906714E+0000 + 9.76620792375067E+0000 9.75801224161693E+0000 9.74982120103511E+0000 9.74163480037457E+0000 9.73345303800470E+0000 + 9.72527591229503E+0000 9.71710342161515E+0000 9.70893556433476E+0000 9.70077233882364E+0000 9.69261374345177E+0000 + 9.68445977658906E+0000 9.67631043660566E+0000 9.66816572187177E+0000 9.66002563075773E+0000 9.65189016163392E+0000 + 9.64375931287094E+0000 9.63563308283940E+0000 9.62751146991002E+0000 9.61939447245374E+0000 9.61128208884149E+0000 + 9.60317431744441E+0000 9.59507115663367E+0000 9.58697260478064E+0000 9.57887866025680E+0000 9.57078932143365E+0000 + 9.56270458668295E+0000 9.55462445437652E+0000 9.54654892288628E+0000 9.53847799058435E+0000 9.53041165584290E+0000 + 9.52234991703427E+0000 9.51429277253094E+0000 9.50624022070549E+0000 9.49819225993068E+0000 9.49014888857934E+0000 + 9.48211010502452E+0000 9.47407590763933E+0000 9.46604629479705E+0000 9.45802126487112E+0000 9.45000081623508E+0000 + 9.44198494726267E+0000 9.43397365632771E+0000 9.42596694180422E+0000 9.41796480206634E+0000 9.40996723548834E+0000 + 9.40197424044471E+0000 9.39398581531003E+0000 9.38600195845903E+0000 9.37802266826663E+0000 9.37004794310788E+0000 + 9.36207778135801E+0000 9.35411218139241E+0000 9.34615114158656E+0000 9.33819466031618E+0000 9.33024273595716E+0000 + 9.32229536688548E+0000 9.31435255147736E+0000 9.30641428810913E+0000 9.29848057515731E+0000 9.29055141099861E+0000 + 9.28262679400988E+0000 9.27470672256814E+0000 9.26679119505059E+0000 9.25888020983464E+0000 9.25097376529783E+0000 + 9.24307185981789E+0000 9.23517449177273E+0000 9.22728165954043E+0000 9.21939336149930E+0000 9.21150959602775E+0000 + 9.20363036150446E+0000 9.19575565630822E+0000 9.18788547881805E+0000 9.18001982741314E+0000 9.17215870047289E+0000 + 9.16430209637687E+0000 9.15645001350487E+0000 9.14860245023679E+0000 9.14075940495286E+0000 9.13292087603338E+0000 + 9.12508686185892E+0000 9.11725736081023E+0000 9.10943237126822E+0000 9.10161189161410E+0000 9.09379592022917E+0000 + 9.08598445549500E+0000 9.07817749579335E+0000 9.07037503950616E+0000 9.06257708501564E+0000 9.05478363070414E+0000 + 9.04699467495426E+0000 9.03921021614880E+0000 9.03143025267078E+0000 9.02365478290340E+0000 9.01588380523015E+0000 + 9.00811731803464E+0000 9.00035531970079E+0000 8.99259780861266E+0000 8.98484478315460E+0000 8.97709624171112E+0000 + 8.96935218266699E+0000 8.96161260440720E+0000 8.95387750531694E+0000 8.94614688378168E+0000 8.93842073818708E+0000 + 8.93069906691900E+0000 8.92298186836360E+0000 8.91526914090722E+0000 8.90756088293648E+0000 8.89985709283817E+0000 + 8.89215776899935E+0000 8.88446290980735E+0000 8.87677251364967E+0000 8.86908657891410E+0000 8.86140510398867E+0000 + 8.85372808726160E+0000 8.84605552712145E+0000 8.83838742195691E+0000 8.83072377015700E+0000 8.82306457011094E+0000 + 8.81540982020825E+0000 8.80775951883862E+0000 8.80011366439207E+0000 8.79247225525884E+0000 8.78483528982942E+0000 + 8.77720276649455E+0000 8.76957468364521E+0000 8.76195103967271E+0000 8.75433183296853E+0000 8.74671706192447E+0000 + 8.73910672493256E+0000 8.73150082038511E+0000 8.72389934667465E+0000 8.71630230219406E+0000 8.70870968533639E+0000 + 8.70112149449504E+0000 8.69353772806359E+0000 8.68595838443600E+0000 8.67838346200639E+0000 8.67081295916922E+0000 + 8.66324687431921E+0000 8.65568520585135E+0000 8.64812795216088E+0000 8.64057511164338E+0000 8.63302668269464E+0000 + 8.62548266371077E+0000 8.61794305308815E+0000 8.61040784922344E+0000 8.60287705051357E+0000 8.59535065535577E+0000 + 8.58782866214758E+0000 8.58031106928678E+0000 8.57279787517144E+0000 8.56528907819998E+0000 8.55778467677102E+0000 + 8.55028466928356E+0000 8.54278905413680E+0000 8.53529782973033E+0000 8.52781099446396E+0000 8.52032854673785E+0000 + 8.51285048495242E+0000 8.50537680750837E+0000 8.49790751280677E+0000 8.49044259924895E+0000 8.48298206523652E+0000 + 8.47552590917143E+0000 8.46807412945592E+0000 8.46062672449253E+0000 8.45318369268414E+0000 8.44574503243386E+0000 + 8.43831074214521E+0000 8.43088082022194E+0000 8.42345526506817E+0000 8.41603407508827E+0000 8.40861724868699E+0000 + 8.40120478426933E+0000 8.39379668024068E+0000 8.38639293500666E+0000 8.37899354697332E+0000 8.37159851454690E+0000 + 8.36420783613407E+0000 8.35682151014175E+0000 8.34943953497722E+0000 8.34206190904810E+0000 8.33468863076227E+0000 + 8.32731969852802E+0000 8.31995511075388E+0000 8.31259486584878E+0000 8.30523896222197E+0000 8.29788739828298E+0000 + 8.29054017244174E+0000 8.28319728310845E+0000 8.27585872869371E+0000 8.26852450760839E+0000 8.26119461826376E+0000 + 8.25386905907137E+0000 8.24654782844314E+0000 8.23923092479135E+0000 8.23191834652857E+0000 8.22461009206776E+0000 + 8.21730615982219E+0000 8.21000654820550E+0000 8.20271125563166E+0000 8.19542028051498E+0000 8.18813362127014E+0000 + 8.18085127631217E+0000 8.17357324405643E+0000 8.16629952291863E+0000 8.15903011131486E+0000 8.15176500766154E+0000 + 8.14450421037546E+0000 8.13724771787376E+0000 8.12999552857393E+0000 8.12274764089383E+0000 8.11550405325163E+0000 + 8.10826476406597E+0000 8.10102977175576E+0000 8.09379907474028E+0000 8.08657267143921E+0000 8.07935056027258E+0000 + 8.07213273966074E+0000 8.06491920802450E+0000 8.05770996378499E+0000 8.05050500536365E+0000 8.04330433118241E+0000 + 8.03610793966346E+0000 8.02891582922943E+0000 8.02172799830329E+0000 8.01454444530843E+0000 8.00736516866856E+0000 + 8.00019016680779E+0000 7.99301943815061E+0000 7.98585298112188E+0000 7.97869079414687E+0000 7.97153287565119E+0000 + 7.96437922406085E+0000 7.95722983780224E+0000 7.95008471530216E+0000 7.94294385498773E+0000 7.93580725528655E+0000 + 7.92867491462652E+0000 7.92154683143597E+0000 7.91442300414361E+0000 7.90730343117856E+0000 7.90018811097031E+0000 + 7.89307704194874E+0000 7.88597022254414E+0000 7.87886765118719E+0000 7.87176932630895E+0000 7.86467524634090E+0000 + 7.85758540971490E+0000 7.85049981486321E+0000 7.84341846021851E+0000 7.83634134421386E+0000 7.82926846528273E+0000 + 7.82219982185899E+0000 7.81513541237692E+0000 7.80807523527118E+0000 7.80101928897688E+0000 7.79396757192950E+0000 + 7.78692008256495E+0000 7.77987681931954E+0000 7.77283778062998E+0000 7.76580296493341E+0000 7.75877237066737E+0000 + 7.75174599626982E+0000 7.74472384017913E+0000 7.73770590083409E+0000 7.73069217667388E+0000 7.72368266613815E+0000 + 7.71667736766693E+0000 7.70967627970067E+0000 7.70267940068024E+0000 7.69568672904695E+0000 7.68869826324251E+0000 + 7.68171400170908E+0000 7.67473394288921E+0000 7.66775808522590E+0000 7.66078642716256E+0000 7.65381896714305E+0000 + 7.64685570361164E+0000 7.63989663501302E+0000 7.63294175979233E+0000 7.62599107639513E+0000 7.61904458326742E+0000 + 7.61210227885564E+0000 7.60516416160663E+0000 7.59823022996770E+0000 7.59130048238658E+0000 7.58437491731143E+0000 + 7.57745353319087E+0000 7.57053632847393E+0000 7.56362330161013E+0000 7.55671445104936E+0000 7.54980977524200E+0000 + 7.54290927263886E+0000 7.53601294169120E+0000 7.52912078085071E+0000 7.52223278856954E+0000 7.51534896330026E+0000 + 7.50846930349594E+0000 7.50159380761003E+0000 7.49472247409649E+0000 7.48785530140971E+0000 7.48099228800448E+0000 + 7.47413343233614E+0000 7.46727873286040E+0000 7.46042818803347E+0000 7.45358179631197E+0000 7.44673955615304E+0000 + 7.43990146601422E+0000 7.43306752435353E+0000 7.42623772962945E+0000 7.41941208030091E+0000 7.41259057482732E+0000 + 7.40577321166852E+0000 7.39895998928484E+0000 7.39215090613705E+0000 7.38534596068640E+0000 7.37854515139461E+0000 + 7.37174847672384E+0000 7.36495593513675E+0000 7.35816752509644E+0000 7.35138324506649E+0000 7.34460309351094E+0000 + 7.33782706889433E+0000 7.33105516968163E+0000 7.32428739433828E+0000 7.31752374133026E+0000 7.31076420912396E+0000 + 7.30400879618625E+0000 7.29725750098449E+0000 7.29051032198652E+0000 7.28376725766064E+0000 7.27702830647565E+0000 + 7.27029346690081E+0000 7.26356273740588E+0000 7.25683611646106E+0000 7.25011360253709E+0000 7.24339519410515E+0000 + 7.23668088963691E+0000 7.22997068760453E+0000 7.22326458648064E+0000 7.21656258473840E+0000 7.20986468085142E+0000 + 7.20317087329379E+0000 7.19648116054011E+0000 7.18979554106546E+0000 7.18311401334541E+0000 7.17643657585602E+0000 + 7.16976322707386E+0000 7.16309396547596E+0000 7.15642878953986E+0000 7.14976769774359E+0000 7.14311068856570E+0000 + 7.13645776048522E+0000 7.12980891198164E+0000 7.12316414153499E+0000 7.11652344762579E+0000 7.10988682873509E+0000 + 7.10325428334436E+0000 7.09662580993563E+0000 7.09000140699142E+0000 7.08338107299478E+0000 7.07676480642920E+0000 + 7.07015260577873E+0000 7.06354446952789E+0000 7.05694039616172E+0000 7.05034038416579E+0000 7.04374443202613E+0000 + 7.03715253822931E+0000 7.03056470126240E+0000 7.02398091961298E+0000 7.01740119176914E+0000 7.01082551621950E+0000 + 7.00425389145313E+0000 6.99768631595970E+0000 6.99112278822934E+0000 6.98456330675270E+0000 6.97800787002095E+0000 + 6.97145647652576E+0000 6.96490912475936E+0000 6.95836581321448E+0000 6.95182654038431E+0000 6.94529130476265E+0000 + 6.93876010484376E+0000 6.93223293912245E+0000 6.92570980609403E+0000 6.91919070425435E+0000 6.91267563209975E+0000 + 6.90616458812715E+0000 6.89965757083395E+0000 6.89315457871808E+0000 6.88665561027800E+0000 6.88016066401272E+0000 + 6.87366973842175E+0000 6.86718283200512E+0000 6.86069994326342E+0000 6.85422107069775E+0000 6.84774621280974E+0000 + 6.84127536810156E+0000 6.83480853507590E+0000 6.82834571223600E+0000 6.82188689808562E+0000 6.81543209112904E+0000 + 6.80898128987111E+0000 6.80253449281719E+0000 6.79609169847320E+0000 6.78965290534554E+0000 6.78321811194121E+0000 + 6.77678731676774E+0000 6.77036051833316E+0000 6.76393771514607E+0000 6.75751890571560E+0000 6.75110408855145E+0000 + 6.74469326216381E+0000 6.73828642506345E+0000 6.73188357576168E+0000 6.72548471277033E+0000 6.71908983460180E+0000 + 6.71269893976902E+0000 6.70631202678549E+0000 6.69992909416521E+0000 6.69355014042278E+0000 6.68717516407331E+0000 + 6.68080416363250E+0000 6.67443713761655E+0000 6.66807408454223E+0000 6.66171500292686E+0000 6.65535989128833E+0000 + 6.64900874814506E+0000 6.64266157201602E+0000 6.63631836142075E+0000 6.62997911487935E+0000 6.62364383091243E+0000 + 6.61731250804121E+0000 6.61098514478744E+0000 6.60466173967342E+0000 6.59834229122202E+0000 6.59202679795668E+0000 + 6.58571525840135E+0000 6.57940767108060E+0000 6.57310403451952E+0000 6.56680434724376E+0000 6.56050860777959E+0000 + 6.55421681465374E+0000 6.54792896639358E+0000 6.54164506152703E+0000 6.53536509858257E+0000 6.52908907608921E+0000 + 6.52281699257657E+0000 6.51654884657482E+0000 6.51028463661470E+0000 6.50402436122750E+0000 6.49776801894510E+0000 + 6.49151560829993E+0000 6.48526712782499E+0000 6.47902257605388E+0000 6.47278195152072E+0000 6.46654525276024E+0000 + 6.46031247830772E+0000 6.45408362669902E+0000 6.44785869647057E+0000 6.44163768615938E+0000 6.43542059430301E+0000 + 6.42920741943963E+0000 6.42299816010796E+0000 6.41679281484728E+0000 6.41059138219749E+0000 6.40439386069905E+0000 + 6.39820024889295E+0000 6.39201054532084E+0000 6.38582474852488E+0000 6.37964285704785E+0000 6.37346486943307E+0000 + 6.36729078422448E+0000 6.36112059996658E+0000 6.35495431520446E+0000 6.34879192848376E+0000 6.34263343835075E+0000 + 6.33647884335226E+0000 6.33032814203570E+0000 6.32418133294905E+0000 6.31803841464092E+0000 6.31189938566045E+0000 + 6.30576424455741E+0000 6.29963298988212E+0000 6.29350562018552E+0000 6.28738213401909E+0000 6.28126252993497E+0000 + 6.27514680648580E+0000 6.26903496222490E+0000 6.26292699570609E+0000 6.25682290548386E+0000 6.25072269011322E+0000 + 6.24462634814983E+0000 6.23853387814991E+0000 6.23244527867025E+0000 6.22636054826829E+0000 6.22027968550201E+0000 + 6.21420268893003E+0000 6.20812955711150E+0000 6.20206028860624E+0000 6.19599488197459E+0000 6.18993333577754E+0000 + 6.18387564857667E+0000 6.17782181893413E+0000 6.17177184541268E+0000 6.16572572657569E+0000 6.15968346098709E+0000 + 6.15364504721145E+0000 6.14761048381393E+0000 6.14157976936026E+0000 6.13555290241681E+0000 6.12952988155052E+0000 + 6.12351070532895E+0000 6.11749537232025E+0000 6.11148388109316E+0000 6.10547623021706E+0000 6.09947241826189E+0000 + 6.09347244379822E+0000 6.08747630539720E+0000 6.08148400163062E+0000 6.07549553107084E+0000 6.06951089229084E+0000 + 6.06353008386420E+0000 6.05755310436512E+0000 6.05157995236836E+0000 6.04561062644937E+0000 6.03964512518412E+0000 + 6.03368344714924E+0000 6.02772559092195E+0000 6.02177155508008E+0000 6.01582133820209E+0000 6.00987493886698E+0000 + 6.00393235565446E+0000 5.99799358714477E+0000 5.99205863191879E+0000 5.98612748855804E+0000 5.98020015564457E+0000 + 5.97427663176113E+0000 5.96835691549103E+0000 5.96244100541821E+0000 5.95652890012723E+0000 5.95062059820324E+0000 + 5.94471609823203E+0000 5.93881539879996E+0000 5.93291849849408E+0000 5.92702539590198E+0000 5.92113608961191E+0000 + 5.91525057821270E+0000 5.90936886029384E+0000 5.90349093444542E+0000 5.89761679925812E+0000 5.89174645332327E+0000 + 5.88587989523280E+0000 5.88001712357926E+0000 5.87415813695584E+0000 5.86830293395631E+0000 5.86245151317509E+0000 + 5.85660387320721E+0000 5.85076001264832E+0000 5.84491993009469E+0000 5.83908362414320E+0000 5.83325109339138E+0000 + 5.82742233643734E+0000 5.82159735187985E+0000 5.81577613831828E+0000 5.80995869435263E+0000 5.80414501858352E+0000 + 5.79833510961220E+0000 5.79252896604052E+0000 5.78672658647100E+0000 5.78092796950673E+0000 5.77513311375146E+0000 + 5.76934201780955E+0000 5.76355468028600E+0000 5.75777109978641E+0000 5.75199127491702E+0000 5.74621520428472E+0000 + 5.74044288649698E+0000 5.73467432016194E+0000 5.72890950388832E+0000 5.72314843628552E+0000 5.71739111596352E+0000 + 5.71163754153297E+0000 5.70588771160511E+0000 5.70014162479184E+0000 5.69439927970566E+0000 5.68866067495974E+0000 + 5.68292580916782E+0000 5.67719468094434E+0000 5.67146728890431E+0000 5.66574363166340E+0000 5.66002370783790E+0000 + 5.65430751604474E+0000 5.64859505490148E+0000 5.64288632302631E+0000 5.63718131903804E+0000 5.63148004155612E+0000 + 5.62578248920065E+0000 5.62008866059234E+0000 5.61439855435254E+0000 5.60871216910323E+0000 5.60302950346702E+0000 + 5.59735055606718E+0000 5.59167532552756E+0000 5.58600381047272E+0000 5.58033600952779E+0000 5.57467192131856E+0000 + 5.56901154447145E+0000 5.56335487761351E+0000 5.55770191937244E+0000 5.55205266837658E+0000 5.54640712325488E+0000 + 5.54076528263694E+0000 5.53512714515299E+0000 5.52949270943393E+0000 5.52386197411125E+0000 5.51823493781709E+0000 + 5.51261159918425E+0000 5.50699195684614E+0000 5.50137600943683E+0000 5.49576375559102E+0000 5.49015519394402E+0000 + 5.48455032313184E+0000 5.47894914179107E+0000 5.47335164855896E+0000 5.46775784207342E+0000 5.46216772097296E+0000 + 5.45658128389676E+0000 5.45099852948462E+0000 5.44541945637699E+0000 5.43984406321497E+0000 5.43427234864027E+0000 + 5.42870431129528E+0000 5.42313994982298E+0000 5.41757926286705E+0000 5.41202224907178E+0000 5.40646890708208E+0000 + 5.40091923554353E+0000 5.39537323310236E+0000 5.38983089840542E+0000 5.38429223010021E+0000 5.37875722683486E+0000 + 5.37322588725816E+0000 5.36769821001953E+0000 5.36217419376906E+0000 5.35665383715743E+0000 5.35113713883601E+0000 + 5.34562409745679E+0000 5.34011471167241E+0000 5.33460898013616E+0000 5.32910690150195E+0000 5.32360847442436E+0000 + 5.31811369755860E+0000 5.31262256956053E+0000 5.30713508908664E+0000 5.30165125479409E+0000 5.29617106534066E+0000 + 5.29069451938479E+0000 5.28522161558555E+0000 5.27975235260266E+0000 5.27428672909650E+0000 5.26882474372807E+0000 + 5.26336639515902E+0000 5.25791168205168E+0000 5.25246060306897E+0000 5.24701315687449E+0000 5.24156934213249E+0000 + 5.23612915750784E+0000 5.23069260166607E+0000 5.22525967327336E+0000 5.21983037099653E+0000 5.21440469350304E+0000 + 5.20898263946100E+0000 5.20356420753919E+0000 5.19814939640700E+0000 5.19273820473447E+0000 5.18733063119231E+0000 + 5.18192667445186E+0000 5.17652633318512E+0000 5.17112960606471E+0000 5.16573649176393E+0000 5.16034698895671E+0000 + 5.15496109631760E+0000 5.14957881252186E+0000 5.14420013624534E+0000 5.13882506616456E+0000 5.13345360095669E+0000 + 5.12808573929954E+0000 5.12272147987157E+0000 5.11736082135189E+0000 5.11200376242024E+0000 5.10665030175703E+0000 + 5.10130043804331E+0000 5.09595416996078E+0000 5.09061149619177E+0000 5.08527241541928E+0000 5.07993692632695E+0000 + 5.07460502759907E+0000 5.06927671792056E+0000 5.06395199597700E+0000 5.05863086045463E+0000 5.05331331004033E+0000 + 5.04799934342161E+0000 5.04268895928664E+0000 5.03738215632425E+0000 5.03207893322391E+0000 5.02677928867572E+0000 + 5.02148322137046E+0000 5.01619072999953E+0000 5.01090181325499E+0000 5.00561646982955E+0000 5.00033469841656E+0000 + 4.99505649771001E+0000 4.98978186640457E+0000 4.98451080319553E+0000 4.97924330677883E+0000 4.97397937585106E+0000 + 4.96871900910947E+0000 4.96346220525193E+0000 4.95820896297701E+0000 4.95295928098385E+0000 4.94771315797231E+0000 + 4.94247059264287E+0000 4.93723158369664E+0000 4.93199612983539E+0000 4.92676422976156E+0000 4.92153588217821E+0000 + 4.91631108578904E+0000 4.91108983929844E+0000 4.90587214141141E+0000 4.90065799083360E+0000 4.89544738627132E+0000 + 4.89024032643153E+0000 4.88503681002181E+0000 4.87983683575043E+0000 4.87464040232627E+0000 4.86944750845887E+0000 + 4.86425815285842E+0000 4.85907233423576E+0000 4.85389005130236E+0000 4.84871130277035E+0000 4.84353608735250E+0000 + 4.83836440376225E+0000 4.83319625071365E+0000 4.82803162692142E+0000 4.82287053110091E+0000 4.81771296196814E+0000 + 4.81255891823975E+0000 4.80740839863305E+0000 4.80226140186597E+0000 4.79711792665710E+0000 4.79197797172570E+0000 + 4.78684153579163E+0000 4.78170861757542E+0000 4.77657921579824E+0000 4.77145332918191E+0000 4.76633095644890E+0000 + 4.76121209632231E+0000 4.75609674752589E+0000 4.75098490878404E+0000 4.74587657882181E+0000 4.74077175636488E+0000 + 4.73567044013959E+0000 4.73057262887290E+0000 4.72547832129245E+0000 4.72038751612649E+0000 4.71530021210393E+0000 + 4.71021640795433E+0000 4.70513610240787E+0000 4.70005929419542E+0000 4.69498598204843E+0000 4.68991616469904E+0000 + 4.68484984088003E+0000 4.67978700932479E+0000 4.67472766876739E+0000 4.66967181794252E+0000 4.66461945558554E+0000 + 4.65957058043240E+0000 4.65452519121976E+0000 4.64948328668486E+0000 4.64444486556562E+0000 4.63940992660059E+0000 + 4.63437846852896E+0000 4.62935049009057E+0000 4.62432599002589E+0000 4.61930496707603E+0000 4.61428741998275E+0000 + 4.60927334748845E+0000 4.60426274833617E+0000 4.59925562126958E+0000 4.59425196503301E+0000 4.58925177837140E+0000 + 4.58425506003036E+0000 4.57926180875612E+0000 4.57427202329556E+0000 4.56928570239620E+0000 4.56430284480619E+0000 + 4.55932344927432E+0000 4.55434751455001E+0000 4.54937503938335E+0000 4.54440602252504E+0000 4.53944046272642E+0000 + 4.53447835873949E+0000 4.52951970931684E+0000 4.52456451321175E+0000 4.51961276917811E+0000 4.51466447597044E+0000 + 4.50971963234392E+0000 4.50477823705435E+0000 4.49984028885817E+0000 4.49490578651245E+0000 4.48997472877491E+0000 + 4.48504711440388E+0000 4.48012294215836E+0000 4.47520221079795E+0000 4.47028491908291E+0000 4.46537106577411E+0000 + 4.46046064963309E+0000 4.45555366942198E+0000 4.45065012390359E+0000 4.44575001184131E+0000 4.44085333199922E+0000 + 4.43596008314198E+0000 4.43107026403492E+0000 4.42618387344398E+0000 4.42130091013575E+0000 4.41642137287744E+0000 + 4.41154526043689E+0000 4.40667257158258E+0000 4.40180330508361E+0000 4.39693745970972E+0000 4.39207503423127E+0000 + 4.38721602741925E+0000 4.38236043804531E+0000 4.37750826488168E+0000 4.37265950670125E+0000 4.36781416227754E+0000 + 4.36297223038468E+0000 4.35813370979745E+0000 4.35329859929123E+0000 4.34846689764206E+0000 4.34363860362658E+0000 + 4.33881371602208E+0000 4.33399223360645E+0000 4.32917415515822E+0000 4.32435947945656E+0000 4.31954820528125E+0000 + 4.31474033141269E+0000 4.30993585663191E+0000 4.30513477972057E+0000 4.30033709946095E+0000 4.29554281463595E+0000 + 4.29075192402911E+0000 4.28596442642458E+0000 4.28118032060712E+0000 4.27639960536213E+0000 4.27162227947564E+0000 + 4.26684834173429E+0000 4.26207779092532E+0000 4.25731062583664E+0000 4.25254684525675E+0000 4.24778644797475E+0000 + 4.24302943278042E+0000 4.23827579846409E+0000 4.23352554381676E+0000 4.22877866763003E+0000 4.22403516869613E+0000 + 4.21929504580787E+0000 4.21455829775874E+0000 4.20982492334280E+0000 4.20509492135473E+0000 4.20036829058986E+0000 + 4.19564502984410E+0000 4.19092513791399E+0000 4.18620861359668E+0000 4.18149545568995E+0000 4.17678566299219E+0000 + 4.17207923430239E+0000 4.16737616842015E+0000 4.16267646414573E+0000 4.15798012027994E+0000 4.15328713562425E+0000 + 4.14859750898071E+0000 4.14391123915201E+0000 4.13922832494143E+0000 4.13454876515288E+0000 4.12987255859085E+0000 + 4.12519970406048E+0000 4.12053020036748E+0000 4.11586404631822E+0000 4.11120124071961E+0000 4.10654178237923E+0000 + 4.10188567010523E+0000 4.09723290270640E+0000 4.09258347899211E+0000 4.08793739777234E+0000 4.08329465785769E+0000 + 4.07865525805936E+0000 4.07401919718914E+0000 4.06938647405946E+0000 4.06475708748332E+0000 4.06013103627433E+0000 + 4.05550831924672E+0000 4.05088893521532E+0000 4.04627288299554E+0000 4.04166016140342E+0000 4.03705076925560E+0000 + 4.03244470536929E+0000 4.02784196856233E+0000 4.02324255765316E+0000 4.01864647146081E+0000 4.01405370880490E+0000 + 4.00946426850568E+0000 4.00487814938398E+0000 4.00029535026121E+0000 3.99571586995939E+0000 3.99113970730117E+0000 + 3.98656686110976E+0000 3.98199733020896E+0000 3.97743111342319E+0000 3.97286820957745E+0000 3.96830861749735E+0000 + 3.96375233600907E+0000 3.95919936393941E+0000 3.95464970011574E+0000 3.95010334336603E+0000 3.94556029251886E+0000 + 3.94102054640337E+0000 3.93648410384932E+0000 3.93195096368704E+0000 3.92742112474745E+0000 3.92289458586207E+0000 + 3.91837134586303E+0000 3.91385140358299E+0000 3.90933475785525E+0000 3.90482140751367E+0000 3.90031135139271E+0000 + 3.89580458832742E+0000 3.89130111715341E+0000 3.88680093670690E+0000 3.88230404582469E+0000 3.87781044334417E+0000 + 3.87332012810329E+0000 3.86883309894060E+0000 3.86434935469524E+0000 3.85986889420691E+0000 3.85539171631591E+0000 + 3.85091781986311E+0000 3.84644720368998E+0000 3.84197986663853E+0000 3.83751580755138E+0000 3.83305502527173E+0000 + 3.82859751864335E+0000 3.82414328651057E+0000 3.81969232771833E+0000 3.81524464111213E+0000 3.81080022553803E+0000 + 3.80635907984269E+0000 3.80192120287334E+0000 3.79748659347777E+0000 3.79305525050435E+0000 3.78862717280203E+0000 + 3.78420235922033E+0000 3.77978080860933E+0000 3.77536251981969E+0000 3.77094749170264E+0000 3.76653572310998E+0000 + 3.76212721289408E+0000 3.75772195990787E+0000 3.75331996300487E+0000 3.74892122103913E+0000 3.74452573286531E+0000 + 3.74013349733859E+0000 3.73574451331476E+0000 3.73135877965015E+0000 3.72697629520166E+0000 3.72259705882674E+0000 + 3.71822106938343E+0000 3.71384832573031E+0000 3.70947882672653E+0000 3.70511257123180E+0000 3.70074955810640E+0000 + 3.69638978621115E+0000 3.69203325440744E+0000 3.68767996155723E+0000 3.68332990652301E+0000 3.67898308816785E+0000 + 3.67463950535537E+0000 3.67029915694975E+0000 3.66596204181572E+0000 3.66162815881856E+0000 3.65729750682411E+0000 + 3.65297008469877E+0000 3.64864589130948E+0000 3.64432492552374E+0000 3.64000718620960E+0000 3.63569267223566E+0000 + 3.63138138247107E+0000 3.62707331578552E+0000 3.62276847104927E+0000 3.61846684713310E+0000 3.61416844290837E+0000 + 3.60987325724696E+0000 3.60558128902131E+0000 3.60129253710439E+0000 3.59700700036974E+0000 3.59272467769142E+0000 + 3.58844556794404E+0000 3.58416967000277E+0000 3.57989698274328E+0000 3.57562750504183E+0000 3.57136123577519E+0000 + 3.56709817382068E+0000 3.56283831805615E+0000 3.55858166736000E+0000 3.55432822061117E+0000 3.55007797668911E+0000 + 3.54583093447384E+0000 3.54158709284590E+0000 3.53734645068636E+0000 3.53310900687683E+0000 3.52887476029946E+0000 + 3.52464370983692E+0000 3.52041585437241E+0000 3.51619119278969E+0000 3.51196972397300E+0000 3.50775144680716E+0000 + 3.50353636017749E+0000 3.49932446296985E+0000 3.49511575407061E+0000 3.49091023236669E+0000 3.48670789674553E+0000 + 3.48250874609508E+0000 3.47831277930383E+0000 3.47411999526078E+0000 3.46993039285548E+0000 3.46574397097798E+0000 + 3.46156072851884E+0000 3.45738066436916E+0000 3.45320377742057E+0000 3.44903006656520E+0000 3.44485953069570E+0000 + 3.44069216870524E+0000 3.43652797948751E+0000 3.43236696193671E+0000 3.42820911494757E+0000 3.42405443741532E+0000 + 3.41990292823571E+0000 3.41575458630499E+0000 3.41160941051995E+0000 3.40746739977786E+0000 3.40332855297653E+0000 + 3.39919286901425E+0000 3.39506034678984E+0000 3.39093098520263E+0000 3.38680478315244E+0000 3.38268173953961E+0000 + 3.37856185326499E+0000 3.37444512322992E+0000 3.37033154833625E+0000 3.36622112748635E+0000 3.36211385958306E+0000 + 3.35800974352975E+0000 3.35390877823029E+0000 3.34981096258903E+0000 3.34571629551083E+0000 3.34162477590105E+0000 + 3.33753640266556E+0000 3.33345117471071E+0000 3.32936909094334E+0000 3.32529015027081E+0000 3.32121435160095E+0000 + 3.31714169384210E+0000 3.31307217590309E+0000 3.30900579669324E+0000 3.30494255512235E+0000 3.30088245010074E+0000 + 3.29682548053918E+0000 3.29277164534897E+0000 3.28872094344186E+0000 3.28467337373012E+0000 3.28062893512648E+0000 + 3.27658762654416E+0000 3.27254944689689E+0000 3.26851439509885E+0000 3.26448247006471E+0000 3.26045367070965E+0000 + 3.25642799594930E+0000 3.25240544469977E+0000 3.24838601587768E+0000 3.24436970840009E+0000 3.24035652118456E+0000 + 3.23634645314913E+0000 3.23233950321230E+0000 3.22833567029305E+0000 3.22433495331086E+0000 3.22033735118563E+0000 + 3.21634286283778E+0000 3.21235148718818E+0000 3.20836322315818E+0000 3.20437806966959E+0000 3.20039602564470E+0000 + 3.19641709000625E+0000 3.19244126167747E+0000 3.18846853958204E+0000 3.18449892264411E+0000 3.18053240978830E+0000 + 3.17656899993969E+0000 3.17260869202381E+0000 3.16865148496666E+0000 3.16469737769472E+0000 3.16074636913490E+0000 + 3.15679845821458E+0000 3.15285364386161E+0000 3.14891192500429E+0000 3.14497330057136E+0000 3.14103776949204E+0000 + 3.13710533069599E+0000 3.13317598311333E+0000 3.12924972567462E+0000 3.12532655731089E+0000 3.12140647695361E+0000 + 3.11748948353470E+0000 3.11357557598653E+0000 3.10966475324191E+0000 3.10575701423413E+0000 3.10185235789688E+0000 + 3.09795078316432E+0000 3.09405228897106E+0000 3.09015687425214E+0000 3.08626453794304E+0000 3.08237527897970E+0000 + 3.07848909629847E+0000 3.07460598883618E+0000 3.07072595553006E+0000 3.06684899531780E+0000 3.06297510713752E+0000 + 3.05910428992777E+0000 3.05523654262755E+0000 3.05137186417628E+0000 3.04751025351382E+0000 3.04365170958046E+0000 + 3.03979623131692E+0000 3.03594381766434E+0000 3.03209446756432E+0000 3.02824817995885E+0000 3.02440495379036E+0000 + 3.02056478800172E+0000 3.01672768153622E+0000 3.01289363333756E+0000 3.00906264234987E+0000 3.00523470751771E+0000 + 3.00140982778606E+0000 2.99758800210030E+0000 2.99376922940626E+0000 2.98995350865017E+0000 2.98614083877867E+0000 + 2.98233121873883E+0000 2.97852464747814E+0000 2.97472112394449E+0000 2.97092064708619E+0000 2.96712321585196E+0000 + 2.96332882919093E+0000 2.95953748605263E+0000 2.95574918538704E+0000 2.95196392614450E+0000 2.94818170727578E+0000 + 2.94440252773206E+0000 2.94062638646490E+0000 2.93685328242630E+0000 2.93308321456864E+0000 2.92931618184471E+0000 + 2.92555218320768E+0000 2.92179121761117E+0000 2.91803328400914E+0000 2.91427838135599E+0000 2.91052650860650E+0000 + 2.90677766471584E+0000 2.90303184863959E+0000 2.89928905933372E+0000 2.89554929575458E+0000 2.89181255685893E+0000 + 2.88807884160391E+0000 2.88434814894705E+0000 2.88062047784627E+0000 2.87689582725989E+0000 2.87317419614659E+0000 + 2.86945558346546E+0000 2.86573998817596E+0000 2.86202740923794E+0000 2.85831784561163E+0000 2.85461129625764E+0000 + 2.85090776013697E+0000 2.84720723621099E+0000 2.84350972344145E+0000 2.83981522079046E+0000 2.83612372722055E+0000 + 2.83243524169458E+0000 2.82874976317580E+0000 2.82506729062785E+0000 2.82138782301472E+0000 2.81771135930077E+0000 + 2.81403789845074E+0000 2.81036743942974E+0000 2.80669998120324E+0000 2.80303552273708E+0000 2.79937406299747E+0000 + 2.79571560095096E+0000 2.79206013556450E+0000 2.78840766580538E+0000 2.78475819064125E+0000 2.78111170904013E+0000 + 2.77746821997039E+0000 2.77382772240077E+0000 2.77019021530034E+0000 2.76655569763856E+0000 2.76292416838522E+0000 + 2.75929562651048E+0000 2.75567007098483E+0000 2.75204750077913E+0000 2.74842791486459E+0000 2.74481131221276E+0000 + 2.74119769179554E+0000 2.73758705258517E+0000 2.73397939355426E+0000 2.73037471367574E+0000 2.72677301192289E+0000 + 2.72317428726934E+0000 2.71957853868904E+0000 2.71598576515630E+0000 2.71239596564578E+0000 2.70880913913244E+0000 + 2.70522528459161E+0000 2.70164440099894E+0000 2.69806648733042E+0000 2.69449154256237E+0000 2.69091956567144E+0000 + 2.68735055563461E+0000 2.68378451142921E+0000 2.68022143203287E+0000 2.67666131642357E+0000 2.67310416357959E+0000 + 2.66954997247957E+0000 2.66599874210244E+0000 2.66245047142749E+0000 2.65890515943429E+0000 2.65536280510277E+0000 + 2.65182340741315E+0000 2.64828696534598E+0000 2.64475347788213E+0000 2.64122294400278E+0000 2.63769536268944E+0000 + 2.63417073292390E+0000 2.63064905368831E+0000 2.62713032396509E+0000 2.62361454273700E+0000 2.62010170898708E+0000 + 2.61659182169870E+0000 2.61308487985553E+0000 2.60958088244155E+0000 2.60607982844104E+0000 2.60258171683858E+0000 + 2.59908654661906E+0000 2.59559431676767E+0000 2.59210502626989E+0000 2.58861867411151E+0000 2.58513525927862E+0000 + 2.58165478075758E+0000 2.57817723753509E+0000 2.57470262859809E+0000 2.57123095293387E+0000 2.56776220952996E+0000 + 2.56429639737422E+0000 2.56083351545477E+0000 2.55737356276004E+0000 2.55391653827873E+0000 2.55046244099983E+0000 + 2.54701126991264E+0000 2.54356302400669E+0000 2.54011770227184E+0000 2.53667530369820E+0000 2.53323582727619E+0000 + 2.52979927199649E+0000 2.52636563685004E+0000 2.52293492082809E+0000 2.51950712292214E+0000 2.51608224212398E+0000 + 2.51266027742567E+0000 2.50924122781952E+0000 2.50582509229814E+0000 2.50241186985439E+0000 2.49900155948141E+0000 + 2.49559416017258E+0000 2.49218967092159E+0000 2.48878809072235E+0000 2.48538941856905E+0000 2.48199365345615E+0000 + 2.47860079437835E+0000 2.47521084033064E+0000 2.47182379030824E+0000 2.46843964330663E+0000 2.46505839832155E+0000 + 2.46168005434900E+0000 2.45830461038524E+0000 2.45493206542674E+0000 2.45156241847027E+0000 2.44819566851283E+0000 + 2.44483181455165E+0000 2.44147085558424E+0000 2.43811279060833E+0000 2.43475761862191E+0000 2.43140533862320E+0000 + 2.42805594961066E+0000 2.42470945058301E+0000 2.42136584053919E+0000 2.41802511847838E+0000 2.41468728340002E+0000 + 2.41135233430374E+0000 2.40802027018946E+0000 2.40469109005728E+0000 2.40136479290757E+0000 2.39804137774091E+0000 + 2.39472084355811E+0000 2.39140318936023E+0000 2.38808841414852E+0000 2.38477651692448E+0000 2.38146749668984E+0000 + 2.37816135244653E+0000 2.37485808319672E+0000 2.37155768794279E+0000 2.36826016568734E+0000 2.36496551543319E+0000 + 2.36167373618339E+0000 2.35838482694117E+0000 2.35509878671002E+0000 2.35181561449360E+0000 2.34853530929581E+0000 + 2.34525787012075E+0000 2.34198329597272E+0000 2.33871158585624E+0000 2.33544273877604E+0000 2.33217675373703E+0000 + 2.32891362974437E+0000 2.32565336580336E+0000 2.32239596091956E+0000 2.31914141409870E+0000 2.31588972434670E+0000 + 2.31264089066970E+0000 2.30939491207403E+0000 2.30615178756620E+0000 2.30291151615293E+0000 2.29967409684112E+0000 + 2.29643952863788E+0000 2.29320781055049E+0000 2.28997894158642E+0000 2.28675292075333E+0000 2.28352974705907E+0000 + 2.28030941951168E+0000 2.27709193711936E+0000 2.27387729889051E+0000 2.27066550383371E+0000 2.26745655095772E+0000 + 2.26425043927145E+0000 2.26104716778403E+0000 2.25784673550474E+0000 2.25464914144303E+0000 2.25145438460853E+0000 + 2.24826246401106E+0000 2.24507337866056E+0000 2.24188712756720E+0000 2.23870370974127E+0000 2.23552312419324E+0000 + 2.23234536993376E+0000 2.22917044597362E+0000 2.22599835132379E+0000 2.22282908499538E+0000 2.21966264599968E+0000 + 2.21649903334813E+0000 2.21333824605232E+0000 2.21018028312402E+0000 2.20702514357511E+0000 2.20387282641766E+0000 + 2.20072333066388E+0000 2.19757665532613E+0000 2.19443279941692E+0000 2.19129176194889E+0000 2.18815354193486E+0000 + 2.18501813838776E+0000 2.18188555032068E+0000 2.17875577674686E+0000 2.17562881667966E+0000 2.17250466913260E+0000 + 2.16938333311931E+0000 2.16626480765360E+0000 2.16314909174937E+0000 2.16003618442067E+0000 2.15692608468170E+0000 + 2.15381879154677E+0000 2.15071430403033E+0000 2.14761262114694E+0000 2.14451374191132E+0000 2.14141766533829E+0000 + 2.13832439044279E+0000 2.13523391623992E+0000 2.13214624174485E+0000 2.12906136597291E+0000 2.12597928793953E+0000 + 2.12290000666026E+0000 2.11982352115078E+0000 2.11674983042687E+0000 2.11367893350442E+0000 2.11061082939944E+0000 + 2.10754551712805E+0000 2.10448299570648E+0000 2.10142326415107E+0000 2.09836632147826E+0000 2.09531216670460E+0000 + 2.09226079884674E+0000 2.08921221692143E+0000 2.08616641994554E+0000 2.08312340693602E+0000 2.08008317690991E+0000 + 2.07704572888438E+0000 2.07401106187667E+0000 2.07097917490411E+0000 2.06795006698415E+0000 2.06492373713430E+0000 + 2.06190018437219E+0000 2.05887940771551E+0000 2.05586140618206E+0000 2.05284617878971E+0000 2.04983372455642E+0000 + 2.04682404250024E+0000 2.04381713163930E+0000 2.04081299099180E+0000 2.03781161957602E+0000 2.03481301641033E+0000 + 2.03181718051316E+0000 2.02882411090304E+0000 2.02583380659855E+0000 2.02284626661834E+0000 2.01986148998115E+0000 + 2.01687947570578E+0000 2.01390022281109E+0000 2.01092373031601E+0000 2.00794999723955E+0000 2.00497902260077E+0000 + 2.00201080541878E+0000 1.99904534471278E+0000 1.99608263950201E+0000 1.99312268880577E+0000 1.99016549164341E+0000 + 1.98721104703436E+0000 1.98425935399809E+0000 1.98131041155410E+0000 1.97836421872197E+0000 1.97542077452132E+0000 + 1.97248007797183E+0000 1.96954212809321E+0000 1.96660692390521E+0000 1.96367446442764E+0000 1.96074474868035E+0000 + 1.95781777568323E+0000 1.95489354445621E+0000 1.95197205401924E+0000 1.94905330339234E+0000 1.94613729159555E+0000 + 1.94322401764893E+0000 1.94031348057259E+0000 1.93740567938667E+0000 1.93450061311132E+0000 1.93159828076676E+0000 + 1.92869868137320E+0000 1.92580181395088E+0000 1.92290767752008E+0000 1.92001627110108E+0000 1.91712759371421E+0000 + 1.91424164437979E+0000 1.91135842211819E+0000 1.90847792594977E+0000 1.90560015489492E+0000 1.90272510797403E+0000 + 1.89985278420751E+0000 1.89698318261580E+0000 1.89411630221932E+0000 1.89125214203851E+0000 1.88839070109383E+0000 + 1.88553197840572E+0000 1.88267597299465E+0000 1.87982268388107E+0000 1.87697211008544E+0000 1.87412425062824E+0000 + 1.87127910452990E+0000 1.86843667081091E+0000 1.86559694849170E+0000 1.86275993659271E+0000 1.85992563413441E+0000 + 1.85709404013720E+0000 1.85426515362150E+0000 1.85143897360773E+0000 1.84861549911628E+0000 1.84579472916754E+0000 + 1.84297666278186E+0000 1.84016129897958E+0000 1.83734863678104E+0000 1.83453867520655E+0000 1.83173141327639E+0000 + 1.82892685001081E+0000 1.82612498443006E+0000 1.82332581555435E+0000 1.82052934240386E+0000 1.81773556399874E+0000 + 1.81494447935912E+0000 1.81215608750509E+0000 1.80937038745670E+0000 1.80658737823398E+0000 1.80380705885692E+0000 + 1.80102942834546E+0000 1.79825448571951E+0000 1.79548222999895E+0000 1.79271266020359E+0000 1.78994577535323E+0000 + 1.78718157446760E+0000 1.78442005656638E+0000 1.78166122066923E+0000 1.77890506579573E+0000 1.77615159096544E+0000 + 1.77340079519784E+0000 1.77065267751236E+0000 1.76790723692839E+0000 1.76516447246526E+0000 1.76242438314223E+0000 + 1.75968696797850E+0000 1.75695222599322E+0000 1.75422015620548E+0000 1.75149075763430E+0000 1.74876402929862E+0000 + 1.74603997021734E+0000 1.74331857940927E+0000 1.74059985589316E+0000 1.73788379868769E+0000 1.73517040681146E+0000 + 1.73245967928300E+0000 1.72975161512076E+0000 1.72704621334313E+0000 1.72434347296839E+0000 1.72164339301477E+0000 + 1.71894597250041E+0000 1.71625121044334E+0000 1.71355910586156E+0000 1.71086965777293E+0000 1.70818286519525E+0000 + 1.70549872714623E+0000 1.70281724264348E+0000 1.70013841070453E+0000 1.69746223034680E+0000 1.69478870058764E+0000 + 1.69211782044427E+0000 1.68944958893384E+0000 1.68678400507340E+0000 1.68412106787988E+0000 1.68146077637012E+0000 + 1.67880312956086E+0000 1.67614812646873E+0000 1.67349576611024E+0000 1.67084604750182E+0000 1.66819896965977E+0000 + 1.66555453160028E+0000 1.66291273233944E+0000 1.66027357089321E+0000 1.65763704627745E+0000 1.65500315750788E+0000 + 1.65237190360014E+0000 1.64974328356971E+0000 1.64711729643196E+0000 1.64449394120216E+0000 1.64187321689542E+0000 + 1.63925512252676E+0000 1.63663965711104E+0000 1.63402681966301E+0000 1.63141660919729E+0000 1.62880902472836E+0000 + 1.62620406527057E+0000 1.62360172983813E+0000 1.62100201744513E+0000 1.61840492710551E+0000 1.61581045783306E+0000 + 1.61321860864146E+0000 1.61062937854421E+0000 1.60804276655470E+0000 1.60545877168616E+0000 1.60287739295167E+0000 + 1.60029862936417E+0000 1.59772247993644E+0000 1.59514894368112E+0000 1.59257801961069E+0000 1.59000970673748E+0000 + 1.58744400407366E+0000 1.58488091063126E+0000 1.58232042542212E+0000 1.57976254745794E+0000 1.57720727575027E+0000 + 1.57465460931047E+0000 1.57210454714976E+0000 1.56955708827916E+0000 1.56701223170958E+0000 1.56446997645170E+0000 + 1.56193032151606E+0000 1.55939326591303E+0000 1.55685880865279E+0000 1.55432694874538E+0000 1.55179768520062E+0000 + 1.54927101702817E+0000 1.54674694323753E+0000 1.54422546283798E+0000 1.54170657483866E+0000 1.53919027824849E+0000 + 1.53667657207623E+0000 1.53416545533044E+0000 1.53165692701949E+0000 1.52915098615158E+0000 1.52664763173469E+0000 + 1.52414686277662E+0000 1.52164867828499E+0000 1.51915307726721E+0000 1.51666005873049E+0000 1.51416962168185E+0000 + 1.51168176512810E+0000 1.50919648807585E+0000 1.50671378953152E+0000 1.50423366850132E+0000 1.50175612399125E+0000 + 1.49928115500709E+0000 1.49680876055443E+0000 1.49433893963865E+0000 1.49187169126490E+0000 1.48940701443813E+0000 + 1.48694490816308E+0000 1.48448537144426E+0000 1.48202840328596E+0000 1.47957400269228E+0000 1.47712216866705E+0000 + 1.47467290021393E+0000 1.47222619633631E+0000 1.46978205603739E+0000 1.46734047832012E+0000 1.46490146218724E+0000 + 1.46246500664123E+0000 1.46003111068438E+0000 1.45759977331872E+0000 1.45517099354604E+0000 1.45274477036791E+0000 + 1.45032110278567E+0000 1.44789998980039E+0000 1.44548143041294E+0000 1.44306542362390E+0000 1.44065196843366E+0000 + 1.43824106384232E+0000 1.43583270884977E+0000 1.43342690245561E+0000 1.43102364365923E+0000 1.42862293145976E+0000 + 1.42622476485606E+0000 1.42382914284676E+0000 1.42143606443021E+0000 1.41904552860452E+0000 1.41665753436754E+0000 + 1.41427208071686E+0000 1.41188916664981E+0000 1.40950879116345E+0000 1.40713095325457E+0000 1.40475565191973E+0000 + 1.40238288615517E+0000 1.40001265495691E+0000 1.39764495732066E+0000 1.39527979224189E+0000 1.39291715871579E+0000 + 1.39055705573725E+0000 1.38819948230092E+0000 1.38584443740114E+0000 1.38349192003200E+0000 1.38114192918729E+0000 + 1.37879446386053E+0000 1.37644952304495E+0000 1.37410710573348E+0000 1.37176721091880E+0000 1.36942983759327E+0000 + 1.36709498474898E+0000 1.36476265137771E+0000 1.36243283647096E+0000 1.36010553901995E+0000 1.35778075801557E+0000 + 1.35545849244844E+0000 1.35313874130887E+0000 1.35082150358689E+0000 1.34850677827219E+0000 1.34619456435420E+0000 + 1.34388486082202E+0000 1.34157766666444E+0000 1.33927298086997E+0000 1.33697080242677E+0000 1.33467113032274E+0000 + 1.33237396354544E+0000 1.33007930108210E+0000 1.32778714191967E+0000 1.32549748504476E+0000 1.32321032944368E+0000 + 1.32092567410241E+0000 1.31864351800661E+0000 1.31636386014161E+0000 1.31408669949245E+0000 1.31181203504379E+0000 + 1.30953986578002E+0000 1.30727019068517E+0000 1.30500300874294E+0000 1.30273831893672E+0000 1.30047612024953E+0000 + 1.29821641166411E+0000 1.29595919216282E+0000 1.29370446072770E+0000 1.29145221634045E+0000 1.28920245798242E+0000 + 1.28695518463466E+0000 1.28471039527781E+0000 1.28246808889223E+0000 1.28022826445789E+0000 1.27799092095444E+0000 + 1.27575605736117E+0000 1.27352367265702E+0000 1.27129376582058E+0000 1.26906633583009E+0000 1.26684138166342E+0000 + 1.26461890229812E+0000 1.26239889671134E+0000 1.26018136387989E+0000 1.25796630278024E+0000 1.25575371238846E+0000 + 1.25354359168029E+0000 1.25133593963108E+0000 1.24913075521583E+0000 1.24692803740917E+0000 1.24472778518534E+0000 + 1.24252999751826E+0000 1.24033467338142E+0000 1.23814181174797E+0000 1.23595141159069E+0000 1.23376347188195E+0000 + 1.23157799159378E+0000 1.22939496969780E+0000 1.22721440516528E+0000 1.22503629696708E+0000 1.22286064407369E+0000 + 1.22068744545522E+0000 1.21851670008138E+0000 1.21634840692149E+0000 1.21418256494451E+0000 1.21201917311896E+0000 + 1.20985823041303E+0000 1.20769973579445E+0000 1.20554368823060E+0000 1.20339008668846E+0000 1.20123893013458E+0000 + 1.19909021753515E+0000 1.19694394785594E+0000 1.19480012006230E+0000 1.19265873311922E+0000 1.19051978599124E+0000 + 1.18838327764253E+0000 1.18624920703682E+0000 1.18411757313744E+0000 1.18198837490733E+0000 1.17986161130900E+0000 + 1.17773728130453E+0000 1.17561538385561E+0000 1.17349591792351E+0000 1.17137888246907E+0000 1.16926427645272E+0000 + 1.16715209883446E+0000 1.16504234857388E+0000 1.16293502463012E+0000 1.16083012596194E+0000 1.15872765152763E+0000 + 1.15662760028506E+0000 1.15452997119169E+0000 1.15243476320453E+0000 1.15034197528016E+0000 1.14825160637474E+0000 + 1.14616365544398E+0000 1.14407812144315E+0000 1.14199500332709E+0000 1.13991430005020E+0000 1.13783601056644E+0000 + 1.13576013382932E+0000 1.13368666879191E+0000 1.13161561440683E+0000 1.12954696962627E+0000 1.12748073340196E+0000 + 1.12541690468516E+0000 1.12335548242671E+0000 1.12129646557699E+0000 1.11923985308591E+0000 1.11718564390294E+0000 + 1.11513383697710E+0000 1.11308443125692E+0000 1.11103742569050E+0000 1.10899281922548E+0000 1.10695061080901E+0000 + 1.10491079938780E+0000 1.10287338390808E+0000 1.10083836331564E+0000 1.09880573655576E+0000 1.09677550257329E+0000 + 1.09474766031257E+0000 1.09272220871752E+0000 1.09069914673153E+0000 1.08867847329754E+0000 1.08666018735803E+0000 + 1.08464428785497E+0000 1.08263077372987E+0000 1.08061964392376E+0000 1.07861089737718E+0000 1.07660453303019E+0000 + 1.07460054982235E+0000 1.07259894669276E+0000 1.07059972258003E+0000 1.06860287642224E+0000 1.06660840715704E+0000 + 1.06461631372153E+0000 1.06262659505236E+0000 1.06063925008568E+0000 1.05865427775710E+0000 1.05667167700179E+0000 + 1.05469144675440E+0000 1.05271358594905E+0000 1.05073809351941E+0000 1.04876496839860E+0000 1.04679420951928E+0000 + 1.04482581581355E+0000 1.04285978621306E+0000 1.04089611964891E+0000 1.03893481505170E+0000 1.03697587135154E+0000 + 1.03501928747799E+0000 1.03306506236013E+0000 1.03111319492651E+0000 1.02916368410515E+0000 1.02721652882358E+0000 + 1.02527172800878E+0000 1.02332928058723E+0000 1.02138918548489E+0000 1.01945144162718E+0000 1.01751604793900E+0000 + 1.01558300334473E+0000 1.01365230676822E+0000 1.01172395713279E+0000 1.00979795336121E+0000 1.00787429437577E+0000 + 1.00595297909816E+0000 1.00403400644959E+0000 1.00211737535070E+0000 1.00020308472161E+0000 9.98291133481897E-0001 + 9.96381520550596E-0001 9.94474244846198E-0001 9.92569305286660E-0001 9.90666700789386E-0001 9.88766430271240E-0001 + 9.86868492648537E-0001 9.84972886837041E-0001 9.83079611751975E-0001 9.81188666308001E-0001 9.79300049419236E-0001 + 9.77413759999240E-0001 9.75529796961016E-0001 9.73648159217021E-0001 9.71768845679141E-0001 9.69891855258710E-0001 + 9.68017186866503E-0001 9.66144839412730E-0001 9.64274811807041E-0001 9.62407102958521E-0001 9.60541711775685E-0001 + 9.58678637166490E-0001 9.56817878038315E-0001 9.54959433297979E-0001 9.53103301851723E-0001 9.51249482605217E-0001 + 9.49397974463562E-0001 9.47548776331277E-0001 9.45701887112314E-0001 9.43857305710041E-0001 9.42015031027244E-0001 + 9.40175061966142E-0001 9.38337397428356E-0001 9.36502036314940E-0001 9.34668977526354E-0001 9.32838219962473E-0001 + 9.31009762522592E-0001 9.29183604105412E-0001 9.27359743609048E-0001 9.25538179931024E-0001 9.23718911968268E-0001 + 9.21901938617125E-0001 9.20087258773332E-0001 9.18274871332045E-0001 9.16464775187812E-0001 9.14656969234585E-0001 + 9.12851452365722E-0001 9.11048223473971E-0001 9.09247281451489E-0001 9.07448625189822E-0001 9.05652253579909E-0001 + 9.03858165512093E-0001 9.02066359876101E-0001 9.00276835561052E-0001 8.98489591455464E-0001 8.96704626447232E-0001 + 8.94921939423648E-0001 8.93141529271386E-0001 8.91363394876504E-0001 8.89587535124450E-0001 8.87813948900045E-0001 + 8.86042635087502E-0001 8.84273592570408E-0001 8.82506820231726E-0001 8.80742316953804E-0001 8.78980081618362E-0001 + 8.77220113106497E-0001 8.75462410298678E-0001 8.73706972074743E-0001 8.71953797313912E-0001 8.70202884894764E-0001 + 8.68454233695255E-0001 8.66707842592703E-0001 8.64963710463793E-0001 8.63221836184580E-0001 8.61482218630474E-0001 + 8.59744856676259E-0001 8.58009749196072E-0001 8.56276895063409E-0001 8.54546293151134E-0001 8.52817942331458E-0001 + 8.51091841475957E-0001 8.49367989455559E-0001 8.47646385140541E-0001 8.45927027400544E-0001 8.44209915104550E-0001 + 8.42495047120894E-0001 8.40782422317267E-0001 8.39072039560697E-0001 8.37363897717568E-0001 8.35657995653605E-0001 + 8.33954332233875E-0001 8.32252906322795E-0001 8.30553716784116E-0001 8.28856762480937E-0001 8.27162042275692E-0001 + 8.25469555030152E-0001 8.23779299605431E-0001 8.22091274861971E-0001 8.20405479659556E-0001 8.18721912857299E-0001 + 8.17040573313645E-0001 8.15361459886376E-0001 8.13684571432594E-0001 8.12009906808740E-0001 8.10337464870576E-0001 + 8.08667244473190E-0001 8.06999244471000E-0001 8.05333463717744E-0001 8.03669901066486E-0001 8.02008555369608E-0001 + 8.00349425478813E-0001 7.98692510245129E-0001 7.97037808518892E-0001 7.95385319149765E-0001 7.93735040986721E-0001 + 7.92086972878048E-0001 7.90441113671351E-0001 7.88797462213544E-0001 7.87156017350851E-0001 7.85516777928810E-0001 + 7.83879742792266E-0001 7.82244910785373E-0001 7.80612280751590E-0001 7.78981851533678E-0001 7.77353621973711E-0001 + 7.75727590913057E-0001 7.74103757192394E-0001 7.72482119651696E-0001 7.70862677130236E-0001 7.69245428466590E-0001 + 7.67630372498627E-0001 7.66017508063516E-0001 7.64406833997719E-0001 7.62798349136991E-0001 7.61192052316385E-0001 + 7.59587942370239E-0001 7.57986018132189E-0001 7.56386278435154E-0001 7.54788722111344E-0001 7.53193347992260E-0001 + 7.51600154908683E-0001 7.50009141690686E-0001 7.48420307167620E-0001 7.46833650168120E-0001 7.45249169520109E-0001 + 7.43666864050781E-0001 7.42086732586619E-0001 7.40508773953380E-0001 7.38932986976096E-0001 7.37359370479082E-0001 + 7.35787923285923E-0001 7.34218644219482E-0001 7.32651532101892E-0001 7.31086585754558E-0001 7.29523803998160E-0001 + 7.27963185652646E-0001 7.26404729537229E-0001 7.24848434470397E-0001 7.23294299269898E-0001 7.21742322752752E-0001 + 7.20192503735237E-0001 7.18644841032898E-0001 7.17099333460547E-0001 7.15555979832246E-0001 7.14014778961331E-0001 + 7.12475729660388E-0001 7.10938830741261E-0001 7.09404081015059E-0001 7.07871479292139E-0001 7.06341024382120E-0001 + 7.04812715093870E-0001 7.03286550235510E-0001 7.01762528614419E-0001 7.00240649037220E-0001 6.98720910309792E-0001 + 6.97203311237259E-0001 6.95687850623992E-0001 6.94174527273614E-0001 6.92663339988989E-0001 6.91154287572230E-0001 + 6.89647368824692E-0001 6.88142582546969E-0001 6.86639927538906E-0001 6.85139402599579E-0001 6.83641006527312E-0001 + 6.82144738119663E-0001 6.80650596173426E-0001 6.79158579484642E-0001 6.77668686848577E-0001 6.76180917059734E-0001 + 6.74695268911856E-0001 6.73211741197912E-0001 6.71730332710109E-0001 6.70251042239879E-0001 6.68773868577886E-0001 + 6.67298810514028E-0001 6.65825866837422E-0001 6.64355036336422E-0001 6.62886317798600E-0001 6.61419710010756E-0001 + 6.59955211758916E-0001 6.58492821828326E-0001 6.57032539003458E-0001 6.55574362068003E-0001 6.54118289804871E-0001 + 6.52664320996196E-0001 6.51212454423324E-0001 6.49762688866826E-0001 6.48315023106485E-0001 6.46869455921297E-0001 + 6.45425986089481E-0001 6.43984612388462E-0001 6.42545333594883E-0001 6.41108148484596E-0001 6.39673055832663E-0001 + 6.38240054413362E-0001 6.36809143000172E-0001 6.35380320365789E-0001 6.33953585282109E-0001 6.32528936520237E-0001 + 6.31106372850485E-0001 6.29685893042369E-0001 6.28267495864607E-0001 6.26851180085123E-0001 6.25436944471038E-0001 + 6.24024787788681E-0001 6.22614708803576E-0001 6.21206706280445E-0001 6.19800778983215E-0001 6.18396925675004E-0001 + 6.16995145118131E-0001 6.15595436074109E-0001 6.14197797303643E-0001 6.12802227566639E-0001 6.11408725622188E-0001 + 6.10017290228582E-0001 6.08627920143297E-0001 6.07240614123002E-0001 6.05855370923559E-0001 6.04472189300012E-0001 + 6.03091068006602E-0001 6.01712005796750E-0001 6.00335001423063E-0001 5.98960053637341E-0001 5.97587161190559E-0001 + 5.96216322832886E-0001 5.94847537313665E-0001 5.93480803381425E-0001 5.92116119783878E-0001 5.90753485267913E-0001 + 5.89392898579603E-0001 5.88034358464195E-0001 5.86677863666116E-0001 5.85323412928974E-0001 5.83971004995546E-0001 + 5.82620638607794E-0001 5.81272312506846E-0001 5.79926025433008E-0001 5.78581776125761E-0001 5.77239563323756E-0001 + 5.75899385764815E-0001 5.74561242185934E-0001 5.73225131323276E-0001 5.71891051912176E-0001 5.70559002687137E-0001 + 5.69228982381826E-0001 5.67900989729084E-0001 5.66575023460911E-0001 5.65251082308480E-0001 5.63929165002123E-0001 + 5.62609270271335E-0001 5.61291396844782E-0001 5.59975543450283E-0001 5.58661708814827E-0001 5.57349891664559E-0001 + 5.56040090724784E-0001 5.54732304719971E-0001 5.53426532373742E-0001 5.52122772408882E-0001 5.50821023547332E-0001 + 5.49521284510186E-0001 5.48223554017701E-0001 5.46927830789281E-0001 5.45634113543492E-0001 5.44342400998049E-0001 + 5.43052691869820E-0001 5.41764984874829E-0001 5.40479278728247E-0001 5.39195572144402E-0001 5.37913863836766E-0001 + 5.36634152517962E-0001 5.35356436899767E-0001 5.34080715693100E-0001 5.32806987608028E-0001 5.31535251353770E-0001 + 5.30265505638685E-0001 5.28997749170284E-0001 5.27731980655217E-0001 5.26468198799279E-0001 5.25206402307413E-0001 + 5.23946589883698E-0001 5.22688760231364E-0001 5.21432912052773E-0001 5.20179044049434E-0001 5.18927154921995E-0001 + 5.17677243370243E-0001 5.16429308093105E-0001 5.15183347788645E-0001 5.13939361154065E-0001 5.12697346885706E-0001 + 5.11457303679043E-0001 5.10219230228689E-0001 5.08983125228390E-0001 5.07748987371027E-0001 5.06516815348618E-0001 + 5.05286607852311E-0001 5.04058363572389E-0001 5.02832081198267E-0001 5.01607759418488E-0001 5.00385396920732E-0001 + 4.99164992391804E-0001 4.97946544517645E-0001 4.96730051983320E-0001 4.95515513473022E-0001 4.94302927670079E-0001 + 4.93092293256940E-0001 4.91883608915182E-0001 4.90676873325513E-0001 4.89472085167761E-0001 4.88269243120884E-0001 + 4.87068345862961E-0001 4.85869392071198E-0001 4.84672380421925E-0001 4.83477309590591E-0001 4.82284178251774E-0001 + 4.81092985079170E-0001 4.79903728745596E-0001 4.78716407922993E-0001 4.77531021282419E-0001 4.76347567494058E-0001 + 4.75166045227206E-0001 4.73986453150282E-0001 4.72808789930826E-0001 4.71633054235489E-0001 4.70459244730048E-0001 + 4.69287360079390E-0001 4.68117398947521E-0001 4.66949359997565E-0001 4.65783241891758E-0001 4.64619043291455E-0001 + 4.63456762857122E-0001 4.62296399248340E-0001 4.61137951123807E-0001 4.59981417141330E-0001 4.58826795957830E-0001 + 4.57674086229342E-0001 4.56523286611009E-0001 4.55374395757091E-0001 4.54227412320954E-0001 4.53082334955077E-0001 + 4.51939162311048E-0001 4.50797893039565E-0001 4.49658525790437E-0001 4.48521059212578E-0001 4.47385491954013E-0001 + 4.46251822661876E-0001 4.45120049982405E-0001 4.43990172560949E-0001 4.42862189041962E-0001 4.41736098069002E-0001 + 4.40611898284739E-0001 4.39489588330940E-0001 4.38369166848487E-0001 4.37250632477360E-0001 4.36133983856643E-0001 + 4.35019219624529E-0001 4.33906338418311E-0001 4.32795338874386E-0001 4.31686219628256E-0001 4.30578979314519E-0001 + 4.29473616566886E-0001 4.28370130018159E-0001 4.27268518300249E-0001 4.26168780044166E-0001 4.25070913880017E-0001 + 4.23974918437017E-0001 4.22880792343474E-0001 4.21788534226801E-0001 4.20698142713507E-0001 4.19609616429202E-0001 + 4.18522953998596E-0001 4.17438154045493E-0001 4.16355215192802E-0001 4.15274136062524E-0001 4.14194915275761E-0001 + 4.13117551452712E-0001 4.12042043212672E-0001 4.10968389174032E-0001 4.09896587954285E-0001 4.08826638170011E-0001 + 4.07758538436896E-0001 4.06692287369715E-0001 4.05627883582339E-0001 4.04565325687738E-0001 4.03504612297973E-0001 + 4.02445742024203E-0001 4.01388713476679E-0001 4.00333525264746E-0001 3.99280175996845E-0001 3.98228664280509E-0001 + 3.97178988722367E-0001 3.96131147928138E-0001 3.95085140502635E-0001 3.94040965049766E-0001 3.92998620172529E-0001 + 3.91958104473017E-0001 3.90919416552413E-0001 3.89882555010992E-0001 3.88847518448124E-0001 3.87814305462265E-0001 + 3.86782914650969E-0001 3.85753344610878E-0001 3.84725593937723E-0001 3.83699661226331E-0001 3.82675545070614E-0001 + 3.81653244063581E-0001 3.80632756797326E-0001 3.79614081863035E-0001 3.78597217850987E-0001 3.77582163350547E-0001 + 3.76568916950171E-0001 3.75557477237408E-0001 3.74547842798890E-0001 3.73540012220346E-0001 3.72533984086589E-0001 + 3.71529756981522E-0001 3.70527329488142E-0001 3.69526700188527E-0001 3.68527867663851E-0001 3.67530830494372E-0001 + 3.66535587259440E-0001 3.65542136537493E-0001 3.64550476906054E-0001 3.63560606941742E-0001 3.62572525220257E-0001 + 3.61586230316389E-0001 3.60601720804021E-0001 3.59618995256118E-0001 3.58638052244737E-0001 3.57658890341022E-0001 + 3.56681508115204E-0001 3.55705904136605E-0001 3.54732076973631E-0001 3.53760025193780E-0001 3.52789747363635E-0001 + 3.51821242048867E-0001 3.50854507814237E-0001 3.49889543223592E-0001 3.48926346839867E-0001 3.47964917225087E-0001 + 3.47005252940361E-0001 3.46047352545890E-0001 3.45091214600958E-0001 3.44136837663943E-0001 3.43184220292307E-0001 + 3.42233361042598E-0001 3.41284258470458E-0001 3.40336911130611E-0001 3.39391317576872E-0001 3.38447476362146E-0001 + 3.37505386038420E-0001 3.36565045156776E-0001 3.35626452267380E-0001 3.34689605919487E-0001 3.33754504661442E-0001 + 3.32821147040676E-0001 3.31889531603711E-0001 3.30959656896156E-0001 3.30031521462708E-0001 3.29105123847156E-0001 + 3.28180462592373E-0001 3.27257536240327E-0001 3.26336343332070E-0001 3.25416882407745E-0001 3.24499152006585E-0001 + 3.23583150666910E-0001 3.22668876926135E-0001 3.21756329320758E-0001 3.20845506386370E-0001 3.19936406657654E-0001 + 3.19029028668380E-0001 3.18123370951409E-0001 3.17219432038693E-0001 3.16317210461274E-0001 3.15416704749287E-0001 + 3.14517913431954E-0001 3.13620835037591E-0001 3.12725468093606E-0001 3.11831811126495E-0001 3.10939862661849E-0001 + 3.10049621224350E-0001 3.09161085337770E-0001 3.08274253524978E-0001 3.07389124307930E-0001 3.06505696207679E-0001 + 3.05623967744369E-0001 3.04743937437237E-0001 3.03865603804616E-0001 3.02988965363927E-0001 3.02114020631693E-0001 + 3.01240768123524E-0001 3.00369206354128E-0001 2.99499333837307E-0001 2.98631149085958E-0001 2.97764650612073E-0001 + 2.96899836926740E-0001 2.96036706540141E-0001 2.95175257961558E-0001 2.94315489699365E-0001 2.93457400261036E-0001 + 2.92600988153139E-0001 2.91746251881342E-0001 2.90893189950409E-0001 2.90041800864202E-0001 2.89192083125683E-0001 + 2.88344035236911E-0001 2.87497655699042E-0001 2.86652943012337E-0001 2.85809895676149E-0001 2.84968512188938E-0001 + 2.84128791048261E-0001 2.83290730750774E-0001 2.82454329792238E-0001 2.81619586667512E-0001 2.80786499870559E-0001 + 2.79955067894444E-0001 2.79125289231333E-0001 2.78297162372497E-0001 2.77470685808308E-0001 2.76645858028244E-0001 + 2.75822677520887E-0001 2.75001142773921E-0001 2.74181252274140E-0001 2.73363004507438E-0001 2.72546397958817E-0001 + 2.71731431112388E-0001 2.70918102451365E-0001 2.70106410458071E-0001 2.69296353613937E-0001 2.68487930399500E-0001 + 2.67681139294410E-0001 2.66875978777420E-0001 2.66072447326399E-0001 2.65270543418321E-0001 2.64470265529273E-0001 + 2.63671612134454E-0001 2.62874581708170E-0001 2.62079172723845E-0001 2.61285383654013E-0001 2.60493212970318E-0001 + 2.59702659143524E-0001 2.58913720643503E-0001 2.58126395939246E-0001 2.57340683498857E-0001 2.56556581789556E-0001 + 2.55774089277681E-0001 2.54993204428684E-0001 2.54213925707138E-0001 2.53436251576730E-0001 2.52660180500268E-0001 + 2.51885710939681E-0001 2.51112841356014E-0001 2.50341570209433E-0001 2.49571895959228E-0001 2.48803817063808E-0001 + 2.48037331980705E-0001 2.47272439166573E-0001 2.46509137077189E-0001 2.45747424167458E-0001 2.44987298891404E-0001 + 2.44228759702181E-0001 2.43471805052066E-0001 2.42716433392463E-0001 2.41962643173906E-0001 2.41210432846053E-0001 + 2.40459800857695E-0001 2.39710745656748E-0001 2.38963265690259E-0001 2.38217359404410E-0001 2.37473025244507E-0001 + 2.36730261654994E-0001 2.35989067079447E-0001 2.35249439960571E-0001 2.34511378740212E-0001 2.33774881859344E-0001 + 2.33039947758083E-0001 2.32306574875678E-0001 2.31574761650513E-0001 2.30844506520116E-0001 2.30115807921148E-0001 + 2.29388664289412E-0001 2.28663074059851E-0001 2.27939035666548E-0001 2.27216547542730E-0001 2.26495608120764E-0001 + 2.25776215832160E-0001 2.25058369107575E-0001 2.24342066376808E-0001 2.23627306068807E-0001 2.22914086611662E-0001 + 2.22202406432614E-0001 2.21492263958051E-0001 2.20783657613509E-0001 2.20076585823677E-0001 2.19371047012391E-0001 + 2.18667039602640E-0001 2.17964562016567E-0001 2.17263612675464E-0001 2.16564189999784E-0001 2.15866292409128E-0001 + 2.15169918322256E-0001 2.14475066157087E-0001 2.13781734330692E-0001 2.13089921259308E-0001 2.12399625358325E-0001 + 2.11710845042296E-0001 2.11023578724937E-0001 2.10337824819123E-0001 2.09653581736895E-0001 2.08970847889456E-0001 + 2.08289621687176E-0001 2.07609901539590E-0001 2.06931685855400E-0001 2.06254973042476E-0001 2.05579761507858E-0001 + 2.04906049657755E-0001 2.04233835897546E-0001 2.03563118631784E-0001 2.02893896264195E-0001 2.02226167197675E-0001 + 2.01559929834300E-0001 2.00895182575319E-0001 2.00231923821159E-0001 1.99570151971424E-0001 1.98909865424900E-0001 + 1.98251062579548E-0001 1.97593741832515E-0001 1.96937901580128E-0001 1.96283540217896E-0001 1.95630656140516E-0001 + 1.94979247741867E-0001 1.94329313415017E-0001 1.93680851552220E-0001 1.93033860544918E-0001 1.92388338783746E-0001 + 1.91744284658526E-0001 1.91101696558275E-0001 1.90460572871201E-0001 1.89820911984708E-0001 1.89182712285395E-0001 + 1.88545972159056E-0001 1.87910689990685E-0001 1.87276864164475E-0001 1.86644493063815E-0001 1.86013575071301E-0001 + 1.85384108568726E-0001 1.84756091937091E-0001 1.84129523556599E-0001 1.83504401806659E-0001 1.82880725065890E-0001 + 1.82258491712114E-0001 1.81637700122370E-0001 1.81018348672901E-0001 1.80400435739164E-0001 1.79783959695833E-0001 + 1.79168918916792E-0001 1.78555311775141E-0001 1.77943136643200E-0001 1.77332391892505E-0001 1.76723075893812E-0001 + 1.76115187017100E-0001 1.75508723631565E-0001 1.74903684105633E-0001 1.74300066806949E-0001 1.73697870102387E-0001 + 1.73097092358049E-0001 1.72497731939263E-0001 1.71899787210590E-0001 1.71303256535818E-0001 1.70708138277974E-0001 + 1.70114430799314E-0001 1.69522132461330E-0001 1.68931241624754E-0001 1.68341756649551E-0001 1.67753675894930E-0001 + 1.67166997719339E-0001 1.66581720480468E-0001 1.65997842535252E-0001 1.65415362239868E-0001 1.64834277949745E-0001 + 1.64254588019554E-0001 1.63676290803218E-0001 1.63099384653913E-0001 1.62523867924061E-0001 1.61949738965345E-0001 + 1.61376996128699E-0001 1.60805637764312E-0001 1.60235662221635E-0001 1.59667067849377E-0001 1.59099852995506E-0001 + 1.58534016007256E-0001 1.57969555231122E-0001 1.57406469012867E-0001 1.56844755697519E-0001 1.56284413629374E-0001 + 1.55725441152002E-0001 1.55167836608238E-0001 1.54611598340197E-0001 1.54056724689265E-0001 1.53503213996104E-0001 + 1.52951064600655E-0001 1.52400274842138E-0001 1.51850843059055E-0001 1.51302767589187E-0001 1.50756046769603E-0001 + 1.50210678936657E-0001 1.49666662425988E-0001 1.49123995572526E-0001 1.48582676710492E-0001 1.48042704173396E-0001 + 1.47504076294047E-0001 1.46966791404543E-0001 1.46430847836286E-0001 1.45896243919972E-0001 1.45362977985597E-0001 + 1.44831048362464E-0001 1.44300453379174E-0001 1.43771191363639E-0001 1.43243260643073E-0001 1.42716659544002E-0001 + 1.42191386392262E-0001 1.41667439513000E-0001 1.41144817230679E-0001 1.40623517869078E-0001 1.40103539751290E-0001 + 1.39584881199732E-0001 1.39067540536139E-0001 1.38551516081567E-0001 1.38036806156403E-0001 1.37523409080353E-0001 + 1.37011323172456E-0001 1.36500546751079E-0001 1.35991078133921E-0001 1.35482915638015E-0001 1.34976057579727E-0001 + 1.34470502274764E-0001 1.33966248038169E-0001 1.33463293184327E-0001 1.32961636026965E-0001 1.32461274879156E-0001 + 1.31962208053317E-0001 1.31464433861216E-0001 1.30967950613968E-0001 1.30472756622044E-0001 1.29978850195265E-0001 + 1.29486229642810E-0001 1.28994893273215E-0001 1.28504839394376E-0001 1.28016066313550E-0001 1.27528572337359E-0001 + 1.27042355771789E-0001 1.26557414922193E-0001 1.26073748093293E-0001 1.25591353589187E-0001 1.25110229713339E-0001 + 1.24630374768594E-0001 1.24151787057171E-0001 1.23674464880670E-0001 1.23198406540073E-0001 1.22723610335741E-0001 + 1.22250074567424E-0001 1.21777797534260E-0001 1.21306777534774E-0001 1.20837012866882E-0001 1.20368501827896E-0001 + 1.19901242714521E-0001 1.19435233822862E-0001 1.18970473448420E-0001 1.18506959886102E-0001 1.18044691430216E-0001 + 1.17583666374476E-0001 1.17123883012006E-0001 1.16665339635337E-0001 1.16208034536415E-0001 1.15751966006600E-0001 + 1.15297132336666E-0001 1.14843531816809E-0001 1.14391162736643E-0001 1.13940023385208E-0001 1.13490112050967E-0001 + 1.13041427021809E-0001 1.12593966585056E-0001 1.12147729027460E-0001 1.11702712635206E-0001 1.11258915693916E-0001 + 1.10816336488651E-0001 1.10374973303911E-0001 1.09934824423641E-0001 1.09495888131229E-0001 1.09058162709510E-0001 + 1.08621646440771E-0001 1.08186337606750E-0001 1.07752234488637E-0001 1.07319335367081E-0001 1.06887638522188E-0001 + 1.06457142233526E-0001 1.06027844780126E-0001 1.05599744440484E-0001 1.05172839492565E-0001 1.04747128213804E-0001 + 1.04322608881107E-0001 1.03899279770859E-0001 1.03477139158918E-0001 1.03056185320623E-0001 1.02636416530797E-0001 + 1.02217831063745E-0001 1.01800427193261E-0001 1.01384203192626E-0001 1.00969157334614E-0001 1.00555287891494E-0001 + 1.00142593135029E-0001 9.97310713364836E-0002 9.93207207666222E-0002 9.89115396957130E-0002 9.85035263935321E-0002 + 9.80966791293624E-0002 9.76909961720000E-0002 9.72864757897532E-0002 9.68831162504469E-0002 9.64809158214258E-0002 + 9.60798727695541E-0002 9.56799853612219E-0002 9.52812518623439E-0002 9.48836705383640E-0002 9.44872396542585E-0002 + 9.40919574745363E-0002 9.36978222632443E-0002 9.33048322839672E-0002 9.29129857998317E-0002 9.25222810735097E-0002 + 9.21327163672189E-0002 9.17442899427264E-0002 9.13570000613528E-0002 9.09708449839716E-0002 9.05858229710155E-0002 + 9.02019322824758E-0002 8.98191711779065E-0002 8.94375379164282E-0002 8.90570307567279E-0002 8.86776479570649E-0002 + 8.82993877752704E-0002 8.79222484687518E-0002 8.75462282944966E-0002 8.71713255090721E-0002 8.67975383686312E-0002 + 8.64248651289127E-0002 8.60533040452450E-0002 8.56828533725501E-0002 8.53135113653436E-0002 8.49452762777407E-0002 + 8.45781463634559E-0002 8.42121198758072E-0002 8.38471950677205E-0002 8.34833701917286E-0002 8.31206434999782E-0002 + 8.27590132442294E-0002 8.23984776758596E-0002 8.20390350458682E-0002 8.16806836048761E-0002 8.13234216031317E-0002 + 8.09672472905112E-0002 8.06121589165227E-0002 8.02581547303103E-0002 7.99052329806542E-0002 7.95533919159754E-0002 + 7.92026297843394E-0002 7.88529448334562E-0002 7.85043353106871E-0002 7.81567994630440E-0002 7.78103355371940E-0002 + 7.74649417794638E-0002 7.71206164358391E-0002 7.67773577519715E-0002 7.64351639731785E-0002 7.60940333444472E-0002 + 7.57539641104393E-0002 7.54149545154908E-0002 7.50770028036182E-0002 7.47401072185191E-0002 7.44042660035759E-0002 + 7.40694774018607E-0002 7.37357396561348E-0002 7.34030510088557E-0002 7.30714097021769E-0002 7.27408139779524E-0002 + 7.24112620777407E-0002 7.20827522428056E-0002 7.17552827141221E-0002 7.14288517323768E-0002 7.11034575379725E-0002 + 7.07790983710320E-0002 7.04557724713991E-0002 7.01334780786444E-0002 6.98122134320660E-0002 6.94919767706938E-0002 + 6.91727663332937E-0002 6.88545803583689E-0002 6.85374170841636E-0002 6.82212747486679E-0002 6.79061515896183E-0002 + 6.75920458445036E-0002 6.72789557505660E-0002 6.69668795448051E-0002 6.66558154639823E-0002 6.63457617446219E-0002 + 6.60367166230167E-0002 6.57286783352293E-0002 6.54216451170961E-0002 6.51156152042319E-0002 6.48105868320305E-0002 + 6.45065582356712E-0002 6.42035276501195E-0002 6.39014933101312E-0002 6.36004534502574E-0002 6.33004063048450E-0002 + 6.30013501080430E-0002 6.27032830938034E-0002 6.24062034958857E-0002 6.21101095478614E-0002 6.18149994831146E-0002 + 6.15208715348490E-0002 6.12277239360879E-0002 6.09355549196796E-0002 6.06443627183013E-0002 6.03541455644603E-0002 + 6.00649016905004E-0002 5.97766293286028E-0002 5.94893267107906E-0002 5.92029920689335E-0002 5.89176236347488E-0002 + 5.86332196398075E-0002 5.83497783155360E-0002 5.80672978932198E-0002 5.77857766040090E-0002 5.75052126789191E-0002 + 5.72256043488359E-0002 5.69469498445202E-0002 5.66692473966088E-0002 5.63924952356209E-0002 5.61166915919593E-0002 + 5.58418346959152E-0002 5.55679227776726E-0002 5.52949540673098E-0002 5.50229267948056E-0002 5.47518391900406E-0002 + 5.44816894828021E-0002 5.42124759027884E-0002 5.39441966796105E-0002 5.36768500427984E-0002 5.34104342218023E-0002 + 5.31449474459974E-0002 5.28803879446889E-0002 5.26167539471130E-0002 5.23540436824435E-0002 5.20922553797932E-0002 + 5.18313872682189E-0002 5.15714375767258E-0002 5.13124045342692E-0002 5.10542863697607E-0002 5.07970813120703E-0002 + 5.05407875900305E-0002 5.02854034324414E-0002 5.00309270680726E-0002 4.97773567256689E-0002 4.95246906339527E-0002 + 4.92729270216282E-0002 4.90220641173867E-0002 4.87721001499083E-0002 4.85230333478670E-0002 4.82748619399350E-0002 + 4.80275841547855E-0002 4.77811982210977E-0002 4.75357023675600E-0002 4.72910948228739E-0002 4.70473738157593E-0002 + 4.68045375749562E-0002 4.65625843292311E-0002 4.63215123073791E-0002 4.60813197382286E-0002 4.58420048506462E-0002 + 4.56035658735389E-0002 4.53660010358601E-0002 4.51293085666118E-0002 4.48934866948498E-0002 4.46585336496881E-0002 + 4.44244476603015E-0002 4.41912269559316E-0002 4.39588697658889E-0002 4.37273743195581E-0002 4.34967388464029E-0002 + 4.32669615759679E-0002 4.30380407378853E-0002 4.28099745618772E-0002 4.25827612777602E-0002 4.23563991154507E-0002 + 4.21308863049670E-0002 4.19062210764359E-0002 4.16824016600946E-0002 4.14594262862963E-0002 4.12372931855147E-0002 + 4.10160005883470E-0002 4.07955467255187E-0002 4.05759298278887E-0002 4.03571481264520E-0002 4.01391998523456E-0002 + 3.99220832368515E-0002 3.97057965114011E-0002 3.94903379075812E-0002 3.92757056571356E-0002 3.90618979919721E-0002 + 3.88489131441647E-0002 3.86367493459591E-0002 3.84254048297775E-0002 3.82148778282212E-0002 3.80051665740772E-0002 + 3.77962693003208E-0002 3.75881842401206E-0002 3.73809096268439E-0002 3.71744436940593E-0002 3.69687846755428E-0002 + 3.67639308052812E-0002 3.65598803174766E-0002 3.63566314465523E-0002 3.61541824271548E-0002 3.59525314941610E-0002 + 3.57516768826805E-0002 3.55516168280609E-0002 3.53523495658934E-0002 3.51538733320151E-0002 3.49561863625162E-0002 + 3.47592868937422E-0002 3.45631731622993E-0002 3.43678434050603E-0002 3.41732958591668E-0002 3.39795287620359E-0002 + 3.37865403513636E-0002 3.35943288651295E-0002 3.34028925416025E-0002 3.32122296193441E-0002 3.30223383372135E-0002 + 3.28332169343732E-0002 3.26448636502919E-0002 3.24572767247511E-0002 3.22704543978485E-0002 3.20843949100027E-0002 + 3.18990965019592E-0002 3.17145574147935E-0002 3.15307758899174E-0002 3.13477501690824E-0002 3.11654784943849E-0002 + 3.09839591082721E-0002 3.08031902535447E-0002 3.06231701733640E-0002 3.04438971112547E-0002 3.02653693111107E-0002 + 3.00875850172004E-0002 2.99105424741704E-0002 2.97342399270514E-0002 2.95586756212624E-0002 2.93838478026157E-0002 + 2.92097547173224E-0002 2.90363946119960E-0002 2.88637657336593E-0002 2.86918663297473E-0002 2.85206946481129E-0002 + 2.83502489370328E-0002 2.81805274452109E-0002 2.80115284217847E-0002 2.78432501163288E-0002 2.76756907788611E-0002 + 2.75088486598478E-0002 2.73427220102075E-0002 2.71773090813168E-0002 2.70126081250157E-0002 2.68486173936118E-0002 + 2.66853351398865E-0002 2.65227596170987E-0002 2.63608890789910E-0002 2.61997217797946E-0002 2.60392559742338E-0002 + 2.58794899175319E-0002 2.57204218654160E-0002 2.55620500741217E-0002 2.54043728003995E-0002 2.52473883015184E-0002 + 2.50910948352726E-0002 2.49354906599854E-0002 2.47805740345150E-0002 2.46263432182603E-0002 2.44727964711648E-0002 + 2.43199320537233E-0002 2.41677482269857E-0002 2.40162432525633E-0002 2.38654153926341E-0002 2.37152629099472E-0002 + 2.35657840678292E-0002 2.34169771301886E-0002 2.32688403615216E-0002 2.31213720269176E-0002 2.29745703920638E-0002 + 2.28284337232517E-0002 2.26829602873813E-0002 2.25381483519671E-0002 2.23939961851438E-0002 2.22505020556709E-0002 + 2.21076642329385E-0002 2.19654809869733E-0002 2.18239505884429E-0002 2.16830713086624E-0002 2.15428414195991E-0002 + 2.14032591938780E-0002 2.12643229047881E-0002 2.11260308262866E-0002 2.09883812330060E-0002 2.08513724002580E-0002 + 2.07150026040400E-0002 2.05792701210409E-0002 2.04441732286455E-0002 2.03097102049417E-0002 2.01758793287244E-0002 + 2.00426788795020E-0002 1.99101071375026E-0002 1.97781623836780E-0002 1.96468428997110E-0002 1.95161469680199E-0002 + 1.93860728717646E-0002 1.92566188948526E-0002 1.91277833219438E-0002 1.89995644384574E-0002 1.88719605305764E-0002 + 1.87449698852539E-0002 1.86185907902192E-0002 1.84928215339828E-0002 1.83676604058428E-0002 1.82431056958902E-0002 + 1.81191556950146E-0002 1.79958086949109E-0002 1.78730629880839E-0002 1.77509168678551E-0002 1.76293686283680E-0002 + 1.75084165645937E-0002 1.73880589723377E-0002 1.72682941482451E-0002 1.71491203898060E-0002 1.70305359953629E-0002 + 1.69125392641148E-0002 1.67951284961248E-0002 1.66783019923247E-0002 1.65620580545215E-0002 1.64463949854036E-0002 + 1.63313110885464E-0002 1.62168046684185E-0002 1.61028740303873E-0002 1.59895174807254E-0002 1.58767333266168E-0002 + 1.57645198761622E-0002 1.56528754383861E-0002 1.55417983232415E-0002 1.54312868416172E-0002 1.53213393053434E-0002 + 1.52119540271975E-0002 1.51031293209110E-0002 1.49948635011745E-0002 1.48871548836449E-0002 1.47800017849511E-0002 + 1.46734025226999E-0002 1.45673554154827E-0002 1.44618587828813E-0002 1.43569109454740E-0002 1.42525102248425E-0002 + 1.41486549435773E-0002 1.40453434252844E-0002 1.39425739945914E-0002 1.38403449771536E-0002 1.37386546996609E-0002 + 1.36375014898433E-0002 1.35368836764776E-0002 1.34367995893937E-0002 1.33372475594809E-0002 1.32382259186943E-0002 + 1.31397330000609E-0002 1.30417671376860E-0002 1.29443266667603E-0002 1.28474099235649E-0002 1.27510152454792E-0002 + 1.26551409709862E-0002 1.25597854396794E-0002 1.24649469922693E-0002 1.23706239705897E-0002 1.22768147176042E-0002 + 1.21835175774125E-0002 1.20907308952573E-0002 1.19984530175305E-0002 1.19066822917798E-0002 1.18154170667153E-0002 + 1.17246556922158E-0002 1.16343965193356E-0002 1.15446379003112E-0002 1.14553781885672E-0002 1.13666157387240E-0002 + 1.12783489066033E-0002 1.11905760492354E-0002 1.11032955248659E-0002 1.10165056929614E-0002 1.09302049142177E-0002 + 1.08443915505651E-0002 1.07590639651757E-0002 1.06742205224703E-0002 1.05898595881245E-0002 1.05059795290759E-0002 + 1.04225787135309E-0002 1.03396555109709E-0002 1.02572082921598E-0002 1.01752354291503E-0002 1.00937352952907E-0002 + 1.00127062652320E-0002 9.93214671493436E-0003 9.85205502167434E-0003 9.77242956405137E-0003 9.69326872199471E-0003 + 9.61457087677070E-0003 9.53633441098893E-0003 9.45855770860995E-0003 9.38123915495149E-0003 9.30437713669569E-0003 + 9.22797004189630E-0003 9.15201625998503E-0003 9.07651418177919E-0003 9.00146219948809E-0003 8.92685870672030E-0003 + 8.85270209849091E-0003 8.77899077122792E-0003 8.70572312278001E-0003 8.63289755242300E-0003 8.56051246086710E-0003 + 8.48856625026431E-0003 8.41705732421489E-0003 8.34598408777515E-0003 8.27534494746397E-0003 8.20513831127018E-0003 + 8.13536258865997E-0003 8.06601619058349E-0003 7.99709752948259E-0003 7.92860501929756E-0003 7.86053707547450E-0003 + 7.79289211497276E-0003 7.72566855627174E-0003 7.65886481937835E-0003 7.59247932583450E-0003 7.52651049872380E-0003 + 7.46095676267949E-0003 7.39581654389121E-0003 7.33108827011251E-0003 7.26677037066842E-0003 7.20286127646223E-0003 + 7.13935941998349E-0003 7.07626323531483E-0003 7.01357115813955E-0003 6.95128162574925E-0003 6.88939307705074E-0003 + 6.82790395257399E-0003 6.76681269447912E-0003 6.70611774656404E-0003 6.64581755427212E-0003 6.58591056469917E-0003 + 6.52639522660153E-0003 6.46726999040302E-0003 6.40853330820275E-0003 6.35018363378277E-0003 6.29221942261523E-0003 + 6.23463913187041E-0003 6.17744122042385E-0003 6.12062414886417E-0003 6.06418637950082E-0003 6.00812637637128E-0003 + 5.95244260524919E-0003 5.89713353365154E-0003 5.84219763084655E-0003 5.78763336786151E-0003 5.73343921749011E-0003 + 5.67961365430029E-0003 5.62615515464219E-0003 5.57306219665544E-0003 5.52033326027736E-0003 5.46796682725035E-0003 + 5.41596138112979E-0003 5.36431540729204E-0003 5.31302739294182E-0003 5.26209582712051E-0003 5.21151920071353E-0003 + 5.16129600645841E-0003 5.11142473895279E-0003 5.06190389466192E-0003 5.01273197192696E-0003 4.96390747097254E-0003 + 4.91542889391479E-0003 4.86729474476951E-0003 4.81950352945964E-0003 4.77205375582375E-0003 4.72494393362355E-0003 + 4.67817257455210E-0003 4.63173819224197E-0003 4.58563930227284E-0003 4.53987442218000E-0003 4.49444207146203E-0003 + 4.44934077158899E-0003 4.40456904601066E-0003 4.36012542016429E-0003 4.31600842148310E-0003 4.27221657940402E-0003 + 4.22874842537604E-0003 4.18560249286845E-0003 4.14277731737872E-0003 4.10027143644084E-0003 4.05808338963365E-0003 + 4.01621171858871E-0003 3.97465496699892E-0003 3.93341168062638E-0003 3.89248040731083E-0003 3.85185969697807E-0003 + 3.81154810164782E-0003 3.77154417544252E-0003 3.73184647459522E-0003 3.69245355745805E-0003 3.65336398451078E-0003 + 3.61457631836873E-0003 3.57608912379163E-0003 3.53790096769159E-0003 3.50001041914168E-0003 3.46241604938448E-0003 + 3.42511643184019E-0003 3.38811014211541E-0003 3.35139575801133E-0003 3.31497185953230E-0003 3.27883702889447E-0003 + 3.24298985053397E-0003 3.20742891111580E-0003 3.17215279954205E-0003 3.13716010696057E-0003 3.10244942677367E-0003 + 3.06801935464640E-0003 3.03386848851548E-0003 2.99999542859762E-0003 2.96639877739827E-0003 2.93307713972037E-0003 + 2.90002912267273E-0003 2.86725333567900E-0003 2.83474839048612E-0003 2.80251290117309E-0003 2.77054548415983E-0003 + 2.73884475821567E-0003 2.70740934446819E-0003 2.67623786641214E-0003 2.64532894991791E-0003 2.61468122324063E-0003 + 2.58429331702871E-0003 2.55416386433279E-0003 2.52429150061468E-0003 2.49467486375595E-0003 2.46531259406706E-0003 + 2.43620333429606E-0003 2.40734572963751E-0003 2.37873842774157E-0003 2.35038007872264E-0003 2.32226933516857E-0003 + 2.29440485214944E-0003 2.26678528722657E-0003 2.23940930046164E-0003 2.21227555442545E-0003 2.18538271420723E-0003 + 2.15872944742340E-0003 2.13231442422676E-0003 2.10613631731563E-0003 2.08019380194273E-0003 2.05448555592449E-0003 + 2.02901025964999E-0003 2.00376659609016E-0003 1.97875325080699E-0003 1.95396891196252E-0003 1.92941227032825E-0003 + 1.90508201929407E-0003 1.88097685487763E-0003 1.85709547573360E-0003 1.83343658316273E-0003 1.80999888112123E-0003 + 1.78678107623006E-0003 1.76378187778410E-0003 1.74099999776158E-0003 1.71843415083329E-0003 1.69608305437192E-0003 + 1.67394542846154E-0003 1.65201999590673E-0003 1.63030548224221E-0003 1.60880061574204E-0003 1.58750412742909E-0003 + 1.56641475108455E-0003 1.54553122325721E-0003 1.52485228327309E-0003 1.50437667324477E-0003 1.48410313808091E-0003 + 1.46403042549589E-0003 1.44415728601910E-0003 1.42448247300468E-0003 1.40500474264095E-0003 1.38572285395999E-0003 + 1.36663556884733E-0003 1.34774165205138E-0003 1.32903987119323E-0003 1.31052899677611E-0003 1.29220780219512E-0003 + 1.27407506374695E-0003 1.25612956063942E-0003 1.23837007500132E-0003 1.22079539189202E-0003 1.20340429931121E-0003 + 1.18619558820875E-0003 1.16916805249425E-0003 1.15232048904698E-0003 1.13565169772566E-0003 1.11916048137816E-0003 + 1.10284564585148E-0003 1.08670600000144E-0003 1.07074035570262E-0003 1.05494752785824E-0003 1.03932633440998E-0003 + 1.02387559634800E-0003 1.00859413772072E-0003 9.93480785644850E-0004 9.78534370315349E-0004 9.63753725015321E-0004 + 9.49137686126109E-0004 9.34685093137187E-0004 9.20394788656228E-0004 9.06265618419192E-0004 8.92296431300258E-0004 + 8.78486079322024E-0004 8.64833417665480E-0004 8.51337304680154E-0004 8.37996601894276E-0004 8.24810174024807E-0004 + 8.11776888987704E-0004 7.98895617907986E-0004 7.86165235129959E-0004 7.73584618227463E-0004 7.61152648013978E-0004 + 7.48868208552979E-0004 7.36730187168080E-0004 7.24737474453344E-0004 7.12888964283604E-0004 7.01183553824667E-0004 + 6.89620143543737E-0004 6.78197637219650E-0004 6.66914941953263E-0004 6.55770968177862E-0004 6.44764629669456E-0004 + 6.33894843557221E-0004 6.23160530333952E-0004 6.12560613866401E-0004 6.02094021405827E-0004 5.91759683598375E-0004 + 5.81556534495594E-0004 5.71483511564966E-0004 5.61539555700346E-0004 5.51723611232578E-0004 5.42034625939966E-0004 + 5.32471551058876E-0004 5.23033341294345E-0004 5.13718954830606E-0004 5.04527353341792E-0004 4.95457502002485E-0004 + 4.86508369498406E-0004 4.77678928037107E-0004 4.68968153358582E-0004 4.60375024746049E-0004 4.51898525036594E-0004 + 4.43537640631935E-0004 4.35291361509204E-0004 4.27158681231642E-0004 4.19138596959465E-0004 4.11230109460593E-0004 + 4.03432223121501E-0004 3.95743945958080E-0004 3.88164289626423E-0004 3.80692269433771E-0004 3.73326904349333E-0004 + 3.66067217015219E-0004 3.58912233757381E-0004 3.51860984596507E-0004 3.44912503258993E-0004 3.38065827187945E-0004 + 3.31319997554109E-0004 3.24674059266938E-0004 3.18127060985566E-0004 3.11678055129869E-0004 3.05326097891542E-0004 + 2.99070249245127E-0004 2.92909572959159E-0004 2.86843136607228E-0004 2.80870011579126E-0004 2.74989273092010E-0004 + 2.69200000201517E-0004 2.63501275812994E-0004 2.57892186692652E-0004 2.52371823478791E-0004 2.46939280693057E-0004 + 2.41593656751641E-0004 2.36334053976596E-0004 2.31159578607075E-0004 2.26069340810648E-0004 2.21062454694643E-0004 + 2.16138038317431E-0004 2.11295213699830E-0004 2.06533106836436E-0004 2.01850847707020E-0004 1.97247570287957E-0004 + 1.92722412563605E-0004 1.88274516537790E-0004 1.83903028245223E-0004 1.79607097762994E-0004 1.75385879222079E-0004 + 1.71238530818817E-0004 1.67164214826453E-0004 1.63162097606702E-0004 1.59231349621272E-0004 1.55371145443484E-0004 + 1.51580663769841E-0004 1.47859087431652E-0004 1.44205603406683E-0004 1.40619402830773E-0004 1.37099681009542E-0004 + 1.33645637430045E-0004 1.30256475772489E-0004 1.26931403921966E-0004 1.23669633980167E-0004 1.20470382277170E-0004 + 1.17332869383189E-0004 1.14256320120377E-0004 1.11239963574647E-0004 1.08283033107480E-0004 1.05384766367796E-0004 + 1.02544405303794E-0004 9.97611961748507E-0005 9.70343895634205E-0005 9.43632403869404E-0005 9.17470079097869E-0005 + 8.91849557552095E-0005 8.66763519173119E-0005 8.42204687730513E-0005 8.18165830942255E-0005 7.94639760595224E-0005 + 7.71619332665441E-0005 7.49097447438778E-0005 7.27067049631839E-0005 7.05521128512757E-0005 6.84452718022564E-0005 + 6.63854896896363E-0005 6.43720788784924E-0005 6.24043562376469E-0005 6.04816431518413E-0005 5.86032655339508E-0005 + 5.67685538372163E-0005 5.49768430674721E-0005 5.32274727954251E-0005 5.15197871689194E-0005 4.98531349252414E-0005 + 4.82268694034413E-0005 4.66403485566546E-0005 4.50929349644697E-0005 4.35839958452867E-0005 4.21129030687118E-0005 + 4.06790331679708E-0005 3.92817673523229E-0005 3.79204915195189E-0005 3.65945962682525E-0005 3.53034769106463E-0005 + 3.40465334847565E-0005 3.28231707670800E-0005 3.16327982851029E-0005 3.04748303298453E-0005 2.93486859684392E-0005 + 2.82537890567245E-0005 2.71895682518497E-0005 2.61554570249116E-0005 2.51508936735939E-0005 2.41753213348366E-0005 + 2.32281879975244E-0005 2.23089465151817E-0005 2.14170546187029E-0005 2.05519749290854E-0005 1.97131749701919E-0005 + 1.89001271815304E-0005 1.81123089310449E-0005 1.73492025279332E-0005 1.66102952354827E-0005 1.58950792839167E-0005 + 1.52030518832722E-0005 1.45337152362837E-0005 1.38865765512940E-0005 1.32611480551835E-0005 1.26569470063110E-0005 + 1.20734957074842E-0005 1.15103215189379E-0005 1.09669568713391E-0005 1.04429392788091E-0005 9.93781135195981E-0006 + 9.45112081095702E-0006 8.98242049859409E-0006 8.53126839339030E-0006 8.09722762270786E-0006 7.67986647588266E-0006 + 7.27875841738165E-0006 6.89348209997166E-0006 6.52362137791223E-0006 6.16876532016700E-0006 5.82850822362999E-0006 + 5.50244962637713E-0006 5.19019432093073E-0006 4.89135236754701E-0006 4.60553910752246E-0006 4.33237517651587E-0006 + 4.07148651789450E-0006 3.82250439609446E-0006 3.58506541000347E-0006 3.35881150636250E-0006 3.14338999318387E-0006 + 2.93845355319262E-0006 2.74366025728299E-0006 2.55867357799691E-0006 2.38316240302126E-0006 2.21680104870267E-0006 + 2.05926927358340E-0006 1.91025229195641E-0006 1.76944078743779E-0006 1.63653092656128E-0006 1.51122437238945E-0006 + 1.39322829814592E-0006 1.28225540086673E-0006 1.17802391506979E-0006 1.08025762644564E-0006 9.88685885565703E-0007 + 9.03043621611189E-0007 8.23071356121290E-0007 7.48515216759841E-0007 6.79126951102860E-0007 6.14663940444181E-0007 + 5.54889213621454E-0007 4.99571460861550E-0007 4.48485047644798E-0007 4.01410028589742E-0007 3.58132161356480E-0007 + 3.18442920570190E-0007 2.82139511764137E-0007 2.49024885341830E-0007 2.18907750559434E-0007 1.91602589527166E-0007 + 1.66929671230743E-0007 1.44715065572407E-0007 1.24790657431343E-0007 1.06994160744177E-0007 9.11691326047926E-0008 + 7.71649873840908E-0008 6.48370108694428E-0008 5.40463744237364E-0008 4.46601491643336E-0008 3.65513201617634E-0008 + 2.95988006581015E-0008 2.36874463052992E-0008 1.87080694231910E-0008 1.45574532774232E-0008 1.11383663772096E-0008 + 8.35957679290722E-0009 6.13586649353564E-0009 4.38804570413190E-0009 3.04296728305188E-0009 2.03354111918650E-0009 + 1.29874854910626E-0009 7.83656794181791E-0010 4.39433417659619E-0010 2.23360801735872E-0010 9.88506446295183E-0011 + 3.54584776731726E-0011 8.89820244129931E-0012 1.05664792663584E-0012 8.14778362579703E-0015 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 + 1.00000000000000E+0012 1.00000000000000E+0012 9.35953757140299E+0003 9.30889371647277E+0003 9.25862739664878E+0003 + 9.20873438494922E+0003 9.15921052541882E+0003 9.11005173160411E+0003 9.06125398506483E+0003 9.01281333392052E+0003 + 8.96472589143153E+0003 8.91698783461344E+0003 8.86959540288433E+0003 8.82254489674385E+0003 8.77583267648338E+0003 + 8.72945516092667E+0003 8.68340882620004E+0003 8.63769020453142E+0003 8.59229588307768E+0003 8.54722250277942E+0003 + 8.50246675724264E+0003 8.45802539164646E+0003 8.41389520167660E+0003 8.37007303248353E+0003 8.32655577766518E+0003 + 8.28334037827320E+0003 8.24042382184241E+0003 8.19780314144292E+0003 8.15547541475408E+0003 8.11343776316023E+0003 + 8.07168735086709E+0003 8.03022138403888E+0003 7.98903710995529E+0003 7.94813181618792E+0003 7.90750282979581E+0003 + 7.86714751653945E+0003 7.82706328011293E+0003 7.78724756139370E+0003 7.74769783770968E+0003 7.70841162212303E+0003 + 7.66938646273044E+0003 7.63061994197944E+0003 7.59210967600023E+0003 7.55385331395288E+0003 7.51584853738931E+0003 + 7.47809305962987E+0003 7.44058462515405E+0003 7.40332100900499E+0003 7.36630001620754E+0003 7.32951948119948E+0003 + 7.29297726727552E+0003 7.25667126604395E+0003 7.22059939689544E+0003 7.18475960648385E+0003 7.14914986821863E+0003 + 7.11376818176869E+0003 7.07861257257724E+0003 7.04368109138766E+0003 7.00897181377972E+0003 6.97448283971632E+0003 + 6.94021229310020E+0003 6.90615832134050E+0003 6.87231909492896E+0003 6.83869280702545E+0003 6.80527767305263E+0003 + 6.77207193029961E+0003 6.73907383753426E+0003 6.70628167462406E+0003 6.67369374216518E+0003 6.64130836111982E+0003 + 6.60912387246131E+0003 6.57713863682699E+0003 6.54535103417865E+0003 6.51375946347031E+0003 6.48236234232320E+0003 + 6.45115810670771E+0003 6.42014521063228E+0003 6.38932212583888E+0003 6.35868734150509E+0003 6.32823936395250E+0003 + 6.29797671636138E+0003 6.26789793849141E+0003 6.23800158640833E+0003 6.20828623221639E+0003 6.17875046379647E+0003 + 6.14939288454973E+0003 6.12021211314660E+0003 6.09120678328110E+0003 6.06237554343030E+0003 6.03371705661873E+0003 + 6.00523000018779E+0003 5.97691306556990E+0003 5.94876495806732E+0003 5.92078439663558E+0003 5.89297011367131E+0003 + 5.86532085480451E+0003 5.83783537869499E+0003 5.81051245683306E+0003 5.78335087334418E+0003 5.75634942479765E+0003 + 5.72950692001916E+0003 5.70282217990711E+0003 5.67629403725264E+0003 5.64992133656326E+0003 5.62370293389002E+0003 + 5.59763769665812E+0003 5.57172450350090E+0003 5.54596224409710E+0003 5.52034981901136E+0003 5.49488613953784E+0003 + 5.46957012754691E+0003 5.44440071533486E+0003 5.41937684547650E+0003 5.39449747068068E+0003 5.36976155364858E+0003 + 5.34516806693468E+0003 5.32071599281052E+0003 5.29640432313097E+0003 5.27223205920307E+0003 5.24819821165745E+0003 + 5.22430180032205E+0003 5.20054185409832E+0003 5.17691741083976E+0003 5.15342751723263E+0003 5.13007122867903E+0003 + 5.10684760918204E+0003 5.08375573123304E+0003 5.06079467570113E+0003 5.03796353172450E+0003 5.01526139660391E+0003 + 4.99268737569798E+0003 4.97024058232051E+0003 4.94792013763955E+0003 4.92572517057837E+0003 4.90365481771817E+0003 + 4.88170822320250E+0003 4.85988453864343E+0003 4.83818292302940E+0003 4.81660254263461E+0003 4.79514257093006E+0003 + 4.77380218849617E+0003 4.75258058293688E+0003 4.73147694879523E+0003 4.71049048747042E+0003 4.68962040713633E+0003 + 4.66886592266135E+0003 4.64822625552967E+0003 4.62770063376380E+0003 4.60728829184851E+0003 4.58698847065596E+0003 + 4.56680041737214E+0003 4.54672338542447E+0003 4.52675663441068E+0003 4.50689943002880E+0003 4.48715104400832E+0003 + 4.46751075404249E+0003 4.44797784372168E+0003 4.42855160246788E+0003 4.40923132547015E+0003 4.39001631362127E+0003 + 4.37090587345520E+0003 4.35189931708570E+0003 4.33299596214584E+0003 4.31419513172845E+0003 4.29549615432753E+0003 + 4.27689836378058E+0003 4.25840109921179E+0003 4.24000370497612E+0003 4.22170553060425E+0003 4.20350593074834E+0003 + 4.18540426512864E+0003 4.16739989848088E+0003 4.14949220050447E+0003 4.13168054581147E+0003 4.11396431387631E+0003 + 4.09634288898622E+0003 4.07881566019251E+0003 4.06138202126238E+0003 4.04404137063159E+0003 4.02679311135774E+0003 + 4.00963665107420E+0003 3.99257140194480E+0003 3.97559678061904E+0003 3.95871220818800E+0003 3.94191711014091E+0003 + 3.92521091632222E+0003 3.90859306088940E+0003 3.89206298227119E+0003 3.87562012312653E+0003 3.85926393030403E+0003 + 3.84299385480194E+0003 3.82680935172873E+0003 3.81070988026416E+0003 3.79469490362091E+0003 3.77876388900667E+0003 + 3.76291630758679E+0003 3.74715163444739E+0003 3.73146934855894E+0003 3.71586893274039E+0003 3.70034987362365E+0003 + 3.68491166161866E+0003 3.66955379087879E+0003 3.65427575926677E+0003 3.63907706832101E+0003 3.62395722322236E+0003 + 3.60891573276128E+0003 3.59395210930542E+0003 3.57906586876764E+0003 3.56425653057439E+0003 3.54952361763445E+0003 + 3.53486665630814E+0003 3.52028517637682E+0003 3.50577871101284E+0003 3.49134679674976E+0003 3.47698897345302E+0003 + 3.46270478429089E+0003 3.44849377570581E+0003 3.43435549738604E+0003 3.42028950223769E+0003 3.40629534635699E+0003 + 3.39237258900298E+0003 3.37852079257046E+0003 3.36473952256326E+0003 3.35102834756783E+0003 3.33738683922713E+0003 + 3.32381457221477E+0003 3.31031112420955E+0003 3.29687607587017E+0003 3.28350901081027E+0003 3.27020951557377E+0003 + 3.25697717961046E+0003 3.24381159525186E+0003 3.23071235768732E+0003 3.21767906494044E+0003 3.20471131784574E+0003 + 3.19180872002546E+0003 3.17897087786681E+0003 3.16619740049931E+0003 3.15348789977239E+0003 3.14084199023335E+0003 + 3.12825928910537E+0003 3.11573941626589E+0003 3.10328199422515E+0003 3.09088664810499E+0003 3.07855300561785E+0003 + 3.06628069704595E+0003 3.05406935522081E+0003 3.04191861550278E+0003 3.02982811576100E+0003 3.01779749635337E+0003 + 3.00582640010685E+0003 2.99391447229793E+0003 2.98206136063322E+0003 2.97026671523036E+0003 2.95853018859902E+0003 + 2.94685143562211E+0003 2.93523011353723E+0003 2.92366588191822E+0003 2.91215840265694E+0003 2.90070733994521E+0003 + 2.88931236025696E+0003 2.87797313233048E+0003 2.86668932715090E+0003 2.85546061793286E+0003 2.84428668010324E+0003 + 2.83316719128417E+0003 2.82210183127613E+0003 2.81109028204123E+0003 2.80013222768667E+0003 2.78922735444832E+0003 + 2.77837535067443E+0003 2.76757590680959E+0003 2.75682871537875E+0003 2.74613347097139E+0003 2.73548987022589E+0003 + 2.72489761181398E+0003 2.71435639642542E+0003 2.70386592675269E+0003 2.69342590747594E+0003 2.68303604524803E+0003 + 2.67269604867967E+0003 2.66240562832474E+0003 2.65216449666576E+0003 2.64197236809939E+0003 2.63182895892219E+0003 + 2.62173398731641E+0003 2.61168717333594E+0003 2.60168823889239E+0003 2.59173690774125E+0003 2.58183290546827E+0003 + 2.57197595947583E+0003 2.56216579896953E+0003 2.55240215494483E+0003 2.54268476017386E+0003 2.53301334919229E+0003 + 2.52338765828639E+0003 2.51380742548008E+0003 2.50427239052221E+0003 2.49478229487391E+0003 2.48533688169600E+0003 + 2.47593589583656E+0003 2.46657908381862E+0003 2.45726619382786E+0003 2.44799697570056E+0003 2.43877118091148E+0003 + 2.42958856256201E+0003 2.42044887536830E+0003 2.41135187564952E+0003 2.40229732131624E+0003 2.39328497185891E+0003 + 2.38431458833638E+0003 2.37538593336459E+0003 2.36649877110528E+0003 2.35765286725487E+0003 2.34884798903333E+0003 + 2.34008390517329E+0003 2.33136038590904E+0003 2.32267720296582E+0003 2.31403412954907E+0003 2.30543094033380E+0003 + 2.29686741145405E+0003 2.28834332049245E+0003 2.27985844646984E+0003 2.27141256983497E+0003 2.26300547245432E+0003 + 2.25463693760195E+0003 2.24630674994949E+0003 2.23801469555614E+0003 2.22976056185882E+0003 2.22154413766234E+0003 + 2.21336521312971E+0003 2.20522357977243E+0003 2.19711903044100E+0003 2.18905135931533E+0003 2.18102036189541E+0003 + 2.17302583499188E+0003 2.16506757671682E+0003 2.15714538647450E+0003 2.14925906495229E+0003 2.14140841411157E+0003 + 2.13359323717874E+0003 2.12581333863636E+0003 2.11806852421421E+0003 2.11035860088059E+0003 2.10268337683356E+0003 + 2.09504266149233E+0003 2.08743626548865E+0003 2.07986400065833E+0003 2.07232568003276E+0003 2.06482111783057E+0003 + 2.05735012944929E+0003 2.04991253145709E+0003 2.04250814158461E+0003 2.03513677871683E+0003 2.02779826288501E+0003 + 2.02049241525867E+0003 2.01321905813767E+0003 2.00597801494431E+0003 1.99876911021553E+0003 1.99159216959513E+0003 + 1.98444701982609E+0003 1.97733348874289E+0003 1.97025140526397E+0003 1.96320059938417E+0003 1.95618090216724E+0003 + 1.94919214573850E+0003 1.94223416327740E+0003 1.93530678901025E+0003 1.92840985820297E+0003 1.92154320715391E+0003 + 1.91470667318666E+0003 1.90790009464304E+0003 1.90112331087598E+0003 1.89437616224261E+0003 1.88765849009730E+0003 + 1.88097013678477E+0003 1.87431094563328E+0003 1.86768076094788E+0003 1.86107942800363E+0003 1.85450679303896E+0003 + 1.84796270324904E+0003 1.84144700677922E+0003 1.83495955271847E+0003 1.82850019109291E+0003 1.82206877285941E+0003 + 1.81566514989916E+0003 1.80928917501137E+0003 1.80294070190697E+0003 1.79661958520235E+0003 1.79032568041319E+0003 + 1.78405884394831E+0003 1.77781893310353E+0003 1.77160580605564E+0003 1.76541932185637E+0003 1.75925934042643E+0003 + 1.75312572254955E+0003 1.74701832986666E+0003 1.74093702486998E+0003 1.73488167089724E+0003 1.72885213212595E+0003 + 1.72284827356766E+0003 1.71686996106229E+0003 1.71091706127251E+0003 1.70498944167813E+0003 1.69908697057058E+0003 + 1.69320951704737E+0003 1.68735695100664E+0003 1.68152914314173E+0003 1.67572596493577E+0003 1.66994728865636E+0003 + 1.66419298735024E+0003 1.65846293483802E+0003 1.65275700570895E+0003 1.64707507531570E+0003 1.64141701976924E+0003 + 1.63578271593370E+0003 1.63017204142125E+0003 1.62458487458712E+0003 1.61902109452453E+0003 1.61348058105976E+0003 + 1.60796321474715E+0003 1.60246887686428E+0003 1.59699744940700E+0003 1.59154881508471E+0003 1.58612285731546E+0003 + 1.58071946022123E+0003 1.57533850862323E+0003 1.56997988803714E+0003 1.56464348466850E+0003 1.55932918540804E+0003 + 1.55403687782714E+0003 1.54876645017319E+0003 1.54351779136514E+0003 1.53829079098895E+0003 1.53308533929315E+0003 + 1.52790132718439E+0003 1.52273864622304E+0003 1.51759718861885E+0003 1.51247684722657E+0003 1.50737751554166E+0003 + 1.50229908769602E+0003 1.49724145845374E+0003 1.49220452320688E+0003 1.48718817797127E+0003 1.48219231938240E+0003 + 1.47721684469122E+0003 1.47226165176014E+0003 1.46732663905885E+0003 1.46241170566037E+0003 1.45751675123702E+0003 + 1.45264167605639E+0003 1.44778638097745E+0003 1.44295076744660E+0003 1.43813473749374E+0003 1.43333819372847E+0003 + 1.42856103933617E+0003 1.42380317807425E+0003 1.41906451426833E+0003 1.41434495280847E+0003 1.40964439914547E+0003 + 1.40496275928711E+0003 1.40029993979452E+0003 1.39565584777851E+0003 1.39103039089592E+0003 1.38642347734602E+0003 + 1.38183501586696E+0003 1.37726491573217E+0003 1.37271308674690E+0003 1.36817943924463E+0003 1.36366388408365E+0003 + 1.35916633264360E+0003 1.35468669682203E+0003 1.35022488903098E+0003 1.34578082219362E+0003 1.34135440974089E+0003 + 1.33694556560816E+0003 1.33255420423192E+0003 1.32818024054649E+0003 1.32382358998076E+0003 1.31948416845493E+0003 + 1.31516189237734E+0003 1.31085667864121E+0003 1.30656844462153E+0003 1.30229710817184E+0003 1.29804258762116E+0003 + 1.29380480177085E+0003 1.28958366989155E+0003 1.28537911172009E+0003 1.28119104745644E+0003 1.27701939776074E+0003 + 1.27286408375024E+0003 1.26872502699637E+0003 1.26460214952174E+0003 1.26049537379722E+0003 1.25640462273905E+0003 + 1.25232981970590E+0003 1.24827088849602E+0003 1.24422775334435E+0003 1.24020033891976E+0003 1.23618857032214E+0003 + 1.23219237307967E+0003 1.22821167314601E+0003 1.22424639689755E+0003 1.22029647113068E+0003 1.21636182305905E+0003 + 1.21244238031091E+0003 1.20853807092638E+0003 1.20464882335480E+0003 1.20077456645211E+0003 1.19691522947821E+0003 + 1.19307074209433E+0003 1.18924103436047E+0003 1.18542603673282E+0003 1.18162568006120E+0003 1.17783989558654E+0003 + 1.17406861493831E+0003 1.17031177013211E+0003 1.16656929356710E+0003 1.16284111802356E+0003 1.15912717666049E+0003 + 1.15542740301308E+0003 1.15174173099040E+0003 1.14807009487292E+0003 1.14441242931017E+0003 1.14076866931837E+0003 + 1.13713875027805E+0003 1.13352260793177E+0003 1.12992017838175E+0003 1.12633139808762E+0003 1.12275620386407E+0003 + 1.11919453287865E+0003 1.11564632264948E+0003 1.11211151104300E+0003 1.10859003627179E+0003 1.10508183689231E+0003 + 1.10158685180277E+0003 1.09810502024088E+0003 1.09463628178175E+0003 1.09118057633572E+0003 1.08773784414623E+0003 + 1.08430802578768E+0003 1.08089106216336E+0003 1.07748689450337E+0003 1.07409546436248E+0003 1.07071671361816E+0003 + 1.06735058446847E+0003 1.06399701943004E+0003 1.06065596133608E+0003 1.05732735333433E+0003 1.05401113888514E+0003 + 1.05070726175941E+0003 1.04741566603668E+0003 1.04413629610319E+0003 1.04086909664989E+0003 1.03761401267058E+0003 + 1.03437098945994E+0003 1.03113997261170E+0003 1.02792090801670E+0003 1.02471374186105E+0003 1.02151842062426E+0003 + 1.01833489107739E+0003 1.01516310028124E+0003 1.01200299558452E+0003 1.00885452462203E+0003 1.00571763531287E+0003 + 1.00259227585867E+0003 9.99478394741816E+0002 9.96375940723675E+0002 9.93284862842871E+0002 9.90205110413534E+0002 + 9.87136633023588E+0002 9.84079380533033E+0002 9.81033303072250E+0002 9.77998351040310E+0002 9.74974475103302E+0002 + 9.71961626192663E+0002 9.68959755503532E+0002 9.65968814493100E+0002 9.62988754878983E+0002 9.60019528637603E+0002 + 9.57061088002575E+0002 9.54113385463116E+0002 9.51176373762451E+0002 9.48250005896240E+0002 9.45334235111012E+0002 + 9.42429014902611E+0002 9.39534299014649E+0002 9.36650041436974E+0002 9.33776196404147E+0002 9.30912718393928E+0002 + 9.28059562125772E+0002 9.25216682559339E+0002 9.22384034893008E+0002 9.19561574562407E+0002 9.16749257238948E+0002 + 9.13947038828378E+0002 9.11154875469333E+0002 9.08372723531903E+0002 9.05600539616217E+0002 9.02838280551015E+0002 + 9.00085903392260E+0002 8.97343365421728E+0002 8.94610624145636E+0002 8.91887637293257E+0002 8.89174362815554E+0002 + 8.86470758883826E+0002 8.83776783888358E+0002 8.81092396437080E+0002 8.78417555354241E+0002 8.75752219679081E+0002 + 8.73096348664526E+0002 8.70449901775877E+0002 8.67812838689522E+0002 8.65185119291643E+0002 8.62566703676946E+0002 + 8.59957552147385E+0002 8.57357625210906E+0002 8.54766883580194E+0002 8.52185288171427E+0002 8.49612800103045E+0002 + 8.47049380694520E+0002 8.44494991465138E+0002 8.41949594132790E+0002 8.39413150612767E+0002 8.36885623016565E+0002 + 8.34366973650705E+0002 8.31857165015545E+0002 8.29356159804116E+0002 8.26863920900959E+0002 8.24380411380967E+0002 + 8.21905594508241E+0002 8.19439433734945E+0002 8.16981892700182E+0002 8.14532935228862E+0002 8.12092525330588E+0002 + 8.09660627198551E+0002 8.07237205208419E+0002 8.04822223917249E+0002 8.02415648062396E+0002 8.00017442560436E+0002 + 7.97627572506089E+0002 7.95246003171157E+0002 7.92872700003463E+0002 7.90507628625797E+0002 7.88150754834878E+0002 + 7.85802044600308E+0002 7.83461464063547E+0002 7.81128979536887E+0002 7.78804557502432E+0002 7.76488164611094E+0002 + 7.74179767681581E+0002 7.71879333699406E+0002 7.69586829815893E+0002 7.67302223347194E+0002 7.65025481773312E+0002 + 7.62756572737130E+0002 7.60495464043445E+0002 7.58242123658010E+0002 7.55996519706582E+0002 7.53758620473978E+0002 + 7.51528394403134E+0002 7.49305810094173E+0002 7.47090836303474E+0002 7.44883441942757E+0002 7.42683596078164E+0002 + 7.40491267929350E+0002 7.38306426868585E+0002 7.36129042419850E+0002 7.33959084257951E+0002 7.31796522207631E+0002 + 7.29641326242693E+0002 7.27493466485126E+0002 7.25352913204233E+0002 7.23219636815777E+0002 7.21093607881117E+0002 + 7.18974797106359E+0002 7.16863175341515E+0002 7.14758713579658E+0002 7.12661382956087E+0002 7.10571154747506E+0002 + 7.08488000371193E+0002 7.06411891384183E+0002 7.04342799482460E+0002 7.02280696500145E+0002 7.00225554408696E+0002 + 6.98177345316109E+0002 6.96136041466131E+0002 6.94101615237470E+0002 6.92074039143014E+0002 6.90053285829055E+0002 + 6.88039328074518E+0002 6.86032138790197E+0002 6.84031691017989E+0002 6.82037957930144E+0002 6.80050912828508E+0002 + 6.78070529143779E+0002 6.76096780434769E+0002 6.74129640387658E+0002 6.72169082815273E+0002 6.70215081656355E+0002 + 6.68267610974836E+0002 6.66326644959122E+0002 6.64392157921384E+0002 6.62464124296842E+0002 6.60542518643067E+0002 + 6.58627315639279E+0002 6.56718490085655E+0002 6.54816016902634E+0002 6.52919871130235E+0002 6.51030027927374E+0002 + 6.49146462571187E+0002 6.47269150456359E+0002 6.45398067094452E+0002 6.43533188113246E+0002 6.41674489256075E+0002 + 6.39821946381172E+0002 6.37975535461020E+0002 6.36135232581704E+0002 6.34301013942268E+0002 6.32472855854074E+0002 + 6.30650734740173E+0002 6.28834627134666E+0002 6.27024509682087E+0002 6.25220359136772E+0002 6.23422152362246E+0002 + 6.21629866330607E+0002 6.19843478121914E+0002 6.18062964923580E+0002 6.16288304029774E+0002 6.14519472840815E+0002 + 6.12756448862582E+0002 6.10999209705920E+0002 6.09247733086055E+0002 6.07501996822008E+0002 6.05761978836014E+0002 + 6.04027657152948E+0002 6.02299009899753E+0002 6.00576015304866E+0002 5.98858651697660E+0002 5.97146897507874E+0002 + 5.95440731265062E+0002 5.93740131598035E+0002 5.92045077234307E+0002 5.90355546999551E+0002 5.88671519817058E+0002 + 5.86992974707188E+0002 5.85319890786838E+0002 5.83652247268908E+0002 5.81990023461769E+0002 5.80333198768735E+0002 + 5.78681752687544E+0002 5.77035664809829E+0002 5.75394914820611E+0002 5.73759482497776E+0002 5.72129347711569E+0002 + 5.70504490424088E+0002 5.68884890688773E+0002 5.67270528649912E+0002 5.65661384542141E+0002 5.64057438689946E+0002 + 5.62458671507176E+0002 5.60865063496549E+0002 5.59276595249174E+0002 5.57693247444060E+0002 5.56115000847644E+0002 + 5.54541836313307E+0002 5.52973734780911E+0002 5.51410677276316E+0002 5.49852644910923E+0002 5.48299618881203E+0002 + 5.46751580468238E+0002 5.45208511037263E+0002 5.43670392037208E+0002 5.42137205000243E+0002 5.40608931541335E+0002 + 5.39085553357792E+0002 5.37567052228826E+0002 5.36053410015104E+0002 5.34544608658315E+0002 5.33040630180729E+0002 + 5.31541456684766E+0002 5.30047070352566E+0002 5.28557453445556E+0002 5.27072588304029E+0002 5.25592457346720E+0002 + 5.24117043070384E+0002 5.22646328049380E+0002 5.21180294935254E+0002 5.19718926456330E+0002 5.18262205417295E+0002 + 5.16810114698794E+0002 5.15362637257029E+0002 5.13919756123347E+0002 5.12481454403850E+0002 5.11047715278991E+0002 + 5.09618522003182E+0002 5.08193857904399E+0002 5.06773706383796E+0002 5.05358050915311E+0002 5.03946875045288E+0002 + 5.02540162392086E+0002 5.01137896645705E+0002 4.99740061567405E+0002 4.98346640989328E+0002 4.96957618814129E+0002 + 4.95572979014600E+0002 4.94192705633302E+0002 4.92816782782202E+0002 4.91445194642302E+0002 4.90077925463281E+0002 + 4.88714959563135E+0002 4.87356281327816E+0002 4.86001875210879E+0002 4.84651725733126E+0002 4.83305817482257E+0002 + 4.81964135112518E+0002 4.80626663344358E+0002 4.79293386964079E+0002 4.77964290823495E+0002 4.76639359839594E+0002 + 4.75318578994194E+0002 4.74001933333610E+0002 4.72689407968317E+0002 4.71380988072620E+0002 4.70076658884321E+0002 + 4.68776405704390E+0002 4.67480213896642E+0002 4.66188068887407E+0002 4.64899956165212E+0002 4.63615861280456E+0002 + 4.62335769845097E+0002 4.61059667532327E+0002 4.59787540076266E+0002 4.58519373271640E+0002 4.57255152973477E+0002 + 4.55994865096793E+0002 4.54738495616289E+0002 4.53486030566040E+0002 4.52237456039194E+0002 4.50992758187672E+0002 + 4.49751923221863E+0002 4.48514937410330E+0002 4.47281787079512E+0002 4.46052458613429E+0002 4.44826938453387E+0002 + 4.43605213097690E+0002 4.42387269101350E+0002 4.41173093075798E+0002 4.39962671688595E+0002 4.38755991663157E+0002 + 4.37553039778460E+0002 4.36353802868769E+0002 4.35158267823353E+0002 4.33966421586211E+0002 4.32778251155791E+0002 + 4.31593743584721E+0002 4.30412885979534E+0002 4.29235665500395E+0002 4.28062069360836E+0002 4.26892084827484E+0002 + 4.25725699219795E+0002 4.24562899909791E+0002 4.23403674321798E+0002 4.22248009932179E+0002 4.21095894269080E+0002 + 4.19947314912167E+0002 4.18802259492371E+0002 4.17660715691634E+0002 4.16522671242651E+0002 4.15388113928620E+0002 + 4.14257031582992E+0002 4.13129412089218E+0002 4.12005243380503E+0002 4.10884513439562E+0002 4.09767210298368E+0002 + 4.08653322037916E+0002 4.07542836787975E+0002 4.06435742726848E+0002 4.05332028081136E+0002 4.04231681125496E+0002 + 4.03134690182406E+0002 4.02041043621929E+0002 4.00950729861480E+0002 3.99863737365592E+0002 3.98780054645685E+0002 + 3.97699670259838E+0002 3.96622572812559E+0002 3.95548750954557E+0002 3.94478193382517E+0002 3.93410888838875E+0002 + 3.92346826111596E+0002 3.91285994033950E+0002 3.90228381484292E+0002 3.89173977385843E+0002 3.88122770706473E+0002 + 3.87074750458480E+0002 3.86029905698379E+0002 3.84988225526684E+0002 3.83949699087698E+0002 3.82914315569298E+0002 + 3.81882064202726E+0002 3.80852934262380E+0002 3.79826915065603E+0002 3.78803995972479E+0002 3.77784166385625E+0002 + 3.76767415749987E+0002 3.75753733552637E+0002 3.74743109322568E+0002 3.73735532630496E+0002 3.72730993088659E+0002 + 3.71729480350617E+0002 3.70730984111054E+0002 3.69735494105582E+0002 3.68743000110547E+0002 3.67753491942830E+0002 + 3.66766959459659E+0002 3.65783392558413E+0002 3.64802781176433E+0002 3.63825115290830E+0002 3.62850384918296E+0002 + 3.61878580114921E+0002 3.60909690975997E+0002 3.59943707635841E+0002 3.58980620267604E+0002 3.58020419083092E+0002 + 3.57063094332579E+0002 3.56108636304629E+0002 3.55157035325914E+0002 3.54208281761032E+0002 3.53262366012333E+0002 + 3.52319278519737E+0002 3.51379009760561E+0002 3.50441550249341E+0002 3.49506890537658E+0002 3.48575021213964E+0002 + 3.47645932903412E+0002 3.46719616267678E+0002 3.45796062004799E+0002 3.44875260848996E+0002 3.43957203570506E+0002 + 3.43041880975420E+0002 3.42129283905509E+0002 3.41219403238061E+0002 3.40312229885716E+0002 3.39407754796302E+0002 + 3.38505968952670E+0002 3.37606863372534E+0002 3.36710429108308E+0002 3.35816657246945E+0002 3.34925538909779E+0002 + 3.34037065252365E+0002 3.33151227464320E+0002 3.32268016769170E+0002 3.31387424424189E+0002 3.30509441720246E+0002 + 3.29634059981651E+0002 3.28761270566001E+0002 3.27891064864025E+0002 3.27023434299436E+0002 3.26158370328777E+0002 + 3.25295864441271E+0002 3.24435908158674E+0002 3.23578493035122E+0002 3.22723610656988E+0002 3.21871252642733E+0002 + 3.21021410642756E+0002 3.20174076339256E+0002 3.19329241446082E+0002 3.18486897708591E+0002 3.17647036903504E+0002 + 3.16809650838765E+0002 3.15974731353399E+0002 3.15142270317372E+0002 3.14312259631449E+0002 3.13484691227056E+0002 + 3.12659557066143E+0002 3.11836849141044E+0002 3.11016559474342E+0002 3.10198680118731E+0002 3.09383203156882E+0002 + 3.08570120701308E+0002 3.07759424894228E+0002 3.06951107907438E+0002 3.06145161942174E+0002 3.05341579228982E+0002 + 3.04540352027589E+0002 3.03741472626768E+0002 3.02944933344213E+0002 3.02150726526405E+0002 3.01358844548489E+0002 + 3.00569279814142E+0002 2.99782024755449E+0002 2.98997071832775E+0002 2.98214413534639E+0002 2.97434042377591E+0002 + 2.96655950906087E+0002 2.95880131692364E+0002 2.95106577336318E+0002 2.94335280465382E+0002 2.93566233734405E+0002 + 2.92799429825529E+0002 2.92034861448070E+0002 2.91272521338397E+0002 2.90512402259817E+0002 2.89754497002451E+0002 + 2.88998798383117E+0002 2.88245299245219E+0002 2.87493992458622E+0002 2.86744870919540E+0002 2.85997927550423E+0002 + 2.85253155299838E+0002 2.84510547142356E+0002 2.83770096078439E+0002 2.83031795134329E+0002 2.82295637361932E+0002 + 2.81561615838708E+0002 2.80829723667559E+0002 2.80099953976721E+0002 2.79372299919650E+0002 2.78646754674916E+0002 + 2.77923311446092E+0002 2.77201963461647E+0002 2.76482703974835E+0002 2.75765526263595E+0002 2.75050423630435E+0002 + 2.74337389402335E+0002 2.73626416930634E+0002 2.72917499590929E+0002 2.72210630782971E+0002 2.71505803930558E+0002 + 2.70803012481434E+0002 2.70102249907188E+0002 2.69403509703145E+0002 2.68706785388272E+0002 2.68012070505072E+0002 + 2.67319358619485E+0002 2.66628643320788E+0002 2.65939918221493E+0002 2.65253176957252E+0002 2.64568413186753E+0002 + 2.63885620591628E+0002 2.63204792876348E+0002 2.62525923768135E+0002 2.61849007016856E+0002 2.61174036394933E+0002 + 2.60501005697246E+0002 2.59829908741035E+0002 2.59160739365810E+0002 2.58493491433253E+0002 2.57828158827126E+0002 + 2.57164735453177E+0002 2.56503215239048E+0002 2.55843592134182E+0002 2.55185860109731E+0002 2.54530013158466E+0002 + 2.53876045294684E+0002 2.53223950554119E+0002 2.52573722993852E+0002 2.51925356692221E+0002 2.51278845748731E+0002 + 2.50634184283968E+0002 2.49991366439507E+0002 2.49350386377828E+0002 2.48711238282227E+0002 2.48073916356728E+0002 + 2.47438414825999E+0002 2.46804727935264E+0002 2.46172849950217E+0002 2.45542775156941E+0002 2.44914497861818E+0002 + 2.44288012391447E+0002 2.43663313092560E+0002 2.43040394331940E+0002 2.42419250496335E+0002 2.41799875992377E+0002 + 2.41182265246502E+0002 2.40566412704862E+0002 2.39952312833251E+0002 2.39339960117019E+0002 2.38729349060992E+0002 + 2.38120474189394E+0002 2.37513330045764E+0002 2.36907911192882E+0002 2.36304212212683E+0002 2.35702227706184E+0002 + 2.35101952293400E+0002 2.34503380613275E+0002 2.33906507323594E+0002 2.33311327100915E+0002 2.32717834640487E+0002 + 2.32126024656173E+0002 2.31535891880379E+0002 2.30947431063975E+0002 2.30360636976218E+0002 2.29775504404682E+0002 + 2.29192028155180E+0002 2.28610203051690E+0002 2.28030023936283E+0002 2.27451485669049E+0002 2.26874583128021E+0002 + 2.26299311209108E+0002 2.25725664826017E+0002 2.25153638910185E+0002 2.24583228410706E+0002 2.24014428294258E+0002 + 2.23447233545035E+0002 2.22881639164675E+0002 2.22317640172189E+0002 2.21755231603892E+0002 2.21194408513333E+0002 + 2.20635165971227E+0002 2.20077499065384E+0002 2.19521402900642E+0002 2.18966872598797E+0002 2.18413903298539E+0002 + 2.17862490155378E+0002 2.17312628341583E+0002 2.16764313046111E+0002 2.16217539474543E+0002 2.15672302849016E+0002 + 2.15128598408156E+0002 2.14586421407016E+0002 2.14045767117007E+0002 2.13506630825834E+0002 2.12969007837432E+0002 + 2.12432893471901E+0002 2.11898283065443E+0002 2.11365171970295E+0002 2.10833555554668E+0002 2.10303429202686E+0002 + 2.09774788314317E+0002 2.09247628305315E+0002 2.08721944607157E+0002 2.08197732666978E+0002 2.07674987947515E+0002 + 2.07153705927040E+0002 2.06633882099301E+0002 2.06115511973462E+0002 2.05598591074039E+0002 2.05083114940846E+0002 + 2.04569079128927E+0002 2.04056479208503E+0002 2.03545310764910E+0002 2.03035569398537E+0002 2.02527250724772E+0002 + 2.02020350373941E+0002 2.01514863991248E+0002 2.01010787236721E+0002 2.00508115785149E+0002 2.00006845326030E+0002 + 1.99506971563508E+0002 1.99008490216322E+0002 1.98511397017743E+0002 1.98015687715523E+0002 1.97521358071835E+0002 + 1.97028403863219E+0002 1.96536820880525E+0002 1.96046604928859E+0002 1.95557751827526E+0002 1.95070257409977E+0002 + 1.94584117523753E+0002 1.94099328030430E+0002 1.93615884805567E+0002 1.93133783738650E+0002 1.92653020733040E+0002 + 1.92173591705916E+0002 1.91695492588226E+0002 1.91218719324634E+0002 1.90743267873462E+0002 1.90269134206645E+0002 + 1.89796314309672E+0002 1.89324804181537E+0002 1.88854599834690E+0002 1.88385697294979E+0002 1.87918092601605E+0002 + 1.87451781807067E+0002 1.86986760977111E+0002 1.86523026190683E+0002 1.86060573539877E+0002 1.85599399129880E+0002 + 1.85139499078932E+0002 1.84680869518265E+0002 1.84223506592064E+0002 1.83767406457410E+0002 1.83312565284235E+0002 + 1.82858979255271E+0002 1.82406648735785E+0002 1.81955696452256E+0002 1.81506176463385E+0002 1.81058083412041E+0002 + 1.80611411963281E+0002 1.80166156804249E+0002 1.79722312644077E+0002 1.79279874213789E+0002 1.78838836266201E+0002 + 1.78399193575826E+0002 1.77960940938774E+0002 1.77524073172660E+0002 1.77088585116505E+0002 1.76654471630640E+0002 + 1.76221727596613E+0002 1.75790347917096E+0002 1.75360327515785E+0002 1.74931661337314E+0002 1.74504344347154E+0002 + 1.74078371531528E+0002 1.73653737897312E+0002 1.73230438471946E+0002 1.72808468303345E+0002 1.72387822459802E+0002 + 1.71968496029902E+0002 1.71550484122432E+0002 1.71133781866287E+0002 1.70718384410386E+0002 1.70304286923579E+0002 + 1.69891484594560E+0002 1.69479972631779E+0002 1.69069746263354E+0002 1.68660800736984E+0002 1.68253131319863E+0002 + 1.67846733298589E+0002 1.67441601979087E+0002 1.67037732686511E+0002 1.66635120765172E+0002 1.66233761578441E+0002 + 1.65833650508675E+0002 1.65434782957125E+0002 1.65037154343856E+0002 1.64640760107663E+0002 1.64245595705989E+0002 + 1.63851656614840E+0002 1.63458938328707E+0002 1.63067436360481E+0002 1.62677146241370E+0002 1.62288063520824E+0002 + 1.61900183766448E+0002 1.61513502563925E+0002 1.61128015516939E+0002 1.60743718247089E+0002 1.60360606393812E+0002 + 1.59978675614310E+0002 1.59597921583462E+0002 1.59218339993755E+0002 1.58839926555200E+0002 1.58462676995259E+0002 + 1.58086587058763E+0002 1.57711652507842E+0002 1.57337869121844E+0002 1.56965232697260E+0002 1.56593739047649E+0002 + 1.56223384003564E+0002 1.55854163412476E+0002 1.55486073138698E+0002 1.55119109063315E+0002 1.54753267084105E+0002 + 1.54388543115471E+0002 1.54024933088362E+0002 1.53662432950208E+0002 1.53301038664839E+0002 1.52940746212419E+0002 + 1.52581551589373E+0002 1.52223450808313E+0002 1.51866439897971E+0002 1.51510514903124E+0002 1.51155671884529E+0002 + 1.50801906918845E+0002 1.50449216098572E+0002 1.50097595531977E+0002 1.49747041343023E+0002 1.49397549671305E+0002 + 1.49049116671979E+0002 1.48701738515693E+0002 1.48355411388522E+0002 1.48010131491895E+0002 1.47665895042537E+0002 + 1.47322698272392E+0002 1.46980537428563E+0002 1.46639408773245E+0002 1.46299308583655E+0002 1.45960233151972E+0002 + 1.45622178785266E+0002 1.45285141805439E+0002 1.44949118549155E+0002 1.44614105367778E+0002 1.44280098627308E+0002 + 1.43947094708316E+0002 1.43615090005882E+0002 1.43284080929529E+0002 1.42954063903165E+0002 1.42625035365013E+0002 + 1.42296991767557E+0002 1.41969929577474E+0002 1.41643845275573E+0002 1.41318735356735E+0002 1.40994596329852E+0002 + 1.40671424717766E+0002 1.40349217057204E+0002 1.40027969898724E+0002 1.39707679806653E+0002 1.39388343359023E+0002 + 1.39069957147517E+0002 1.38752517777408E+0002 1.38436021867496E+0002 1.38120466050057E+0002 1.37805846970777E+0002 + 1.37492161288698E+0002 1.37179405676160E+0002 1.36867576818741E+0002 1.36556671415202E+0002 1.36246686177430E+0002 + 1.35937617830376E+0002 1.35629463112007E+0002 1.35322218773243E+0002 1.35015881577903E+0002 1.34710448302651E+0002 + 1.34405915736936E+0002 1.34102280682941E+0002 1.33799539955526E+0002 1.33497690382174E+0002 1.33196728802935E+0002 + 1.32896652070374E+0002 1.32597457049514E+0002 1.32299140617786E+0002 1.32001699664970E+0002 1.31705131093150E+0002 + 1.31409431816650E+0002 1.31114598761993E+0002 1.30820628867838E+0002 1.30527519084935E+0002 1.30235266376068E+0002 + 1.29943867716008E+0002 1.29653320091458E+0002 1.29363620500999E+0002 1.29074765955047E+0002 1.28786753475795E+0002 + 1.28499580097164E+0002 1.28213242864756E+0002 1.27927738835796E+0002 1.27643065079093E+0002 1.27359218674981E+0002 + 1.27076196715273E+0002 1.26793996303212E+0002 1.26512614553421E+0002 1.26232048591856E+0002 1.25952295555754E+0002 + 1.25673352593587E+0002 1.25395216865016E+0002 1.25117885540837E+0002 1.24841355802940E+0002 1.24565624844256E+0002 + 1.24290689868712E+0002 1.24016548091186E+0002 1.23743196737455E+0002 1.23470633044156E+0002 1.23198854258729E+0002 + 1.22927857639382E+0002 1.22657640455038E+0002 1.22388199985290E+0002 1.22119533520356E+0002 1.21851638361038E+0002 + 1.21584511818668E+0002 1.21318151215071E+0002 1.21052553882516E+0002 1.20787717163672E+0002 1.20523638411565E+0002 + 1.20260314989534E+0002 1.19997744271185E+0002 1.19735923640349E+0002 1.19474850491036E+0002 1.19214522227396E+0002 + 1.18954936263672E+0002 1.18696090024160E+0002 1.18437980943162E+0002 1.18180606464947E+0002 1.17923964043711E+0002 + 1.17668051143526E+0002 1.17412865238307E+0002 1.17158403811767E+0002 1.16904664357375E+0002 1.16651644378312E+0002 + 1.16399341387436E+0002 1.16147752907236E+0002 1.15896876469794E+0002 1.15646709616739E+0002 1.15397249899216E+0002 + 1.15148494877837E+0002 1.14900442122644E+0002 1.14653089213070E+0002 1.14406433737899E+0002 1.14160473295225E+0002 + 1.13915205492414E+0002 1.13670627946064E+0002 1.13426738281967E+0002 1.13183534135066E+0002 1.12941013149426E+0002 + 1.12699172978183E+0002 1.12458011283516E+0002 1.12217525736602E+0002 1.11977714017584E+0002 1.11738573815527E+0002 + 1.11500102828384E+0002 1.11262298762959E+0002 1.11025159334868E+0002 1.10788682268501E+0002 1.10552865296989E+0002 + 1.10317706162163E+0002 1.10083202614519E+0002 1.09849352413184E+0002 1.09616153325873E+0002 1.09383603128861E+0002 + 1.09151699606942E+0002 1.08920440553394E+0002 1.08689823769944E+0002 1.08459847066732E+0002 1.08230508262277E+0002 + 1.08001805183439E+0002 1.07773735665388E+0002 1.07546297551566E+0002 1.07319488693652E+0002 1.07093306951531E+0002 + 1.06867750193256E+0002 1.06642816295016E+0002 1.06418503141099E+0002 1.06194808623863E+0002 1.05971730643698E+0002 + 1.05749267108994E+0002 1.05527415936107E+0002 1.05306175049326E+0002 1.05085542380840E+0002 1.04865515870707E+0002 + 1.04646093466815E+0002 1.04427273124857E+0002 1.04209052808293E+0002 1.03991430488319E+0002 1.03774404143835E+0002 + 1.03557971761415E+0002 1.03342131335272E+0002 1.03126880867225E+0002 1.02912218366672E+0002 1.02698141850555E+0002 + 1.02484649343330E+0002 1.02271738876935E+0002 1.02059408490757E+0002 1.01847656231607E+0002 1.01636480153682E+0002 + 1.01425878318538E+0002 1.01215848795062E+0002 1.01006389659434E+0002 1.00797498995105E+0002 1.00589174892760E+0002 + 1.00381415450294E+0002 1.00174218772777E+0002 9.99675829724262E+0001 9.97615061685785E+0001 9.95559864876571E+0001 + 9.93510220631457E+0001 9.91466110355561E+0001 9.89427515524019E+0001 9.87394417681678E+0001 9.85366798442811E+0001 + 9.83344639490835E+0001 9.81327922578016E+0001 9.79316629525195E+0001 9.77310742221500E+0001 9.75310242624060E+0001 + 9.73315112757728E+0001 9.71325334714804E+0001 9.69340890654753E+0001 9.67361762803928E+0001 9.65387933455296E+0001 + 9.63419384968165E+0001 9.61456099767901E+0001 9.59498060345674E+0001 9.57545249258166E+0001 9.55597649127318E+0001 + 9.53655242640052E+0001 9.51718012548009E+0001 9.49785941667278E+0001 9.47859012878138E+0001 9.45937209124785E+0001 + 9.44020513415076E+0001 9.42108908820266E+0001 9.40202378474750E+0001 9.38300905575800E+0001 9.36404473383306E+0001 + 9.34513065219527E+0001 9.32626664468825E+0001 9.30745254577419E+0001 9.28868819053126E+0001 9.26997341465118E+0001 + 9.25130805443649E+0001 9.23269194679837E+0001 9.21412492925385E+0001 9.19560683992354E+0001 9.17713751752904E+0001 + 9.15871680139053E+0001 9.14034453142434E+0001 9.12202054814047E+0001 9.10374469264024E+0001 9.08551680661376E+0001 + 9.06733673233766E+0001 9.04920431267261E+0001 9.03111939106096E+0001 9.01308181152438E+0001 8.99509141866148E+0001 + 8.97714805764549E+0001 8.95925157422188E+0001 8.94140181470613E+0001 8.92359862598120E+0001 8.90584185549549E+0001 + 8.88813135126033E+0001 8.87046696184780E+0001 8.85284853638840E+0001 8.83527592456884E+0001 8.81774897662971E+0001 + 8.80026754336329E+0001 8.78283147611128E+0001 8.76544062676257E+0001 8.74809484775107E+0001 8.73079399205341E+0001 + 8.71353791318685E+0001 8.69632646520698E+0001 8.67915950270565E+0001 8.66203688080869E+0001 8.64495845517388E+0001 + 8.62792408198859E+0001 8.61093361796795E+0001 8.59398692035237E+0001 8.57708384690571E+0001 8.56022425591297E+0001 + 8.54340800617828E+0001 8.52663495702281E+0001 8.50990496828260E+0001 8.49321790030659E+0001 8.47657361395447E+0001 + 8.45997197059468E+0001 8.44341283210233E+0001 8.42689606085713E+0001 8.41042151974144E+0001 8.39398907213815E+0001 + 8.37759858192877E+0001 8.36124991349135E+0001 8.34494293169847E+0001 8.32867750191536E+0001 8.31245348999773E+0001 + 8.29627076229004E+0001 8.28012918562337E+0001 8.26402862731348E+0001 8.24796895515895E+0001 8.23195003743915E+0001 + 8.21597174291239E+0001 8.20003394081392E+0001 8.18413650085413E+0001 8.16827929321653E+0001 8.15246218855593E+0001 + 8.13668505799650E+0001 8.12094777312999E+0001 8.10525020601373E+0001 8.08959222916887E+0001 8.07397371557848E+0001 + 8.05839453868572E+0001 8.04285457239199E+0001 8.02735369105513E+0001 8.01189176948754E+0001 7.99646868295446E+0001 + 7.98108430717206E+0001 7.96573851830569E+0001 7.95043119296815E+0001 7.93516220821780E+0001 7.91993144155684E+0001 + 7.90473877092957E+0001 7.88958407472058E+0001 7.87446723175299E+0001 7.85938812128683E+0001 7.84434662301710E+0001 + 7.82934261707221E+0001 7.81437598401221E+0001 7.79944660482702E+0001 7.78455436093486E+0001 7.76969913418034E+0001 + 7.75488080683301E+0001 7.74009926158550E+0001 7.72535438155189E+0001 7.71064605026607E+0001 7.69597415168007E+0001 + 7.68133857016239E+0001 7.66673919049633E+0001 7.65217589787840E+0001 7.63764857791667E+0001 7.62315711662912E+0001 + 7.60870140044205E+0001 7.59428131618842E+0001 7.57989675110632E+0001 7.56554759283733E+0001 7.55123372942485E+0001 + 7.53695504931274E+0001 7.52271144134340E+0001 7.50850279475662E+0001 7.49432899918756E+0001 7.48018994466561E+0001 + 7.46608552161253E+0001 7.45201562084107E+0001 7.43798013355340E+0001 7.42397895133954E+0001 7.41001196617587E+0001 + 7.39607907042361E+0001 7.38218015682733E+0001 7.36831511851335E+0001 7.35448384898836E+0001 7.34068624213788E+0001 + 7.32692219222477E+0001 7.31319159388771E+0001 7.29949434213982E+0001 7.28583033236713E+0001 7.27219946032713E+0001 + 7.25860162214731E+0001 7.24503671432374E+0001 7.23150463371961E+0001 7.21800527756377E+0001 7.20453854344936E+0001 + 7.19110432933230E+0001 7.17770253353001E+0001 7.16433305471981E+0001 7.15099579193772E+0001 7.13769064457689E+0001 + 7.12441751238632E+0001 7.11117629546940E+0001 7.09796689428257E+0001 7.08478920963396E+0001 7.07164314268197E+0001 + 7.05852859493393E+0001 7.04544546824476E+0001 7.03239366481558E+0001 7.01937308719241E+0001 7.00638363826483E+0001 + 6.99342522126456E+0001 6.98049773976425E+0001 6.96760109767605E+0001 6.95473519925040E+0001 6.94189994907460E+0001 + 6.92909525207160E+0001 6.91632101349870E+0001 6.90357713894614E+0001 6.89086353433594E+0001 6.87818010592057E+0001 + 6.86552676028163E+0001 6.85290340432863E+0001 6.84030994529772E+0001 6.82774629075039E+0001 6.81521234857227E+0001 + 6.80270802697179E+0001 6.79023323447902E+0001 6.77778787994443E+0001 6.76537187253754E+0001 6.75298512174583E+0001 + 6.74062753737346E+0001 6.72829902953998E+0001 6.71599950867925E+0001 6.70372888553811E+0001 6.69148707117526E+0001 + 6.67927397695999E+0001 6.66708951457104E+0001 6.65493359599540E+0001 6.64280613352709E+0001 6.63070703976602E+0001 + 6.61863622761679E+0001 6.60659361028757E+0001 6.59457910128884E+0001 6.58259261443236E+0001 6.57063406382984E+0001 + 6.55870336389200E+0001 6.54680042932727E+0001 6.53492517514067E+0001 6.52307751663276E+0001 6.51125736939841E+0001 + 6.49946464932574E+0001 6.48769927259496E+0001 6.47596115567726E+0001 6.46425021533374E+0001 6.45256636861424E+0001 + 6.44090953285628E+0001 6.42927962568397E+0001 6.41767656500684E+0001 6.40610026901885E+0001 6.39455065619728E+0001 + 6.38302764530159E+0001 6.37153115537242E+0001 6.36006110573049E+0001 6.34861741597551E+0001 6.33720000598518E+0001 + 6.32580879591407E+0001 6.31444370619261E+0001 6.30310465752601E+0001 6.29179157089323E+0001 6.28050436754597E+0001 + 6.26924296900759E+0001 6.25800729707207E+0001 6.24679727380309E+0001 6.23561282153284E+0001 6.22445386286114E+0001 + 6.21332032065439E+0001 6.20221211804451E+0001 6.19112917842800E+0001 6.18007142546492E+0001 6.16903878307788E+0001 + 6.15803117545103E+0001 6.14704852702915E+0001 6.13609076251657E+0001 6.12515780687624E+0001 6.11424958532877E+0001 + 6.10336602335141E+0001 6.09250704667711E+0001 6.08167258129358E+0001 6.07086255344227E+0001 6.06007688961749E+0001 + 6.04931551656536E+0001 6.03857836128298E+0001 6.02786535101739E+0001 6.01717641326467E+0001 6.00651147576901E+0001 + 5.99587046652175E+0001 5.98525331376049E+0001 5.97465994596815E+0001 5.96409029187204E+0001 5.95354428044292E+0001 + 5.94302184089415E+0001 5.93252290268073E+0001 5.92204739549844E+0001 5.91159524928285E+0001 5.90116639420855E+0001 + 5.89076076068814E+0001 5.88037827937142E+0001 5.87001888114447E+0001 5.85968249712874E+0001 5.84936905868022E+0001 + 5.83907849738854E+0001 5.82881074507612E+0001 5.81856573379725E+0001 5.80834339583727E+0001 5.79814366371175E+0001 + 5.78796647016547E+0001 5.77781174817179E+0001 5.76767943093160E+0001 5.75756945187262E+0001 5.74748174464848E+0001 + 5.73741624313784E+0001 5.72737288144369E+0001 5.71735159389238E+0001 5.70735231503288E+0001 5.69737497963589E+0001 + 5.68741952269305E+0001 5.67748587941615E+0001 5.66757398523625E+0001 5.65768377580288E+0001 5.64781518698331E+0001 + 5.63796815486161E+0001 5.62814261573802E+0001 5.61833850612790E+0001 5.60855576276125E+0001 5.59879432258164E+0001 + 5.58905412274557E+0001 5.57933510062165E+0001 5.56963719378980E+0001 5.55996034004049E+0001 5.55030447737396E+0001 + 5.54066954399942E+0001 5.53105547833434E+0001 5.52146221900363E+0001 5.51188970483887E+0001 5.50233787487759E+0001 + 5.49280666836250E+0001 5.48329602474071E+0001 5.47380588366303E+0001 5.46433618498314E+0001 5.45488686875691E+0001 + 5.44545787524168E+0001 5.43604914489540E+0001 5.42666061837608E+0001 5.41729223654086E+0001 5.40794394044542E+0001 + 5.39861567134318E+0001 5.38930737068462E+0001 5.38001898011650E+0001 5.37075044148126E+0001 5.36150169681614E+0001 + 5.35227268835259E+0001 5.34306335851553E+0001 5.33387364992260E+0001 5.32470350538353E+0001 5.31555286789940E+0001 + 5.30642168066190E+0001 5.29730988705273E+0001 5.28821743064281E+0001 5.27914425519169E+0001 5.27009030464673E+0001 + 5.26105552314257E+0001 5.25203985500034E+0001 5.24304324472701E+0001 5.23406563701474E+0001 5.22510697674015E+0001 + 5.21616720896371E+0001 5.20724627892906E+0001 5.19834413206232E+0001 5.18946071397142E+0001 5.18059597044550E+0001 + 5.17174984745420E+0001 5.16292229114702E+0001 5.15411324785266E+0001 5.14532266407838E+0001 5.13655048650936E+0001 + 5.12779666200809E+0001 5.11906113761364E+0001 5.11034386054106E+0001 5.10164477818080E+0001 5.09296383809803E+0001 + 5.08430098803198E+0001 5.07565617589536E+0001 5.06702934977374E+0001 5.05842045792487E+0001 5.04982944877810E+0001 + 5.04125627093379E+0001 5.03270087316261E+0001 5.02416320440506E+0001 5.01564321377069E+0001 5.00714085053761E+0001 + 4.99865606415186E+0001 4.99018880422683E+0001 4.98173902054257E+0001 4.97330666304528E+0001 4.96489168184672E+0001 + 4.95649402722355E+0001 4.94811364961674E+0001 4.93975049963105E+0001 4.93140452803444E+0001 4.92307568575738E+0001 + 4.91476392389238E+0001 4.90646919369336E+0001 4.89819144657510E+0001 4.88993063411264E+0001 4.88168670804071E+0001 + 4.87345962025317E+0001 4.86524932280245E+0001 4.85705576789896E+0001 4.84887890791052E+0001 4.84071869536188E+0001 + 4.83257508293404E+0001 4.82444802346380E+0001 4.81633746994311E+0001 4.80824337551861E+0001 4.80016569349102E+0001 + 4.79210437731459E+0001 4.78405938059662E+0001 4.77603065709685E+0001 4.76801816072692E+0001 4.76002184554985E+0001 + 4.75204166577955E+0001 4.74407757578020E+0001 4.73612953006578E+0001 4.72819748329947E+0001 4.72028139029321E+0001 + 4.71238120600713E+0001 4.70449688554902E+0001 4.69662838417381E+0001 4.68877565728304E+0001 4.68093866042441E+0001 + 4.67311734929117E+0001 4.66531167972163E+0001 4.65752160769872E+0001 4.64974708934940E+0001 4.64198808094415E+0001 + 4.63424453889654E+0001 4.62651641976267E+0001 4.61880368024067E+0001 4.61110627717016E+0001 4.60342416753190E+0001 + 4.59575730844711E+0001 4.58810565717712E+0001 4.58046917112277E+0001 4.57284780782398E+0001 4.56524152495930E+0001 + 4.55765028034531E+0001 4.55007403193623E+0001 4.54251273782340E+0001 4.53496635623485E+0001 4.52743484553473E+0001 + 4.51991816422289E+0001 4.51241627093443E+0001 4.50492912443918E+0001 4.49745668364123E+0001 4.48999890757849E+0001 + 4.48255575542223E+0001 4.47512718647657E+0001 4.46771316017806E+0001 4.46031363609517E+0001 4.45292857392789E+0001 + 4.44555793350724E+0001 4.43820167479479E+0001 4.43085975788225E+0001 4.42353214299102E+0001 4.41621879047166E+0001 + 4.40891966080357E+0001 4.40163471459439E+0001 4.39436391257974E+0001 4.38710721562259E+0001 4.37986458471290E+0001 + 4.37263598096724E+0001 4.36542136562825E+0001 4.35822070006425E+0001 4.35103394576878E+0001 4.34386106436025E+0001 + 4.33670201758135E+0001 4.32955676729883E+0001 4.32242527550286E+0001 4.31530750430671E+0001 4.30820341594637E+0001 + 4.30111297278004E+0001 4.29403613728770E+0001 4.28697287207079E+0001 4.27992313985173E+0001 4.27288690347344E+0001 + 4.26586412589904E+0001 4.25885477021139E+0001 4.25185879961267E+0001 4.24487617742392E+0001 4.23790686708475E+0001 + 4.23095083215284E+0001 4.22400803630359E+0001 4.21707844332962E+0001 4.21016201714052E+0001 4.20325872176228E+0001 + 4.19636852133707E+0001 4.18949138012265E+0001 4.18262726249214E+0001 4.17577613293355E+0001 4.16893795604935E+0001 + 4.16211269655616E+0001 4.15530031928431E+0001 4.14850078917749E+0001 4.14171407129228E+0001 4.13494013079787E+0001 + 4.12817893297562E+0001 4.12143044321866E+0001 4.11469462703156E+0001 4.10797145002989E+0001 4.10126087793993E+0001 + 4.09456287659821E+0001 4.08787741195113E+0001 4.08120445005468E+0001 4.07454395707395E+0001 4.06789589928288E+0001 + 4.06126024306379E+0001 4.05463695490703E+0001 4.04802600141066E+0001 4.04142734928009E+0001 4.03484096532761E+0001 + 4.02826681647214E+0001 4.02170486973886E+0001 4.01515509225875E+0001 4.00861745126837E+0001 4.00209191410941E+0001 + 3.99557844822837E+0001 3.98907702117616E+0001 3.98258760060780E+0001 3.97611015428210E+0001 3.96964465006119E+0001 + 3.96319105591032E+0001 3.95674933989737E+0001 3.95031947019256E+0001 3.94390141506821E+0001 3.93749514289821E+0001 + 3.93110062215779E+0001 3.92471782142321E+0001 3.91834670937129E+0001 3.91198725477921E+0001 3.90563942652409E+0001 + 3.89930319358271E+0001 3.89297852503108E+0001 3.88666539004424E+0001 3.88036375789583E+0001 3.87407359795780E+0001 + 3.86779487970007E+0001 3.86152757269016E+0001 3.85527164659297E+0001 3.84902707117036E+0001 3.84279381628087E+0001 + 3.83657185187934E+0001 3.83036114801668E+0001 3.82416167483950E+0001 3.81797340258976E+0001 3.81179630160449E+0001 + 3.80563034231550E+0001 3.79947549524899E+0001 3.79333173102530E+0001 3.78719902035855E+0001 3.78107733405640E+0001 + 3.77496664301963E+0001 3.76886691824192E+0001 3.76277813080951E+0001 3.75670025190090E+0001 3.75063325278656E+0001 + 3.74457710482851E+0001 3.73853177948021E+0001 3.73249724828613E+0001 3.72647348288145E+0001 3.72046045499179E+0001 + 3.71445813643293E+0001 3.70846649911046E+0001 3.70248551501952E+0001 3.69651515624449E+0001 3.69055539495871E+0001 + 3.68460620342415E+0001 3.67866755399117E+0001 3.67273941909818E+0001 3.66682177127137E+0001 3.66091458312444E+0001 + 3.65501782735829E+0001 3.64913147676070E+0001 3.64325550420611E+0001 3.63738988265531E+0001 3.63153458515515E+0001 + 3.62568958483821E+0001 3.61985485492261E+0001 3.61403036871170E+0001 3.60821609959370E+0001 3.60241202104155E+0001 + 3.59661810661254E+0001 3.59083432994805E+0001 3.58506066477331E+0001 3.57929708489709E+0001 3.57354356421144E+0001 + 3.56780007669142E+0001 3.56206659639478E+0001 3.55634309746183E+0001 3.55062955411497E+0001 3.54492594065859E+0001 + 3.53923223147872E+0001 3.53354840104276E+0001 3.52787442389927E+0001 3.52221027467767E+0001 3.51655592808793E+0001 + 3.51091135892040E+0001 3.50527654204552E+0001 3.49965145241349E+0001 3.49403606505408E+0001 3.48843035507639E+0001 + 3.48283429766852E+0001 3.47724786809735E+0001 3.47167104170830E+0001 3.46610379392509E+0001 3.46054610024938E+0001 + 3.45499793626062E+0001 3.44945927761584E+0001 3.44393010004922E+0001 3.43841037937204E+0001 3.43290009147230E+0001 + 3.42739921231448E+0001 3.42190771793940E+0001 3.41642558446384E+0001 3.41095278808036E+0001 3.40548930505706E+0001 + 3.40003511173734E+0001 3.39459018453959E+0001 3.38915449995705E+0001 3.38372803455749E+0001 3.37831076498301E+0001 + 3.37290266794977E+0001 3.36750372024778E+0001 3.36211389874066E+0001 3.35673318036540E+0001 3.35136154213209E+0001 + 3.34599896112373E+0001 3.34064541449599E+0001 3.33530087947697E+0001 3.32996533336692E+0001 3.32463875353811E+0001 + 3.31932111743451E+0001 3.31401240257160E+0001 3.30871258653613E+0001 3.30342164698589E+0001 3.29813956164951E+0001 + 3.29286630832618E+0001 3.28760186488546E+0001 3.28234620926708E+0001 3.27709931948068E+0001 3.27186117360552E+0001 + 3.26663174979044E+0001 3.26141102625345E+0001 3.25619898128164E+0001 3.25099559323085E+0001 3.24580084052555E+0001 + 3.24061470165857E+0001 3.23543715519089E+0001 3.23026817975144E+0001 3.22510775403682E+0001 3.21995585681119E+0001 + 3.21481246690599E+0001 3.20967756321971E+0001 3.20455112471768E+0001 3.19943313043198E+0001 3.19432355946102E+0001 + 3.18922239096947E+0001 3.18412960418806E+0001 3.17904517841329E+0001 3.17396909300724E+0001 3.16890132739743E+0001 + 3.16384186107654E+0001 3.15879067360223E+0001 3.15374774459695E+0001 3.14871305374769E+0001 3.14368658080582E+0001 + 3.13866830558688E+0001 3.13365820797036E+0001 3.12865626789949E+0001 3.12366246538109E+0001 3.11867678048533E+0001 + 3.11369919334550E+0001 3.10872968415787E+0001 3.10376823318150E+0001 3.09881482073797E+0001 3.09386942721121E+0001 + 3.08893203304736E+0001 3.08400261875454E+0001 3.07908116490259E+0001 3.07416765212298E+0001 3.06926206110857E+0001 + 3.06436437261339E+0001 3.05947456745249E+0001 3.05459262650175E+0001 3.04971853069766E+0001 3.04485226103712E+0001 + 3.03999379857733E+0001 3.03514312443550E+0001 3.03030021978871E+0001 3.02546506587374E+0001 3.02063764398687E+0001 + 3.01581793548364E+0001 3.01100592177878E+0001 3.00620158434592E+0001 3.00140490471741E+0001 2.99661586448426E+0001 + 2.99183444529577E+0001 2.98706062885953E+0001 2.98229439694108E+0001 2.97753573136387E+0001 2.97278461400896E+0001 + 2.96804102681492E+0001 2.96330495177763E+0001 2.95857637095006E+0001 2.95385526644218E+0001 2.94914162042070E+0001 + 2.94443541510893E+0001 2.93973663278658E+0001 2.93504525578965E+0001 2.93036126651018E+0001 2.92568464739609E+0001 + 2.92101538095106E+0001 2.91635344973429E+0001 2.91169883636037E+0001 2.90705152349909E+0001 2.90241149387527E+0001 + 2.89777873026863E+0001 2.89315321551351E+0001 2.88853493249886E+0001 2.88392386416792E+0001 2.87931999351816E+0001 + 2.87472330360104E+0001 2.87013377752189E+0001 2.86555139843975E+0001 2.86097614956714E+0001 2.85640801416995E+0001 + 2.85184697556727E+0001 2.84729301713123E+0001 2.84274612228679E+0001 2.83820627451163E+0001 2.83367345733598E+0001 + 2.82914765434245E+0001 2.82462884916583E+0001 2.82011702549299E+0001 2.81561216706270E+0001 2.81111425766547E+0001 + 2.80662328114337E+0001 2.80213922138990E+0001 2.79766206234978E+0001 2.79319178801892E+0001 2.78872838244408E+0001 + 2.78427182972288E+0001 2.77982211400354E+0001 2.77537921948476E+0001 2.77094313041557E+0001 2.76651383109516E+0001 + 2.76209130587276E+0001 2.75767553914743E+0001 2.75326651536795E+0001 2.74886421903270E+0001 2.74446863468938E+0001 + 2.74007974693504E+0001 2.73569754041573E+0001 2.73132199982656E+0001 2.72695310991139E+0001 2.72259085546272E+0001 + 2.71823522132160E+0001 2.71388619237740E+0001 2.70954375356771E+0001 2.70520788987822E+0001 2.70087858634249E+0001 + 2.69655582804186E+0001 2.69223960010533E+0001 2.68792988770934E+0001 2.68362667607766E+0001 2.67932995048132E+0001 + 2.67503969623830E+0001 2.67075589871356E+0001 2.66647854331879E+0001 2.66220761551231E+0001 2.65794310079892E+0001 + 2.65368498472972E+0001 2.64943325290206E+0001 2.64518789095931E+0001 2.64094888459077E+0001 2.63671621953150E+0001 + 2.63248988156222E+0001 2.62826985650912E+0001 2.62405613024379E+0001 2.61984868868298E+0001 2.61564751778860E+0001 + 2.61145260356746E+0001 2.60726393207117E+0001 2.60308148939607E+0001 2.59890526168300E+0001 2.59473523511722E+0001 + 2.59057139592825E+0001 2.58641373038976E+0001 2.58226222481942E+0001 2.57811686557878E+0001 2.57397763907311E+0001 + 2.56984453175130E+0001 2.56571753010570E+0001 2.56159662067203E+0001 2.55748179002918E+0001 2.55337302479915E+0001 + 2.54927031164690E+0001 2.54517363728018E+0001 2.54108298844944E+0001 2.53699835194772E+0001 2.53291971461046E+0001 + 2.52884706331544E+0001 2.52478038498256E+0001 2.52071966657384E+0001 2.51666489509319E+0001 2.51261605758632E+0001 + 2.50857314114061E+0001 2.50453613288500E+0001 2.50050501998983E+0001 2.49647978966678E+0001 2.49246042916863E+0001 + 2.48844692578927E+0001 2.48443926686351E+0001 2.48043743976690E+0001 2.47644143191576E+0001 2.47245123076689E+0001 + 2.46846682381756E+0001 2.46448819860536E+0001 2.46051534270804E+0001 2.45654824374346E+0001 2.45258688936938E+0001 + 2.44863126728342E+0001 2.44468136522293E+0001 2.44073717096481E+0001 2.43679867232545E+0001 2.43286585716060E+0001 + 2.42893871336523E+0001 2.42501722887345E+0001 2.42110139165834E+0001 2.41719118973188E+0001 2.41328661114480E+0001 + 2.40938764398652E+0001 2.40549427638495E+0001 2.40160649650644E+0001 2.39772429255562E+0001 2.39384765277535E+0001 + 2.38997656544651E+0001 2.38611101888798E+0001 2.38225100145648E+0001 2.37839650154644E+0001 2.37454750758993E+0001 + 2.37070400805651E+0001 2.36686599145313E+0001 2.36303344632407E+0001 2.35920636125071E+0001 2.35538472485152E+0001 + 2.35156852578194E+0001 2.34775775273420E+0001 2.34395239443730E+0001 2.34015243965682E+0001 2.33635787719488E+0001 + 2.33256869588996E+0001 2.32878488461686E+0001 2.32500643228655E+0001 2.32123332784606E+0001 2.31746556027840E+0001 + 2.31370311860243E+0001 2.30994599187274E+0001 2.30619416917962E+0001 2.30244763964880E+0001 2.29870639244152E+0001 + 2.29497041675430E+0001 2.29123970181891E+0001 2.28751423690219E+0001 2.28379401130601E+0001 2.28007901436715E+0001 + 2.27636923545717E+0001 2.27266466398233E+0001 2.26896528938346E+0001 2.26527110113592E+0001 2.26158208874940E+0001 + 2.25789824176792E+0001 2.25421954976963E+0001 2.25054600236679E+0001 2.24687758920562E+0001 2.24321429996620E+0001 + 2.23955612436239E+0001 2.23590305214174E+0001 2.23225507308534E+0001 2.22861217700775E+0001 2.22497435375690E+0001 + 2.22134159321400E+0001 2.21771388529342E+0001 2.21409121994259E+0001 2.21047358714194E+0001 2.20686097690473E+0001 + 2.20325337927701E+0001 2.19965078433754E+0001 2.19605318219760E+0001 2.19246056300098E+0001 2.18887291692385E+0001 + 2.18529023417467E+0001 2.18171250499409E+0001 2.17813971965484E+0001 2.17457186846164E+0001 2.17100894175115E+0001 + 2.16745092989180E+0001 2.16389782328376E+0001 2.16034961235877E+0001 2.15680628758013E+0001 2.15326783944255E+0001 + 2.14973425847208E+0001 2.14620553522600E+0001 2.14268166029275E+0001 2.13916262429180E+0001 2.13564841787361E+0001 + 2.13213903171946E+0001 2.12863445654144E+0001 2.12513468308233E+0001 2.12163970211545E+0001 2.11814950444467E+0001 + 2.11466408090422E+0001 2.11118342235871E+0001 2.10770751970288E+0001 2.10423636386170E+0001 2.10076994579011E+0001 + 2.09730825647305E+0001 2.09385128692531E+0001 2.09039902819143E+0001 2.08695147134565E+0001 2.08350860749184E+0001 + 2.08007042776333E+0001 2.07663692332286E+0001 2.07320808536255E+0001 2.06978390510371E+0001 2.06636437379683E+0001 + 2.06294948272147E+0001 2.05953922318616E+0001 2.05613358652831E+0001 2.05273256411415E+0001 2.04933614733863E+0001 + 2.04594432762532E+0001 2.04255709642632E+0001 2.03917444522224E+0001 2.03579636552201E+0001 2.03242284886288E+0001 + 2.02905388681029E+0001 2.02568947095780E+0001 2.02232959292701E+0001 2.01897424436746E+0001 2.01562341695656E+0001 + 2.01227710239949E+0001 2.00893529242915E+0001 2.00559797880604E+0001 2.00226515331817E+0001 1.99893680778104E+0001 + 1.99561293403748E+0001 1.99229352395761E+0001 1.98897856943874E+0001 1.98566806240533E+0001 1.98236199480884E+0001 + 1.97906035862770E+0001 1.97576314586720E+0001 1.97247034855944E+0001 1.96918195876321E+0001 1.96589796856393E+0001 + 1.96261837007358E+0001 1.95934315543060E+0001 1.95607231679981E+0001 1.95280584637235E+0001 1.94954373636558E+0001 + 1.94628597902303E+0001 1.94303256661424E+0001 1.93978349143481E+0001 1.93653874580620E+0001 1.93329832207572E+0001 + 1.93006221261647E+0001 1.92683040982714E+0001 1.92360290613207E+0001 1.92037969398115E+0001 1.91716076584965E+0001 + 1.91394611423823E+0001 1.91073573167283E+0001 1.90752961070464E+0001 1.90432774390990E+0001 1.90113012388999E+0001 + 1.89793674327122E+0001 1.89474759470483E+0001 1.89156267086684E+0001 1.88838196445810E+0001 1.88520546820407E+0001 + 1.88203317485484E+0001 1.87886507718502E+0001 1.87570116799365E+0001 1.87254144010418E+0001 1.86938588636436E+0001 + 1.86623449964611E+0001 1.86308727284556E+0001 1.85994419888291E+0001 1.85680527070235E+0001 1.85367048127201E+0001 + 1.85053982358384E+0001 1.84741329065363E+0001 1.84429087552086E+0001 1.84117257124862E+0001 1.83805837092360E+0001 + 1.83494826765596E+0001 1.83184225457929E+0001 1.82874032485052E+0001 1.82564247164986E+0001 1.82254868818074E+0001 + 1.81945896766968E+0001 1.81637330336629E+0001 1.81329168854317E+0001 1.81021411649583E+0001 1.80714058054264E+0001 + 1.80407107402471E+0001 1.80100559030590E+0001 1.79794412277269E+0001 1.79488666483409E+0001 1.79183320992165E+0001 + 1.78878375148934E+0001 1.78573828301348E+0001 1.78269679799264E+0001 1.77965928994767E+0001 1.77662575242151E+0001 + 1.77359617897922E+0001 1.77057056320784E+0001 1.76754889871637E+0001 1.76453117913567E+0001 1.76151739811841E+0001 + 1.75850754933900E+0001 1.75550162649349E+0001 1.75249962329958E+0001 1.74950153349646E+0001 1.74650735084480E+0001 + 1.74351706912665E+0001 1.74053068214544E+0001 1.73754818372580E+0001 1.73456956771358E+0001 1.73159482797579E+0001 + 1.72862395840046E+0001 1.72565695289664E+0001 1.72269380539431E+0001 1.71973450984429E+0001 1.71677906021825E+0001 + 1.71382745050852E+0001 1.71087967472816E+0001 1.70793572691081E+0001 1.70499560111065E+0001 1.70205929140232E+0001 + 1.69912679188087E+0001 1.69619809666170E+0001 1.69327319988050E+0001 1.69035209569313E+0001 1.68743477827563E+0001 + 1.68452124182413E+0001 1.68161148055476E+0001 1.67870548870361E+0001 1.67580326052668E+0001 1.67290479029978E+0001 + 1.67001007231849E+0001 1.66711910089810E+0001 1.66423187037352E+0001 1.66134837509928E+0001 1.65846860944935E+0001 + 1.65559256781723E+0001 1.65272024461574E+0001 1.64985163427710E+0001 1.64698673125271E+0001 1.64412553001324E+0001 + 1.64126802504846E+0001 1.63841421086723E+0001 1.63556408199743E+0001 1.63271763298589E+0001 1.62987485839833E+0001 + 1.62703575281931E+0001 1.62420031085215E+0001 1.62136852711890E+0001 1.61854039626023E+0001 1.61571591293542E+0001 + 1.61289507182228E+0001 1.61007786761706E+0001 1.60726429503445E+0001 1.60445434880747E+0001 1.60164802368742E+0001 + 1.59884531444384E+0001 1.59604621586445E+0001 1.59325072275505E+0001 1.59045882993950E+0001 1.58767053225966E+0001 + 1.58488582457528E+0001 1.58210470176406E+0001 1.57932715872141E+0001 1.57655319036058E+0001 1.57378279161246E+0001 + 1.57101595742562E+0001 1.56825268276615E+0001 1.56549296261772E+0001 1.56273679198143E+0001 1.55998416587576E+0001 + 1.55723507933660E+0001 1.55448952741706E+0001 1.55174750518754E+0001 1.54900900773554E+0001 1.54627403016576E+0001 + 1.54354256759989E+0001 1.54081461517666E+0001 1.53809016805171E+0001 1.53536922139760E+0001 1.53265177040371E+0001 + 1.52993781027618E+0001 1.52722733623788E+0001 1.52452034352834E+0001 1.52181682740368E+0001 1.51911678313661E+0001 + 1.51642020601627E+0001 1.51372709134829E+0001 1.51103743445465E+0001 1.50835123067367E+0001 1.50566847535992E+0001 + 1.50298916388422E+0001 1.50031329163352E+0001 1.49764085401088E+0001 1.49497184643541E+0001 1.49230626434221E+0001 + 1.48964410318233E+0001 1.48698535842269E+0001 1.48433002554606E+0001 1.48167810005095E+0001 1.47902957745163E+0001 + 1.47638445327802E+0001 1.47374272307564E+0001 1.47110438240560E+0001 1.46846942684448E+0001 1.46583785198433E+0001 + 1.46320965343258E+0001 1.46058482681207E+0001 1.45796336776082E+0001 1.45534527193218E+0001 1.45273053499463E+0001 + 1.45011915263182E+0001 1.44751112054244E+0001 1.44490643444024E+0001 1.44230509005392E+0001 1.43970708312711E+0001 + 1.43711240941829E+0001 1.43452106470078E+0001 1.43193304476264E+0001 1.42934834540667E+0001 1.42676696245029E+0001 + 1.42418889172555E+0001 1.42161412907906E+0001 1.41904267037191E+0001 1.41647451147966E+0001 1.41390964829225E+0001 + 1.41134807671400E+0001 1.40878979266349E+0001 1.40623479207357E+0001 1.40368307089128E+0001 1.40113462507779E+0001 + 1.39858945060839E+0001 1.39604754347237E+0001 1.39350889967305E+0001 1.39097351522768E+0001 1.38844138616738E+0001 + 1.38591250853715E+0001 1.38338687839571E+0001 1.38086449181561E+0001 1.37834534488301E+0001 1.37582943369774E+0001 + 1.37331675437325E+0001 1.37080730303647E+0001 1.36830107582785E+0001 1.36579806890128E+0001 1.36329827842405E+0001 + 1.36080170057677E+0001 1.35830833155334E+0001 1.35581816756093E+0001 1.35333120481990E+0001 1.35084743956371E+0001 + 1.34836686803898E+0001 1.34588948650531E+0001 1.34341529123537E+0001 1.34094427851471E+0001 1.33847644464184E+0001 + 1.33601178592809E+0001 1.33355029869761E+0001 1.33109197928727E+0001 1.32863682404670E+0001 1.32618482933817E+0001 + 1.32373599153654E+0001 1.32129030702927E+0001 1.31884777221632E+0001 1.31640838351012E+0001 1.31397213733551E+0001 + 1.31153903012973E+0001 1.30910905834233E+0001 1.30668221843514E+0001 1.30425850688223E+0001 1.30183792016985E+0001 + 1.29942045479639E+0001 1.29700610727233E+0001 1.29459487412020E+0001 1.29218675187452E+0001 1.28978173708178E+0001 + 1.28737982630035E+0001 1.28498101610048E+0001 1.28258530306421E+0001 1.28019268378538E+0001 1.27780315486951E+0001 + 1.27541671293383E+0001 1.27303335460718E+0001 1.27065307652999E+0001 1.26827587535421E+0001 1.26590174774330E+0001 + 1.26353069037215E+0001 1.26116269992708E+0001 1.25879777310573E+0001 1.25643590661706E+0001 1.25407709718130E+0001 + 1.25172134152989E+0001 1.24936863640546E+0001 1.24701897856175E+0001 1.24467236476359E+0001 1.24232879178686E+0001 + 1.23998825641842E+0001 1.23765075545608E+0001 1.23531628570858E+0001 1.23298484399548E+0001 1.23065642714720E+0001 + 1.22833103200489E+0001 1.22600865542046E+0001 1.22368929425650E+0001 1.22137294538623E+0001 1.21905960569346E+0001 + 1.21674927207258E+0001 1.21444194142845E+0001 1.21213761067643E+0001 1.20983627674228E+0001 1.20753793656217E+0001 + 1.20524258708254E+0001 1.20295022526019E+0001 1.20066084806214E+0001 1.19837445246560E+0001 1.19609103545796E+0001 + 1.19381059403673E+0001 1.19153312520949E+0001 1.18925862599385E+0001 1.18698709341743E+0001 1.18471852451775E+0001 + 1.18245291634230E+0001 1.18019026594839E+0001 1.17793057040316E+0001 1.17567382678351E+0001 1.17342003217613E+0001 + 1.17116918367735E+0001 1.16892127839317E+0001 1.16667631343919E+0001 1.16443428594061E+0001 1.16219519303211E+0001 + 1.15995903185789E+0001 1.15772579957157E+0001 1.15549549333620E+0001 1.15326811032416E+0001 1.15104364771714E+0001 + 1.14882210270616E+0001 1.14660347249141E+0001 1.14438775428232E+0001 1.14217494529744E+0001 1.13996504276448E+0001 + 1.13775804392017E+0001 1.13555394601030E+0001 1.13335274628963E+0001 1.13115444202189E+0001 1.12895903047971E+0001 + 1.12676650894457E+0001 1.12457687470682E+0001 1.12239012506554E+0001 1.12020625732862E+0001 1.11802526881260E+0001 + 1.11584715684270E+0001 1.11367191875281E+0001 1.11149955188536E+0001 1.10933005359131E+0001 1.10716342123019E+0001 + 1.10499965216995E+0001 1.10283874378698E+0001 1.10068069346605E+0001 1.09852549860030E+0001 1.09637315659114E+0001 + 1.09422366484830E+0001 1.09207702078968E+0001 1.08993322184143E+0001 1.08779226543781E+0001 1.08565414902122E+0001 + 1.08351887004211E+0001 1.08138642595897E+0001 1.07925681423831E+0001 1.07713003235456E+0001 1.07500607779010E+0001 + 1.07288494803517E+0001 1.07076664058785E+0001 1.06865115295405E+0001 1.06653848264741E+0001 1.06442862718932E+0001 + 1.06232158410884E+0001 1.06021735094271E+0001 1.05811592523524E+0001 1.05601730453834E+0001 1.05392148641146E+0001 + 1.05182846842153E+0001 1.04973824814296E+0001 1.04765082315757E+0001 1.04556619105456E+0001 1.04348434943048E+0001 + 1.04140529588922E+0001 1.03932902804190E+0001 1.03725554350690E+0001 1.03518483990979E+0001 1.03311691488330E+0001 + 1.03105176606729E+0001 1.02898939110871E+0001 1.02692978766154E+0001 1.02487295338679E+0001 1.02281888595246E+0001 + 1.02076758303345E+0001 1.01871904231161E+0001 1.01667326147561E+0001 1.01463023822099E+0001 1.01258997025005E+0001 + 1.01055245527188E+0001 1.00851769100227E+0001 1.00648567516369E+0001 1.00445640548528E+0001 1.00242987970277E+0001 + 1.00040609555849E+0001 9.98385050801300E+0000 9.96366743186539E+0000 9.94351170476059E+0000 9.92338330438122E+0000 + 9.90328220847388E+0000 9.88320839484890E+0000 9.86316184137975E+0000 9.84314252600298E+0000 9.82315042671741E+0000 + 9.80318552158442E+0000 9.78324778872700E+0000 9.76333720632982E+0000 9.74345375263857E+0000 9.72359740595973E+0000 + 9.70376814466048E+0000 9.68396594716783E+0000 9.66419079196859E+0000 9.64444265760921E+0000 9.62472152269501E+0000 + 9.60502736589005E+0000 9.58536016591684E+0000 9.56571990155589E+0000 9.54610655164549E+0000 9.52652009508108E+0000 + 9.50696051081538E+0000 9.48742777785745E+0000 9.46792187527310E+0000 9.44844278218373E+0000 9.42899047776664E+0000 + 9.40956494125435E+0000 9.39016615193445E+0000 9.37079408914902E+0000 9.35144873229450E+0000 9.33213006082148E+0000 + 9.31283805423392E+0000 9.29357269208916E+0000 9.27433395399765E+0000 9.25512181962234E+0000 9.23593626867852E+0000 + 9.21677728093347E+0000 9.19764483620608E+0000 9.17853891436666E+0000 9.15945949533638E+0000 9.14040655908709E+0000 + 9.12138008564108E+0000 9.10238005507055E+0000 9.08340644749737E+0000 9.06445924309290E+0000 9.04553842207734E+0000 + 9.02664396471972E+0000 9.00777585133745E+0000 8.98893406229597E+0000 8.97011857800853E+0000 8.95132937893569E+0000 + 8.93256644558525E+0000 8.91382975851163E+0000 8.89511929831586E+0000 8.87643504564506E+0000 8.85777698119222E+0000 + 8.83914508569569E+0000 8.82053933993924E+0000 8.80195972475133E+0000 8.78340622100515E+0000 8.76487880961801E+0000 + 8.74637747155134E+0000 8.72790218780992E+0000 8.70945293944217E+0000 8.69102970753925E+0000 8.67263247323518E+0000 + 8.65426121770632E+0000 8.63591592217113E+0000 8.61759656788986E+0000 8.59930313616408E+0000 8.58103560833675E+0000 + 8.56279396579147E+0000 8.54457818995262E+0000 8.52638826228453E+0000 8.50822416429183E+0000 8.49008587751844E+0000 + 8.47197338354781E+0000 8.45388666400246E+0000 8.43582570054354E+0000 8.41779047487062E+0000 8.39978096872150E+0000 + 8.38179716387179E+0000 8.36383904213462E+0000 8.34590658536035E+0000 8.32799977543635E+0000 8.31011859428657E+0000 + 8.29226302387134E+0000 8.27443304618707E+0000 8.25662864326593E+0000 8.23884979717560E+0000 8.22109649001878E+0000 + 8.20336870393335E+0000 8.18566642109153E+0000 8.16798962370001E+0000 8.15033829399939E+0000 8.13271241426414E+0000 + 8.11511196680206E+0000 8.09753693395411E+0000 8.07998729809424E+0000 8.06246304162882E+0000 8.04496414699677E+0000 + 8.02749059666875E+0000 8.01004237314728E+0000 7.99261945896638E+0000 7.97522183669120E+0000 7.95784948891771E+0000 + 7.94050239827268E+0000 7.92318054741295E+0000 7.90588391902567E+0000 7.88861249582752E+0000 7.87136626056488E+0000 + 7.85414519601323E+0000 7.83694928497700E+0000 7.81977851028933E+0000 7.80263285481168E+0000 7.78551230143379E+0000 + 7.76841683307305E+0000 7.75134643267442E+0000 7.73430108321037E+0000 7.71728076768022E+0000 7.70028546911008E+0000 + 7.68331517055253E+0000 7.66636985508644E+0000 7.64946599442103E+0000 7.63265374636426E+0000 7.61593605068358E+0000 + 7.59931232808492E+0000 7.58278200190773E+0000 7.56634449805117E+0000 7.54999924499869E+0000 7.53374567382376E+0000 + 7.51758321816622E+0000 7.50151131422750E+0000 7.48552940074480E+0000 7.46963691901562E+0000 7.45383331287815E+0000 + 7.43811802869173E+0000 7.42249051535709E+0000 7.40695022427572E+0000 7.39149660935954E+0000 7.37612912702385E+0000 + 7.36084723618647E+0000 7.34565039824801E+0000 7.33053807709310E+0000 7.31550973906630E+0000 7.30056485298808E+0000 + 7.28570289014334E+0000 7.27092332425939E+0000 7.25622563151338E+0000 7.24160929051447E+0000 7.22707378229219E+0000 + 7.21261859032500E+0000 7.19824320048856E+0000 7.18394710106936E+0000 7.16972978275310E+0000 7.15559073862354E+0000 + 7.14152946414442E+0000 7.12754545718155E+0000 7.11363821794027E+0000 7.09980724901500E+0000 7.08605205534567E+0000 + 7.07237214423125E+0000 7.05876702531578E+0000 7.04523621057859E+0000 7.03177921432020E+0000 7.01839555316525E+0000 + 7.00508474607595E+0000 6.99184631429766E+0000 6.97867978139989E+0000 6.96558467322182E+0000 6.95256051789840E+0000 + 6.93960684585887E+0000 6.92672318979767E+0000 6.91390908468138E+0000 6.90116406771956E+0000 6.88848767838225E+0000 + 6.87587945839634E+0000 6.86333895172050E+0000 6.85086570454566E+0000 6.83845926528276E+0000 6.82611918455675E+0000 + 6.81384501522198E+0000 6.80163631232210E+0000 6.78949263310966E+0000 6.77741353701232E+0000 6.76539858564604E+0000 + 6.75344734281326E+0000 6.74155937447546E+0000 6.72973424876626E+0000 6.71797153596823E+0000 6.70627080850667E+0000 + 6.69463164096699E+0000 6.68305361005215E+0000 6.67153629461922E+0000 6.66007927561319E+0000 6.64868213611854E+0000 + 6.63734446131438E+0000 6.62606583849384E+0000 6.61484585704492E+0000 6.60368410842912E+0000 6.59258018619860E+0000 + 6.58153368597913E+0000 6.57054420546364E+0000 6.55961134442081E+0000 6.54873470464997E+0000 6.53791389000470E+0000 + 6.52714850638414E+0000 6.51643816172433E+0000 6.50578246598958E+0000 6.49518103116152E+0000 6.48463347123258E+0000 + 6.47413940220363E+0000 6.46369844208600E+0000 6.45331021088193E+0000 6.44297433056924E+0000 6.43269042512916E+0000 + 6.42245812048785E+0000 6.41227704457222E+0000 6.40214682725574E+0000 6.39206710035814E+0000 6.38203749766880E+0000 + 6.37205765489250E+0000 6.36212720968788E+0000 6.35224580164766E+0000 6.34241307227017E+0000 6.33262866498270E+0000 + 6.32289222510214E+0000 6.31320339987351E+0000 6.30356183843268E+0000 6.29396719179076E+0000 6.28441911285743E+0000 + 6.27491725640574E+0000 6.26546127909108E+0000 6.25605083943334E+0000 6.24668559780978E+0000 6.23736521644147E+0000 + 6.22808935938618E+0000 6.21885769256809E+0000 6.20966988372946E+0000 6.20052560243214E+0000 6.19142452006989E+0000 + 6.18236630982751E+0000 6.17335064672035E+0000 6.16437720756426E+0000 6.15544567095849E+0000 6.14655571728604E+0000 + 6.13770702871615E+0000 6.12889928920243E+0000 6.12013218446569E+0000 6.11140540198225E+0000 6.10271863098528E+0000 + 6.09407156245626E+0000 6.08546388913616E+0000 6.07689530548197E+0000 6.06836550771164E+0000 6.05987419373875E+0000 + 6.05142106320430E+0000 6.04300581747688E+0000 6.03462815961452E+0000 6.02628779439214E+0000 6.01798442827099E+0000 + 6.00971776938672E+0000 6.00148752758771E+0000 5.99329341437162E+0000 5.98513514292594E+0000 5.97701242809515E+0000 + 5.96892498637301E+0000 5.96087253591240E+0000 5.95285479651874E+0000 5.94487148963672E+0000 5.93692233832946E+0000 + 5.92900706729918E+0000 5.92112540286959E+0000 5.91327707298248E+0000 5.90546180718986E+0000 5.89767933664179E+0000 + 5.88992939408503E+0000 5.88221171385962E+0000 5.87452603190527E+0000 5.86687208572375E+0000 5.85924961440065E+0000 + 5.85165835858205E+0000 5.84409806048195E+0000 5.83656846387099E+0000 5.82906931407618E+0000 5.82160035795192E+0000 + 5.81416134391055E+0000 5.80675202187684E+0000 5.79937214331847E+0000 5.79202146123138E+0000 5.78469973010073E+0000 + 5.77740670594579E+0000 5.77014214626982E+0000 5.76290581008839E+0000 5.75569745791235E+0000 5.74851685172086E+0000 + 5.74136375499301E+0000 5.73423793266085E+0000 5.72713915114871E+0000 5.72006717833847E+0000 5.71302178355788E+0000 + 5.70600273759888E+0000 5.69900981268493E+0000 5.69204278250144E+0000 5.68510142215644E+0000 5.67818550819106E+0000 + 5.67129481856225E+0000 5.66442913264774E+0000 5.65758823124316E+0000 5.65077189655032E+0000 5.64397991217430E+0000 + 5.63721206310279E+0000 5.63046813571981E+0000 5.62374791779837E+0000 5.61705119849531E+0000 5.61037776832940E+0000 + 5.60372741918839E+0000 5.59709994431715E+0000 5.59049513833799E+0000 5.58391279720204E+0000 5.57735271822295E+0000 + 5.57081470004491E+0000 5.56429854263955E+0000 5.55780404732517E+0000 5.55133101673245E+0000 5.54487925481919E+0000 + 5.53844856684489E+0000 5.53203875937762E+0000 5.52564964029876E+0000 5.51928101877410E+0000 5.51293270527750E+0000 + 5.50660451154639E+0000 5.50029625060647E+0000 5.49400773677075E+0000 5.48773878560389E+0000 5.48148921395703E+0000 + 5.47525883992085E+0000 5.46904748284134E+0000 5.46285496331877E+0000 5.45668110320105E+0000 5.45052572557479E+0000 + 5.44438865474856E+0000 5.43826971625627E+0000 5.43216873686502E+0000 5.42608554455718E+0000 5.42001996853375E+0000 + 5.41397183918179E+0000 5.40794098810694E+0000 5.40192724809629E+0000 5.39593045314645E+0000 5.38995043843539E+0000 + 5.38398704030885E+0000 5.37804009629485E+0000 5.37210944509350E+0000 5.36619492657236E+0000 5.36029638176069E+0000 + 5.35441365283019E+0000 5.34854658312185E+0000 5.34269501709962E+0000 5.33685880037951E+0000 5.33103777972493E+0000 + 5.32523180300248E+0000 5.31944071922239E+0000 5.31366437849989E+0000 5.30790263208096E+0000 5.30215533231726E+0000 + 5.29642233265344E+0000 5.29070348765173E+0000 5.28499865294645E+0000 5.27930768528443E+0000 5.27363044248739E+0000 + 5.26796678346067E+0000 5.26231656817598E+0000 5.25667965767664E+0000 5.25105591407731E+0000 5.24544520055794E+0000 + 5.23984738134644E+0000 5.23426232171600E+0000 5.22868988798810E+0000 5.22312994753101E+0000 5.21758236875143E+0000 + 5.21204702108157E+0000 5.20652377498100E+0000 5.20101250192032E+0000 5.19551307440226E+0000 5.19002536594307E+0000 + 5.18454925105840E+0000 5.17908460526736E+0000 5.17363130507835E+0000 5.16818922801133E+0000 5.16275825256207E+0000 + 5.15733825821975E+0000 5.15192912544143E+0000 5.14653073565720E+0000 5.14114297128211E+0000 5.13576571568031E+0000 + 5.13039885319296E+0000 5.12504226909889E+0000 5.11969584963219E+0000 5.11435948198739E+0000 5.10903305427765E+0000 + 5.10371645558448E+0000 5.09840957589420E+0000 5.09311230612588E+0000 5.08782453813638E+0000 5.08254616468428E+0000 + 5.07727707946116E+0000 5.07201717705435E+0000 5.06676635295654E+0000 5.06152450356614E+0000 5.05629152617749E+0000 + 5.05106731898807E+0000 5.04585178106119E+0000 5.04064481235265E+0000 5.03544631369512E+0000 5.03025618680656E+0000 + 5.02507433426649E+0000 5.01990065951634E+0000 5.01473506686095E+0000 5.00957746145858E+0000 5.00442774932929E+0000 + 4.99928583734262E+0000 4.99415163318917E+0000 4.98902504542574E+0000 4.98390598342044E+0000 4.97879435739090E+0000 + 4.97369007837584E+0000 4.96859305822723E+0000 4.96350320962787E+0000 4.95842044605817E+0000 4.95334468181721E+0000 + 4.94827583201830E+0000 4.94321381255583E+0000 4.93815854013196E+0000 4.93310993223262E+0000 4.92806790714273E+0000 + 4.92303238393250E+0000 4.91800328243458E+0000 4.91298052327303E+0000 4.90796402783005E+0000 4.90295371826689E+0000 + 4.89794951750553E+0000 4.89295134922417E+0000 4.88795913785740E+0000 4.88297280857662E+0000 4.87799228731908E+0000 + 4.87301750075906E+0000 4.86804837631146E+0000 4.86308484211334E+0000 4.85812682703670E+0000 4.85317426068748E+0000 + 4.84822707338930E+0000 4.84328519618594E+0000 4.83834856083315E+0000 4.83341709978489E+0000 4.82849074622108E+0000 + 4.82356943402105E+0000 4.81865309775069E+0000 4.81374167267994E+0000 4.80883509475485E+0000 4.80393330062900E+0000 + 4.79903622762276E+0000 4.79414381374769E+0000 4.78925599767978E+0000 4.78437271875939E+0000 4.77949391700978E+0000 + 4.77461953311153E+0000 4.76974950840591E+0000 4.76488378488432E+0000 4.76002230518826E+0000 4.75516501261849E+0000 + 4.75031185110471E+0000 4.74546276523805E+0000 4.74061770022314E+0000 4.73577660190135E+0000 4.73093941675649E+0000 + 4.72610609188549E+0000 4.72127657502045E+0000 4.71645081449111E+0000 4.71162875925156E+0000 4.70681035886725E+0000 + 4.70199556350541E+0000 4.69718432395602E+0000 4.69237659157420E+0000 4.68757231833274E+0000 4.68277145678792E+0000 + 4.67797396009809E+0000 4.67317978199176E+0000 4.66838887678739E+0000 4.66360119936845E+0000 4.65881670520201E+0000 + 4.65403535032559E+0000 4.64925709134925E+0000 4.64448188542716E+0000 4.63970969029259E+0000 4.63494046422002E+0000 + 4.63017416604957E+0000 4.62541075516438E+0000 4.62065019148914E+0000 4.61589243549922E+0000 4.61113744819681E+0000 + 4.60638519112948E+0000 4.60163562638041E+0000 4.59688871654455E+0000 4.59214442475773E+0000 4.58740271465979E+0000 + 4.58266355042724E+0000 4.57792689674700E+0000 4.57319271880542E+0000 4.56846098230794E+0000 4.56373165345636E+0000 + 4.55900469896024E+0000 4.55428008602823E+0000 4.54955778236067E+0000 4.54483775614322E+0000 4.54011997604767E+0000 + 4.53540441124690E+0000 4.53069103138137E+0000 4.52597980657880E+0000 4.52127070742653E+0000 4.51656370499123E+0000 + 4.51185877080894E+0000 4.50715587689062E+0000 4.50245499568848E+0000 4.49775610012518E+0000 4.49305916357321E+0000 + 4.48836415986506E+0000 4.48367106327145E+0000 4.47897984852339E+0000 4.47429049078079E+0000 4.46960296564270E+0000 + 4.46491724915629E+0000 4.46023331778667E+0000 4.45555114844844E+0000 4.45087071846716E+0000 4.44619200558597E+0000 + 4.44151498799357E+0000 4.43683964427138E+0000 4.43216595343820E+0000 4.42749389490328E+0000 4.42282344849074E+0000 + 4.41815459444020E+0000 4.41348731337766E+0000 4.40882158634827E+0000 4.40415739477528E+0000 4.39949472047727E+0000 + 4.39483354567241E+0000 4.39017385296112E+0000 4.38551562533743E+0000 4.38085884615856E+0000 4.37620349917294E+0000 + 4.37154956850287E+0000 4.36689703864156E+0000 4.36224589446083E+0000 4.35759612118420E+0000 4.35294770440901E+0000 + 4.34830063008896E+0000 4.34365488454191E+0000 4.33901045444443E+0000 4.33436732681200E+0000 4.32972548901985E+0000 + 4.32508492878800E+0000 4.32044563417696E+0000 4.31580759360621E+0000 4.31117079580683E+0000 4.30653522986751E+0000 + 4.30190088519074E+0000 4.29726775153045E+0000 4.29263581895896E+0000 4.28800507786987E+0000 4.28337551898091E+0000 + 4.27874713332607E+0000 4.27411991226806E+0000 4.26949384747718E+0000 4.26486893092697E+0000 4.26024515491031E+0000 + 4.25562251201584E+0000 4.25100099515004E+0000 4.24638059750887E+0000 4.24176131259501E+0000 4.23714313419905E+0000 + 4.23252605639515E+0000 4.22791007357275E+0000 4.22329518039607E+0000 4.21868137181176E+0000 4.21406864305172E+0000 + 4.20945698962027E+0000 4.20484640731504E+0000 4.20023689219849E+0000 4.19562844061393E+0000 4.19102104915821E+0000 + 4.18641471470502E+0000 4.18180943439686E+0000 4.17720520563817E+0000 4.17260202608966E+0000 4.16799989366871E+0000 + 4.16339880654370E+0000 4.15879876314766E+0000 4.15419976215446E+0000 4.14960180249857E+0000 4.14500488333906E+0000 + 4.14040900408660E+0000 4.13581416440261E+0000 4.13122036417177E+0000 4.12662760353503E+0000 4.12203588283910E+0000 + 4.11744520267675E+0000 4.11285556387625E+0000 4.10826696747866E+0000 4.10367941476240E+0000 4.09909290721567E+0000 + 4.09450744654649E+0000 4.08992303469147E+0000 4.08533967379312E+0000 4.08075736621223E+0000 4.07617611451362E+0000 + 4.07159592147133E+0000 4.06701679006520E+0000 4.06243872348365E+0000 4.05786172512153E+0000 4.05328579855726E+0000 + 4.04871094757139E+0000 4.04413717614442E+0000 4.03956448844613E+0000 4.03499288884684E+0000 4.03042238188836E+0000 + 4.02585297230626E+0000 4.02128466501914E+0000 4.01671746513008E+0000 4.01215137792815E+0000 4.00758640886302E+0000 + 4.00302256357448E+0000 3.99845984786586E+0000 3.99389826772134E+0000 3.98933782929400E+0000 3.98477853889500E+0000 + 3.98022040300856E+0000 3.97566342827130E+0000 3.97110762149704E+0000 3.96655298965612E+0000 3.96199953985855E+0000 + 3.95744727939215E+0000 3.95289621567989E+0000 3.94834635630586E+0000 3.94379770900440E+0000 3.93925028165055E+0000 + 3.93470408227000E+0000 3.93015911902339E+0000 3.92561540022243E+0000 3.92107293431659E+0000 3.91653172989085E+0000 + 3.91199179566465E+0000 3.90745314048713E+0000 3.90291577334718E+0000 3.89837970336376E+0000 3.89384493978364E+0000 + 3.88931149197045E+0000 3.88477936941844E+0000 3.88024858174522E+0000 3.87571913869564E+0000 3.87119105012223E+0000 + 3.86666432599770E+0000 3.86213897640641E+0000 3.85761501155817E+0000 3.85309244176733E+0000 3.84857127745550E+0000 + 3.84405152915528E+0000 3.83953320749940E+0000 3.83501632323929E+0000 3.83050088721439E+0000 3.82598691038069E+0000 + 3.82147440378121E+0000 3.81696337855228E+0000 3.81245384594225E+0000 3.80794581728312E+0000 3.80343930400803E+0000 + 3.79893431762908E+0000 3.79443086975105E+0000 3.78992897207650E+0000 3.78542863638353E+0000 3.78092987453960E+0000 + 3.77643269849163E+0000 3.77193712026990E+0000 3.76744315197942E+0000 3.76295080581120E+0000 3.75846009403244E+0000 + 3.75397102897669E+0000 3.74948362305263E+0000 3.74499788874290E+0000 3.74051383860419E+0000 3.73603148526239E+0000 + 3.73155084140023E+0000 3.72707191976851E+0000 3.72259473318622E+0000 3.71811929453686E+0000 3.71364561676481E+0000 + 3.70917371286418E+0000 3.70470359589380E+0000 3.70023527896862E+0000 3.69576877525848E+0000 3.69130409799318E+0000 + 3.68684126044010E+0000 3.68238027593046E+0000 3.67792115783316E+0000 3.67346391957604E+0000 3.66900857463099E+0000 + 3.66455513650773E+0000 3.66010361876885E+0000 3.65565403500615E+0000 3.65120639886686E+0000 3.64676072403499E+0000 + 3.64231702422140E+0000 3.63787531318623E+0000 3.63343560471530E+0000 3.62899791263633E+0000 3.62456225081023E+0000 + 3.62012863312240E+0000 3.61569707349149E+0000 3.61126758586067E+0000 3.60684018421143E+0000 3.60241488254356E+0000 + 3.59799169488646E+0000 3.59357063528662E+0000 3.58915171781140E+0000 3.58473495655654E+0000 3.58032036564496E+0000 + 3.57590795920045E+0000 3.57149775137770E+0000 3.56708975632979E+0000 3.56268398824952E+0000 3.55828046133058E+0000 + 3.55387918977880E+0000 3.54948018781470E+0000 3.54508346965587E+0000 3.54068904955466E+0000 3.53629694174796E+0000 + 3.53190716049862E+0000 3.52751972005776E+0000 3.52313463468486E+0000 3.51875191865403E+0000 3.51437158622763E+0000 + 3.50999365168137E+0000 3.50561812928544E+0000 3.50124503330198E+0000 3.49687437800015E+0000 3.49250617764607E+0000 + 3.48814044650024E+0000 3.48377719881503E+0000 3.47941644883465E+0000 3.47505821080141E+0000 3.47070249894814E+0000 + 3.46634932749818E+0000 3.46199871066280E+0000 3.45765066264117E+0000 3.45330519761657E+0000 3.44896232976895E+0000 + 3.44462207325977E+0000 3.44028444223193E+0000 3.43594945080724E+0000 3.43161711309772E+0000 3.42728744319929E+0000 + 3.42296045518537E+0000 3.41863616310809E+0000 3.41431458098942E+0000 3.40999572284643E+0000 3.40567960266212E+0000 + 3.40136623440312E+0000 3.39705563200061E+0000 3.39274780936804E+0000 3.38844278038710E+0000 3.38414055891660E+0000 + 3.37984115878984E+0000 3.37554459379807E+0000 3.37125087771708E+0000 3.36696002427671E+0000 3.36267204718740E+0000 + 3.35838696012751E+0000 3.35410477673175E+0000 3.34982551060770E+0000 3.34554917532299E+0000 3.34127578441289E+0000 + 3.33700535137773E+0000 3.33273788967641E+0000 3.32847341273277E+0000 3.32421193392145E+0000 3.31995346659336E+0000 + 3.31569802405009E+0000 3.31144561955278E+0000 3.30719626631822E+0000 3.30294997751879E+0000 3.29870676629512E+0000 + 3.29446664572797E+0000 3.29022962886623E+0000 3.28599572870260E+0000 3.28176495818499E+0000 3.27753733022155E+0000 + 3.27331285766785E+0000 3.26909155333443E+0000 3.26487342997270E+0000 3.26065850028889E+0000 3.25644677694528E+0000 + 3.25223827254857E+0000 3.24803299965242E+0000 3.24383097076113E+0000 3.23963219831426E+0000 3.23543669471594E+0000 + 3.23124447230156E+0000 3.22705554336322E+0000 3.22286992012667E+0000 3.21868761476139E+0000 3.21450863939337E+0000 + 3.21033300607555E+0000 3.20616072681589E+0000 3.20199181355489E+0000 3.19782627817314E+0000 3.19366413249899E+0000 + 3.18950538829623E+0000 3.18535005727169E+0000 3.18119815106685E+0000 3.17704968125512E+0000 3.17290465936361E+0000 + 3.16876309684287E+0000 3.16462500508924E+0000 3.16049039543064E+0000 3.15635927912775E+0000 3.15223166737777E+0000 + 3.14810757132013E+0000 3.14398700202286E+0000 3.13986997048702E+0000 3.13575648764465E+0000 3.13164656436445E+0000 + 3.12754021144595E+0000 3.12343743962835E+0000 3.11933825956793E+0000 3.11524268186305E+0000 3.11115071703277E+0000 + 3.10706237553676E+0000 3.10297766776555E+0000 3.09889660402678E+0000 3.09481919456781E+0000 3.09074544955615E+0000 + 3.08667537909362E+0000 3.08260899321428E+0000 3.07854630186820E+0000 3.07448731493943E+0000 3.07043204223425E+0000 + 3.06638049349015E+0000 3.06233267837375E+0000 3.05828860646650E+0000 3.05424828728330E+0000 3.05021173025882E+0000 + 3.04617894475775E+0000 3.04214994006887E+0000 3.03812472540041E+0000 3.03410330988640E+0000 3.03008570258140E+0000 + 3.02607191246816E+0000 3.02206194845492E+0000 3.01805581936561E+0000 3.01405353394743E+0000 3.01005510086564E+0000 + 3.00606052871706E+0000 3.00206982601762E+0000 2.99808300120092E+0000 2.99410006262013E+0000 2.99012101854717E+0000 + 2.98614587718434E+0000 2.98217464664989E+0000 2.97820733497988E+0000 2.97424395013064E+0000 2.97028449997346E+0000 + 2.96632899230883E+0000 2.96237743484937E+0000 2.95842983523339E+0000 2.95448620100920E+0000 2.95054653964272E+0000 + 2.94661085853312E+0000 2.94267916498002E+0000 2.93875146621606E+0000 2.93482776938065E+0000 2.93090808153093E+0000 + 2.92699240965218E+0000 2.92308076063478E+0000 2.91917314130092E+0000 2.91526955837310E+0000 2.91137001849824E+0000 + 2.90747452824489E+0000 2.90358309408945E+0000 2.89969572243761E+0000 2.89581241959611E+0000 2.89193319179619E+0000 + 2.88805804518299E+0000 2.88418698582397E+0000 2.88032001969899E+0000 2.87645715270147E+0000 2.87259839063696E+0000 + 2.86874373923750E+0000 2.86489320414510E+0000 2.86104679092142E+0000 2.85720450503593E+0000 2.85336635187818E+0000 + 2.84953233675382E+0000 2.84570246488444E+0000 2.84187674140818E+0000 2.83805517137756E+0000 2.83423775975222E+0000 + 2.83042451141911E+0000 2.82661543117537E+0000 2.82281052373737E+0000 2.81900979373074E+0000 2.81521324570015E+0000 + 2.81142088410061E+0000 2.80763271330923E+0000 2.80384873762118E+0000 2.80006896123308E+0000 2.79629338827256E+0000 + 2.79252202276714E+0000 2.78875486867317E+0000 2.78499192986056E+0000 2.78123321010471E+0000 2.77747871310754E+0000 + 2.77372844248022E+0000 2.76998240174968E+0000 2.76624059436839E+0000 2.76250302368847E+0000 2.75876969299071E+0000 + 2.75504060546194E+0000 2.75131576421280E+0000 2.74759517226902E+0000 2.74387883257067E+0000 2.74016674797072E+0000 + 2.73645892124156E+0000 2.73275535507089E+0000 2.72905605206696E+0000 2.72536101475314E+0000 2.72167024556451E+0000 + 2.71798374685370E+0000 2.71430152089546E+0000 2.71062356987988E+0000 2.70694989591434E+0000 2.70328050102002E+0000 + 2.69961538713383E+0000 2.69595455611958E+0000 2.69229800974928E+0000 2.68864574972365E+0000 2.68499777764741E+0000 + 2.68135409505112E+0000 2.67771470338508E+0000 2.67407960401529E+0000 2.67044879822726E+0000 2.66682228722665E+0000 + 2.66320007212983E+0000 2.65958215398503E+0000 2.65596853374902E+0000 2.65235921230760E+0000 2.64875419046022E+0000 + 2.64515346892049E+0000 2.64155704833614E+0000 2.63796492926221E+0000 2.63437711218699E+0000 2.63079359750656E+0000 + 2.62721438554340E+0000 2.62363947654023E+0000 2.62006887066265E+0000 2.61650256800168E+0000 2.61294056856165E+0000 + 2.60938287227282E+0000 2.60582947898523E+0000 2.60228038847598E+0000 2.59873560044583E+0000 2.59519511451235E+0000 + 2.59165893021523E+0000 2.58812704702421E+0000 2.58459946433027E+0000 2.58107618145158E+0000 2.57755719762337E+0000 + 2.57404251200721E+0000 2.57053212369022E+0000 2.56702603168907E+0000 2.56352423494247E+0000 2.56002673231040E+0000 + 2.55653352258681E+0000 2.55304460448071E+0000 2.54955997663893E+0000 2.54607963763192E+0000 2.54260358595097E+0000 + 2.53913182002224E+0000 2.53566433819191E+0000 2.53220113874086E+0000 2.52874221987854E+0000 2.52528757973616E+0000 + 2.52183721637941E+0000 2.51839112779756E+0000 2.51494931191557E+0000 2.51151176658518E+0000 2.50807848959296E+0000 + 2.50464947864541E+0000 2.50122473138567E+0000 2.49780424538947E+0000 2.49438801816434E+0000 2.49097604714750E+0000 + 2.48756832970716E+0000 2.48416486314039E+0000 2.48076564468858E+0000 2.47737067151645E+0000 2.47397994073086E+0000 + 2.47059344935912E+0000 2.46721119437124E+0000 2.46383317267237E+0000 2.46045938110280E+0000 2.45708981643578E+0000 + 2.45372447537954E+0000 2.45036335457583E+0000 2.44700645061340E+0000 2.44365376000489E+0000 2.44030527921117E+0000 + 2.43696100462297E+0000 2.43362093256689E+0000 2.43028505931824E+0000 2.42695338107993E+0000 2.42362589400615E+0000 + 2.42030259417720E+0000 2.41698347761776E+0000 2.41366854029680E+0000 2.41035777812142E+0000 2.40705118694086E+0000 + 2.40374876254370E+0000 2.40045050065784E+0000 2.39715639695991E+0000 2.39386644706367E+0000 2.39058064653285E+0000 + 2.38729899086820E+0000 2.38402147551149E+0000 2.38074809585702E+0000 2.37747884723930E+0000 2.37421372494323E+0000 + 2.37095272419108E+0000 2.36769584015403E+0000 2.36444306795209E+0000 2.36119440265067E+0000 2.35794983926457E+0000 + 2.35470937275389E+0000 2.35147299802393E+0000 2.34824070993197E+0000 2.34501250328723E+0000 2.34178837284672E+0000 + 2.33856831331243E+0000 2.33535231934362E+0000 2.33214038554376E+0000 2.32893250647140E+0000 2.32572867664015E+0000 + 2.32252889051042E+0000 2.31933314249551E+0000 2.31614142696228E+0000 2.31295373823243E+0000 2.30977007058658E+0000 + 2.30659041824782E+0000 2.30341477540629E+0000 2.30024313619446E+0000 2.29707549471178E+0000 2.29391184501505E+0000 + 2.29075218110738E+0000 2.28759649696080E+0000 2.28444478649083E+0000 2.28129704358456E+0000 2.27815326208487E+0000 + 2.27501343579032E+0000 2.27187755845930E+0000 2.26874562380995E+0000 2.26561762552289E+0000 2.26249355724186E+0000 + 2.25937341257161E+0000 2.25625718507379E+0000 2.25314486827238E+0000 2.25003645566256E+0000 2.24693194069700E+0000 + 2.24383131679541E+0000 2.24073457733831E+0000 2.23764171566911E+0000 2.23455272510434E+0000 2.23146759892334E+0000 + 2.22838633037235E+0000 2.22530891265898E+0000 2.22223533896111E+0000 2.21916560243172E+0000 2.21609969618231E+0000 + 2.21303761330147E+0000 2.20997934683972E+0000 2.20692488981842E+0000 2.20387423523667E+0000 2.20082737605540E+0000 + 2.19778430521666E+0000 2.19474501562364E+0000 2.19170950015644E+0000 2.18867775167212E+0000 2.18564976299568E+0000 + 2.18262552693246E+0000 2.17960503625226E+0000 2.17658828370656E+0000 2.17357526201957E+0000 2.17056596389715E+0000 + 2.16756038201646E+0000 2.16455850903283E+0000 2.16156033757493E+0000 2.15856586025444E+0000 2.15557506966185E+0000 + 2.15258795836860E+0000 2.14960451891867E+0000 2.14662474383695E+0000 2.14364862563473E+0000 2.14067615679931E+0000 + 2.13770732980579E+0000 2.13474213710456E+0000 2.13178057112754E+0000 2.12882262429581E+0000 2.12586828900919E+0000 + 2.12291755766151E+0000 2.11997042261629E+0000 2.11702687623316E+0000 2.11408691084835E+0000 2.11115051879351E+0000 + 2.10821769238592E+0000 2.10528842392436E+0000 2.10236270569885E+0000 2.09944052998502E+0000 2.09652188905113E+0000 + 2.09360677515598E+0000 2.09069518054052E+0000 2.08778709744460E+0000 2.08488251808954E+0000 2.08198143469764E+0000 + 2.07908383948105E+0000 2.07618972463549E+0000 2.07329908236327E+0000 2.07041190484537E+0000 2.06752818426939E+0000 + 2.06464791281281E+0000 2.06177108264716E+0000 2.05889768593802E+0000 2.05602771484717E+0000 2.05316116153813E+0000 + 2.05029801816576E+0000 2.04743827688736E+0000 2.04458192985301E+0000 2.04172896921105E+0000 2.03887938711170E+0000 + 2.03603317571048E+0000 2.03319032715362E+0000 2.03035083359059E+0000 2.02751468717136E+0000 2.02468188005062E+0000 + 2.02185240438285E+0000 2.01902625232871E+0000 2.01620341604448E+0000 2.01338388769613E+0000 2.01056765945165E+0000 + 2.00775472348380E+0000 2.00494507197512E+0000 2.00213869710528E+0000 1.99933559106233E+0000 1.99653574604905E+0000 + 1.99373915426331E+0000 1.99094580792409E+0000 1.98815569924688E+0000 1.98536882045710E+0000 1.98258516379571E+0000 + 1.97980472150941E+0000 1.97702748585771E+0000 1.97425344910660E+0000 1.97148260353563E+0000 1.96871494143231E+0000 + 1.96595045510407E+0000 1.96318913686778E+0000 1.96043097905046E+0000 1.95767597399140E+0000 1.95492411404997E+0000 + 1.95217539159578E+0000 1.94942979901929E+0000 1.94668732871842E+0000 1.94394797310988E+0000 1.94121172462923E+0000 + 1.93847857572804E+0000 1.93574851887820E+0000 1.93302154656419E+0000 1.93029765128942E+0000 1.92757682557705E+0000 + 1.92485906197561E+0000 1.92214435304775E+0000 1.91943269137456E+0000 1.91672406956331E+0000 1.91401848023624E+0000 + 1.91131591604543E+0000 1.90861636966079E+0000 1.90591983377226E+0000 1.90322630109903E+0000 1.90053576437541E+0000 + 1.89784821637004E+0000 1.89516364987241E+0000 1.89248205769154E+0000 1.88980343266876E+0000 1.88712776766639E+0000 + 1.88445505557702E+0000 1.88178528932004E+0000 1.87911846184021E+0000 1.87645456611128E+0000 1.87379359512896E+0000 + 1.87113554192866E+0000 1.86848039956856E+0000 1.86582816113813E+0000 1.86317881975394E+0000 1.86053236856325E+0000 + 1.85788880074692E+0000 1.85524810951873E+0000 1.85261028812045E+0000 1.84997532982619E+0000 1.84734322794099E+0000 + 1.84471397580870E+0000 1.84208756680140E+0000 1.83946399433079E+0000 1.83684325183547E+0000 1.83422533279092E+0000 + 1.83161023071030E+0000 1.82899793914164E+0000 1.82638845167003E+0000 1.82378176191343E+0000 1.82117786352551E+0000 + 1.81857675020505E+0000 1.81597841567955E+0000 1.81338285372312E+0000 1.81079005814086E+0000 1.80820002277463E+0000 + 1.80561274151662E+0000 1.80302820828736E+0000 1.80044641705784E+0000 1.79786736183103E+0000 1.79529103664910E+0000 + 1.79271743560487E+0000 1.79014655282335E+0000 1.78757838248246E+0000 1.78501291878883E+0000 1.78245015599931E+0000 + 1.77989008841314E+0000 1.77733271037349E+0000 1.77477801626747E+0000 1.77222600052478E+0000 1.76967665761923E+0000 + 1.76712998206806E+0000 1.76458596843988E+0000 1.76204461134545E+0000 1.75950590544132E+0000 1.75696984542555E+0000 + 1.75443642605003E+0000 1.75190564211262E+0000 1.74937748845722E+0000 1.74685195997169E+0000 1.74432905160011E+0000 + 1.74180875832348E+0000 1.73929107518059E+0000 1.73677599726166E+0000 1.73426351969613E+0000 1.73175363767006E+0000 + 1.72924634641535E+0000 1.72674164121701E+0000 1.72423951741470E+0000 1.72173997038983E+0000 1.71924299558074E+0000 + 1.71674858847412E+0000 1.71425674461375E+0000 1.71176745959119E+0000 1.70928072905162E+0000 1.70679654869391E+0000 + 1.70431491426420E+0000 1.70183582157183E+0000 1.69935926647285E+0000 1.69688524488088E+0000 1.69441375275926E+0000 + 1.69194478612692E+0000 1.68947834105913E+0000 1.68701441368976E+0000 1.68455300020126E+0000 1.68209409683555E+0000 + 1.67963769988397E+0000 1.67718380570328E+0000 1.67473241070342E+0000 1.67228351134762E+0000 1.66983710415893E+0000 + 1.66739318571239E+0000 1.66495175264809E+0000 1.66251280165898E+0000 1.66007632949670E+0000 1.65764233297241E+0000 + 1.65521080894814E+0000 1.65278175435431E+0000 1.65035516617233E+0000 1.64793104145217E+0000 1.64550937729061E+0000 + 1.64309017084731E+0000 1.64067341934923E+0000 1.63825912007472E+0000 1.63584727036600E+0000 1.63343786762409E+0000 + 1.63103090930455E+0000 1.62862639293573E+0000 1.62622431609631E+0000 1.62382467643212E+0000 1.62142747164527E+0000 + 1.61903269949789E+0000 1.61664035782168E+0000 1.61425044450193E+0000 1.61186295749005E+0000 1.60947789479628E+0000 + 1.60709525449420E+0000 1.60471503471716E+0000 1.60233723366632E+0000 1.59996184960206E+0000 1.59758888084621E+0000 + 1.59521832578357E+0000 1.59285018286274E+0000 1.59048445059474E+0000 1.58812112755601E+0000 1.58576021238410E+0000 + 1.58340170377628E+0000 1.58104560049989E+0000 1.57869190138138E+0000 1.57634060531453E+0000 1.57399171125312E+0000 + 1.57164521821693E+0000 1.56930112528523E+0000 1.56695943160922E+0000 1.56462013640052E+0000 1.56228323893262E+0000 + 1.55994873854687E+0000 1.55761663464154E+0000 1.55528692669060E+0000 1.55295961422620E+0000 1.55063469684316E+0000 + 1.54831217420749E+0000 1.54599204603957E+0000 1.54367431213332E+0000 1.54135897234784E+0000 1.53904602659981E+0000 + 1.53673547487600E+0000 1.53442731722493E+0000 1.53212155376062E+0000 1.52981818466818E+0000 1.52751721018957E+0000 + 1.52521863063358E+0000 1.52292244637262E+0000 1.52062865784829E+0000 1.51833726556598E+0000 1.51604827009454E+0000 + 1.51376167206748E+0000 1.51147747218087E+0000 1.50919567119961E+0000 1.50691626995425E+0000 1.50463926933885E+0000 + 1.50236467030846E+0000 1.50009247388436E+0000 1.49782268115637E+0000 1.49555529327663E+0000 1.49329031146267E+0000 + 1.49102773699337E+0000 1.48876757121279E+0000 1.48650981553500E+0000 1.48425447142867E+0000 1.48200154043819E+0000 + 1.47975102416345E+0000 1.47750292426838E+0000 1.47525724248659E+0000 1.47301398061110E+0000 1.47077314050254E+0000 + 1.46853472408147E+0000 1.46629873332992E+0000 1.46406517030108E+0000 1.46183403710426E+0000 1.45960533591929E+0000 + 1.45737906898155E+0000 1.45515523859193E+0000 1.45293384711399E+0000 1.45071489697663E+0000 1.44849839067082E+0000 + 1.44628433074634E+0000 1.44407271981629E+0000 1.44186356055719E+0000 1.43965685570716E+0000 1.43745260806862E+0000 + 1.43525082049982E+0000 1.43305149592307E+0000 1.43085463732148E+0000 1.42866024774125E+0000 1.42646833028876E+0000 + 1.42427888812883E+0000 1.42209192448658E+0000 1.41990744264718E+0000 1.41772544595962E+0000 1.41554593783193E+0000 + 1.41336892172460E+0000 1.41119440116620E+0000 1.40902237973530E+0000 1.40685286107758E+0000 1.40468584889702E+0000 + 1.40252134694664E+0000 1.40035935904754E+0000 1.39819988907187E+0000 1.39604294095106E+0000 1.39388851867960E+0000 + 1.39173662629878E+0000 1.38958726791307E+0000 1.38744044767943E+0000 1.38529616981366E+0000 1.38315443858977E+0000 + 1.38101525832960E+0000 1.37887863341624E+0000 1.37674456828335E+0000 1.37461306742192E+0000 1.37248413537770E+0000 + 1.37035777674863E+0000 1.36823399618498E+0000 1.36611279838930E+0000 1.36399418811957E+0000 1.36187817018693E+0000 + 1.35976474945320E+0000 1.35765393083013E+0000 1.35554571927911E+0000 1.35344011981720E+0000 1.35133713751086E+0000 + 1.34923677747706E+0000 1.34713904487707E+0000 1.34504394492576E+0000 1.34295148288650E+0000 1.34086166407119E+0000 + 1.33877449384215E+0000 1.33668997760288E+0000 1.33460812080777E+0000 1.33252892895883E+0000 1.33045240760163E+0000 + 1.32837856233353E+0000 1.32630739878956E+0000 1.32423892264993E+0000 1.32217313964719E+0000 1.32011005554980E+0000 + 1.31804967617645E+0000 1.31599200738177E+0000 1.31393705506511E+0000 1.31188482517238E+0000 1.30983532368375E+0000 + 1.30778855662869E+0000 1.30574453006839E+0000 1.30370325010928E+0000 1.30166472289447E+0000 1.29962895460866E+0000 + 1.29759595147595E+0000 1.29556571975381E+0000 1.29353826573730E+0000 1.29151359576023E+0000 1.28949171619368E+0000 + 1.28747263344342E+0000 1.28545635394766E+0000 1.28344288418125E+0000 1.28143223065083E+0000 1.27942439989973E+0000 + 1.27741939850312E+0000 1.27541723306541E+0000 1.27341791022216E+0000 1.27142143664236E+0000 1.26942781902398E+0000 + 1.26743706409771E+0000 1.26544917861761E+0000 1.26346416936865E+0000 1.26148204316185E+0000 1.25950280683732E+0000 + 1.25752646726277E+0000 1.25555303132637E+0000 1.25358250594584E+0000 1.25161489805940E+0000 1.24965021463182E+0000 + 1.24768846265071E+0000 1.24572964912384E+0000 1.24377378108184E+0000 1.24182086557331E+0000 1.23987090967048E+0000 + 1.23792392046546E+0000 1.23597990506535E+0000 1.23403887059753E+0000 1.23210082420174E+0000 1.23016577304107E+0000 + 1.22823372429214E+0000 1.22630468514356E+0000 1.22437866279940E+0000 1.22245566447650E+0000 1.22053569740451E+0000 + 1.21861876882780E+0000 1.21670488599785E+0000 1.21479405617517E+0000 1.21288628663273E+0000 1.21098158465026E+0000 + 1.20907995751653E+0000 1.20718141252709E+0000 1.20528595698123E+0000 1.20339359818384E+0000 1.20150434344624E+0000 + 1.19961820008079E+0000 1.19773517540589E+0000 1.19585527673757E+0000 1.19397851139176E+0000 1.19210488669158E+0000 + 1.19023440995011E+0000 1.18836708848686E+0000 1.18650292961358E+0000 1.18464194063583E+0000 1.18278412886208E+0000 + 1.18092950158927E+0000 1.17907806611303E+0000 1.17722982971663E+0000 1.17538479967443E+0000 1.17354298325754E+0000 + 1.17170438772201E+0000 1.16986902031642E+0000 1.16803688827351E+0000 1.16620799881124E+0000 1.16438235913929E+0000 + 1.16255997644992E+0000 1.16074085791978E+0000 1.15892501070650E+0000 1.15711244194901E+0000 1.15530315876908E+0000 + 1.15349716826859E+0000 1.15169447753029E+0000 1.14989509360971E+0000 1.14809902354128E+0000 1.14630627433405E+0000 + 1.14451685297554E+0000 1.14273076642475E+0000 1.14094802161143E+0000 1.13916862543866E+0000 1.13739258477787E+0000 + 1.13561990647184E+0000 1.13385059733357E+0000 1.13208466413656E+0000 1.13032211362713E+0000 1.12856295251051E+0000 + 1.12680718745962E+0000 1.12505482511087E+0000 1.12330587205750E+0000 1.12156033485687E+0000 1.11981822002159E+0000 + 1.11807953402749E+0000 1.11634428330403E+0000 1.11461247423648E+0000 1.11288411316477E+0000 1.11115920637955E+0000 + 1.10943776012869E+0000 1.10771978060838E+0000 1.10600527396345E+0000 1.10429424628921E+0000 1.10258670362257E+0000 + 1.10088265195351E+0000 1.09918209721538E+0000 1.09748504528294E+0000 1.09579150197108E+0000 1.09410147303944E+0000 + 1.09241496418573E+0000 1.09073198104880E+0000 1.08905252920157E+0000 1.08737661415255E+0000 1.08570424134416E+0000 + 1.08403541615581E+0000 1.08237014389644E+0000 1.08070842980677E+0000 1.07905027905381E+0000 1.07739569673428E+0000 + 1.07574468787369E+0000 1.07409725741939E+0000 1.07245341024541E+0000 1.07081315114783E+0000 1.06917648483958E+0000 + 1.06754341595929E+0000 1.06591394906074E+0000 1.06428808861897E+0000 1.06266583901817E+0000 1.06104720455856E+0000 + 1.05943218945783E+0000 1.05782079783906E+0000 1.05621303374143E+0000 1.05460890110738E+0000 1.05300840378747E+0000 + 1.05141154553803E+0000 1.04981833002256E+0000 1.04822876080619E+0000 1.04664284135170E+0000 1.04506057502368E+0000 + 1.04348196508609E+0000 1.04190701469941E+0000 1.04033572692133E+0000 1.03876810469845E+0000 1.03720415087240E+0000 + 1.03564386817540E+0000 1.03408725922903E+0000 1.03253432654525E+0000 1.03098507251693E+0000 1.02943949942472E+0000 + 1.02789760942997E+0000 1.02635940457919E+0000 1.02482488679853E+0000 1.02329405788819E+0000 1.02176691952848E+0000 + 1.02024347327389E+0000 1.01872372055212E+0000 1.01720766266673E+0000 1.01569530078486E+0000 1.01418663594764E+0000 + 1.01268166905952E+0000 1.01118040089319E+0000 1.00968283208551E+0000 1.00818896313311E+0000 1.00669879439494E+0000 + 1.00521232608511E+0000 1.00372955828052E+0000 1.00225049091135E+0000 1.00077512375973E+0000 9.99303456461135E-0001 + 9.97835488499545E-0001 9.96371219211179E-0001 9.94910647776910E-0001 9.93453773224053E-0001 9.92000594422286E-0001 + 9.90551110080736E-0001 9.89105318753294E-0001 9.87663218829041E-0001 9.86224808536388E-0001 9.84790085933494E-0001 + 9.83359048913181E-0001 9.81931695202360E-0001 9.80508022354412E-0001 9.79088027752522E-0001 9.77671708602839E-0001 + 9.76259061934669E-0001 9.74850084602256E-0001 9.73444773280272E-0001 9.72043124460880E-0001 9.70645134450793E-0001 + 9.69250799372643E-0001 9.67860115164000E-0001 9.66473077569321E-0001 9.65089682146813E-0001 9.63709924258413E-0001 + 9.62333799070364E-0001 9.60961301556544E-0001 9.59592426489219E-0001 9.58227168442371E-0001 9.56865521784006E-0001 + 9.55507480680272E-0001 9.54153039092092E-0001 9.52802190770224E-0001 9.51454929257006E-0001 9.50111247881020E-0001 + 9.48771139756467E-0001 9.47434597782943E-0001 9.46101614641669E-0001 9.44772182794861E-0001 9.43446294481562E-0001 + 9.42123941715824E-0001 9.40805116284899E-0001 9.39489809752944E-0001 9.38178013450132E-0001 9.36869718476352E-0001 + 9.35564915693074E-0001 9.34263595729812E-0001 9.32965748977956E-0001 9.31671365587756E-0001 9.30380435466098E-0001 + 9.29092948274270E-0001 9.27808893429682E-0001 9.26528260100476E-0001 9.25251037204470E-0001 9.23977213404153E-0001 + 9.22706777109581E-0001 9.21439716470603E-0001 9.20176019380934E-0001 9.18915673475128E-0001 9.17658666116419E-0001 + 9.16404984408725E-0001 9.15154615185681E-0001 9.13907545010753E-0001 9.12663760178148E-0001 9.11423246703817E-0001 + 9.10185990328334E-0001 9.08951976513045E-0001 9.07721190440573E-0001 9.06493617008183E-0001 9.05269240828672E-0001 + 9.04048046227307E-0001 9.02830017235166E-0001 9.01615137598373E-0001 9.00403390764299E-0001 8.99194759885222E-0001 + 8.97989227813660E-0001 8.96786777097687E-0001 8.95587389987378E-0001 8.94391048426555E-0001 8.93197734047296E-0001 + 8.92007428174396E-0001 8.90820111820673E-0001 8.89635765820393E-0001 8.88454371049670E-0001 8.87275908466350E-0001 + 8.86100359111720E-0001 8.84927704108619E-0001 8.83757924667926E-0001 8.82591002079110E-0001 8.81426917717109E-0001 + 8.80265653037265E-0001 8.79107189575024E-0001 8.77951508955223E-0001 8.76798592875446E-0001 8.75648423123282E-0001 + 8.74500981562074E-0001 8.73356250136607E-0001 8.72214210875614E-0001 8.71074845887090E-0001 8.69938137361593E-0001 + 8.68804067565959E-0001 8.67672618848601E-0001 8.66543773640811E-0001 8.65417514451672E-0001 8.64293823870162E-0001 + 8.63172684564054E-0001 8.62054079280024E-0001 8.60937990844949E-0001 8.59824402164017E-0001 8.58713296221625E-0001 + 8.57604656081086E-0001 8.56498464879517E-0001 8.55394705836762E-0001 8.54293362249876E-0001 8.53194417493636E-0001 + 8.52097855018233E-0001 8.51003658351373E-0001 8.49911811098784E-0001 8.48822296943511E-0001 8.47735099645615E-0001 + 8.46650203039065E-0001 8.45567591035846E-0001 8.44487247622446E-0001 8.43409156864371E-0001 8.42333302900223E-0001 + 8.41259669944605E-0001 8.40188242287816E-0001 8.39119004292337E-0001 8.38051940400154E-0001 8.36987035127234E-0001 + 8.35924273059198E-0001 8.34863638862269E-0001 8.33805117270500E-0001 8.32748693097133E-0001 8.31694351227453E-0001 + 8.30642076619281E-0001 8.29591854304282E-0001 8.28543669386038E-0001 8.27497507043367E-0001 8.26453352526794E-0001 + 8.25411191160654E-0001 8.24371008339159E-0001 8.23332789527291E-0001 8.22296520266945E-0001 8.21262186170570E-0001 + 8.20229772919242E-0001 8.19199266267597E-0001 8.18170652039076E-0001 8.17143916132883E-0001 8.16119044514788E-0001 + 8.15096023223269E-0001 8.14074838366381E-0001 8.13055476121429E-0001 8.12037922737492E-0001 8.11022164534696E-0001 + 8.10008187899054E-0001 8.08995979289826E-0001 8.07985525230714E-0001 8.06976812321272E-0001 8.05969827222837E-0001 + 8.04964556673180E-0001 8.03960987472026E-0001 8.02959106488830E-0001 8.01958900664075E-0001 8.00960357002884E-0001 + 7.99963462581985E-0001 7.98968204542106E-0001 7.97974570091296E-0001 7.96982546507847E-0001 7.95992121135111E-0001 + 7.95003281384422E-0001 7.94016014732746E-0001 7.93030308721951E-0001 7.92046150964574E-0001 7.91063529134973E-0001 + 7.90082430977123E-0001 7.89102844298206E-0001 7.88124756970716E-0001 7.87148156933358E-0001 7.86173032190723E-0001 + 7.85199370813370E-0001 7.84227160933840E-0001 7.83256390749585E-0001 7.82287048524263E-0001 7.81319122585386E-0001 + 7.80352601325208E-0001 7.79387473198772E-0001 7.78423726723173E-0001 7.77461350481711E-0001 7.76500333121524E-0001 + 7.75540663351836E-0001 7.74582329943424E-0001 7.73625321732564E-0001 7.72669627615407E-0001 7.71715236552129E-0001 + 7.70762137567418E-0001 7.69810319743619E-0001 7.68859772228355E-0001 7.67910484227463E-0001 7.66962445012415E-0001 + 7.66015643915705E-0001 7.65070070327653E-0001 7.64125713702401E-0001 7.63182563553093E-0001 7.62240609455617E-0001 + 7.61299841046236E-0001 7.60360248019004E-0001 7.59421820131355E-0001 7.58484547196818E-0001 7.57548419092863E-0001 + 7.56613425754633E-0001 7.55679557177880E-0001 7.54746803414129E-0001 7.53815154577498E-0001 7.52884600839866E-0001 + 7.51955132432165E-0001 7.51026739643639E-0001 7.50099412821503E-0001 7.49173142372036E-0001 7.48247918758402E-0001 + 7.47323732503381E-0001 7.46400574185753E-0001 7.45478434442827E-0001 7.44557303967638E-0001 7.43637173513119E-0001 + 7.42718033886841E-0001 7.41799875954973E-0001 7.40882690638252E-0001 7.39966468915744E-0001 7.39051201822039E-0001 + 7.38136880447727E-0001 7.37223495939262E-0001 7.36311039500263E-0001 7.35399502387882E-0001 7.34488875916158E-0001 + 7.33579151454234E-0001 7.32670320425191E-0001 7.31762374308786E-0001 7.30855304638022E-0001 7.29949103001683E-0001 + 7.29043761042340E-0001 7.28139270457242E-0001 7.27235622996731E-0001 7.26332810466367E-0001 7.25430824724730E-0001 + 7.24529657683682E-0001 7.23629301309267E-0001 7.22729747620321E-0001 7.21830988688953E-0001 7.20933016639990E-0001 + 7.20035823650833E-0001 7.19139401952136E-0001 7.18243743826224E-0001 7.17348841608181E-0001 7.16454687685295E-0001 + 7.15561274495469E-0001 7.14668594529554E-0001 7.13776640330376E-0001 7.12885404490940E-0001 7.11994879656349E-0001 + 7.11105058522210E-0001 7.10215933835525E-0001 7.09327498393715E-0001 7.08439745045300E-0001 7.07552666688305E-0001 + 7.06666256271765E-0001 7.05780506794755E-0001 7.04895411306444E-0001 7.04010962904913E-0001 7.03127154738457E-0001 + 7.02243980005021E-0001 7.01361431951430E-0001 7.00479503873652E-0001 6.99598189117274E-0001 6.98717481075484E-0001 + 6.97837373190578E-0001 6.96957858954434E-0001 6.96078931905667E-0001 6.95200585631753E-0001 6.94322813768056E-0001 + 6.93445609998501E-0001 6.92568968052725E-0001 6.91692881710078E-0001 6.90817344796148E-0001 6.89942351183856E-0001 + 6.89067894793507E-0001 6.88193969591393E-0001 6.87320569591304E-0001 6.86447688853745E-0001 6.85575321484540E-0001 + 6.84703461637588E-0001 6.83832103510546E-0001 6.82961241349463E-0001 6.82090869443420E-0001 6.81220982130410E-0001 + 6.80351573790943E-0001 6.79482638851630E-0001 6.78614171786074E-0001 6.77746167109712E-0001 6.76878619385703E-0001 + 6.76011523219558E-0001 6.75144873263988E-0001 6.74278664212907E-0001 6.73412890806490E-0001 6.72547547829138E-0001 + 6.71682630107857E-0001 6.70818132514606E-0001 6.69954049963841E-0001 6.69090377414446E-0001 6.68227109868110E-0001 + 6.67364242369377E-0001 6.66501770006949E-0001 6.65639687911230E-0001 6.64777991254579E-0001 6.63916675254080E-0001 + 6.63055735167826E-0001 6.62195166296849E-0001 6.61334963982659E-0001 6.60475123610638E-0001 6.59615640606322E-0001 + 6.58756510438586E-0001 6.57897728616137E-0001 6.57039290689859E-0001 6.56181192252026E-0001 6.55323428935088E-0001 + 6.54465996412770E-0001 6.53608890400324E-0001 6.52752106652059E-0001 6.51895640963489E-0001 6.51039489170743E-0001 + 6.50183647149984E-0001 6.49328110816406E-0001 6.48472876126166E-0001 6.47617939074963E-0001 6.46763295697237E-0001 + 6.45908942067690E-0001 6.45054874299225E-0001 6.44201088545722E-0001 6.43347580997462E-0001 6.42494347886001E-0001 + 6.41641385480432E-0001 6.40788690087640E-0001 6.39936258054021E-0001 6.39084085763850E-0001 6.38232169639109E-0001 + 6.37380506140791E-0001 6.36529091766003E-0001 6.35677923050733E-0001 6.34826996568850E-0001 6.33976308929615E-0001 + 6.33125856782141E-0001 6.32275636809966E-0001 6.31425645736143E-0001 6.30575880318018E-0001 6.29726337351482E-0001 + 6.28877013668487E-0001 6.28027906136027E-0001 6.27179011659764E-0001 6.26330327178800E-0001 6.25481849670142E-0001 + 6.24633576145997E-0001 6.23785503653187E-0001 6.22937629275921E-0001 6.22089950132466E-0001 6.21242463376657E-0001 + 6.20395166197518E-0001 6.19548055819087E-0001 6.18701129500031E-0001 6.17854384533476E-0001 6.17007818247464E-0001 + 6.16161428004781E-0001 6.15315211201518E-0001 6.14469165269003E-0001 6.13623287671098E-0001 6.12777575906981E-0001 + 6.11932027508856E-0001 6.11086640042414E-0001 6.10241411106868E-0001 6.09396338335204E-0001 6.08551419392730E-0001 + 6.07706651978389E-0001 6.06862033824153E-0001 6.06017562694216E-0001 6.05173236385239E-0001 6.04329052726808E-0001 + 6.03485009581685E-0001 6.02641104843084E-0001 6.01797336437460E-0001 6.00953702323065E-0001 6.00110200489341E-0001 + 5.99266828958441E-0001 5.98423585783567E-0001 5.97580469048574E-0001 5.96737476869922E-0001 5.95894607394367E-0001 + 5.95051858800700E-0001 5.94209229296372E-0001 5.93366717122213E-0001 5.92524320547779E-0001 5.91682037874580E-0001 + 5.90839867433132E-0001 5.89997807584481E-0001 5.89155856720659E-0001 5.88314013262799E-0001 5.87472275662238E-0001 + 5.86630642399688E-0001 5.85789111986125E-0001 5.84947682960906E-0001 5.84106353893070E-0001 5.83265123381801E-0001 + 5.82423990054544E-0001 5.81582952566813E-0001 5.80742009605004E-0001 5.79901159881725E-0001 5.79060402140524E-0001 + 5.78219735151652E-0001 5.77379157714652E-0001 5.76538668655826E-0001 5.75698266831472E-0001 5.74857951124707E-0001 + 5.74017720446351E-0001 5.73177573734528E-0001 5.72337509955980E-0001 5.71497528104598E-0001 5.70657627200810E-0001 + 5.69817806292464E-0001 5.68978064454855E-0001 5.68138400789690E-0001 5.67298814425749E-0001 5.66459304518708E-0001 + 5.65619870249874E-0001 5.64780510827719E-0001 5.63941225487046E-0001 5.63102013488588E-0001 5.62262874118398E-0001 + 5.61423806690440E-0001 5.60584810541905E-0001 5.59745885037525E-0001 5.58907029566596E-0001 5.58068243544939E-0001 + 5.57229526412131E-0001 5.56390877633897E-0001 5.55552296700845E-0001 5.54713783128494E-0001 5.53875336457298E-0001 + 5.53036956252460E-0001 5.52198642103738E-0001 5.51360393624400E-0001 5.50522210453826E-0001 5.49684092253880E-0001 + 5.48846038711729E-0001 5.48008049537933E-0001 5.47170124466468E-0001 5.46332263256474E-0001 5.45494465690126E-0001 + 5.44656731571368E-0001 5.43819060730455E-0001 5.42981453018814E-0001 5.42143908311432E-0001 5.41306426506881E-0001 + 5.40469007526268E-0001 5.39631651313467E-0001 5.38794357835363E-0001 5.37957127080365E-0001 5.37119959061231E-0001 + 5.36282853810994E-0001 5.35445811386218E-0001 5.34608831865081E-0001 5.33771915348479E-0001 5.32935061957451E-0001 + 5.32098271836878E-0001 5.31261545151614E-0001 5.30424882089101E-0001 5.29588282858095E-0001 5.28751747687606E-0001 + 5.27915276829299E-0001 5.27078870555133E-0001 5.26242529158037E-0001 5.25406252951493E-0001 5.24570042270424E-0001 + 5.23733897470568E-0001 5.22897818926764E-0001 5.22061807035571E-0001 5.21225862213558E-0001 5.20389984897105E-0001 + 5.19554175542859E-0001 5.18718434627967E-0001 5.17882762648153E-0001 5.17047160120110E-0001 5.16211627579582E-0001 + 5.15376165581588E-0001 5.14540774701318E-0001 5.13705455532847E-0001 5.12870208689153E-0001 5.12035034802572E-0001 + 5.11199934524382E-0001 5.10364908524822E-0001 5.09529957492893E-0001 5.08695082136159E-0001 5.07860283180332E-0001 + 5.07025561370376E-0001 5.06190917468569E-0001 5.05356352256693E-0001 5.04521866533231E-0001 5.03687461115770E-0001 + 5.02853136839064E-0001 5.02018894555707E-0001 5.01184735137665E-0001 5.00350659471084E-0001 4.99516668462604E-0001 + 4.98682763035467E-0001 4.97848944128879E-0001 4.97015212701074E-0001 4.96181569726065E-0001 4.95348016194965E-0001 + 4.94514553116877E-0001 4.93681181515642E-0001 4.92847902433776E-0001 4.92014716929002E-0001 4.91181626075350E-0001 + 4.90348630964923E-0001 4.89515732703765E-0001 4.88682932415151E-0001 4.87850231239165E-0001 4.87017630330095E-0001 + 4.86185130859508E-0001 4.85352734013858E-0001 4.84520440995598E-0001 4.83688253022537E-0001 4.82856171327854E-0001 + 4.82024197159896E-0001 4.81192331782629E-0001 4.80360576475212E-0001 4.79528932531144E-0001 4.78697401259364E-0001 + 4.77865983983393E-0001 4.77034682041350E-0001 4.76203496787055E-0001 4.75372429587422E-0001 4.74541481824221E-0001 + 4.73710654894089E-0001 4.72879950206579E-0001 4.72049369187231E-0001 4.71218913274308E-0001 4.70388583919897E-0001 + 4.69558382591022E-0001 4.68728310767247E-0001 4.67898369942874E-0001 4.67068561624334E-0001 4.66238887333042E-0001 + 4.65409348603001E-0001 4.64579946980814E-0001 4.63750684027888E-0001 4.62921561316938E-0001 4.62092580435727E-0001 + 4.61263742982032E-0001 4.60435050569581E-0001 4.59606504821917E-0001 4.58778107377024E-0001 4.57949859885355E-0001 + 4.57121764008313E-0001 4.56293821421334E-0001 4.55466033811262E-0001 4.54638402876359E-0001 4.53810930328295E-0001 + 4.52983617890402E-0001 4.52156467296360E-0001 4.51329480293733E-0001 4.50502658640674E-0001 4.49676004106818E-0001 + 4.48849518473294E-0001 4.48023203533171E-0001 4.47197061090370E-0001 4.46371092959896E-0001 4.45545300967623E-0001 + 4.44719686952289E-0001 4.43894252760880E-0001 4.43069000253042E-0001 4.42243931298894E-0001 4.41419047778588E-0001 + 4.40594351583648E-0001 4.39769844615431E-0001 4.38945528786242E-0001 4.38121406018459E-0001 4.37297478244100E-0001 + 4.36473747406817E-0001 4.35650215458598E-0001 4.34826884362642E-0001 4.34003756091381E-0001 4.33180832627372E-0001 + 4.32358115962641E-0001 4.31535608098916E-0001 4.30713311047630E-0001 4.29891226829271E-0001 4.29069357474050E-0001 + 4.28247705021466E-0001 4.27426271519652E-0001 4.26605059026711E-0001 4.25784069608951E-0001 4.24963305341999E-0001 + 4.24142768310367E-0001 4.23322460607017E-0001 4.22502384334473E-0001 4.21682541602174E-0001 4.20862934530463E-0001 + 4.20043565245505E-0001 4.19224435883941E-0001 4.18405548589129E-0001 4.17586905513593E-0001 4.16768508817694E-0001 + 4.15950360669858E-0001 4.15132463245924E-0001 4.14314818730250E-0001 4.13497429314617E-0001 4.12680297198677E-0001 + 4.11863424589513E-0001 4.11046813702091E-0001 4.10230466757712E-0001 4.09414385987126E-0001 4.08598573626539E-0001 + 4.07783031919396E-0001 4.06967763117722E-0001 4.06152769479013E-0001 4.05338053268688E-0001 4.04523616758540E-0001 + 4.03709462228069E-0001 4.02895591961605E-0001 4.02082008252753E-0001 4.01268713399510E-0001 4.00455709707048E-0001 + 3.99642999487162E-0001 3.98830585058056E-0001 3.98018468743785E-0001 3.97206652875157E-0001 3.96395139788506E-0001 + 3.95583931826369E-0001 3.94773031337268E-0001 3.93962440675933E-0001 3.93152162202195E-0001 3.92342198282550E-0001 + 3.91532551288266E-0001 3.90723223596283E-0001 3.89914217589657E-0001 3.89105535656566E-0001 3.88297180190199E-0001 + 3.87489153589093E-0001 3.86681458257920E-0001 3.85874096604924E-0001 3.85067071044601E-0001 3.84260383996140E-0001 + 3.83454037882982E-0001 3.82648035134830E-0001 3.81842378184190E-0001 3.81037069470623E-0001 3.80232111435825E-0001 + 3.79427506527882E-0001 3.78623257198365E-0001 3.77819365903673E-0001 3.77015835104256E-0001 3.76212667265283E-0001 + 3.75409864855420E-0001 3.74607430348397E-0001 3.73805366220656E-0001 3.73003674953936E-0001 3.72202359033026E-0001 + 3.71401420947010E-0001 3.70600863188250E-0001 3.69800688252957E-0001 3.69000898641749E-0001 3.68201496857409E-0001 + 3.67402485407585E-0001 3.66603866802093E-0001 3.65805643554827E-0001 3.65007818182980E-0001 3.64210393206477E-0001 + 3.63413371148883E-0001 3.62616754536496E-0001 3.61820545898809E-0001 3.61024747768052E-0001 3.60229362679536E-0001 + 3.59434393171427E-0001 3.58639841784301E-0001 3.57845711061364E-0001 3.57052003549133E-0001 3.56258721795859E-0001 + 3.55465868352204E-0001 3.54673445772370E-0001 3.53881456611841E-0001 3.53089903428293E-0001 3.52298788782153E-0001 + 3.51508115235809E-0001 3.50717885354068E-0001 3.49928101702347E-0001 3.49138766850283E-0001 3.48349883367563E-0001 + 3.47561453826626E-0001 3.46773480800414E-0001 3.45985966865638E-0001 3.45198914598832E-0001 3.44412326578610E-0001 + 3.43626205386003E-0001 3.42840553601862E-0001 3.42055373809909E-0001 3.41270668593800E-0001 3.40486440539832E-0001 + 3.39702692234463E-0001 3.38919426266001E-0001 3.38136645222913E-0001 3.37354351695741E-0001 3.36572548275185E-0001 + 3.35791237553341E-0001 3.35010422122574E-0001 3.34230104576532E-0001 3.33450287509467E-0001 3.32670973515896E-0001 + 3.31892165191504E-0001 3.31113865132124E-0001 3.30336075933853E-0001 3.29558800193949E-0001 3.28782040509027E-0001 + 3.28005799476863E-0001 3.27230079694696E-0001 3.26454883761041E-0001 3.25680214273305E-0001 3.24906073829487E-0001 + 3.24132465027839E-0001 3.23359390465725E-0001 3.22586852741664E-0001 3.21814854453062E-0001 3.21043398197113E-0001 + 3.20272486570915E-0001 3.19502122171577E-0001 3.18732307594975E-0001 3.17963045437445E-0001 3.17194338294314E-0001 + 3.16426188760231E-0001 3.15658599429735E-0001 3.14891572895665E-0001 3.14125111751543E-0001 3.13359218589407E-0001 + 3.12593895999933E-0001 3.11829146573445E-0001 3.11064972899464E-0001 3.10301377566137E-0001 3.09538363160914E-0001 + 3.08775932269636E-0001 3.08014087477787E-0001 3.07252831368439E-0001 3.06492166524415E-0001 3.05732095526919E-0001 + 3.04972620955644E-0001 3.04213745388777E-0001 3.03455471403215E-0001 3.02697801574567E-0001 3.01940738476127E-0001 + 3.01184284680233E-0001 3.00428442757129E-0001 2.99673215275644E-0001 2.98918604802619E-0001 2.98164613902790E-0001 + 2.97411245139468E-0001 2.96658501073624E-0001 2.95906384264912E-0001 2.95154897269957E-0001 2.94404042644172E-0001 + 2.93653822939931E-0001 2.92904240708395E-0001 2.92155298497904E-0001 2.91406998854551E-0001 2.90659344322171E-0001 + 2.89912337442001E-0001 2.89165980753129E-0001 2.88420276792038E-0001 2.87675228092823E-0001 2.86930837186738E-0001 + 2.86187106602417E-0001 2.85444038865981E-0001 2.84701636500700E-0001 2.83959902027092E-0001 2.83218837963274E-0001 + 2.82478446823573E-0001 2.81738731120249E-0001 2.80999693361994E-0001 2.80261336054965E-0001 2.79523661702089E-0001 + 2.78786672803173E-0001 2.78050371855017E-0001 2.77314761350832E-0001 2.76579843781045E-0001 2.75845621632713E-0001 + 2.75112097389180E-0001 2.74379273530760E-0001 2.73647152534502E-0001 2.72915736873839E-0001 2.72185029018360E-0001 + 2.71455031434601E-0001 2.70725746585243E-0001 2.69997176929334E-0001 2.69269324922630E-0001 2.68542193016438E-0001 + 2.67815783659111E-0001 2.67090099294427E-0001 2.66365142362510E-0001 2.65640915300511E-0001 2.64917420540304E-0001 + 2.64194660510323E-0001 2.63472637635669E-0001 2.62751354336035E-0001 2.62030813028004E-0001 2.61311016123775E-0001 + 2.60591966031160E-0001 2.59873665154038E-0001 2.59156115892006E-0001 2.58439320640025E-0001 2.57723281789226E-0001 + 2.57008001725745E-0001 2.56293482831763E-0001 2.55579727484688E-0001 2.54866738057613E-0001 2.54154516919310E-0001 + 2.53443066433417E-0001 2.52732388959125E-0001 2.52022486851286E-0001 2.51313362459834E-0001 2.50605018129777E-0001 + 2.49897456201767E-0001 2.49190679011058E-0001 2.48484688888769E-0001 2.47779488160378E-0001 2.47075079146868E-0001 + 2.46371464164265E-0001 2.45668645523742E-0001 2.44966625530690E-0001 2.44265406486449E-0001 2.43564990686331E-0001 + 2.42865380420776E-0001 2.42166577975806E-0001 2.41468585630821E-0001 2.40771405661021E-0001 2.40075040336015E-0001 + 2.39379491919929E-0001 2.38684762671746E-0001 2.37990854844837E-0001 2.37297770687420E-0001 2.36605512441856E-0001 + 2.35914082345108E-0001 2.35223482628850E-0001 2.34533715519229E-0001 2.33844783236162E-0001 2.33156687994608E-0001 + 2.32469432003282E-0001 2.31783017465813E-0001 2.31097446579571E-0001 2.30412721536133E-0001 2.29728844521849E-0001 + 2.29045817716681E-0001 2.28363643294539E-0001 2.27682323424208E-0001 2.27001860267714E-0001 2.26322255981592E-0001 + 2.25643512716190E-0001 2.24965632616001E-0001 2.24288617818967E-0001 2.23612470457747E-0001 2.22937192657969E-0001 + 2.22262786539497E-0001 2.21589254216315E-0001 2.20916597795819E-0001 2.20244819379039E-0001 2.19573921060873E-0001 + 2.18903904930072E-0001 2.18234773068658E-0001 2.17566527552843E-0001 2.16899170451629E-0001 2.16232703828544E-0001 + 2.15567129739541E-0001 2.14902450235089E-0001 2.14238667358530E-0001 2.13575783146895E-0001 2.12913799630422E-0001 + 2.12252718833373E-0001 2.11592542772273E-0001 2.10933273457887E-0001 2.10274912893930E-0001 2.09617463077292E-0001 + 2.08960925998499E-0001 2.08305303640772E-0001 2.07650597981069E-0001 2.06996810989028E-0001 2.06343944628012E-0001 + 2.05692000853697E-0001 2.05040981615234E-0001 2.04390888855481E-0001 2.03741724509114E-0001 2.03093490504502E-0001 + 2.02446188763225E-0001 2.01799821199132E-0001 2.01154389719623E-0001 2.00509896224469E-0001 1.99866342606741E-0001 + 1.99223730752218E-0001 1.98582062539498E-0001 1.97941339839870E-0001 1.97301564517779E-0001 1.96662738429526E-0001 + 1.96024863425489E-0001 1.95387941347420E-0001 1.94751974030665E-0001 1.94116963302981E-0001 1.93482910984533E-0001 + 1.92849818888118E-0001 1.92217688819274E-0001 1.91586522576041E-0001 1.90956321949301E-0001 1.90327088721838E-0001 + 1.89698824669379E-0001 1.89071531560004E-0001 1.88445211154138E-0001 1.87819865204660E-0001 1.87195495457365E-0001 + 1.86572103649312E-0001 1.85949691510931E-0001 1.85328260764604E-0001 1.84707813125012E-0001 1.84088350299362E-0001 + 1.83469873986671E-0001 1.82852385878468E-0001 1.82235887658782E-0001 1.81620381003431E-0001 1.81005867580485E-0001 + 1.80392349050609E-0001 1.79779827065880E-0001 1.79168303271074E-0001 1.78557779303067E-0001 1.77948256790360E-0001 + 1.77339737354129E-0001 1.76732222607155E-0001 1.76125714154527E-0001 1.75520213592925E-0001 1.74915722511553E-0001 + 1.74312242490956E-0001 1.73709775104659E-0001 1.73108321917159E-0001 1.72507884485091E-0001 1.71908464357105E-0001 + 1.71310063073858E-0001 1.70712682167653E-0001 1.70116323162899E-0001 1.69520987575164E-0001 1.68926676912815E-0001 + 1.68333392675241E-0001 1.67741136354028E-0001 1.67149909432120E-0001 1.66559713384757E-0001 1.65970549678525E-0001 + 1.65382419771463E-0001 1.64795325114000E-0001 1.64209267147766E-0001 1.63624247306059E-0001 1.63040267014187E-0001 + 1.62457327688634E-0001 1.61875430737410E-0001 1.61294577560865E-0001 1.60714769550267E-0001 1.60136008088615E-0001 + 1.59558294550521E-0001 1.58981630302077E-0001 1.58406016700969E-0001 1.57831455096346E-0001 1.57257946828581E-0001 + 1.56685493230088E-0001 1.56114095624483E-0001 1.55543755326581E-0001 1.54974473643095E-0001 1.54406251871799E-0001 + 1.53839091301992E-0001 1.53272993214140E-0001 1.52707958880691E-0001 1.52143989564885E-0001 1.51581086521692E-0001 + 1.51019250997215E-0001 1.50458484228913E-0001 1.49898787445478E-0001 1.49340161867183E-0001 1.48782608705397E-0001 + 1.48226129162578E-0001 1.47670724433215E-0001 1.47116395702155E-0001 1.46563144145904E-0001 1.46010970932141E-0001 + 1.45459877219830E-0001 1.44909864158976E-0001 1.44360932891088E-0001 1.43813084548817E-0001 1.43266320255351E-0001 + 1.42720641126194E-0001 1.42176048267132E-0001 1.41632542775417E-0001 1.41090125739162E-0001 1.40548798237808E-0001 + 1.40008561342241E-0001 1.39469416113940E-0001 1.38931363605573E-0001 1.38394404861223E-0001 1.37858540915784E-0001 + 1.37323772795430E-0001 1.36790101516774E-0001 1.36257528088405E-0001 1.35726053509216E-0001 1.35195678769464E-0001 + 1.34666404850646E-0001 1.34138232724775E-0001 1.33611163355083E-0001 1.33085197696137E-0001 1.32560336692636E-0001 + 1.32036581281551E-0001 1.31513932389248E-0001 1.30992390934712E-0001 1.30471957826663E-0001 1.29952633965346E-0001 + 1.29434420241804E-0001 1.28917317538227E-0001 1.28401326727107E-0001 1.27886448672668E-0001 1.27372684229418E-0001 + 1.26860034243339E-0001 1.26348499550922E-0001 1.25838080979637E-0001 1.25328779348165E-0001 1.24820595465188E-0001 + 1.24313530131424E-0001 1.23807584137696E-0001 1.23302758266125E-0001 1.22799053289341E-0001 1.22296469970835E-0001 + 1.21795009065433E-0001 1.21294671318323E-0001 1.20795457465831E-0001 1.20297368234689E-0001 1.19800404343294E-0001 + 1.19304566500068E-0001 1.18809855404421E-0001 1.18316271746977E-0001 1.17823816208906E-0001 1.17332489462099E-0001 + 1.16842292169455E-0001 1.16353224984336E-0001 1.15865288551640E-0001 1.15378483506229E-0001 1.14892810474303E-0001 + 1.14408270072430E-0001 1.13924862908685E-0001 1.13442589581069E-0001 1.12961450678893E-0001 1.12481446782041E-0001 + 1.12002578461390E-0001 1.11524846278373E-0001 1.11048250785339E-0001 1.10572792525178E-0001 1.10098472031980E-0001 + 1.09625289830059E-0001 1.09153246435092E-0001 1.08682342353267E-0001 1.08212578080971E-0001 1.07743954106354E-0001 + 1.07276470907629E-0001 1.06810128953908E-0001 1.06344928705316E-0001 1.05880870612382E-0001 1.05417955116567E-0001 + 1.04956182650202E-0001 1.04495553636116E-0001 1.04036068487867E-0001 1.03577727610341E-0001 1.03120531398474E-0001 + 1.02664480238152E-0001 1.02209574506197E-0001 1.01755814570127E-0001 1.01303200788077E-0001 1.00851733508982E-0001 + 1.00401413072742E-0001 9.99522398096758E-0002 9.95042140411748E-0002 9.90573360789707E-0002 9.86116062260351E-0002 + 9.81670247757838E-0002 9.77235920125540E-0002 9.72813082112323E-0002 9.68401736377927E-0002 9.64001885485609E-0002 + 9.59613531909338E-0002 9.55236678030079E-0002 9.50871326135715E-0002 9.46517478422786E-0002 9.42175136995195E-0002 + 9.37844303864739E-0002 9.33524980949813E-0002 9.29217170079584E-0002 9.24920872984802E-0002 9.20636091311686E-0002 + 9.16362826610314E-0002 9.12101080338788E-0002 9.07850853863160E-0002 9.03612148457352E-0002 8.99384965305511E-0002 + 8.95169305495241E-0002 8.90965170027865E-0002 8.86772559807397E-0002 8.82591475649590E-0002 8.78421918276382E-0002 + 8.74263888320687E-0002 8.70117386320233E-0002 8.65982412721134E-0002 8.61858967881465E-0002 8.57747052065100E-0002 + 8.53646665443459E-0002 8.49557808097258E-0002 8.45480480016432E-0002 8.41414681099451E-0002 8.37360411152632E-0002 + 8.33317669891893E-0002 8.29286456939016E-0002 8.25266771828890E-0002 8.21258614001505E-0002 8.17261982809198E-0002 + 8.13276877508034E-0002 8.09303297268101E-0002 8.05341241167336E-0002 8.01390708189618E-0002 7.97451697233233E-0002 + 7.93524207100428E-0002 7.89608236505877E-0002 7.85703784072335E-0002 7.81810848333006E-0002 7.77929427729635E-0002 + 7.74059520613041E-0002 7.70201125244883E-0002 7.66354239796356E-0002 7.62518862346286E-0002 7.58694990886558E-0002 + 7.54882623315926E-0002 7.51081757444835E-0002 7.47292390993508E-0002 7.43514521591262E-0002 7.39748146777658E-0002 + 7.35993264006101E-0002 7.32249870633361E-0002 7.28517963933577E-0002 7.24797541085329E-0002 7.21088599183201E-0002 + 7.17391135227904E-0002 7.13705146134172E-0002 7.10030628725176E-0002 7.06367579735507E-0002 7.02715995812341E-0002 + 6.99075873512294E-0002 6.95447209301353E-0002 6.91829999560935E-0002 6.88224240580458E-0002 6.84629928563403E-0002 + 6.81047059621103E-0002 6.77475629777587E-0002 6.73915634973190E-0002 6.70367071051585E-0002 6.66829933776913E-0002 + 6.63304218819582E-0002 6.59789921762955E-0002 6.56287038103278E-0002 6.52795563250224E-0002 6.49315492523754E-0002 + 6.45846821157118E-0002 6.42389544296167E-0002 6.38943656998675E-0002 6.35509154234878E-0002 6.32086030891102E-0002 + 6.28674281762923E-0002 6.25273901558785E-0002 6.21884884903019E-0002 6.18507226332688E-0002 6.15140920295059E-0002 + 6.11785961155540E-0002 6.08442343189605E-0002 6.05110060587651E-0002 6.01789107452470E-0002 5.98479477804107E-0002 + 5.95181165574868E-0002 5.91894164608627E-0002 5.88618468668164E-0002 5.85354071427082E-0002 5.82100966475284E-0002 + 5.78859147316446E-0002 5.75628607367946E-0002 5.72409339965736E-0002 5.69201338356251E-0002 5.66004595704370E-0002 + 5.62819105088408E-0002 5.59644859501904E-0002 5.56481851854173E-0002 5.53330074972712E-0002 5.50189521595100E-0002 + 5.47060184381297E-0002 5.43942055900594E-0002 5.40835128643914E-0002 5.37739395016948E-0002 5.34654847338233E-0002 + 5.31581477847128E-0002 5.28519278697566E-0002 5.25468241961699E-0002 5.22428359626745E-0002 5.19399623597394E-0002 + 5.16382025696369E-0002 5.13375557662501E-0002 5.10380211153765E-0002 5.07395977744119E-0002 5.04422848924682E-0002 + 5.01460816107384E-0002 4.98509870617474E-0002 4.95570003703369E-0002 4.92641206527917E-0002 4.89723470175152E-0002 + 4.86816785645273E-0002 4.83921143857686E-0002 4.81036535652178E-0002 4.78162951786379E-0002 4.75300382935697E-0002 + 4.72448819698846E-0002 4.69608252589095E-0002 4.66778672042897E-0002 4.63960068413620E-0002 4.61152431976457E-0002 + 4.58355752926500E-0002 4.55570021378685E-0002 4.52795227367726E-0002 4.50031360848681E-0002 4.47278411699381E-0002 + 4.44536369716014E-0002 4.41805224615557E-0002 4.39084966039449E-0002 4.36375583545446E-0002 4.33677066615646E-0002 + 4.30989404654573E-0002 4.28312586985998E-0002 4.25646602857870E-0002 4.22991441439139E-0002 4.20347091819077E-0002 + 4.17713543013452E-0002 4.15090783956995E-0002 4.12478803507077E-0002 4.09877590448645E-0002 4.07287133483565E-0002 + 4.04707421240543E-0002 4.02138442270076E-0002 3.99580185048145E-0002 3.97032637971788E-0002 3.94495789364039E-0002 + 3.91969627470123E-0002 3.89454140462403E-0002 3.86949316432825E-0002 3.84455143403484E-0002 3.81971609315326E-0002 + 3.79498702039961E-0002 3.77036409369616E-0002 3.74584719025198E-0002 3.72143618650001E-0002 3.69713095814018E-0002 + 3.67293138014516E-0002 3.64883732672236E-0002 3.62484867134458E-0002 3.60096528677458E-0002 3.57718704500199E-0002 + 3.55351381731154E-0002 3.52994547423258E-0002 3.50648188559479E-0002 3.48312292046516E-0002 3.45986844721628E-0002 + 3.43671833345694E-0002 3.41367244612562E-0002 3.39073065140852E-0002 3.36789281475156E-0002 3.34515880093511E-0002 + 3.32252847397943E-0002 3.30000169721318E-0002 3.27757833326034E-0002 3.25525824401464E-0002 3.23304129067672E-0002 + 3.21092733372851E-0002 3.18891623296412E-0002 3.16700784747054E-0002 3.14520203560833E-0002 3.12349865509897E-0002 + 3.10189756289888E-0002 3.08039861532449E-0002 3.05900166795753E-0002 3.03770657573255E-0002 3.01651319286102E-0002 + 2.99542137288743E-0002 2.97443096863853E-0002 2.95354183231713E-0002 2.93275381538853E-0002 2.91206676866173E-0002 + 2.89148054228272E-0002 2.87099498569629E-0002 2.85060994769586E-0002 2.83032527639160E-0002 2.81014081923515E-0002 + 2.79005642297507E-0002 2.77007193376346E-0002 2.75018719703587E-0002 2.73040205758009E-0002 2.71071635951687E-0002 + 2.69112994633723E-0002 2.67164266085794E-0002 2.65225434524001E-0002 2.63296484098188E-0002 2.61377398899472E-0002 + 2.59468162945064E-0002 2.57568760195882E-0002 2.55679174543898E-0002 2.53799389819662E-0002 2.51929389787846E-0002 + 2.50069158149724E-0002 2.48218678545026E-0002 2.46377934548106E-0002 2.44546909671061E-0002 2.42725587365582E-0002 + 2.40913951016599E-0002 2.39111983949819E-0002 2.37319669426634E-0002 2.35536990649132E-0002 2.33763930754371E-0002 + 2.32000472821295E-0002 2.30246599864367E-0002 2.28502294840490E-0002 2.26767540642010E-0002 2.25042320104266E-0002 + 2.23326615997959E-0002 2.21620411039244E-0002 2.19923687877025E-0002 2.18236429107481E-0002 2.16558617264535E-0002 + 2.14890234817908E-0002 2.13231264187655E-0002 2.11581687728290E-0002 2.09941487736987E-0002 2.08310646452269E-0002 + 2.06689146055884E-0002 2.05076968669588E-0002 2.03474096360190E-0002 2.01880511132535E-0002 2.00296194938984E-0002 + 1.98721129671134E-0002 1.97155297166124E-0002 1.95598679200891E-0002 1.94051257501653E-0002 1.92513013732453E-0002 + 1.90983929505277E-0002 1.89463986374312E-0002 1.87953165839080E-0002 1.86451449343141E-0002 1.84958818275958E-0002 + 1.83475253970330E-0002 1.82000737708074E-0002 1.80535250711731E-0002 1.79078774151523E-0002 1.77631289146598E-0002 + 1.76192776757998E-0002 1.74763217995626E-0002 1.73342593816305E-0002 1.71930885122475E-0002 1.70528072764705E-0002 + 1.69134137541029E-0002 1.67749060196913E-0002 1.66372821423312E-0002 1.65005401865562E-0002 1.63646782110606E-0002 + 1.62296942696519E-0002 1.60955864113119E-0002 1.59623526793015E-0002 1.58299911123686E-0002 1.56984997440441E-0002 + 1.55678766025754E-0002 1.54381197116249E-0002 1.53092270895653E-0002 1.51811967499876E-0002 1.50540267014428E-0002 + 1.49277149475669E-0002 1.48022594872696E-0002 1.46776583144123E-0002 1.45539094182526E-0002 1.44310107829303E-0002 + 1.43089603879125E-0002 1.41877562080540E-0002 1.40673962133400E-0002 1.39478783688828E-0002 1.38292006353671E-0002 + 1.37113609689192E-0002 1.35943573205937E-0002 1.34781876370097E-0002 1.33628498601566E-0002 1.32483419277759E-0002 + 1.31346617724628E-0002 1.30218073228792E-0002 1.29097765028241E-0002 1.27985672316788E-0002 1.26881774243724E-0002 + 1.25786049916362E-0002 1.24698478394245E-0002 1.23619038695210E-0002 1.22547709794085E-0002 1.21484470619143E-0002 + 1.20429300061047E-0002 1.19382176962581E-0002 1.18343080127278E-0002 1.17311988313946E-0002 1.16288880239540E-0002 + 1.15273734581377E-0002 1.14266529972633E-0002 1.13267245007130E-0002 1.12275858236751E-0002 1.11292348172378E-0002 + 1.10316693282598E-0002 1.09348872000091E-0002 1.08388862712313E-0002 1.07436643770134E-0002 1.06492193484618E-0002 + 1.05555490126037E-0002 1.04626511926098E-0002 1.03705237076967E-0002 1.02791643734458E-0002 1.01885710013844E-0002 + 1.00987413992405E-0002 1.00096733709734E-0002 9.92136471693317E-0003 9.83381323350456E-0003 9.74701671345960E-0003 + 9.66097294585928E-0003 9.57567971618070E-0003 9.49113480612234E-0003 9.40733599389217E-0003 9.32428105401300E-0003 + 9.24196775754626E-0003 9.16039387196179E-0003 9.07955716113622E-0003 8.99945538557709E-0003 8.92008630226029E-0003 + 8.84144766475756E-0003 8.76353722320284E-0003 8.68635272441990E-0003 8.60989191169522E-0003 8.53415252513140E-0003 + 8.45913230158143E-0003 8.38482897432472E-0003 8.31124027361432E-0003 8.23836392644988E-0003 8.16619765654410E-0003 + 8.09473918445067E-0003 8.02398622762766E-0003 7.95393650021035E-0003 7.88458771359142E-0003 7.81593757554771E-0003 + 7.74798379127291E-0003 7.68072406273034E-0003 7.61415608887808E-0003 7.54827756557095E-0003 7.48308618604447E-0003 + 7.41857964023495E-0003 7.35475561545755E-0003 7.29161179595260E-0003 7.22914586317580E-0003 7.16735549570024E-0003 + 7.10623836950691E-0003 7.04579215749825E-0003 6.98601452998292E-0003 6.92690315457789E-0003 6.86845569594858E-0003 + 6.81066981658546E-0003 6.75354317576675E-0003 6.69707343046476E-0003 6.64125823505369E-0003 6.58609524121169E-0003 + 6.53158209811469E-0003 6.47771645243578E-0003 6.42449594837706E-0003 6.37191822747444E-0003 6.31998092914851E-0003 + 6.26868169015254E-0003 6.21801814489640E-0003 6.16798792547851E-0003 6.11858866165297E-0003 6.06981798073166E-0003 + 6.02167350784356E-0003 5.97415286586944E-0003 5.92725367544149E-0003 5.88097355478048E-0003 5.83531012028023E-0003 + 5.79026098589002E-0003 5.74582376350413E-0003 5.70199606292916E-0003 5.65877549188376E-0003 5.61615965599838E-0003 + 5.57414615878255E-0003 5.53273260204754E-0003 5.49191658512545E-0003 5.45169570587764E-0003 5.41206756004391E-0003 + 5.37302974133994E-0003 5.33457984171757E-0003 5.29671545133234E-0003 5.25943415838053E-0003 5.22273354929456E-0003 + 5.18661120887337E-0003 5.15106471998922E-0003 5.11609166375055E-0003 5.08168961982806E-0003 5.04785616596590E-0003 + 5.01458887824242E-0003 4.98188533136394E-0003 4.94974309833877E-0003 4.91815975037943E-0003 4.88713285749015E-0003 + 4.85665998794500E-0003 4.82673870854920E-0003 4.79736658473731E-0003 4.76854118037764E-0003 4.74026005803378E-0003 + 4.71252077883427E-0003 4.68532090244028E-0003 4.65865798740534E-0003 4.63252959075097E-0003 4.60693326839193E-0003 + 4.58186657474441E-0003 4.55732706328217E-0003 4.53331228594858E-0003 4.50981979384376E-0003 4.48684713666914E-0003 + 4.46439186302234E-0003 4.44245152052863E-0003 4.42102365561248E-0003 4.40010581359623E-0003 4.37969553892993E-0003 + 4.35979037496279E-0003 4.34038786404205E-0003 4.32148554764465E-0003 4.30308096624695E-0003 4.28517165948922E-0003 + 4.26775516607808E-0003 4.25082902388557E-0003 4.23439076998273E-0003 4.21843794064039E-0003 4.20296807126438E-0003 + 4.18797869669157E-0003 4.17346735089552E-0003 4.15943156724980E-0003 4.14586887836486E-0003 4.13277681608882E-0003 + 4.12015291206653E-0003 4.10799469698554E-0003 4.09629970097090E-0003 4.08506545384899E-0003 4.07428948478729E-0003 + 4.06396932226246E-0003 4.05410249475140E-0003 4.04468652984521E-0003 4.03571895487454E-0003 4.02719729697661E-0003 + 4.01911908253743E-0003 4.01148183798205E-0003 4.00428308921678E-0003 3.99752036186055E-0003 3.99119118131191E-0003 + 3.98529307275036E-0003 3.97982356113754E-0003 3.97478017121855E-0003 3.97016042762203E-0003 3.96596185476263E-0003 + 3.96218197703999E-0003 3.95881831870835E-0003 3.95586840410856E-0003 3.95332975714226E-0003 3.95119990222888E-0003 + 3.94947636351625E-0003 3.94815666507971E-0003 3.94723833141811E-0003 3.94671888682893E-0003 3.94659585580539E-0003 + 3.94686676303810E-0003 3.94752913328457E-0003 3.94858049160181E-0003 3.95001836321593E-0003 3.95184027358973E-0003 + 3.95404374852337E-0003 3.95662631395799E-0003 3.95958549620835E-0003 3.96291882216291E-0003 3.96662381875694E-0003 + 3.97069801346976E-0003 3.97513893412823E-0003 3.97994410913992E-0003 3.98511106729659E-0003 3.99063733777589E-0003 + 3.99652045044082E-0003 4.00275793567625E-0003 4.00934732435770E-0003 4.01628614805169E-0003 4.02357193878603E-0003 + 4.03120222931642E-0003 4.03917455319466E-0003 4.04748644447270E-0003 4.05613543800251E-0003 4.06511906937187E-0003 + 4.07443487493952E-0003 4.08408039180403E-0003 4.09405315803778E-0003 4.10435071232459E-0003 4.11497059435935E-0003 + 4.12591034471766E-0003 4.13716750485793E-0003 4.14873961715663E-0003 4.16062422504313E-0003 4.17281887286925E-0003 + 4.18532110594452E-0003 4.19812847073755E-0003 4.21123851461272E-0003 4.22464878623074E-0003 4.23835683521899E-0003 + 4.25236021240620E-0003 4.26665646969189E-0003 4.28124316018150E-0003 4.29611783835492E-0003 4.31127805963689E-0003 + 4.32672138099748E-0003 4.34244536038950E-0003 4.35844755731595E-0003 4.37472553263308E-0003 4.39127684818702E-0003 + 4.40809906761426E-0003 4.42518975574563E-0003 4.44254647887479E-0003 4.46016680479409E-0003 4.47804830256410E-0003 + 4.49618854308196E-0003 4.51458509848486E-0003 4.53323554251872E-0003 4.55213745054084E-0003 4.57128839955584E-0003 + 4.59068596795182E-0003 4.61032773613595E-0003 4.63021128577084E-0003 4.65033420047697E-0003 4.67069406550218E-0003 + 4.69128846775765E-0003 4.71211499605406E-0003 4.73317124083757E-0003 4.75445479452609E-0003 4.77596325121193E-0003 + 4.79769420686463E-0003 4.81964525940065E-0003 4.84181400858603E-0003 4.86419805610599E-0003 4.88679500560123E-0003 + 4.90960246267078E-0003 4.93261803490830E-0003 4.95583933197181E-0003 4.97926396548643E-0003 5.00288954914754E-0003 + 5.02671369879058E-0003 5.05073403222691E-0003 5.07494816961454E-0003 5.09935373305998E-0003 5.12394834698905E-0003 + 5.14872963788237E-0003 5.17369523457950E-0003 5.19884276814822E-0003 5.22416987178718E-0003 5.24967418119721E-0003 + 5.27535333414926E-0003 5.30120497095623E-0003 5.32722673424181E-0003 5.35341626901062E-0003 5.37977122258439E-0003 + 5.40628924477261E-0003 5.43296798790934E-0003 5.45980510662187E-0003 5.48679825820258E-0003 5.51394510241115E-0003 + 5.54124330147783E-0003 5.56869052034145E-0003 5.59628442645157E-0003 5.62402268963755E-0003 5.65190298278283E-0003 + 5.67992298109028E-0003 5.70808036268949E-0003 5.73637280806967E-0003 5.76479800078788E-0003 5.79335362693542E-0003 + 5.82203737544337E-0003 5.85084693795176E-0003 5.87978000904812E-0003 5.90883428593509E-0003 5.93800746887060E-0003 + 5.96729726086905E-0003 5.99670136794008E-0003 6.02621749882315E-0003 6.05584336536093E-0003 6.08557668230115E-0003 + 6.11541516736744E-0003 6.14535654126288E-0003 6.17539852780828E-0003 6.20553885367653E-0003 6.23577524886743E-0003 + 6.26610544627385E-0003 6.29652718188723E-0003 6.32703819500342E-0003 6.35763622792328E-0003 6.38831902612474E-0003 + 6.41908433826657E-0003 6.44992991639423E-0003 6.48085351557306E-0003 6.51185289426267E-0003 6.54292581411855E-0003 + 6.57407004016435E-0003 6.60528334066092E-0003 6.63656348727864E-0003 6.66790825500015E-0003 6.69931542232662E-0003 + 6.73078277094419E-0003 6.76230808606525E-0003 6.79388915639863E-0003 6.82552377408604E-0003 6.85720973473970E-0003 + 6.88894483748003E-0003 6.92072688490583E-0003 6.95255368323336E-0003 6.98442304223273E-0003 7.01633277526571E-0003 + 7.04828069928969E-0003 7.08026463486173E-0003 7.11228240624394E-0003 7.14433184132305E-0003 7.17641077166514E-0003 + 7.20851703263809E-0003 7.24064846324659E-0003 7.27280290623761E-0003 7.30497820818914E-0003 7.33717221939588E-0003 + 7.36938279405949E-0003 7.40160779003887E-0003 7.43384506929442E-0003 7.46609249741818E-0003 7.49834794401048E-0003 + 7.53060928253178E-0003 7.56287439044233E-0003 7.59514114902003E-0003 7.62740744361884E-0003 7.65967116353743E-0003 + 7.69193020198949E-0003 7.72418245643016E-0003 7.75642582818729E-0003 7.78865822266916E-0003 7.82087754931788E-0003 + 7.85308172183430E-0003 7.88526865792782E-0003 7.91743627943946E-0003 7.94958251238019E-0003 7.98170528696921E-0003 + 8.01380253755343E-0003 8.04587220274770E-0003 8.07791222537125E-0003 8.10992055252005E-0003 8.14189513553726E-0003 + 8.17383393001759E-0003 8.20573489596477E-0003 8.23759599755794E-0003 8.26941520351319E-0003 8.30119048666292E-0003 + 8.33291982440241E-0003 8.36460119849028E-0003 8.39623259507001E-0003 8.42781200469141E-0003 8.45933742245128E-0003 + 8.49080684779374E-0003 8.52221828477009E-0003 8.55356974178798E-0003 8.58485923192243E-0003 8.61608477273317E-0003 + 8.64724438632025E-0003 8.67833609939679E-0003 8.70935794325953E-0003 8.74030795375932E-0003 8.77118417137394E-0003 + 8.80198464136612E-0003 8.83270741354960E-0003 8.86335054239601E-0003 8.89391208712480E-0003 8.92439011162264E-0003 + 8.95478268466993E-0003 8.98508787955305E-0003 9.01530377444442E-0003 9.04542845235606E-0003 9.07546000099073E-0003 + 9.10539651293439E-0003 9.13523608557559E-0003 9.16497682116146E-0003 9.19461682681958E-0003 9.22415421457979E-0003 + 9.25358710120813E-0003 9.28291360870718E-0003 9.31213186373987E-0003 9.34123999801020E-0003 9.37023614811423E-0003 + 9.39911845575014E-0003 9.42788506762045E-0003 9.45653413526582E-0003 9.48506381546332E-0003 9.51347226988914E-0003 + 9.54175766538017E-0003 9.56991817376768E-0003 9.59795197200203E-0003 9.62585724227748E-0003 9.65363217164321E-0003 + 9.68127495247060E-0003 9.70878378235546E-0003 9.73615686384884E-0003 9.76339240487312E-0003 9.79048861845286E-0003 + 9.81744372290826E-0003 9.84425594170581E-0003 9.87092350361761E-0003 9.89744464267489E-0003 9.92381759817299E-0003 + 9.95004061469353E-0003 9.97611194217804E-0003 1.00020298358128E-0002 1.00277925561713E-0002 1.00533983692362E-0002 + 1.00788455461987E-0002 1.01041323637722E-0002 1.01292571040431E-0002 1.01542180544586E-0002 1.01790135079695E-0002 + 1.02036417628798E-0002 1.02281011229903E-0002 1.02523898976200E-0002 1.02765064014743E-0002 1.03004489548389E-0002 + 1.03242158834817E-0002 1.03478055186237E-0002 1.03712161972021E-0002 1.03944462615140E-0002 1.04174940595659E-0002 + 1.04403579448548E-0002 1.04630362765459E-0002 1.04855274193396E-0002 1.05078297435976E-0002 1.05299416253131E-0002 + 1.05518614461510E-0002 1.05735875934182E-0002 1.05951184601036E-0002 1.06164524448313E-0002 1.06375879519865E-0002 + 1.06585233917208E-0002 1.06792571797504E-0002 1.06997877377066E-0002 1.07201134928643E-0002 1.07402328783376E-0002 + 1.07601443329471E-0002 1.07798463013626E-0002 1.07993372340398E-0002 1.08186155872253E-0002 1.08376798230828E-0002 + 1.08565284094914E-0002 1.08751598202921E-0002 1.08935725351555E-0002 1.09117650396382E-0002 1.09297358251027E-0002 + 1.09474833889980E-0002 1.09650062345030E-0002 1.09823028708768E-0002 1.09993718131704E-0002 1.10162115824915E-0002 + 1.10328207059056E-0002 1.10491977163902E-0002 1.10653411529948E-0002 1.10812495607089E-0002 1.10969214904837E-0002 + 1.11123554994286E-0002 1.11275501505735E-0002 1.11425040130132E-0002 1.11572156619472E-0002 1.11716836785292E-0002 + 1.11859066501493E-0002 1.11998831701629E-0002 1.12136118380687E-0002 1.12270912594450E-0002 1.12403200460590E-0002 + 1.12532968157336E-0002 1.12660201924569E-0002 1.12784888063873E-0002 1.12907012938245E-0002 1.13026562973014E-0002 + 1.13143524654337E-0002 1.13257884531157E-0002 1.13369629213354E-0002 1.13478745375091E-0002 1.13585219750358E-0002 + 1.13689039136848E-0002 1.13790190394616E-0002 1.13888660445273E-0002 1.13984436275331E-0002 1.14077504931403E-0002 + 1.14167853523899E-0002 1.14255469227257E-0002 1.14340339277393E-0002 1.14422450974355E-0002 1.14501791680476E-0002 + 1.14578348822680E-0002 1.14652109890105E-0002 1.14723062435900E-0002 1.14791194076928E-0002 1.14856492493298E-0002 + 1.14918945429120E-0002 1.14978540692382E-0002 1.15035266155181E-0002 1.15089109753429E-0002 1.15140059486385E-0002 + 1.15188103419147E-0002 1.15233229680098E-0002 1.15275426461654E-0002 1.15314682021538E-0002 1.15350984681272E-0002 + 1.15384322827793E-0002 1.15414684911599E-0002 1.15442059448888E-0002 1.15466435020920E-0002 1.15487800272678E-0002 + 1.15506143915360E-0002 1.15521454724346E-0002 1.15533721541344E-0002 1.15542933272003E-0002 1.15549078887712E-0002 + 1.15552147426007E-0002 1.15552127988877E-0002 1.15549009744394E-0002 1.15542781925718E-0002 1.15533433833074E-0002 + 1.15520954830664E-0002 1.15505334349343E-0002 1.15486561885971E-0002 1.15464627003299E-0002 1.15439519330024E-0002 + 1.15411228560839E-0002 1.15379744456494E-0002 1.15345056844723E-0002 1.15307155618899E-0002 1.15266030738444E-0002 + 1.15221672230102E-0002 1.15174070186425E-0002 1.15123214766877E-0002 1.15069096197014E-0002 1.15011704769761E-0002 + 1.14951030844251E-0002 1.14887064846745E-0002 1.14819797269994E-0002 1.14749218674170E-0002 1.14675319685865E-0002 + 1.14598090998677E-0002 1.14517523373966E-0002 1.14433607639153E-0002 1.14346334690233E-0002 1.14255695488848E-0002 + 1.14161681065150E-0002 1.14064282516277E-0002 1.13963491006230E-0002 1.13859297766986E-0002 1.13751694098198E-0002 + 1.13640671366377E-0002 1.13526221006348E-0002 1.13408334519902E-0002 1.13287003476555E-0002 1.13162219513953E-0002 + 1.13033974337926E-0002 1.12902259720791E-0002 1.12767067503863E-0002 1.12628389595404E-0002 1.12486217972608E-0002 + 1.12340544679377E-0002 1.12191361829710E-0002 1.12038661602840E-0002 1.11882436248564E-0002 1.11722678083776E-0002 + 1.11559379493057E-0002 1.11392532930485E-0002 1.11222130916348E-0002 1.11048166041421E-0002 1.10870630963681E-0002 + 1.10689518409592E-0002 1.10504821173455E-0002 1.10316532119224E-0002 1.10124644177923E-0002 1.09929150349809E-0002 + 1.09730043703198E-0002 1.09527317375576E-0002 1.09320964572245E-0002 1.09110978567961E-0002 1.08897352704527E-0002 + 1.08680080394014E-0002 1.08459155116354E-0002 1.08234570420272E-0002 1.08006319922990E-0002 1.07774397310636E-0002 + 1.07538796338120E-0002 1.07299510829011E-0002 1.07056534675420E-0002 1.06809861838935E-0002 1.06559486348908E-0002 + 1.06305402304807E-0002 1.06047603873977E-0002 1.05786085292398E-0002 1.05520840865975E-0002 1.05251864968477E-0002 + 1.04979152043533E-0002 1.04702696603270E-0002 1.04422493227665E-0002 1.04138536567248E-0002 1.03850821341213E-0002 + 1.03559342336940E-0002 1.03264094411114E-0002 1.02965072489067E-0002 1.02662271566606E-0002 1.02355686706347E-0002 + 1.02045313041137E-0002 1.01731145772863E-0002 1.01413180172156E-0002 1.01091411578800E-0002 1.00765835401074E-0002 + 1.00436447116162E-0002 1.00103242271802E-0002 9.97662164831512E-0003 9.94253654347855E-0003 9.90806848798717E-0003 + 9.87321706421681E-0003 9.83798186121797E-0003 9.80236247511112E-0003 9.76635850886166E-0003 9.72996957230294E-0003 + 9.69319528217711E-0003 9.65603526214046E-0003 9.61848914280428E-0003 9.58055656151838E-0003 9.54223716267809E-0003 + 9.50353059748116E-0003 9.46443652408392E-0003 9.42495460742021E-0003 9.38508451947304E-0003 9.34482593897800E-0003 + 9.30417855162394E-0003 9.26314204996943E-0003 9.22171613344810E-0003 9.17990050838276E-0003 9.13769488798184E-0003 + 9.09509899227354E-0003 9.05211254831556E-0003 9.00873528983590E-0003 8.96496695761151E-0003 8.92080729913566E-0003 + 8.87625606890776E-0003 8.83131302823408E-0003 8.78597794520624E-0003 8.74025059491110E-0003 8.69413075923134E-0003 + 8.64761822685957E-0003 8.60071279341032E-0003 8.55341426133629E-0003 8.50572243992464E-0003 8.45763714527541E-0003 + 8.40915820039584E-0003 8.36028543505407E-0003 8.31101868590018E-0003 8.26135779641788E-0003 8.21130261690293E-0003 + 8.16085300447724E-0003 8.11000882309400E-0003 8.05876994347148E-0003 8.00713624324981E-0003 7.95510760677311E-0003 + 7.90268392522843E-0003 7.84986509662409E-0003 7.79665102574129E-0003 7.74304162415700E-0003 7.68903681024913E-0003 + 7.63463650918372E-0003 7.57984065289326E-0003 7.52464918009067E-0003 7.46906203627442E-0003 7.41307917370674E-0003 + 7.35670055138297E-0003 7.29992613506340E-0003 7.24275589734089E-0003 7.18518981745817E-0003 7.12722788141123E-0003 + 7.06887008200796E-0003 7.01011641872116E-0003 6.95096689779192E-0003 6.89142153214517E-0003 6.83148034147515E-0003 + 6.77114335209834E-0003 6.71041059719998E-0003 6.64928211645426E-0003 6.58775795642304E-0003 6.52583817024756E-0003 + 6.46352281776970E-0003 6.40081196554588E-0003 6.33770568679830E-0003 6.27420406134812E-0003 6.21030717577270E-0003 + 6.14601512323130E-0003 6.08132800357750E-0003 6.01624592325651E-0003 5.95076899541765E-0003 5.88489733977574E-0003 + 5.81863108271458E-0003 5.75197035716627E-0003 5.68491530274158E-0003 5.61746606563617E-0003 5.54962279859943E-0003 + 5.48138566102910E-0003 5.41275481884142E-0003 5.34373044456567E-0003 5.27431271732205E-0003 5.20450182271870E-0003 + 5.13429795294626E-0003 5.06370130678264E-0003 4.99271208948097E-0003 4.92133051284622E-0003 4.84955679518603E-0003 + 4.77739116139629E-0003 4.70483384276813E-0003 4.63188507717239E-0003 4.55854510892946E-0003 4.48481418884995E-0003 + 4.41069257423930E-0003 4.33618052883955E-0003 4.26127832284295E-0003 4.18598623295059E-0003 4.11030454221507E-0003 + 4.03423354018910E-0003 3.95777352280410E-0003 3.88092479243784E-0003 3.80368765785598E-0003 3.72606243421667E-0003 + 3.64804944307511E-0003 3.56964901239715E-0003 3.49086147643765E-0003 3.41168717588025E-0003 3.33212645772469E-0003 + 3.25217967532743E-0003 3.17184718838809E-0003 3.09112936289988E-0003 3.01002657117212E-0003 2.92853919187983E-0003 + 2.84666760989676E-0003 2.76441221639010E-0003 2.68177340891518E-0003 2.59875159115816E-0003 2.51534717314808E-0003 + 2.43156057108069E-0003 2.34739220745833E-0003 2.26284251098595E-0003 2.17791191654837E-0003 2.09260086525984E-0003 + 2.00690980441421E-0003 1.92083918754346E-0003 1.83438947424132E-0003 1.74756113036643E-0003 1.66035462786588E-0003 + 1.57277044487894E-0003 1.48480906560576E-0003 1.39647098041108E-0003 1.30775668575617E-0003 1.21866668416691E-0003 + 1.12920148431040E-0003 1.03936160088156E-0003 9.49147554643586E-0004 8.58559872404948E-0004 7.67599087050819E-0004 + 6.76265737456684E-0004 5.84560368492510E-0004 4.92483531090330E-0004 4.00035782094379E-0004 3.07217684419283E-0004 + 2.14029806909206E-0004 1.20472724314757E-0004 2.65470173786735E-0005 -6.77467272235241E-0005 -1.62407916897584E-0004 +-2.57435953180880E-0004 -3.52830231665784E-0004 -4.48590142113554E-0004 -5.44715068350487E-0004 -6.41204388418165E-0004 +-7.38057474478701E-0004 -8.35273692865193E-0004 -9.32852404114058E-0004 -1.03079296291565E-0003 -1.12909471820114E-0003 +-1.22775701311128E-0003 -1.32677918505609E-0003 -1.42616056562007E-0003 -1.52590048072187E-0003 -1.62599825049220E-0003 +-1.72645318939725E-0003 -1.82726460619844E-0003 -1.92843180396674E-0003 -2.02995408006974E-0003 -2.13183072627697E-0003 +-2.23406102865597E-0003 -2.33664426768682E-0003 -2.43957971819461E-0003 -2.54286664948219E-0003 -2.64650432513527E-0003 +-2.75049200329171E-0003 -2.85482893645578E-0003 -2.95951437160362E-0003 -3.06454755019778E-0003 -3.16992770814708E-0003 +-3.27565407593960E-0003 -3.38172587845674E-0003 -3.48814233519738E-0003 -3.59490266019225E-0003 -3.70200606196378E-0003 +-3.80945174369573E-0003 -3.91723890311108E-0003 -4.02536673255046E-0003 -4.13383441894124E-0003 -4.24264114386694E-0003 +-4.35178608356365E-0003 -4.46126840893482E-0003 -4.57108728551116E-0003 -4.68124187359319E-0003 -4.79173132814736E-0003 +-4.90255479885734E-0003 -5.01371143016617E-0003 -5.12520036124546E-0003 -5.23702072609243E-0003 -5.34917165342594E-0003 +-5.46165226682020E-0003 -5.57446168465568E-0003 -5.68759902010653E-0003 -5.80106338129269E-0003 -5.91485387108448E-0003 +-6.02896958732790E-0003 -6.14340962272242E-0003 -6.25817306490912E-0003 -6.37325899643995E-0003 -6.48866649482937E-0003 +-6.60439463257852E-0003 -6.72044247710792E-0003 -6.83680909091896E-0003 -6.95349353146258E-0003 -7.07049485127332E-0003 +-7.18781209789297E-0003 -7.30544431396804E-0003 -7.42339053720087E-0003 -7.54164980041975E-0003 -7.66022113154830E-0003 +-7.77910355365734E-0003 -7.89829608497096E-0003 -8.01779773890009E-0003 -8.13760752400279E-0003 -8.25772444408199E-0003 +-8.37814749813667E-0003 -8.49887568043218E-0003 -8.61990798047887E-0003 -8.74124338306583E-0003 -8.86288086825786E-0003 +-8.98481941146599E-0003 -9.10705798341694E-0003 -9.22959555017777E-0003 -9.35243107318046E-0003 -9.47556350924659E-0003 +-9.59899181062120E-0003 -9.72271492493314E-0003 -9.84673179527493E-0003 -9.97104136020910E-0003 -1.00956425537102E-0002 +-1.02205343053366E-0002 -1.03457155401177E-0002 -1.04711851785688E-0002 -1.05969421368548E-0002 -1.07229853266487E-0002 +-1.08493136551845E-0002 -1.09759260253740E-0002 -1.11028213357029E-0002 -1.12299984803291E-0002 -1.13574563490712E-0002 +-1.14851938274148E-0002 -1.16132097965746E-0002 -1.17415031334635E-0002 -1.18700727107554E-0002 -1.19989173968633E-0002 +-1.21280360560020E-0002 -1.22574275481663E-0002 -1.23870907291937E-0002 -1.25170244507708E-0002 -1.26472275603844E-0002 +-1.27776989014395E-0002 -1.29084373132563E-0002 -1.30394416310494E-0002 -1.31707106859716E-0002 -1.33022433051484E-0002 +-1.34340383116847E-0002 -1.35660945246347E-0002 -1.36984107591565E-0002 -1.38309858263804E-0002 -1.39638185335084E-0002 +-1.40969076838484E-0002 -1.42302520768029E-0002 -1.43638505078298E-0002 -1.44977017686430E-0002 -1.46318046470351E-0002 +-1.47661579269949E-0002 -1.49007603887240E-0002 -1.50356108086340E-0002 -1.51707079594281E-0002 -1.53060506100248E-0002 +-1.54416375256202E-0002 -1.55774674677601E-0002 -1.57135391943102E-0002 -1.58498514594721E-0002 -1.59864030138002E-0002 +-1.61231926042917E-0002 -1.62602189742925E-0002 -1.63974808636518E-0002 -1.65349770086330E-0002 -1.66727061419665E-0002 +-1.68106669929130E-0002 -1.69488582872333E-0002 -1.70872787472425E-0002 -1.72259270918123E-0002 -1.73648020363828E-0002 +-1.75039022930307E-0002 -1.76432265704621E-0002 -1.77827735739882E-0002 -1.79225420056616E-0002 -1.80625305641454E-0002 +-1.82027379449152E-0002 -1.83431628400949E-0002 -1.84838039386217E-0002 -1.86246599262031E-0002 -1.87657294853564E-0002 +-1.89070112954119E-0002 -1.90485040325574E-0002 -1.91902063698508E-0002 -1.93321169772457E-0002 -1.94742345216041E-0002 +-1.96165576667691E-0002 -1.97590850734466E-0002 -1.99018153994552E-0002 -2.00447472995292E-0002 -2.01878794254377E-0002 +-2.03312104260716E-0002 -2.04747389473023E-0002 -2.06184636321618E-0002 -2.07623831207900E-0002 -2.09064960504654E-0002 +-2.10508010556368E-0002 -2.11952967679352E-0002 -2.13399818162100E-0002 -2.14848548265505E-0002 -2.16299144222848E-0002 +-2.17751592240530E-0002 -2.19205878497819E-0002 -2.20661989147402E-0002 -2.22119910315230E-0002 -2.23579628101249E-0002 +-2.25041128579573E-0002 -2.26504397797961E-0002 -2.27969421779060E-0002 -2.29436186520256E-0002 -2.30904677993471E-0002 +-2.32374882146413E-0002 -2.33846784901677E-0002 -2.35320372157478E-0002 -2.36795629788391E-0002 -2.38272543644678E-0002 +-2.39751099553079E-0002 -2.41231283317025E-0002 -2.42713080716871E-0002 -2.44196477509456E-0002 -2.45681459429825E-0002 +-2.47168012189863E-0002 -2.48656121479545E-0002 -2.50145772967115E-0002 -2.51636952298562E-0002 -2.53129645098962E-0002 +-2.54623836971493E-0002 -2.56119513499288E-0002 -2.57616660243798E-0002 -2.59115262746507E-0002 -2.60615306528410E-0002 +-2.62116777090803E-0002 -2.63619659914801E-0002 -2.65123940462318E-0002 -2.66629604175868E-0002 -2.68136636478981E-0002 +-2.69645022776379E-0002 -2.71154748454162E-0002 -2.72665798880213E-0002 -2.74178159404483E-0002 -2.75691815359300E-0002 +-2.77206752058764E-0002 -2.78722954800421E-0002 -2.80240408864225E-0002 -2.81759099513990E-0002 -2.83279011996302E-0002 +-2.84800131541730E-0002 -2.86322443364873E-0002 -2.87845932664585E-0002 -2.89370584623970E-0002 -2.90896384410848E-0002 +-2.92423317178404E-0002 -2.93951368064576E-0002 -2.95480522192847E-0002 -2.97010764672708E-0002 -2.98542080599331E-0002 +-3.00074455054309E-0002 -3.01607873105470E-0002 -3.03142319807856E-0002 -3.04677780202878E-0002 -3.06214239319574E-0002 +-3.07751682174615E-0002 -3.09290093772061E-0002 -3.10829459104206E-0002 -3.12369763151763E-0002 -3.13910990883347E-0002 +-3.15453127257348E-0002 -3.16996157220196E-0002 -3.18540065708331E-0002 -3.20084837647211E-0002 -3.21630457952775E-0002 +-3.23176911530401E-0002 -3.24724183276040E-0002 -3.26272258076303E-0002 -3.27821120808559E-0002 -3.29370756341356E-0002 +-3.30921149534518E-0002 -3.32472285239470E-0002 -3.34024148299664E-0002 -3.35576723550582E-0002 -3.37129995820344E-0002 +-3.38683949929336E-0002 -3.40238570691055E-0002 -3.41793842912445E-0002 -3.43349751393656E-0002 -3.44906280928289E-0002 +-3.46463416304427E-0002 -3.48021142304219E-0002 -3.49579443704301E-0002 -3.51138305275850E-0002 -3.52697711785432E-0002 +-3.54257647994534E-0002 -3.55818098660512E-0002 -3.57379048536449E-0002 -3.58940482371349E-0002 -3.60502384910755E-0002 +-3.62064740896891E-0002 -3.63627535068435E-0002 -3.65190752161505E-0002 -3.66754376909864E-0002 -3.68318394044349E-0002 +-3.69882788294104E-0002 -3.71447544386543E-0002 -3.73012647047161E-0002 -3.74578081000626E-0002 -3.76143830970456E-0002 +-3.77709881679023E-0002 -3.79276217848834E-0002 -3.80842824201783E-0002 -3.82409685460006E-0002 -3.83976786345980E-0002 +-3.85544111582487E-0002 -3.87111645893705E-0002 -3.88679374004127E-0002 -3.90247280640509E-0002 -3.91815350530646E-0002 +-3.93383568404562E-0002 -3.94951918994328E-0002 -3.96520387034735E-0002 -3.98088957262779E-0002 -3.99657614418947E-0002 +-4.01226343246847E-0002 -4.02795128493690E-0002 -4.04363954910018E-0002 -4.05932807251031E-0002 -4.07501670276131E-0002 +-4.09070528749069E-0002 -4.10639367438617E-0002 -4.12208171118722E-0002 -4.13776924568848E-0002 -4.15345612573841E-0002 +-4.16914219924938E-0002 -4.18482731418921E-0002 -4.20051131859695E-0002 -4.21619406057633E-0002 -4.23187538830061E-0002 +-4.24755515002079E-0002 -4.26323319405524E-0002 -4.27890936880787E-0002 -4.29458352276113E-0002 -4.31025550447990E-0002 +-4.32592516261689E-0002 -4.34159234591507E-0002 -4.35725690320594E-0002 -4.37291868341676E-0002 -4.38857753557494E-0002 +-4.40423330880251E-0002 -4.41988585233095E-0002 -4.43553501548898E-0002 -4.45118064771787E-0002 -4.46682259857163E-0002 +-4.48246071771237E-0002 -4.49809485492280E-0002 -4.51372486010113E-0002 -4.52935058326886E-0002 -4.54497187457088E-0002 +-4.56058858427994E-0002 -4.57620056279630E-0002 -4.59180766065504E-0002 -4.60740972852426E-0002 -4.62300661721008E-0002 +-4.63859817766004E-0002 -4.65418426096427E-0002 -4.66976471835706E-0002 -4.68533940122321E-0002 -4.70090816109773E-0002 +-4.71647084966836E-0002 -4.73202731878149E-0002 -4.74757742044088E-0002 -4.76312100681500E-0002 -4.77865793023240E-0002 +-4.79418804319240E-0002 -4.80971119836288E-0002 -4.82522724858428E-0002 -4.84073604687452E-0002 -4.85623744642588E-0002 +-4.87173130061469E-0002 -4.88721746299822E-0002 -4.90269578732149E-0002 -4.91816612751703E-0002 -4.93362833771126E-0002 +-4.94908227222134E-0002 -4.96452778556252E-0002 -4.97996473245074E-0002 -4.99539296780138E-0002 -5.01081234673996E-0002 +-5.02622272459234E-0002 -5.04162395690116E-0002 -5.05701589941645E-0002 -5.07239840810782E-0002 -5.08777133916087E-0002 +-5.10313454898401E-0002 -5.11848789420637E-0002 -5.13383123168562E-0002 -5.14916441850769E-0002 -5.16448731198895E-0002 +-5.17979976968213E-0002 -5.19510164937513E-0002 -5.21039280909504E-0002 -5.22567310711367E-0002 -5.24094240194296E-0002 +-5.25620055234716E-0002 -5.27144741733784E-0002 -5.28668285617936E-0002 -5.30190672839436E-0002 -5.31711889376019E-0002 +-5.33231921231534E-0002 -5.34750754436212E-0002 -5.36268375047021E-0002 -5.37784769147643E-0002 -5.39299922848692E-0002 +-5.40813822288744E-0002 -5.42326453633307E-0002 -5.43837803076378E-0002 -5.45347856839752E-0002 -5.46856601173718E-0002 +-5.48364022357658E-0002 -5.49870106699210E-0002 -5.51374840535925E-0002 -5.52878210234286E-0002 -5.54380202190835E-0002 +-5.55880802832107E-0002 -5.57379998614605E-0002 -5.58877776025644E-0002 -5.60374121583330E-0002 -5.61869021836563E-0002 +-5.63362463365783E-0002 -5.64854432782829E-0002 -5.66344916731376E-0002 -5.67833901887181E-0002 -5.69321374958438E-0002 +-5.70807322685818E-0002 -5.72291731842729E-0002 -5.73774589235873E-0002 -5.75255881705231E-0002 -5.76735596124425E-0002 +-5.78213719400818E-0002 -5.79690238476050E-0002 -5.81165140325994E-0002 -5.82638411961384E-0002 -5.84110040427464E-0002 +-5.85580012805024E-0002 -5.87048316209950E-0002 -5.88514937793880E-0002 -5.89979864744328E-0002 -5.91443084285126E-0002 +-5.92904583676090E-0002 -5.94364350214161E-0002 -5.95822371232857E-0002 -5.97278634103000E-0002 -5.98733126232822E-0002 +-6.00185835068016E-0002 -6.01636748092447E-0002 -6.03085852827962E-0002 -6.04533136834836E-0002 -6.05978587712110E-0002 +-6.07422193097389E-0002 -6.08863940667856E-0002 -6.10303818139779E-0002 -6.11741813269095E-0002 -6.13177913851804E-0002 +-6.14612107723713E-0002 -6.16044382761410E-0002 -6.17474726881692E-0002 -6.18903128042469E-0002 -6.20329574242673E-0002 +-6.21754053522513E-0002 -6.23176553963962E-0002 -6.24597063690650E-0002 -6.26015570868331E-0002 -6.27432063705085E-0002 +-6.28846530451522E-0002 -6.30258959400960E-0002 -6.31669338890018E-0002 -6.33077657298282E-0002 -6.34483903048927E-0002 +-6.35888064608989E-0002 -6.37290130489229E-0002 -6.38690089245019E-0002 -6.40087929475769E-0002 -6.41483639825836E-0002 +-6.42877208984410E-0002 -6.44268625685868E-0002 -6.45657878709928E-0002 -6.47044956881880E-0002 -6.48429849073105E-0002 +-6.49812544200823E-0002 -6.51193031228705E-0002 -6.52571299166820E-0002 -6.53947337072220E-0002 -6.55321134048887E-0002 +-6.56692679247983E-0002 -6.58061961868133E-0002 -6.59428971155676E-0002 -6.60793696404972E-0002 -6.62156126958341E-0002 +-6.63516252206705E-0002 -6.64874061589289E-0002 -6.66229544594386E-0002 -6.67582690759172E-0002 -6.68933489670308E-0002 +-6.70281930963633E-0002 -6.71628004324935E-0002 -6.72971699489766E-0002 -6.74313006244092E-0002 -6.75651914423865E-0002 +-6.76988413916039E-0002 -6.78322494658019E-0002 -6.79654146638386E-0002 -6.80983359897055E-0002 -6.82310124525338E-0002 +-6.83634430666007E-0002 -6.84956268514017E-0002 -6.86275628316371E-0002 -6.87592500372162E-0002 -6.88906875033295E-0002 +-6.90218742704208E-0002 -6.91528093842398E-0002 -6.92834918958538E-0002 -6.94139208616488E-0002 -6.95440953433850E-0002 +-6.96740144082029E-0002 -6.98036771286278E-0002 -6.99330825826199E-0002 -7.00622298535636E-0002 -7.01911180303230E-0002 +-7.03197462072214E-0002 -7.04481134841042E-0002 -7.05762189663108E-0002 -7.07040617647598E-0002 -7.08316409958894E-0002 +-7.09589557817637E-0002 -7.10860052500068E-0002 -7.12127885338868E-0002 -7.13393047723106E-0002 -7.14655531098329E-0002 +-7.15915326967092E-0002 -7.17172426888778E-0002 -7.18426822479936E-0002 -7.19678505414642E-0002 -7.20927467424413E-0002 +-7.22173700298550E-0002 -7.23417195884372E-0002 -7.24657946087330E-0002 -7.25895942871130E-0002 -7.27131178257890E-0002 +-7.28363644328725E-0002 -7.29593333223474E-0002 -7.30820237140933E-0002 -7.32044348339344E-0002 -7.33265659136240E-0002 +-7.34484161908904E-0002 -7.35699849094293E-0002 -7.36912713189370E-0002 -7.38122746751350E-0002 -7.39329942397640E-0002 +-7.40534292806180E-0002 -7.41735790715830E-0002 -7.42934428925801E-0002 -7.44130200296872E-0002 -7.45323097750803E-0002 +-7.46513114270620E-0002 -7.47700242901101E-0002 -7.48884476748554E-0002 -7.50065808981275E-0002 -7.51244232829690E-0002 +-7.52419741586209E-0002 -7.53592328605851E-0002 -7.54761987306102E-0002 -7.55928711167076E-0002 -7.57092493732003E-0002 +-7.58253328606786E-0002 -7.59411209460779E-0002 -7.60566130026689E-0002 -7.61718084100591E-0002 -7.62867065542325E-0002 +-7.64013068275559E-0002 -7.65156086287887E-0002 -7.66296113631047E-0002 -7.67433144421040E-0002 -7.68567172838370E-0002 +-7.69698193128071E-0002 -7.70826199599893E-0002 -7.71951186628502E-0002 -7.73073148653549E-0002 -7.74192080179860E-0002 +-7.75307975777709E-0002 -7.76420830082540E-0002 -7.77530637795707E-0002 -7.78637393684122E-0002 -7.79741092580550E-0002 +-7.80841729383878E-0002 -7.81939299059183E-0002 -7.83033796637610E-0002 -7.84125217216984E-0002 -7.85213555961509E-0002 +-7.86298808102141E-0002 -7.87380968936728E-0002 -7.88460033829862E-0002 -7.89535998213470E-0002 -7.90608857586513E-0002 +-7.91678607515281E-0002 -7.92745243633564E-0002 -7.93808761642773E-0002 -7.94869157311936E-0002 -7.95926426477947E-0002 +-7.96980565045560E-0002 -7.98031568987760E-0002 -7.99079434345511E-0002 -8.00124157228129E-0002 -8.01165733813474E-0002 +-8.02204160347629E-0002 -8.03239433145566E-0002 -8.04271548590869E-0002 -8.05300503136034E-0002 -8.06326293302413E-0002 +-8.07348915680463E-0002 -8.08368366929842E-0002 -8.09384643779456E-0002 -8.10397743027512E-0002 -8.11407661541780E-0002 +-8.12414396259549E-0002 -8.13417944187675E-0002 -8.14418302403018E-0002 -8.15415468052030E-0002 -8.16409438351266E-0002 +-8.17400210587261E-0002 -8.18387782116729E-0002 -8.19372150366510E-0002 -8.20353312833890E-0002 -8.21331267086354E-0002 +-8.22306010762081E-0002 -8.23277541569593E-0002 -8.24245857288252E-0002 -8.25210955767984E-0002 -8.26172834929629E-0002 +-8.27131492764836E-0002 -8.28086927336164E-0002 -8.29039136777377E-0002 -8.29988119293099E-0002 -8.30933873159280E-0002 +-8.31876396723047E-0002 -8.32815688402954E-0002 -8.33751746688656E-0002 -8.34684570141553E-0002 -8.35614157394321E-0002 +-8.36540507151376E-0002 -8.37463618188607E-0002 -8.38383489353644E-0002 -8.39300119565834E-0002 -8.40213507816362E-0002 +-8.41123653168304E-0002 -8.42030554756423E-0002 -8.42934211787666E-0002 -8.43834623540843E-0002 -8.44731789366845E-0002 +-8.45625708688722E-0002 -8.46516381001479E-0002 -8.47403805872503E-0002 -8.48287982941233E-0002 -8.49168911919487E-0002 +-8.50046592591284E-0002 -8.50921024813041E-0002 -8.51792208513455E-0002 -8.52660143693714E-0002 -8.53524830427320E-0002 +-8.54386268860369E-0002 -8.55244459211252E-0002 -8.56099401771114E-0002 -8.56951096903333E-0002 -8.57799545044024E-0002 +-8.58644746701856E-0002 -8.59486702458061E-0002 -8.60325412966446E-0002 -8.61160878953477E-0002 -8.61993101218270E-0002 +-8.62822080632484E-0002 -8.63647818140562E-0002 -8.64470314759512E-0002 -8.65289571578975E-0002 -8.66105589761466E-0002 +-8.66918370541842E-0002 -8.67727915227919E-0002 -8.68534225200102E-0002 -8.69337301911353E-0002 -8.70137146887380E-0002 +-8.70933761726584E-0002 -8.71727148099909E-0002 -8.72517307751015E-0002 -8.73304242496109E-0002 -8.74087954224040E-0002 +-8.74868444896276E-0002 -8.75645716546805E-0002 -8.76419771282175E-0002 -8.77190611281435E-0002 -8.77958238796173E-0002 +-8.78722656150481E-0002 -8.79483865740770E-0002 -8.80241870035986E-0002 -8.80996671577431E-0002 -8.81748272978749E-0002 +-8.82496676925858E-0002 -8.83241886176990E-0002 -8.83983903562635E-0002 -8.84722731985376E-0002 -8.85458374420101E-0002 +-8.86190833913661E-0002 -8.86920113584993E-0002 -8.87646216625041E-0002 -8.88369146296742E-0002 -8.89088905934872E-0002 +-8.89805498946070E-0002 -8.90518928808719E-0002 -8.91229199073006E-0002 -8.91936313360672E-0002 -8.92640275365129E-0002 +-8.93341088851285E-0002 -8.94038757655499E-0002 -8.94733285685470E-0002 -8.95424676920304E-0002 -8.96112935410273E-0002 +-8.96798065276851E-0002 -8.97480070712507E-0002 -8.98158955980829E-0002 -8.98834725416253E-0002 -8.99507383423935E-0002 +-9.00176934480026E-0002 -9.00843383131048E-0002 -9.01506733994242E-0002 -9.02166991757303E-0002 -9.02824161178184E-0002 +-9.03478247085229E-0002 -9.04129254376833E-0002 -9.04777188021545E-0002 -9.05422053057728E-0002 -9.06063854593777E-0002 +-9.06702597807666E-0002 -9.07338287947035E-0002 -9.07970930329005E-0002 -9.08600530340130E-0002 -9.09227093436265E-0002 +-9.09850625142224E-0002 -9.10471131052061E-0002 -9.11088616828610E-0002 -9.11703088203459E-0002 -9.12314550976863E-0002 +-9.12923011017586E-0002 -9.13528474262699E-0002 -9.14130946717582E-0002 -9.14730434455603E-0002 -9.15326943618122E-0002 +-9.15920480414276E-0002 -9.16511051120888E-0002 -9.17098662082215E-0002 -9.17683319709900E-0002 -9.18265030482761E-0002 +-9.18843800946623E-0002 -9.19419637714232E-0002 -9.19992547464949E-0002 -9.20562536944824E-0002 -9.21129612966137E-0002 +-9.21693782407455E-0002 -9.22255052213304E-0002 -9.22813429394175E-0002 -9.23368921026113E-0002 -9.23921534250782E-0002 +-9.24471276275103E-0002 -9.25018154371106E-0002 -9.25562175875807E-0002 -9.26103348190960E-0002 -9.26641678782894E-0002 +-9.27177175182263E-0002 -9.27709844983951E-0002 -9.28239695846754E-0002 -9.28766735493299E-0002 -9.29290971709674E-0002 +-9.29812412345461E-0002 -9.30331065313217E-0002 -9.30846938588550E-0002 -9.31360040209733E-0002 -9.31870378277561E-0002 +-9.32377960955042E-0002 -9.32882796467304E-0002 -9.33384893101231E-0002 -9.33884259205377E-0002 -9.34380903189573E-0002 +-9.34874833524800E-0002 -9.35366058742999E-0002 -9.35854587436657E-0002 -9.36340428258699E-0002 -9.36823589922305E-0002 +-9.37304081200372E-0002 -9.37781910925655E-0002 -9.38257087990183E-0002 -9.38729621345245E-0002 -9.39199520000896E-0002 +-9.39666793025941E-0002 -9.40131449547450E-0002 -9.40593498750673E-0002 -9.41052949878639E-0002 -9.41509812231980E-0002 +-9.41964095168469E-0002 -9.42415808103098E-0002 -9.42864960507358E-0002 -9.43311561909331E-0002 -9.43755621893177E-0002 +-9.44197150098923E-0002 -9.44636156222063E-0002 -9.45072650013594E-0002 -9.45506641279244E-0002 -9.45938139879479E-0002 +-9.46367155729206E-0002 -9.46793698797259E-0002 -9.47217779106293E-0002 -9.47639406732388E-0002 -9.48058591804682E-0002 +-9.48475344505178E-0002 -9.48889675068307E-0002 -9.49301593780588E-0002 -9.49711110980473E-0002 -9.50118237057852E-0002 +-9.50522982453720E-0002 -9.50925357659928E-0002 -9.51325373218828E-0002 -9.51723039722774E-0002 -9.52118367814022E-0002 +-9.52511368184240E-0002 -9.52902051574169E-0002 -9.53290428773268E-0002 -9.53676510619287E-0002 -9.54060307998119E-0002 +-9.54441831843178E-0002 -9.54821093135260E-0002 -9.55198102901914E-0002 -9.55572872217300E-0002 -9.55945412201707E-0002 +-9.56315734021242E-0002 -9.56683848887290E-0002 -9.57049768056339E-0002 -9.57413502829349E-0002 -9.57775064551615E-0002 +-9.58134464612206E-0002 -9.58491714443560E-0002 -9.58846825521197E-0002 -9.59199809363167E-0002 -9.59550677529786E-0002 +-9.59899441623054E-0002 -9.60246113286483E-0002 -9.60590704204415E-0002 -9.60933226101700E-0002 -9.61273690743419E-0002 +-9.61612109934187E-0002 -9.61948495517884E-0002 -9.62282859377271E-0002 -9.62615213433397E-0002 -9.62945569645175E-0002 +-9.63273940009162E-0002 -9.63600336558762E-0002 -9.63924771364067E-0002 -9.64247256531217E-0002 -9.64567804202008E-0002 +-9.64886426553532E-0002 -9.65203135797452E-0002 -9.65517944179783E-0002 -9.65830863980358E-0002 -9.66141907512196E-0002 +-9.66451087121277E-0002 -9.66758415185797E-0002 -9.67063904115961E-0002 -9.67367566353189E-0002 -9.67669414369900E-0002 +-9.67969460668798E-0002 -9.68267717782547E-0002 -9.68564198273094E-0002 -9.68858914731287E-0002 -9.69151879776406E-0002 +-9.69443106055435E-0002 -9.69732606242732E-0002 -9.70020393039529E-0002 -9.70306479173220E-0002 -9.70590877396987E-0002 +-9.70873600489225E-0002 -9.71154661253025E-0002 -9.71434072515571E-0002 -9.71711847127638E-0002 -9.71987997963113E-0002 +-9.72262537918274E-0002 -9.72535479911395E-0002 -9.72806836882187E-0002 -9.73076621791050E-0002 -9.73344847618715E-0002 +-9.73611527365627E-0002 -9.73876674051218E-0002 -9.74140300713610E-0002 -9.74402420408794E-0002 -9.74663046210131E-0002 +-9.74922191207742E-0002 -9.75179868508053E-0002 -9.75436091232900E-0002 -9.75690872519288E-0002 -9.75944225518496E-0002 +-9.76196163395697E-0002 -9.76446699329123E-0002 -9.76695846509617E-0002 -9.76943618139993E-0002 -9.77190027434341E-0002 +-9.77435087617484E-0002 -9.77678811924276E-0002 -9.77921213599014E-0002 -9.78162305894794E-0002 -9.78402102072836E-0002 +-9.78640615401946E-0002 -9.78877859157648E-0002 -9.79113846621801E-0002 -9.79348591081742E-0002 -9.79582105829716E-0002 +-9.79814404162168E-0002 -9.80045499379165E-0002 -9.80275404783526E-0002 -9.80504133680338E-0002 -9.80731699376268E-0002 +-9.80958115178721E-0002 -9.81183394395278E-0002 -9.81407550332987E-0002 -9.81630596297654E-0002 -9.81852545593100E-0002 +-9.82073411520571E-0002 -9.82293207377856E-0002 -9.82511946458743E-0002 -9.82729642052210E-0002 -9.82946307441677E-0002 +-9.83161955904390E-0002 -9.83376600710597E-0002 -9.83590255122844E-0002 -9.83802932395194E-0002 -9.84014645772623E-0002 +-9.84225408490074E-0002 -9.84435233771876E-0002 -9.84644134830868E-0002 -9.84852124867761E-0002 -9.85059217070242E-0002 +-9.85265424612300E-0002 -9.85470760653409E-0002 -9.85675238337804E-0002 -9.85878870793616E-0002 -9.86081671132187E-0002 +-9.86283652447177E-0002 -9.86484827813850E-0002 -9.86685210288250E-0002 -9.86884812906404E-0002 -9.87083648683476E-0002 +-9.87281730613063E-0002 -9.87479071666218E-0002 -9.87675684790780E-0002 -9.87871582910465E-0002 -9.88066778924081E-0002 +-9.88261285704661E-0002 -9.88455116098659E-0002 -9.88648282925090E-0002 -9.88840798974643E-0002 -9.89032677008964E-0002 +-9.89223929759630E-0002 -9.89414569927395E-0002 -9.89604610181320E-0002 -9.89794063157886E-0002 -9.89982941460100E-0002 +-9.90171257656663E-0002 -9.90359024281042E-0002 -9.90546253830626E-0002 -9.90732958765837E-0002 -9.90919151509173E-0002 +-9.91104844444368E-0002 -9.91290049915474E-0002 -9.91474780225964E-0002 -9.91659047637751E-0002 -9.91842864370359E-0002 +-9.92026242599968E-0002 -9.92209194458435E-0002 -9.92391732032464E-0002 -9.92573867362553E-0002 -9.92755612442165E-0002 +-9.92936979216688E-0002 -9.93117979582550E-0002 -9.93298625386228E-0002 -9.93478928423270E-0002 -9.93658900437408E-0002 +-9.93838553119484E-0002 -9.94017898106569E-0002 -9.94196946980928E-0002 -9.94375711269011E-0002 -9.94554202440597E-0002 +-9.94732431907594E-0002 -9.94910411023243E-0002 -9.95088151080968E-0002 -9.95265663313443E-0002 -9.95442958891580E-0002 +-9.95620048923439E-0002 -9.95796944453316E-0002 -9.95973656460627E-0002 -9.96150195858889E-0002 -9.96326573494692E-0002 +-9.96502800146743E-0002 -9.96678886524645E-0002 -9.96854843267953E-0002 -9.97030680945152E-0002 -9.97206410052498E-0002 +-9.97382041013003E-0002 -9.97557584175359E-0002 -9.97733049812868E-0002 -9.97908448122332E-0002 -9.98083789222980E-0002 +-9.98259083155412E-0002 -9.98434339880441E-0002 -9.98609569278002E-0002 -9.98784781146094E-0002 -9.98959985199614E-0002 +-9.99135191069269E-0002 -9.99310408300421E-0002 -9.99485646352004E-0002 -9.99660914595330E-0002 -9.99836222313034E-0002 +-1.00001157869788E-0001 -1.00018699285157E-0001 -1.00036247378366E-0001 -1.00053803041041E-0001 -1.00071367155355E-0001 +-1.00088940593913E-0001 -1.00106524219642E-0001 -1.00124118885660E-0001 -1.00141725435174E-0001 -1.00159344701343E-0001 +-1.00176977507168E-0001 -1.00194624665378E-0001 -1.00212286978295E-0001 -1.00229965237723E-0001 -1.00247660224819E-0001 +-1.00265372709986E-0001 -1.00283103452728E-0001 -1.00300853201541E-0001 -1.00318622693791E-0001 -1.00336412655579E-0001 +-1.00354223801624E-0001 -1.00372056835134E-0001 -1.00389912447684E-0001 -1.00407791319085E-0001 -1.00425694117255E-0001 +-1.00443621498103E-0001 -1.00461574105384E-0001 -1.00479552570585E-0001 -1.00497557512789E-0001 -1.00515589538540E-0001 +-1.00533649241723E-0001 -1.00551737203429E-0001 -1.00569853991819E-0001 -1.00588000161998E-0001 -1.00606176255882E-0001 +-1.00624382802055E-0001 -1.00642620315653E-0001 -1.00660889298212E-0001 -1.00679190237543E-0001 -1.00697523607597E-0001 +-1.00715889868321E-0001 -1.00734289465528E-0001 -1.00752722830760E-0001 -1.00771190381150E-0001 -1.00789692519277E-0001 +-1.00808229633039E-0001 -1.00826802095498E-0001 -1.00845410264758E-0001 -1.00864054483810E-0001 -1.00882735080397E-0001 +-1.00901452366872E-0001 -1.00920206640056E-0001 -1.00938998181086E-0001 -1.00957827255289E-0001 -1.00976694112025E-0001 +-1.00995598984545E-0001 -1.01014542089847E-0001 -1.01033523628528E-0001 -1.01052543784637E-0001 -1.01071602725536E-0001 +-1.01090700601739E-0001 -1.01109837546776E-0001 -1.01129013677039E-0001 -1.01148229091628E-0001 -1.01167483872208E-0001 +-1.01186778082860E-0001 -1.01206111769921E-0001 -1.01225484961834E-0001 -1.01244897669008E-0001 -1.01264349883645E-0001 +-1.01283841579602E-0001 -1.01303372712233E-0001 -1.01322943218228E-0001 -1.01342553015465E-0001 -1.01362202002849E-0001 +-1.01381890060160E-0001 -1.01401617047889E-0001 -1.01421382807088E-0001 -1.01441187159205E-0001 -1.01461029905926E-0001 +-1.01480910829019E-0001 -1.01500829690172E-0001 -1.01520786230826E-0001 -1.01540780172023E-0001 -1.01560811214237E-0001 +-1.01580879037213E-0001 -1.01600983299804E-0001 -1.01621123639807E-0001 -1.01641299673795E-0001 -1.01661510996958E-0001 +-1.01681757182929E-0001 -1.01702037783624E-0001 -1.01722352329072E-0001 -1.01742700327245E-0001 -1.01763081263896E-0001 +-1.01783494602377E-0001 -1.01803939783485E-0001 -1.01824416225280E-0001 -1.01844923322920E-0001 -1.01865460448484E-0001 +-1.01886026950803E-0001 -1.01906622155285E-0001 -1.01927245363747E-0001 -1.01947895854230E-0001 -1.01968572880833E-0001 +-1.01989275673534E-0001 -1.02010003438012E-0001 -1.02030755355474E-0001 -1.02051530582474E-0001 -1.02072328250734E-0001 +-1.02093147466969E-0001 -1.02113987312702E-0001 -1.02134846844090E-0001 -1.02155725091737E-0001 -1.02176621060514E-0001 +-1.02197533729383E-0001 -1.02218462051199E-0001 -1.02239404952546E-0001 -1.02260361333534E-0001 -1.02281330067628E-0001 +-1.02302310001453E-0001 -1.02323299954613E-0001 -1.02344298719503E-0001 -1.02365305061118E-0001 -1.02386317716869E-0001 +-1.02407335396391E-0001 -1.02428356781353E-0001 -1.02449380525272E-0001 -1.02470405253316E-0001 -1.02491429562114E-0001 +-1.02512452019564E-0001 -1.02533471164644E-0001 -1.02554485507208E-0001 -1.02575493527802E-0001 -1.02596493677460E-0001 +-1.02617484377516E-0001 -1.02638464019400E-0001 -1.02659430964446E-0001 -1.02680383543689E-0001 -1.02701320057674E-0001 +-1.02722238776245E-0001 -1.02743137938358E-0001 -1.02764015751866E-0001 -1.02784870393330E-0001 -1.02805700007811E-0001 +-1.02826502708663E-0001 -1.02847276577341E-0001 -1.02868019663179E-0001 -1.02888729983203E-0001 -1.02909405521915E-0001 +-1.02930044231087E-0001 -1.02950644029555E-0001 -1.02971202803012E-0001 -1.02991718403796E-0001 -1.03012188650684E-0001 +-1.03032611328680E-0001 -1.03052984188807E-0001 -1.03073304947888E-0001 -1.03093571288340E-0001 -1.03113780857961E-0001 +-1.03133931269712E-0001 -1.03154020101504E-0001 -1.03174044895985E-0001 -1.03194003160322E-0001 -1.03213892365983E-0001 +-1.03233709948521E-0001 -1.03253453307356E-0001 -1.03273119805555E-0001 -1.03292706769612E-0001 -1.03312211489226E-0001 +-1.03331631217087E-0001 -1.03350963168644E-0001 -1.03370204521888E-0001 -1.03389352417127E-0001 -1.03408403956762E-0001 +-1.03427356205062E-0001 -1.03446206187937E-0001 -1.03464950892714E-0001 -1.03483587267908E-0001 -1.03502112222992E-0001 +-1.03520522628184E-0001 -1.03538815320815E-0001 -1.03556987140607E-0001 -1.03575034949509E-0001 -1.03592955632404E-0001 +-1.03610746097013E-0001 -1.03628403273829E-0001 -1.03645924116027E-0001 -1.03663305599392E-0001 -1.03680544722236E-0001 +-1.03697638505321E-0001 -1.03714583991773E-0001 -1.03731378247018E-0001 -1.03748018358685E-0001 -1.03764501436543E-0001 +-1.03780824612415E-0001 -1.03796985040100E-0001 -1.03812979895297E-0001 -1.03828806375527E-0001 -1.03844461700053E-0001 +-1.03859943109807E-0001 -1.03875247867305E-0001 -1.03890373256579E-0001 -1.03905316583092E-0001 -1.03920075173667E-0001 +-1.03934646376405E-0001 -1.03949027560611E-0001 -1.03963216116718E-0001 -1.03977209456211E-0001 -1.03991005011549E-0001 +-1.04004600236086E-0001 -1.04017992604004E-0001 -1.04031179610231E-0001 -1.04044158770363E-0001 -1.04056927620594E-0001 +-1.04069483717640E-0001 -1.04081824638659E-0001 -1.04093947981183E-0001 -1.04105851363038E-0001 -1.04117532422269E-0001 +-1.04128988817070E-0001 -1.04140218225705E-0001 -1.04151218346437E-0001 -1.04161986897452E-0001 -1.04172521616785E-0001 +-1.04182820262247E-0001 -1.04192880611350E-0001 -1.04202700461237E-0001 -1.04212277628604E-0001 -1.04221609949631E-0001 +-1.04230695279904E-0001 -1.04239531494347E-0001 -1.04248116487147E-0001 -1.04256448171679E-0001 -1.04264524480441E-0001 +-1.04272343364973E-0001 -1.04279902795788E-0001 -1.04287200762303E-0001 -1.04294235272764E-0001 -1.04301004354174E-0001 +-1.04307506052224E-0001 -1.04313738431216E-0001 -1.04319699573999E-0001 -1.04325387581895E-0001 -1.04330800574625E-0001 +-1.04335936690241E-0001 -1.04340794085055E-0001 -1.04345370933570E-0001 -1.04349665428404E-0001 -1.04353675780228E-0001 +-1.04357400217688E-0001 -1.04360836987341E-0001 -1.04363984353580E-0001 -1.04366840598570E-0001 -1.04369404022171E-0001 +-1.04371672941877E-0001 -1.04373645692743E-0001 -1.04375320627311E-0001 -1.04376696115550E-0001 -1.04377770544783E-0001 +-1.04378542319614E-0001 -1.04379009861868E-0001 -1.04379171610515E-0001 -1.04379026021607E-0001 -1.04378571568209E-0001 +-1.04377806740326E-0001 -1.04376730044843E-0001 -1.04375340005451E-0001 -1.04373635162584E-0001 -1.04371614073348E-0001 +-1.04369275311455E-0001 -1.04366617467160E-0001 -1.04363639147184E-0001 -1.04360338974658E-0001 -1.04356715589052E-0001 +-1.04352767646107E-0001 -1.04348493817770E-0001 -1.04343892792127E-0001 -1.04338963273339E-0001 -1.04333703981574E-0001 +-1.04328113652943E-0001 -1.04322191039432E-0001 -1.04315934908837E-0001 -1.04309344044702E-0001 -1.04302417246248E-0001 +-1.04295153328313E-0001 -1.04287551121285E-0001 -1.04279609471036E-0001 -1.04271327238861E-0001 -1.04262703301407E-0001 +-1.04253736550616E-0001 -1.04244425893657E-0001 -1.04234770252860E-0001 -1.04224768565658E-0001 -1.04214419784516E-0001 +-1.04203722876873E-0001 -1.04192676825077E-0001 -1.04181280626317E-0001 -1.04169533292566E-0001 -1.04157433850518E-0001 +-1.04144981341517E-0001 -1.04132174821505E-0001 -1.04119013360950E-0001 -1.04105496044790E-0001 -1.04091621972366E-0001 +-1.04077390257363E-0001 -1.04062800027746E-0001 -1.04047850425698E-0001 -1.04032540607561E-0001 -1.04016869743767E-0001 +-1.04000837018787E-0001 -1.03984441631059E-0001 -1.03967682792935E-0001 -1.03950559730615E-0001 -1.03933071684087E-0001 +-1.03915217907066E-0001 -1.03896997666935E-0001 -1.03878410244683E-0001 -1.03859454934842E-0001 -1.03840131045432E-0001 +-1.03820437897896E-0001 -1.03800374827044E-0001 -1.03779941180989E-0001 -1.03759136321088E-0001 -1.03737959621887E-0001 +-1.03716410471057E-0001 -1.03694488269333E-0001 -1.03672192430458E-0001 -1.03649522381125E-0001 -1.03626477560915E-0001 +-1.03603057422238E-0001 -1.03579261430278E-0001 -1.03555089062931E-0001 -1.03530539810746E-0001 -1.03505613176870E-0001 +-1.03480308676987E-0001 -1.03454625839263E-0001 -1.03428564204284E-0001 -1.03402123325001E-0001 -1.03375302766670E-0001 +-1.03348102106800E-0001 -1.03320520935088E-0001 -1.03292558853368E-0001 -1.03264215475551E-0001 -1.03235490427568E-0001 +-1.03206383347313E-0001 -1.03176893884589E-0001 -1.03147021701047E-0001 -1.03116766470135E-0001 -1.03086127877036E-0001 +-1.03055105618617E-0001 -1.03023699403367E-0001 -1.02991908951347E-0001 -1.02959733994133E-0001 -1.02927174274757E-0001 +-1.02894229547655E-0001 -1.02860899578608E-0001 -1.02827184144694E-0001 -1.02793083034223E-0001 -1.02758596046689E-0001 +-1.02723722992714E-0001 -1.02688463693991E-0001 -1.02652817983234E-0001 -1.02616785704115E-0001 -1.02580366711221E-0001 +-1.02543560869990E-0001 -1.02506368056663E-0001 -1.02468788158227E-0001 -1.02430821072364E-0001 -1.02392466707392E-0001 +-1.02353724982220E-0001 -1.02314595826284E-0001 -1.02275079179504E-0001 -1.02235174992226E-0001 -1.02194883225166E-0001 +-1.02154203849363E-0001 -1.02113136846122E-0001 -1.02071682206967E-0001 -1.02029839933578E-0001 -1.01987610037751E-0001 +-1.01944992541338E-0001 -1.01901987476195E-0001 -1.01858594884135E-0001 -1.01814814816870E-0001 -1.01770647335967E-0001 +-1.01726092512785E-0001 -1.01681150428436E-0001 -1.01635821173726E-0001 -1.01590104849105E-0001 -1.01544001564619E-0001 +-1.01497511439854E-0001 -1.01450634603890E-0001 -1.01403371195246E-0001 -1.01355721361836E-0001 -1.01307685260910E-0001 +-1.01259263059010E-0001 -1.01210454931916E-0001 -1.01161261064601E-0001 -1.01111681651175E-0001 -1.01061716894839E-0001 +-1.01011367007835E-0001 -1.00960632211395E-0001 -1.00909512735692E-0001 -1.00858008819793E-0001 -1.00806120711605E-0001 +-1.00753848667832E-0001 -1.00701192953921E-0001 -1.00648153844015E-0001 -1.00594731620908E-0001 -1.00540926575987E-0001 +-1.00486739009196E-0001 -1.00432169228977E-0001 -1.00377217552228E-0001 -1.00321884304251E-0001 -1.00266169818710E-0001 +-1.00210074437575E-0001 -1.00153598511083E-0001 -1.00096742397683E-0001 -1.00039506463994E-0001 -9.99818910847530E-0002 +-9.99238966427728E-0002 -9.98655235288919E-0002 -9.98067721419273E-0002 -9.97476428886294E-0002 -9.96881361836338E-0002 +-9.96282524494163E-0002 -9.95679921162448E-0002 -9.95073556221349E-0002 -9.94463434128017E-0002 -9.93849559416150E-0002 +-9.93231936695528E-0002 -9.92610570651566E-0002 -9.91985466044840E-0002 -9.91356627710637E-0002 -9.90724060558515E-0002 +-9.90087769571832E-0002 -9.89447759807301E-0002 -9.88804036394526E-0002 -9.88156604535585E-0002 -9.87505469504553E-0002 +-9.86850636647061E-0002 -9.86192111379843E-0002 -9.85529899190323E-0002 -9.84864005636131E-0002 -9.84194436344682E-0002 +-9.83521197012732E-0002 -9.82844293405940E-0002 -9.82163731358412E-0002 -9.81479516772309E-0002 -9.80791655617349E-0002 +-9.80100153930417E-0002 -9.79405017815106E-0002 -9.78706253441308E-0002 -9.78003867044764E-0002 -9.77297864926637E-0002 +-9.76588253453081E-0002 -9.75875039054827E-0002 -9.75158228226724E-0002 -9.74437827527372E-0002 -9.73713843578625E-0002 +-9.72986283065222E-0002 -9.72255152734341E-0002 -9.71520459395179E-0002 -9.70782209918548E-0002 -9.70040411236436E-0002 +-9.69295070341601E-0002 -9.68546194287153E-0002 -9.67793790186141E-0002 -9.67037865211131E-0002 -9.66278426593807E-0002 +-9.65515481624533E-0002 -9.64749037651992E-0002 -9.63979102082722E-0002 -9.63205682380734E-0002 -9.62428786067114E-0002 +-9.61648420719600E-0002 -9.60864593972179E-0002 -9.60077313514701E-0002 -9.59286587092450E-0002 -9.58492422505772E-0002 +-9.57694827609645E-0002 -9.56893810313307E-0002 -9.56089378579847E-0002 -9.55281540425802E-0002 -9.54470303920768E-0002 +-9.53655677187019E-0002 -9.52837668399084E-0002 -9.52016285783382E-0002 -9.51191537617829E-0002 -9.50363432231419E-0002 +-9.49531978003881E-0002 -9.48697183365254E-0002 -9.47859056795523E-0002 -9.47017606824216E-0002 -9.46172842030048E-0002 +-9.45324771040504E-0002 -9.44473402531484E-0002 -9.43618745226906E-0002 -9.42760807898338E-0002 -9.41899599364615E-0002 +-9.41035128491455E-0002 -9.40167404191108E-0002 -9.39296435421935E-0002 -9.38422231188088E-0002 -9.37544800539103E-0002 +-9.36664152569533E-0002 -9.35780296418588E-0002 -9.34893241269757E-0002 -9.34002996350442E-0002 -9.33109570931598E-0002 +-9.32212974327353E-0002 -9.31313215894655E-0002 -9.30410305032908E-0002 -9.29504251183591E-0002 -9.28595063829929E-0002 +-9.27682752496510E-0002 -9.26767326748927E-0002 -9.25848796193428E-0002 -9.24927170476546E-0002 -9.24002459284766E-0002 +-9.23074672344140E-0002 -9.22143819419965E-0002 -9.21209910316402E-0002 -9.20272954876145E-0002 -9.19332962980055E-0002 +-9.18389944546825E-0002 -9.17443909532621E-0002 -9.16494867930743E-0002 -9.15542829771266E-0002 -9.14587805120714E-0002 +-9.13629804081698E-0002 -9.12668836792585E-0002 -9.11704913427151E-0002 -9.10738044194235E-0002 -9.09768239337422E-0002 +-9.08795509134669E-0002 -9.07819863897999E-0002 -9.06841313973152E-0002 -9.05859869739241E-0002 -9.04875541608436E-0002 +-9.03888340025621E-0002 -9.02898275468057E-0002 -9.01905358445060E-0002 -9.00909599497669E-0002 -8.99911009198318E-0002 +-8.98909598150495E-0002 -8.97905376988436E-0002 -8.96898356376791E-0002 -8.95888547010289E-0002 -8.94875959613429E-0002 +-8.93860604940155E-0002 -8.92842493773516E-0002 -8.91821636925383E-0002 -8.90798045236089E-0002 -8.89771729574138E-0002 +-8.88742700835879E-0002 -8.87710969945183E-0002 -8.86676547853141E-0002 -8.85639445537742E-0002 -8.84599674003555E-0002 +-8.83557244281436E-0002 -8.82512167428189E-0002 -8.81464454526282E-0002 -8.80414116683520E-0002 -8.79361165032756E-0002 +-8.78305610731557E-0002 -8.77247464961917E-0002 -8.76186738929963E-0002 -8.75123443865618E-0002 -8.74057591022326E-0002 +-8.72989191676746E-0002 -8.71918257128440E-0002 -8.70844798699581E-0002 -8.69768827734654E-0002 -8.68690355600161E-0002 +-8.67609393684318E-0002 -8.66525953396764E-0002 -8.65440046168262E-0002 -8.64351683450415E-0002 -8.63260876715364E-0002 +-8.62167637455494E-0002 -8.61071977183156E-0002 -8.59973907430370E-0002 -8.58873439748539E-0002 -8.57770585708149E-0002 +-8.56665356898507E-0002 -8.55557764927428E-0002 -8.54447821420980E-0002 -8.53335538023167E-0002 -8.52220926395678E-0002 +-8.51103998217587E-0002 -8.49984765185071E-0002 -8.48863239011154E-0002 -8.47739431425392E-0002 -8.46613354173620E-0002 +-8.45485019017683E-0002 -8.44354437735129E-0002 -8.43221622118969E-0002 -8.42086583977381E-0002 -8.40949335133437E-0002 +-8.39809887424854E-0002 -8.38668252703695E-0002 -8.37524442836117E-0002 -8.36378469702106E-0002 -8.35230345195183E-0002 +-8.34080081222174E-0002 -8.32927689702917E-0002 -8.31773182570001E-0002 -8.30616571768518E-0002 -8.29457869255784E-0002 +-8.28297087001086E-0002 -8.27134236985415E-0002 -8.25969331201206E-0002 -8.24802381652090E-0002 -8.23633400352621E-0002 +-8.22462399328034E-0002 -8.21289390613977E-0002 -8.20114386256255E-0002 -8.18937398310590E-0002 -8.17758438842354E-0002 +-8.16577519926322E-0002 -8.15394653646426E-0002 -8.14209852095491E-0002 -8.13023127374996E-0002 -8.11834491594827E-0002 +-8.10643956873031E-0002 -8.09451535335549E-0002 -8.08257239115997E-0002 -8.07061080355416E-0002 -8.05863071202007E-0002 +-8.04663223810916E-0002 -8.03461550343979E-0002 -8.02258062969478E-0002 -8.01052773861910E-0002 -7.99845695201742E-0002 +-7.98636839175176E-0002 -7.97426217973907E-0002 -7.96213843794893E-0002 -7.94999728840119E-0002 -7.93783885316355E-0002 +-7.92566325434936E-0002 -7.91347061411517E-0002 -7.90126105465844E-0002 -7.88903469821535E-0002 -7.87679166705833E-0002 +-7.86453208349386E-0002 -7.85225606986025E-0002 -7.83996374852520E-0002 -7.82765524188376E-0002 -7.81533067235587E-0002 +-7.80299016238428E-0002 -7.79063383443220E-0002 -7.77826181098114E-0002 -7.76587421452873E-0002 -7.75347116758639E-0002 +-7.74105279267722E-0002 -7.72861921233385E-0002 -7.71617054909618E-0002 -7.70370692550924E-0002 -7.69122846412102E-0002 +-7.67873528748037E-0002 -7.66622751813477E-0002 -7.65370527862830E-0002 -7.64116869149941E-0002 -7.62861787927886E-0002 +-7.61605296448762E-0002 -7.60347406963475E-0002 -7.59088131721532E-0002 -7.57827482970835E-0002 -7.56565472957468E-0002 +-7.55302113925494E-0002 -7.54037418116753E-0002 -7.52771397770657E-0002 -7.51504065123975E-0002 -7.50235432410647E-0002 +-7.48965511861570E-0002 -7.47694315704404E-0002 -7.46421856163367E-0002 -7.45148145459039E-0002 -7.43873195808161E-0002 +-7.42597019423439E-0002 -7.41319628513351E-0002 -7.40041035281940E-0002 -7.38761251928633E-0002 -7.37480290648038E-0002 +-7.36198163629753E-0002 -7.34914883058177E-0002 -7.33630461112307E-0002 -7.32344909965563E-0002 -7.31058241785594E-0002 +-7.29770468734073E-0002 -7.28481602966535E-0002 -7.27191656632175E-0002 -7.25900641873652E-0002 -7.24608570826928E-0002 +-7.23315455621065E-0002 -7.22021308378044E-0002 -7.20726141212591E-0002 -7.19429966231979E-0002 -7.18132795535862E-0002 +-7.16834641216087E-0002 -7.15535515356517E-0002 -7.14235430032847E-0002 -7.12934397312434E-0002 -7.11632429254117E-0002 +-7.10329537908030E-0002 -7.09025735315453E-0002 -7.07721033508603E-0002 -7.06415444510487E-0002 -7.05108980334718E-0002 +-7.03801652985346E-0002 -7.02493474456679E-0002 -7.01184456733128E-0002 -6.99874611789018E-0002 -6.98563951588440E-0002 +-6.97252488085062E-0002 -6.95940233221975E-0002 -6.94627198931528E-0002 -6.93313397135148E-0002 -6.91998839743199E-0002 +-6.90683538654788E-0002 -6.89367505757628E-0002 -6.88050752927865E-0002 -6.86733292029910E-0002 -6.85415134916295E-0002 +-6.84096293427495E-0002 -6.82776779391775E-0002 -6.81456604625044E-0002 -6.80135780930677E-0002 -6.78814320099376E-0002 +-6.77492233909000E-0002 -6.76169534124416E-0002 -6.74846232497351E-0002 -6.73522340766222E-0002 -6.72197870656005E-0002 +-6.70872833878064E-0002 -6.69547242130003E-0002 -6.68221107095531E-0002 -6.66894440444292E-0002 -6.65567253831728E-0002 +-6.64239558898927E-0002 -6.62911367272474E-0002 -6.61582690564316E-0002 -6.60253540371597E-0002 -6.58923928276526E-0002 +-6.57593865846235E-0002 -6.56263364632625E-0002 -6.54932436172231E-0002 -6.53601091986079E-0002 -6.52269343579540E-0002 +-6.50937202442201E-0002 -6.49604680047706E-0002 -6.48271787853643E-0002 -6.46938537301381E-0002 -6.45604939815946E-0002 +-6.44271006805891E-0002 -6.42936749663135E-0002 -6.41602179762861E-0002 -6.40267308463354E-0002 -6.38932147105879E-0002 +-6.37596707014554E-0002 -6.36260999496206E-0002 -6.34925035840247E-0002 -6.33588827318543E-0002 -6.32252385185279E-0002 +-6.30915720676842E-0002 -6.29578845011670E-0002 -6.28241769390157E-0002 -6.26904504994499E-0002 -6.25567062988570E-0002 +-6.24229454517819E-0002 -6.22891690709118E-0002 -6.21553782670657E-0002 -6.20215741491811E-0002 -6.18877578243022E-0002 +-6.17539303975675E-0002 -6.16200929721982E-0002 -6.14862466494848E-0002 -6.13523925287775E-0002 -6.12185317074717E-0002 +-6.10846652809986E-0002 -6.09507943428113E-0002 -6.08169199843746E-0002 -6.06830432951533E-0002 -6.05491653625996E-0002 +-6.04152872721432E-0002 -6.02814101071785E-0002 -6.01475349490543E-0002 -6.00136628770623E-0002 -5.98797949684251E-0002 +-5.97459322982870E-0002 -5.96120759397009E-0002 -5.94782269636182E-0002 -5.93443864388792E-0002 -5.92105554321995E-0002 +-5.90767350081622E-0002 -5.89429262292050E-0002 -5.88091301556107E-0002 -5.86753478454971E-0002 -5.85415803548047E-0002 +-5.84078287372887E-0002 -5.82740940445066E-0002 -5.81403773258092E-0002 -5.80066796283305E-0002 -5.78730019969760E-0002 +-5.77393454744152E-0002 -5.76057111010692E-0002 -5.74720999151020E-0002 -5.73385129524108E-0002 -5.72049512466156E-0002 +-5.70714158290502E-0002 -5.69379077287517E-0002 -5.68044279724514E-0002 -5.66709775845657E-0002 -5.65375575871861E-0002 +-5.64041690000696E-0002 -5.62708128406306E-0002 -5.61374901239301E-0002 -5.60042018626680E-0002 -5.58709490671725E-0002 +-5.57377327453923E-0002 -5.56045539028876E-0002 -5.54714135428200E-0002 -5.53383126659453E-0002 -5.52052522706033E-0002 +-5.50722333527100E-0002 -5.49392569057485E-0002 -5.48063239207607E-0002 -5.46734353863389E-0002 -5.45405922886169E-0002 +-5.44077956112618E-0002 -5.42750463354662E-0002 -5.41423454399390E-0002 -5.40096939008985E-0002 -5.38770926920626E-0002 +-5.37445427846424E-0002 -5.36120451473331E-0002 -5.34796007463069E-0002 -5.33472105452044E-0002 -5.32148755051272E-0002 +-5.30825965846299E-0002 -5.29503747397133E-0002 -5.28182109238153E-0002 -5.26861060878046E-0002 -5.25540611799731E-0002 +-5.24220771460273E-0002 -5.22901549290830E-0002 -5.21582954696559E-0002 -5.20264997056556E-0002 -5.18947685723786E-0002 +-5.17631030025002E-0002 -5.16315039260684E-0002 -5.14999722704964E-0002 -5.13685089605555E-0002 -5.12371149183692E-0002 +-5.11057910634053E-0002 -5.09745383124701E-0002 -5.08433575797009E-0002 -5.07122497765595E-0002 -5.05812158118269E-0002 +-5.04502565915947E-0002 -5.03193730192609E-0002 -5.01885659955215E-0002 -5.00578364183655E-0002 -4.99271851830687E-0002 +-4.97966131821864E-0002 -4.96661213055485E-0002 -4.95357104402528E-0002 -4.94053814706587E-0002 -4.92751352783825E-0002 +-4.91449727422898E-0002 -4.90148947384912E-0002 -4.88849021403357E-0002 -4.87549958184048E-0002 -4.86251766405078E-0002 +-4.84954454716752E-0002 -4.83658031741540E-0002 -4.82362506074015E-0002 -4.81067886280802E-0002 -4.79774180900526E-0002 +-4.78481398443758E-0002 -4.77189547392959E-0002 -4.75898636202436E-0002 -4.74608673298280E-0002 -4.73319667078329E-0002 +-4.72031625912102E-0002 -4.70744558140762E-0002 -4.69458472077064E-0002 -4.68173376005299E-0002 -4.66889278181261E-0002 +-4.65606186832184E-0002 -4.64324110156703E-0002 -4.63043056324812E-0002 -4.61763033477808E-0002 -4.60484049728256E-0002 +-4.59206113159938E-0002 -4.57929231827809E-0002 -4.56653413757961E-0002 -4.55378666947569E-0002 -4.54104999364861E-0002 +-4.52832418949065E-0002 -4.51560933610374E-0002 -4.50290551229907E-0002 -4.49021279659662E-0002 -4.47753126722485E-0002 +-4.46486100212024E-0002 -4.45220207892692E-0002 -4.43955457499637E-0002 -4.42691856738689E-0002 -4.41429413286342E-0002 +-4.40168134789698E-0002 -4.38908028866449E-0002 -4.37649103104831E-0002 -4.36391365063592E-0002 -4.35134822271962E-0002 +-4.33879482229612E-0002 -4.32625352406625E-0002 -4.31372440243466E-0002 -4.30120753150944E-0002 -4.28870298510183E-0002 +-4.27621083672598E-0002 -4.26373115959851E-0002 -4.25126402663833E-0002 -4.23880951046628E-0002 -4.22636768340485E-0002 +-4.21393861747796E-0002 -4.20152238441055E-0002 -4.18911905562845E-0002 -4.17672870225803E-0002 -4.16435139512592E-0002 +-4.15198720475886E-0002 -4.13963620138328E-0002 -4.12729845492524E-0002 -4.11497403501003E-0002 -4.10266301096200E-0002 +-4.09036545180436E-0002 -4.07808142625887E-0002 -4.06581100274571E-0002 -4.05355424938317E-0002 -4.04131123398748E-0002 +-4.02908202407267E-0002 -4.01686668685021E-0002 -4.00466528922898E-0002 -3.99247789781497E-0002 -3.98030457891109E-0002 +-3.96814539851708E-0002 -3.95600042232922E-0002 -3.94386971574025E-0002 -3.93175334383914E-0002 -3.91965137141091E-0002 +-3.90756386293659E-0002 -3.89549088259289E-0002 -3.88343249425220E-0002 -3.87138876148238E-0002 -3.85935974754661E-0002 +-3.84734551540330E-0002 -3.83534612770592E-0002 -3.82336164680287E-0002 -3.81139213473741E-0002 -3.79943765324749E-0002 +-3.78749826376568E-0002 -3.77557402741901E-0002 -3.76366500502891E-0002 -3.75177125711115E-0002 -3.73989284387562E-0002 +-3.72802982522640E-0002 -3.71618226076155E-0002 -3.70435020977307E-0002 -3.69253373124691E-0002 -3.68073288386272E-0002 +-3.66894772599399E-0002 -3.65717831570781E-0002 -3.64542471076493E-0002 -3.63368696861969E-0002 -3.62196514641989E-0002 +-3.61025930100689E-0002 -3.59856948891544E-0002 -3.58689576637370E-0002 -3.57523818930325E-0002 -3.56359681331897E-0002 +-3.55197169372913E-0002 -3.54036288553526E-0002 -3.52877044343223E-0002 -3.51719442180821E-0002 -3.50563487474466E-0002 +-3.49409185601632E-0002 -3.48256541909127E-0002 -3.47105561713084E-0002 -3.45956250298977E-0002 -3.44808612921608E-0002 +-3.43662654805116E-0002 -3.42518381142984E-0002 -3.41375797098032E-0002 -3.40234907802432E-0002 -3.39095718357702E-0002 +-3.37958233834713E-0002 -3.36822459273701E-0002 -3.35688399684261E-0002 -3.34556060045363E-0002 -3.33425445305350E-0002 +-3.32296560381947E-0002 -3.31169410162273E-0002 -3.30043999502839E-0002 -3.28920333229566E-0002 -3.27798416137783E-0002 +-3.26678252992241E-0002 -3.25559848527125E-0002 -3.24443207446055E-0002 -3.23328334422104E-0002 -3.22215234097802E-0002 +-3.21103911085149E-0002 -3.19994369965630E-0002 -3.18886615290217E-0002 -3.17780651579390E-0002 -3.16676483323143E-0002 +-3.15574114980999E-0002 -3.14473550982025E-0002 -3.13374795724839E-0002 -3.12277853577633E-0002 -3.11182728878178E-0002 +-3.10089425933840E-0002 -3.08997949021606E-0002 -3.07908302388081E-0002 -3.06820490249517E-0002 -3.05734516791827E-0002 +-3.04650386170596E-0002 -3.03568102511105E-0002 -3.02487669908340E-0002 -3.01409092427017E-0002 -3.00332374101598E-0002 +-2.99257518936304E-0002 -2.98184530905144E-0002 -2.97113413951921E-0002 -2.96044171990261E-0002 -2.94976808903633E-0002 +-2.93911328545363E-0002 -2.92847734738659E-0002 -2.91786031276630E-0002 -2.90726221922306E-0002 -2.89668310408667E-0002 +-2.88612300438651E-0002 -2.87558195685194E-0002 -2.86505999791237E-0002 -2.85455716369756E-0002 -2.84407349003788E-0002 +-2.83360901246448E-0002 -2.82316376620959E-0002 -2.81273778620673E-0002 -2.80233110709096E-0002 -2.79194376319917E-0002 +-2.78157578857027E-0002 -2.77122721694552E-0002 -2.76089808176871E-0002 -2.75058841618651E-0002 -2.74029825304869E-0002 +-2.73002762490840E-0002 -2.71977656402241E-0002 -2.70954510235152E-0002 -2.69933327156064E-0002 -2.68914110301926E-0002 +-2.67896862780164E-0002 -2.66881587668710E-0002 -2.65868288016039E-0002 -2.64856966841190E-0002 -2.63847627133803E-0002 +-2.62840271854146E-0002 -2.61834903933144E-0002 -2.60831526272419E-0002 -2.59830141744309E-0002 -2.58830753191911E-0002 +-2.57833363429107E-0002 -2.56837975240595E-0002 -2.55844591381931E-0002 -2.54853214579550E-0002 -2.53863847530811E-0002 +-2.52876492904021E-0002 -2.51891153338473E-0002 -2.50907831444487E-0002 -2.49926529803429E-0002 -2.48947250967764E-0002 +-2.47969997461078E-0002 -2.46994771778119E-0002 -2.46021576384834E-0002 -2.45050413718402E-0002 -2.44081286187274E-0002 +-2.43114196171207E-0002 -2.42149146021300E-0002 -2.41186138060040E-0002 -2.40225174581327E-0002 -2.39266257850519E-0002 +-2.38309390104476E-0002 -2.37354573551586E-0002 -2.36401810371814E-0002 -2.35451102716736E-0002 -2.34502452709580E-0002 +-2.33555862445269E-0002 -2.32611333990453E-0002 -2.31668869383561E-0002 -2.30728470634831E-0002 -2.29790139726355E-0002 +-2.28853878612123E-0002 -2.27919689218059E-0002 -2.26987573442071E-0002 -2.26057533154081E-0002 -2.25129570196077E-0002 +-2.24203686382158E-0002 -2.23279883498564E-0002 -2.22358163303732E-0002 -2.21438527528334E-0002 -2.20520977875318E-0002 +-2.19605516019961E-0002 -2.18692143609902E-0002 -2.17780862265197E-0002 -2.16871673578355E-0002 -2.15964579114389E-0002 +-2.15059580410861E-0002 -2.14156678977922E-0002 -2.13255876298366E-0002 -2.12357173827671E-0002 -2.11460572994044E-0002 +-2.10566075198475E-0002 -2.09673681814774E-0002 -2.08783394189628E-0002 -2.07895213642640E-0002 -2.07009141466381E-0002 +-2.06125178926441E-0002 -2.05243327261470E-0002 -2.04363587683228E-0002 -2.03485961376642E-0002 -2.02610449499843E-0002 +-2.01737053184226E-0002 -2.00865773534489E-0002 -1.99996611628690E-0002 -1.99129568518296E-0002 -1.98264645228230E-0002 +-1.97401842756927E-0002 -1.96541162076377E-0002 -1.95682604132180E-0002 -1.94826169843602E-0002 -1.93971860103615E-0002 +-1.93119675778960E-0002 -1.92269617710191E-0002 -1.91421686711729E-0002 -1.90575883571920E-0002 -1.89732209053077E-0002 +-1.88890663891542E-0002 -1.88051248797733E-0002 -1.87213964456201E-0002 -1.86378811525683E-0002 -1.85545790639151E-0002 +-1.84714902403873E-0002 -1.83886147401462E-0002 -1.83059526187930E-0002 -1.82235039293749E-0002 -1.81412687223897E-0002 +-1.80592470457918E-0002 -1.79774389449978E-0002 -1.78958444628915E-0002 -1.78144636398303E-0002 -1.77332965136498E-0002 +-1.76523431196701E-0002 -1.75716034907014E-0002 -1.74910776570492E-0002 -1.74107656465204E-0002 -1.73306674844288E-0002 +-1.72507831936005E-0002 -1.71711127943805E-0002 -1.70916563046374E-0002 -1.70124137397699E-0002 -1.69333851127123E-0002 +-1.68545704339402E-0002 -1.67759697114768E-0002 -1.66975829508978E-0002 -1.66194101553387E-0002 -1.65414513254992E-0002 +-1.64637064596499E-0002 -1.63861755536383E-0002 -1.63088586008942E-0002 -1.62317555924363E-0002 -1.61548665168777E-0002 +-1.60781913604319E-0002 -1.60017301069193E-0002 -1.59254827377726E-0002 -1.58494492320434E-0002 -1.57736295664078E-0002 +-1.56980237151728E-0002 -1.56226316502823E-0002 -1.55474533413233E-0002 -1.54724887555320E-0002 -1.53977378577998E-0002 +-1.53232006106797E-0002 -1.52488769743924E-0002 -1.51747669068326E-0002 -1.51008703635748E-0002 -1.50271872978805E-0002 +-1.49537176607033E-0002 -1.48804614006960E-0002 -1.48074184642166E-0002 -1.47345887953345E-0002 -1.46619723358372E-0002 +-1.45895690252362E-0002 -1.45173788007737E-0002 -1.44454015974288E-0002 -1.43736373479239E-0002 -1.43020859827313E-0002 +-1.42307474300792E-0002 -1.41596216159587E-0002 -1.40887084641299E-0002 -1.40180078961282E-0002 -1.39475198312714E-0002 +-1.38772441866655E-0002 -1.38071808772118E-0002 -1.37373298156130E-0002 -1.36676909123799E-0002 -1.35982640758382E-0002 +-1.35290492121345E-0002 -1.34600462252436E-0002 -1.33912550169746E-0002 -1.33226754869775E-0002 -1.32543075327503E-0002 +-1.31861510496451E-0002 -1.31182059308752E-0002 -1.30504720675214E-0002 -1.29829493485390E-0002 -1.29156376607642E-0002 +-1.28485368889212E-0002 -1.27816469156285E-0002 -1.27149676214061E-0002 -1.26484988846816E-0002 -1.25822405817979E-0002 +-1.25161925870190E-0002 -1.24503547725374E-0002 -1.23847270084809E-0002 -1.23193091629189E-0002 -1.22541011018700E-0002 +-1.21891026893083E-0002 -1.21243137871702E-0002 -1.20597342553618E-0002 -1.19953639517651E-0002 -1.19312027322455E-0002 +-1.18672504506584E-0002 -1.18035069588559E-0002 -1.17399721066943E-0002 -1.16766457420406E-0002 -1.16135277107794E-0002 +-1.15506178568204E-0002 -1.14879160221045E-0002 -1.14254220466117E-0002 -1.13631357683673E-0002 -1.13010570234497E-0002 +-1.12391856459967E-0002 -1.11775214682128E-0002 -1.11160643203765E-0002 -1.10548140308466E-0002 -1.09937704260704E-0002 +-1.09329333305896E-0002 -1.08723025670481E-0002 -1.08118779561989E-0002 -1.07516593169110E-0002 -1.06916464661771E-0002 +-1.06318392191197E-0002 -1.05722373889992E-0002 -1.05128407872207E-0002 -1.04536492233409E-0002 -1.03946625050754E-0002 +-1.03358804383063E-0002 -1.02773028270886E-0002 -1.02189294736579E-0002 -1.01607601784374E-0002 -1.01027947400452E-0002 +-1.00450329553015E-0002 -9.98747461923559E-0003 -9.93011952509350E-0003 -9.87296746434478E-0003 -9.81601822668992E-0003 +-9.75927160006784E-0003 -9.70272737066264E-0003 -9.64638532291138E-0003 -9.59024523951095E-0003 -9.53430690142548E-0003 +-9.47857008789385E-0003 -9.42303457643655E-0003 -9.36770014286342E-0003 -9.31256656128061E-0003 -9.25763360409798E-0003 +-9.20290104203671E-0003 -9.14836864413609E-0003 -9.09403617776145E-0003 -9.03990340861098E-0003 -8.98597010072332E-0003 +-8.93223601648508E-0003 -8.87870091663776E-0003 -8.82536456028561E-0003 -8.77222670490260E-0003 -8.71928710633993E-0003 +-8.66654551883365E-0003 -8.61400169501165E-0003 -8.56165538590127E-0003 -8.50950634093682E-0003 -8.45755430796663E-0003 +-8.40579903326094E-0003 -8.35424026151884E-0003 -8.30287773587592E-0003 -8.25171119791189E-0003 -8.20074038765751E-0003 +-8.14996504360263E-0003 -8.09938490270310E-0003 -8.04899970038848E-0003 -7.99880917056959E-0003 -7.94881304564564E-0003 +-7.89901105651210E-0003 -7.84940293256775E-0003 -7.79998840172237E-0003 -7.75076719040434E-0003 -7.70173902356774E-0003 +-7.65290362470031E-0003 -7.60426071583046E-0003 -7.55581001753499E-0003 -7.50755124894675E-0003 -7.45948412776173E-0003 +-7.41160837024699E-0003 -7.36392369124778E-0003 -7.31642980419521E-0003 -7.26912642111397E-0003 -7.22201325262936E-0003 +-7.17509000797535E-0003 -7.12835639500161E-0003 -7.08181212018128E-0003 -7.03545688861859E-0003 -6.98929040405604E-0003 +-6.94331236888238E-0003 -6.89752248413970E-0003 -6.85192044953115E-0003 -6.80650596342865E-0003 -6.76127872288010E-0003 +-6.71623842361705E-0003 -6.67138476006244E-0003 -6.62671742533771E-0003 -6.58223611127084E-0003 -6.53794050840346E-0003 +-6.49383030599859E-0003 -6.44990519204831E-0003 -6.40616485328099E-0003 -6.36260897516919E-0003 -6.31923724193693E-0003 +-6.27604933656731E-0003 -6.23304494081027E-0003 -6.19022373518975E-0003 -6.14758539901169E-0003 -6.10512961037120E-0003 +-6.06285604616027E-0003 -6.02076438207544E-0003 -5.97885429262508E-0003 -5.93712545113729E-0003 -5.89557752976712E-0003 +-5.85421019950425E-0003 -5.81302313018072E-0003 -5.77201599047817E-0003 -5.73118844793568E-0003 -5.69054016895709E-0003 +-5.65007081881866E-0003 -5.60978006167674E-0003 -5.56966756057502E-0003 -5.52973297745247E-0003 -5.48997597315050E-0003 +-5.45039620742072E-0003 -5.41099333893259E-0003 -5.37176702528069E-0003 -5.33271692299240E-0003 -5.29384268753560E-0003 +-5.25514397332588E-0003 -5.21662043373445E-0003 -5.17827172109536E-0003 -5.14009748671316E-0003 -5.10209738087059E-0003 +-5.06427105283579E-0003 -5.02661815087020E-0003 -4.98913832223577E-0003 -4.95183121320261E-0003 -4.91469646905666E-0003 +-4.87773373410692E-0003 -4.84094265169328E-0003 -4.80432286419379E-0003 -4.76787401303223E-0003 -4.73159573868584E-0003 +-4.69548768069245E-0003 -4.65954947765839E-0003 -4.62378076726566E-0003 -4.58818118627956E-0003 -4.55275037055633E-0003 +-4.51748795505035E-0003 -4.48239357382195E-0003 -4.44746686004462E-0003 -4.41270744601261E-0003 -4.37811496314854E-0003 +-4.34368904201059E-0003 -4.30942931230031E-0003 -4.27533540286977E-0003 -4.24140694172919E-0003 -4.20764355605450E-0003 +-4.17404487219454E-0003 -4.14061051567869E-0003 -4.10734011122437E-0003 -4.07423328274425E-0003 -4.04128965335399E-0003 +-4.00850884537940E-0003 -3.97589048036401E-0003 -3.94343417907657E-0003 -3.91113956151824E-0003 -3.87900624693030E-0003 +-3.84703385380130E-0003 -3.81522199987455E-0003 -3.78357030215568E-0003 -3.75207837691974E-0003 -3.72074583971890E-0003 +-3.68957230538959E-0003 -3.65855738805996E-0003 -3.62770070115737E-0003 -3.59700185741556E-0003 -3.56646046888220E-0003 +-3.53607614692609E-0003 -3.50584850224455E-0003 -3.47577714487092E-0003 -3.44586168418163E-0003 -3.41610172890380E-0003 +-3.38649688712238E-0003 -3.35704676628747E-0003 -3.32775097322184E-0003 -3.29860911412796E-0003 -3.26962079459553E-0003 +-3.24078561960863E-0003 -3.21210319355302E-0003 -3.18357312022355E-0003 -3.15519500283122E-0003 -3.12696844401071E-0003 +-3.09889304582736E-0003 -3.07096840978459E-0003 -3.04319413683119E-0003 -3.01556982736840E-0003 -2.98809508125719E-0003 +-2.96076949782562E-0003 -2.93359267587585E-0003 -2.90656421369153E-0003 -2.87968370904484E-0003 -2.85295075920375E-0003 +-2.82636496093932E-0003 -2.79992591053262E-0003 -2.77363320378219E-0003 -2.74748643601094E-0003 -2.72148520207345E-0003 +-2.69562909636315E-0003 -2.66991771281926E-0003 -2.64435064493419E-0003 -2.61892748576039E-0003 -2.59364782791760E-0003 +-2.56851126360003E-0003 -2.54351738458322E-0003 -2.51866578223137E-0003 -2.49395604750424E-0003 -2.46938777096427E-0003 +-2.44496054278371E-0003 -2.42067395275152E-0003 -2.39652759028058E-0003 -2.37252104441457E-0003 -2.34865390383502E-0003 +-2.32492575686845E-0003 -2.30133619149318E-0003 -2.27788479534647E-0003 -2.25457115573142E-0003 -2.23139485962391E-0003 +-2.20835549367975E-0003 -2.18545264424137E-0003 -2.16268589734493E-0003 -2.14005483872726E-0003 -2.11755905383266E-0003 +-2.09519812781997E-0003 -2.07297164556931E-0003 -2.05087919168906E-0003 -2.02892035052280E-0003 -2.00709470615601E-0003 +-1.98540184242313E-0003 -1.96384134291424E-0003 -1.94241279098195E-0003 -1.92111576974833E-0003 -1.89994986211154E-0003 +-1.87891465075284E-0003 -1.85800971814321E-0003 -1.83723464655020E-0003 -1.81658901804478E-0003 -1.79607241450793E-0003 +-1.77568441763760E-0003 -1.75542460895525E-0003 -1.73529256981268E-0003 -1.71528788139880E-0003 -1.69541012474615E-0003 +-1.67565888073784E-0003 -1.65603373011401E-0003 -1.63653425347858E-0003 -1.61716003130601E-0003 -1.59791064394772E-0003 +-1.57878567163900E-0003 -1.55978469450537E-0003 -1.54090729256934E-0003 -1.52215304575702E-0003 -1.50352153390459E-0003 +-1.48501233676496E-0003 -1.46662503401435E-0003 -1.44835920525874E-0003 -1.43021443004052E-0003 -1.41219028784491E-0003 +-1.39428635810651E-0003 -1.37650222021587E-0003 -1.35883745352581E-0003 -1.34129163735809E-0003 -1.32386435100968E-0003 +-1.30655517375932E-0003 -1.28936368487396E-0003 -1.27228946361508E-0003 -1.25533208924524E-0003 -1.23849114103432E-0003 +-1.22176619826597E-0003 -1.20515684024405E-0003 -1.18866264629883E-0003 -1.17228319579349E-0003 -1.15601806813029E-0003 +-1.13986684275696E-0003 -1.12382909917307E-0003 -1.10790441693615E-0003 -1.09209237566812E-0003 -1.07639255506142E-0003 +-1.06080453488532E-0003 -1.04532789499218E-0003 -1.02996221532354E-0003 -1.01470707591650E-0003 -9.99562056909727E-0004 +-9.84526738549708E-0004 -9.69600701196966E-0004 -9.54783525332071E-0004 -9.40074791561906E-0004 -9.25474080625663E-0004 +-9.10980973400990E-0004 -8.96595050910129E-0004 -8.82315894325892E-0004 -8.68143084977745E-0004 -8.54076204357924E-0004 +-8.40114834127319E-0004 -8.26258556121639E-0004 -8.12506952357279E-0004 -7.98859605037347E-0004 -7.85316096557689E-0004 +-7.71876009512706E-0004 -7.58538926701444E-0004 -7.45304431133378E-0004 -7.32172106034370E-0004 -7.19141534852606E-0004 +-7.06212301264365E-0004 -6.93383989179988E-0004 -6.80656182749613E-0004 -6.68028466369060E-0004 -6.55500424685670E-0004 +-6.43071642604004E-0004 -6.30741705291729E-0004 -6.18510198185296E-0004 -6.06376706995709E-0004 -5.94340817714315E-0004 +-5.82402116618407E-0004 -5.70560190277039E-0004 -5.58814625556609E-0004 -5.47165009626572E-0004 -5.35610929965120E-0004 +-5.24151974364724E-0004 -5.12787730937860E-0004 -5.01517788122514E-0004 -4.90341734687802E-0004 -4.79259159739581E-0004 +-4.68269652725918E-0004 -4.57372803442660E-0004 -4.46568202038988E-0004 -4.35855439022843E-0004 -4.25234105266481E-0004 +-4.14703792011878E-0004 -4.04264090876201E-0004 -3.93914593857280E-0004 -3.83654893338940E-0004 -3.73484582096494E-0004 +-3.63403253302035E-0004 -3.53410500529841E-0004 -3.43505917761752E-0004 -3.33689099392420E-0004 -3.23959640234706E-0004 +-3.14317135524902E-0004 -3.04761180928032E-0004 -2.95291372543154E-0004 -2.85907306908511E-0004 -2.76608581006854E-0004 +-2.67394792270563E-0004 -2.58265538586872E-0004 -2.49220418303066E-0004 -2.40259030231558E-0004 -2.31380973655118E-0004 +-2.22585848331904E-0004 -2.13873254500594E-0004 -2.05242792885500E-0004 -1.96694064701554E-0004 -1.88226671659436E-0004 +-1.79840215970530E-0004 -1.71534300351955E-0004 -1.63308528031589E-0004 -1.55162502752981E-0004 -1.47095828780329E-0004 +-1.39108110903440E-0004 -1.31198954442585E-0004 -1.23367965253469E-0004 -1.15614749732042E-0004 -1.07938914819382E-0004 +-1.00340068006572E-0004 -9.28178173394542E-0005 -8.53717714234973E-0005 -7.80015394285354E-0005 -7.07067310935425E-0005 +-6.34869567314156E-0005 -5.63418272336367E-0005 -4.92709540750501E-0005 -4.22739493184961E-0005 -3.53504256195046E-0005 +-2.84999962309657E-0005 -2.17222750077160E-0005 -1.50168764112008E-0005 -8.38341551402421E-0006 -1.82150800454067E-0006 + 4.66922980856496E-0006 1.10891809917963E-0005 1.74387279822726E-0005 2.37182525832767E-0005 2.99281359597671E-0005 + 3.60687586338842E-0005 4.21405004805794E-0005 4.81437407231298E-0005 5.40788579287948E-0005 5.99462300044100E-0005 + 6.57462341920146E-0005 7.14792470645586E-0005 7.71456445215284E-0005 8.27458017846961E-0005 8.82800933938185E-0005 + 9.37488932023612E-0005 9.91525743732979E-0005 1.04491509374870E-0004 1.09766069976373E-0004 1.14976627244014E-0004 + 1.20123551536715E-0004 1.25207212502008E-0004 1.30227979071902E-0004 1.35186219458768E-0004 1.40082301151304E-0004 + 1.44916590910427E-0004 1.49689454765286E-0004 1.54401258009215E-0004 1.59052365195734E-0004 1.63643140134607E-0004 + 1.68173945887841E-0004 1.72645144765796E-0004 1.77057098323252E-0004 1.81410167355501E-0004 1.85704711894513E-0004 + 1.89941091205044E-0004 1.94119663780840E-0004 1.98240787340810E-0004 2.02304818825229E-0004 2.06312114392001E-0004 + 2.10263029412875E-0004 2.14157918469747E-0004 2.17997135350949E-0004 2.21781033047547E-0004 2.25509963749711E-0004 + 2.29184278843038E-0004 2.32804328904963E-0004 2.36370463701142E-0004 2.39883032181871E-0004 2.43342382478544E-0004 + 2.46748861900109E-0004 2.50102816929542E-0004 2.53404593220385E-0004 2.56654535593236E-0004 2.59852988032331E-0004 + 2.63000293682102E-0004 2.66096794843756E-0004 2.69142832971923E-0004 2.72138748671253E-0004 2.75084881693103E-0004 + 2.77981570932206E-0004 2.80829154423357E-0004 2.83627969338161E-0004 2.86378351981753E-0004 2.89080637789581E-0004 + 2.91735161324187E-0004 2.94342256272003E-0004 2.96902255440206E-0004 2.99415490753546E-0004 3.01882293251240E-0004 + 3.04302993083859E-0004 3.06677919510238E-0004 3.09007400894436E-0004 3.11291764702673E-0004 3.13531337500337E-0004 + 3.15726444948979E-0004 3.17877411803332E-0004 3.19984561908383E-0004 3.22048218196416E-0004 3.24068702684138E-0004 + 3.26046336469770E-0004 3.27981439730194E-0004 3.29874331718117E-0004 3.31725330759245E-0004 3.33534754249498E-0004 + 3.35302918652233E-0004 3.37030139495484E-0004 3.38716731369249E-0004 3.40363007922780E-0004 3.41969281861883E-0004 + 3.43535864946286E-0004 3.45063067986969E-0004 3.46551200843573E-0004 3.48000572421791E-0004 3.49411490670799E-0004 + 3.50784262580710E-0004 3.52119194180046E-0004 3.53416590533231E-0004 3.54676755738115E-0004 3.55899992923507E-0004 + 3.57086604246748E-0004 3.58236890891286E-0004 3.59351153064296E-0004 3.60429689994306E-0004 3.61472799928845E-0004 + 3.62480780132133E-0004 3.63453926882767E-0004 3.64392535471454E-0004 3.65296900198749E-0004 3.66167314372821E-0004 + 3.67004070307253E-0004 3.67807459318843E-0004 3.68577771725450E-0004 3.69315296843848E-0004 3.70020322987605E-0004 + 3.70693137464995E-0004 3.71334026576916E-0004 3.71943275614850E-0004 3.72521168858828E-0004 3.73067989575430E-0004 + 3.73584020015804E-0004 3.74069541413708E-0004 3.74524833983569E-0004 3.74950176918582E-0004 3.75345848388812E-0004 + 3.75712125539331E-0004 3.76049284488376E-0004 3.76357600325525E-0004 3.76637347109905E-0004 3.76888797868413E-0004 + 3.77112224593972E-0004 3.77307898243796E-0004 3.77476088737689E-0004 3.77617064956364E-0004 3.77731094739782E-0004 + 3.77818444885520E-0004 3.77879381147158E-0004 3.77914168232687E-0004 3.77923069802949E-0004 3.77906348470086E-0004 + 3.77864265796032E-0004 3.77797082291008E-0004 3.77705057412050E-0004 3.77588449561563E-0004 3.77447516085895E-0004 + 3.77282513273927E-0004 3.77093696355700E-0004 3.76881319501057E-0004 3.76645635818307E-0004 3.76386897352917E-0004 + 3.76105355086226E-0004 3.75801258934177E-0004 3.75474857746084E-0004 3.75126399303409E-0004 3.74756130318570E-0004 + 3.74364296433775E-0004 3.73951142219868E-0004 3.73516911175210E-0004 3.73061845724580E-0004 3.72586187218093E-0004 + 3.72090175930151E-0004 3.71574051058413E-0004 3.71038050722786E-0004 3.70482411964443E-0004 3.69907370744859E-0004 + 3.69313161944884E-0004 3.68700019363820E-0004 3.68068175718537E-0004 3.67417862642604E-0004 3.66749310685445E-0004 + 3.66062749311526E-0004 3.65358406899549E-0004 3.64636510741689E-0004 3.63897287042837E-0004 3.63140960919876E-0004 + 3.62367756400984E-0004 3.61577896424948E-0004 3.60771602840512E-0004 3.59949096405741E-0004 3.59110596787418E-0004 + 3.58256322560455E-0004 3.57386491207330E-0004 3.56501319117553E-0004 3.55601021587146E-0004 3.54685812818151E-0004 + 3.53755905918170E-0004 3.52811512899908E-0004 3.51852844680763E-0004 3.50880111082420E-0004 3.49893520830477E-0004 + 3.48893281554102E-0004 3.47879599785693E-0004 3.46852680960584E-0004 3.45812729416760E-0004 3.44759948394596E-0004 + 3.43694540036630E-0004 3.42616705387348E-0004 3.41526644392994E-0004 3.40424555901415E-0004 3.39310637661907E-0004 + 3.38185086325116E-0004 3.37048097442924E-0004 3.35899865468392E-0004 3.34740583755711E-0004 3.33570444560174E-0004 + 3.32389639038180E-0004 3.31198357247255E-0004 3.29996788146094E-0004 3.28785119594644E-0004 3.27563538354179E-0004 + 3.26332230087432E-0004 3.25091379358725E-0004 3.23841169634134E-0004 3.22581783281681E-0004 3.21313401571531E-0004 + 3.20036204676241E-0004 3.18750371671002E-0004 3.17456080533924E-0004 3.16153508146342E-0004 3.14842830293134E-0004 + 3.13524221663078E-0004 3.12197855849219E-0004 3.10863905349263E-0004 3.09522541566006E-0004 3.08173934807761E-0004 + 3.06818254288834E-0004 3.05455668130010E-0004 3.04086343359060E-0004 3.02710445911283E-0004 3.01328140630055E-0004 + 2.99939591267415E-0004 2.98544960484671E-0004 2.97144409853019E-0004 2.95738099854204E-0004 2.94326189881181E-0004 + 2.92908838238820E-0004 2.91486202144624E-0004 2.90058437729464E-0004 2.88625700038358E-0004 2.87188143031243E-0004 + 2.85745919583797E-0004 2.84299181488273E-0004 2.82848079454348E-0004 2.81392763110015E-0004 2.79933381002473E-0004 + 2.78470080599060E-0004 2.77003008288206E-0004 2.75532309380391E-0004 2.74058128109157E-0004 2.72580607632108E-0004 + 2.71099890031961E-0004 2.69616116317607E-0004 2.68129426425193E-0004 2.66639959219235E-0004 2.65147852493745E-0004 + 2.63653242973385E-0004 2.62156266314650E-0004 2.60657057107058E-0004 2.59155748874374E-0004 2.57652474075864E-0004 + 2.56147364107546E-0004 2.54640549303495E-0004 2.53132158937143E-0004 2.51622321222620E-0004 2.50111163316114E-0004 + 2.48598811317241E-0004 2.47085390270459E-0004 2.45571024166484E-0004 2.44055835943738E-0004 2.42539947489828E-0004 + 2.41023479643020E-0004 2.39506552193774E-0004 2.37989283886265E-0004 2.36471792419947E-0004 2.34954194451140E-0004 + 2.33436605594621E-0004 2.31919140425264E-0004 2.30401912479675E-0004 2.28885034257871E-0004 2.27368617224971E-0004 + 2.25852771812905E-0004 2.24337607422158E-0004 2.22823232423523E-0004 2.21309754159883E-0004 2.19797278948017E-0004 + 2.18285912080419E-0004 2.16775757827152E-0004 2.15266919437709E-0004 2.13759499142906E-0004 2.12253598156800E-0004 + 2.10749316678613E-0004 2.09246753894701E-0004 2.07746007980517E-0004 2.06247176102622E-0004 2.04750354420703E-0004 + 2.03255638089616E-0004 2.01763121261446E-0004 2.00272897087606E-0004 1.98785057720929E-0004 1.97299694317812E-0004 + 1.95816897040356E-0004 1.94336755058544E-0004 1.92859356552439E-0004 1.91384788714388E-0004 1.89913137751272E-0004 + 1.88444488886756E-0004 1.86978926363569E-0004 1.85516533445812E-0004 1.84057392421271E-0004 1.82601584603768E-0004 + 1.81149190335523E-0004 1.79700288989534E-0004 1.78254958971998E-0004 1.76813277724725E-0004 1.75375321727599E-0004 + 1.73941166501035E-0004 1.72510886608482E-0004 1.71084555658933E-0004 1.69662246309451E-0004 1.68244030267732E-0004 + 1.66829978294676E-0004 1.65420160206977E-0004 1.64014644879753E-0004 1.62613500249169E-0004 1.61216793315106E-0004 + 1.59824590143831E-0004 1.58436955870697E-0004 1.57053954702873E-0004 1.55675649922071E-0004 1.54302103887309E-0004 + 1.52933378037705E-0004 1.51569532895258E-0004 1.50210628067690E-0004 1.48856722251271E-0004 1.47507873233692E-0004 + 1.46164137896949E-0004 1.44825572220234E-0004 1.43492231282874E-0004 1.42164169267262E-0004 1.40841439461822E-0004 + 1.39524094264001E-0004 1.38212185183261E-0004 1.36905762844109E-0004 1.35604876989139E-0004 1.34309576482089E-0004 + 1.33019909310936E-0004 1.31735922590987E-0004 1.30457662568006E-0004 1.29185174621356E-0004 1.27918503267157E-0004 + 1.26657692161474E-0004 1.25402784103508E-0004 1.24153821038827E-0004 1.22910844062596E-0004 1.21673893422836E-0004 + 1.20443008523714E-0004 1.19218227928824E-0004 1.17999589364518E-0004 1.16787129723229E-0004 1.15580885066835E-0004 + 1.14380890630034E-0004 1.13187180823728E-0004 1.11999789238440E-0004 1.10818748647752E-0004 1.09644091011740E-0004 + 1.08475847480458E-0004 1.07314048397415E-0004 1.06158723303082E-0004 1.05009900938426E-0004 1.03867609248440E-0004 + 1.02731875385718E-0004 1.01602725714025E-0004 1.00480185811902E-0004 9.93642804762833E-0005 9.82550337261277E-0005 + 9.71524688060806E-0005 9.60566081901377E-0005 9.49674735853392E-0005 9.38850859354828E-0005 9.28094654248407E-0005 + 9.17406314819155E-0005 9.06786027831931E-0005 8.96233972569280E-0005 8.85750320869448E-0005 8.75335237164463E-0005 + 8.64988878518570E-0005 8.54711394666666E-0005 8.44502928053025E-0005 8.34363613870210E-0005 8.24293580098027E-0005 + 8.14292947542841E-0005 8.04361829876885E-0005 7.94500333677862E-0005 7.84708558468717E-0005 7.74986596757469E-0005 + 7.65334534077380E-0005 7.55752449027133E-0005 7.46240413311285E-0005 7.36798491780897E-0005 7.27426742474227E-0005 + 7.18125216657692E-0005 7.08893958867001E-0005 6.99733006948345E-0005 6.90642392099911E-0005 6.81622138913408E-0005 + 6.72672265415860E-0005 6.63792783111568E-0005 6.54983697024122E-0005 6.46245005738747E-0005 6.37576701444642E-0005 + 6.28978769977593E-0005 6.20451190862744E-0005 6.11993937357428E-0005 6.03606976494309E-0005 5.95290269124533E-0005 + 5.87043769961138E-0005 5.78867427622623E-0005 5.70761184676571E-0005 5.62724977683583E-0005 5.54758737241216E-0005 + 5.46862388028178E-0005 5.39035848848670E-0005 5.31279032676797E-0005 5.23591846701266E-0005 5.15974192370099E-0005 + 5.08425965435592E-0005 5.00947055999422E-0005 4.93537348557816E-0005 4.86196722047004E-0005 4.78925049888689E-0005 + 4.71722200035750E-0005 4.64588035018095E-0005 4.57522411988585E-0005 4.50525182769176E-0005 4.43596193897211E-0005 + 4.36735286671775E-0005 4.29942297200309E-0005 4.23217056445251E-0005 4.16559390270907E-0005 4.09969119490447E-0005 + 4.03446059912977E-0005 3.96990022390866E-0005 3.90600812867092E-0005 3.84278232422804E-0005 3.78022077325029E-0005 + 3.71832139074435E-0005 3.65708204453337E-0005 3.59650055573745E-0005 3.53657469925601E-0005 3.47730220425163E-0005 + 3.41868075463444E-0005 3.36070798954895E-0005 3.30338150386109E-0005 3.24669884864731E-0005 3.19065753168497E-0005 + 3.13525501794327E-0005 3.08048873007663E-0005 3.02635604891818E-0005 2.97285431397531E-0005 2.91998082392639E-0005 + 2.86773283711820E-0005 2.81610757206542E-0005 2.76510220795059E-0005 2.71471388512576E-0005 2.66493970561547E-0005 + 2.61577673362034E-0005 2.56722199602243E-0005 2.51927248289179E-0005 2.47192514799363E-0005 2.42517690929749E-0005 + 2.37902464948678E-0005 2.33346521647002E-0005 2.28849542389325E-0005 2.24411205165299E-0005 2.20031184641123E-0005 + 2.15709152211068E-0005 2.11444776049171E-0005 2.07237721161034E-0005 2.03087649435694E-0005 1.98994219697663E-0005 + 1.94957087759013E-0005 1.90975906471617E-0005 1.87050325779488E-0005 1.83179992771189E-0005 1.79364551732407E-0005 + 1.75603644198568E-0005 1.71896909007601E-0005 1.68243982352801E-0005 1.64644497835754E-0005 1.61098086519420E-0005 + 1.57604376981261E-0005 1.54162995366501E-0005 1.50773565441494E-0005 1.47435708647136E-0005 1.44149044152443E-0005 + 1.40913188908157E-0005 1.37727757700496E-0005 1.34592363204984E-0005 1.31506616040344E-0005 1.28470124822536E-0005 + 1.25482496218830E-0005 1.22543335002008E-0005 1.19652244104643E-0005 1.16808824673454E-0005 1.14012676123755E-0005 + 1.11263396194011E-0005 1.08560581000430E-0005 1.05903825091698E-0005 1.03292721503741E-0005 1.00726861814603E-0005 + 9.82058361994093E-0006 9.57292334853710E-0006 9.32966412069194E-0006 9.09076456608718E-0006 8.85618319617030E-0006 + 8.62587840968929E-0006 8.39980849823215E-0006 8.17793165177780E-0006 7.96020596425028E-0006 7.74658943908287E-0006 + 7.53703999478909E-0006 7.33151547053835E-0006 7.12997363174206E-0006 6.93237217564294E-0006 6.73866873691344E-0006 + 6.54882089326061E-0006 6.36278617103522E-0006 6.18052205085065E-0006 6.00198597320470E-0006 5.82713534410970E-0006 + 5.65592754072873E-0006 5.48831991701570E-0006 5.32426980936427E-0006 5.16373454225963E-0006 5.00667143393780E-0006 + 4.85303780205044E-0006 4.70279096933346E-0006 4.55588826928258E-0006 4.41228705183407E-0006 4.27194468904884E-0006 + 4.13481858080418E-0006 4.00086616048772E-0006 3.87004490069801E-0006 3.74231231894958E-0006 3.61762598338109E-0006 + 3.49594351847022E-0006 3.37722261075068E-0006 3.26142101453484E-0006 3.14849655764058E-0006 3.03840714712065E-0006 + 2.93111077499808E-0006 2.82656552400331E-0006 2.72472957331632E-0006 2.62556120431234E-0006 2.52901880630974E-0006 + 2.43506088232309E-0006 2.34364605481771E-0006 2.25473307146843E-0006 2.16828081092136E-0006 2.08424828855750E-0006 + 2.00259466226064E-0006 1.92327923818643E-0006 1.84626147653497E-0006 1.77150099732582E-0006 1.69895758617438E-0006 + 1.62859120007180E-0006 1.56036197316572E-0006 1.49423022254378E-0006 1.43015645401890E-0006 1.36810136791571E-0006 + 1.30802586485914E-0006 1.24989105156462E-0006 1.19365824662882E-0006 1.13928898632273E-0006 1.08674503038491E-0006 + 1.03598836781632E-0006 9.86981222676072E-0007 9.39686059877353E-0007 8.94065590984879E-0007 8.50082780012005E-0007 + 8.07700849218815E-0007 7.66883284910474E-0007 7.27593843235242E-0007 6.89796555983268E-0007 6.53455736384577E-0007 + 6.18535984907337E-0007 5.85002195055753E-0007 5.52819559167116E-0007 5.21953574208867E-0007 4.92370047574380E-0007 + 4.64035102878296E-0007 4.36915185750883E-0007 4.10977069630993E-0007 3.86187861558292E-0007 3.62515007963696E-0007 + 3.39926300458652E-0007 3.18389881622815E-0007 2.97874250789750E-0007 2.78348269831185E-0007 2.59781168938914E-0007 + 2.42142552404845E-0007 2.25402404398817E-0007 2.09531094743841E-0007 1.94499384689168E-0007 1.80278432680443E-0007 + 1.66839800127311E-0007 1.54155457168117E-0007 1.42197788431473E-0007 1.30939598794822E-0007 1.20354119139715E-0007 + 1.10415012103557E-0007 1.01096377828016E-0007 9.23727597035572E-0008 8.42191501103199E-0008 7.66109961550292E-0008 + 6.95242054037519E-0008 6.29351516105832E-0008 5.68206804418617E-0008 5.11581151959981E-0008 4.59252625186816E-0008 + 4.11004181132793E-0008 3.66623724464466E-0008 3.25904164486295E-0008 2.88643472094703E-0008 2.54644736679135E-0008 + 2.23716222968396E-0008 1.95671427821928E-0008 1.70329136963429E-0008 1.47513481656412E-0008 1.27053995319858E-0008 + 1.08785670082381E-0008 9.25490132741344E-0009 7.81901038543281E-0009 6.55606487735346E-0009 5.45180392691020E-0009 + 4.49254070921713E-0009 3.66516806652169E-0009 2.95716411683005E-0009 2.35659785529261E-0009 1.85213474819201E-0009 + 1.43304231938749E-0009 1.08919572908469E-0009 8.11083344778362E-0010 5.89812304222458E-0010 4.17114070291669E-0010 + 2.85349977579572E-0010 1.87516770595818E-0010 1.17252133412875E-0010 6.88402106163626E-0011 3.72171194148893E-0011 + 1.79764527601180E-0011 7.37477333181816E-0012 2.33709823949355E-0012 4.62374292984783E-0013 2.89436940290008E-0014 diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp b/examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp new file mode 100644 index 00000000000..d7c83fc7167 --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp @@ -0,0 +1,879 @@ + # Hcp Zr with box vectors H1=[2-1-10], H2=[-12-10], H3=[0001]. + + 864 atoms + 1 atom types + + 0.000000000000 19.374000000000 xlo xhi + 0.000000000000 33.556752345839 ylo yhi + 0.000000000000 30.846000000000 zlo zhi + +Masses + + 1 91.22400000 # Zr + +Atoms # atomic + + 1 1 0.000000000000 1.864264019213 2.570500000000 + 2 1 0.000000000000 0.000000000000 0.000000000000 + 3 1 1.614500000000 4.660660048033 2.570500000000 + 4 1 1.614500000000 2.796396028820 0.000000000000 + 5 1 3.229000000000 1.864264019213 2.570500000000 + 6 1 3.229000000000 0.000000000000 0.000000000000 + 7 1 4.843500000000 4.660660048033 2.570500000000 + 8 1 4.843500000000 2.796396028820 0.000000000000 + 9 1 6.458000000000 1.864264019213 2.570500000000 + 10 1 6.458000000000 0.000000000000 0.000000000000 + 11 1 8.072500000000 4.660660048033 2.570500000000 + 12 1 8.072500000000 2.796396028820 0.000000000000 + 13 1 9.687000000000 1.864264019213 2.570500000000 + 14 1 9.687000000000 0.000000000000 0.000000000000 + 15 1 11.301500000000 4.660660048033 2.570500000000 + 16 1 11.301500000000 2.796396028820 0.000000000000 + 17 1 12.916000000000 1.864264019213 2.570500000000 + 18 1 12.916000000000 0.000000000000 0.000000000000 + 19 1 14.530500000000 4.660660048033 2.570500000000 + 20 1 14.530500000000 2.796396028820 0.000000000000 + 21 1 16.145000000000 1.864264019213 2.570500000000 + 22 1 16.145000000000 0.000000000000 0.000000000000 + 23 1 17.759500000000 4.660660048033 2.570500000000 + 24 1 17.759500000000 2.796396028820 0.000000000000 + 25 1 0.000000000000 7.457056076853 2.570500000000 + 26 1 0.000000000000 5.592792057640 0.000000000000 + 27 1 1.614500000000 10.253452105673 2.570500000000 + 28 1 1.614500000000 8.389188086460 0.000000000000 + 29 1 3.229000000000 7.457056076853 2.570500000000 + 30 1 3.229000000000 5.592792057640 0.000000000000 + 31 1 4.843500000000 10.253452105673 2.570500000000 + 32 1 4.843500000000 8.389188086460 0.000000000000 + 33 1 6.458000000000 7.457056076853 2.570500000000 + 34 1 6.458000000000 5.592792057640 0.000000000000 + 35 1 8.072500000000 10.253452105673 2.570500000000 + 36 1 8.072500000000 8.389188086460 0.000000000000 + 37 1 9.687000000000 7.457056076853 2.570500000000 + 38 1 9.687000000000 5.592792057640 0.000000000000 + 39 1 11.301500000000 10.253452105673 2.570500000000 + 40 1 11.301500000000 8.389188086460 0.000000000000 + 41 1 12.916000000000 7.457056076853 2.570500000000 + 42 1 12.916000000000 5.592792057640 0.000000000000 + 43 1 14.530500000000 10.253452105673 2.570500000000 + 44 1 14.530500000000 8.389188086460 0.000000000000 + 45 1 16.145000000000 7.457056076853 2.570500000000 + 46 1 16.145000000000 5.592792057640 0.000000000000 + 47 1 17.759500000000 10.253452105673 2.570500000000 + 48 1 17.759500000000 8.389188086460 0.000000000000 + 49 1 0.000000000000 13.049848134493 2.570500000000 + 50 1 0.000000000000 11.185584115280 0.000000000000 + 51 1 1.614500000000 15.846244163313 2.570500000000 + 52 1 1.614500000000 13.981980144100 0.000000000000 + 53 1 3.229000000000 13.049848134493 2.570500000000 + 54 1 3.229000000000 11.185584115280 0.000000000000 + 55 1 4.843500000000 15.846244163313 2.570500000000 + 56 1 4.843500000000 13.981980144100 0.000000000000 + 57 1 6.458000000000 13.049848134493 2.570500000000 + 58 1 6.458000000000 11.185584115280 0.000000000000 + 59 1 8.072500000000 15.846244163313 2.570500000000 + 60 1 8.072500000000 13.981980144100 0.000000000000 + 61 1 9.687000000000 13.049848134493 2.570500000000 + 62 1 9.687000000000 11.185584115280 0.000000000000 + 63 1 11.301500000000 15.846244163313 2.570500000000 + 64 1 11.301500000000 13.981980144100 0.000000000000 + 65 1 12.916000000000 13.049848134493 2.570500000000 + 66 1 12.916000000000 11.185584115280 0.000000000000 + 67 1 14.530500000000 15.846244163313 2.570500000000 + 68 1 14.530500000000 13.981980144100 0.000000000000 + 69 1 16.145000000000 13.049848134493 2.570500000000 + 70 1 16.145000000000 11.185584115280 0.000000000000 + 71 1 17.759500000000 15.846244163313 2.570500000000 + 72 1 17.759500000000 13.981980144100 0.000000000000 + 73 1 0.000000000000 18.642640192133 2.570500000000 + 74 1 0.000000000000 16.778376172920 0.000000000000 + 75 1 1.614500000000 21.439036220953 2.570500000000 + 76 1 1.614500000000 19.574772201740 0.000000000000 + 77 1 3.229000000000 18.642640192133 2.570500000000 + 78 1 3.229000000000 16.778376172920 0.000000000000 + 79 1 4.843500000000 21.439036220953 2.570500000000 + 80 1 4.843500000000 19.574772201740 0.000000000000 + 81 1 6.458000000000 18.642640192133 2.570500000000 + 82 1 6.458000000000 16.778376172920 0.000000000000 + 83 1 8.072500000000 21.439036220953 2.570500000000 + 84 1 8.072500000000 19.574772201740 0.000000000000 + 85 1 9.687000000000 18.642640192133 2.570500000000 + 86 1 9.687000000000 16.778376172920 0.000000000000 + 87 1 11.301500000000 21.439036220953 2.570500000000 + 88 1 11.301500000000 19.574772201740 0.000000000000 + 89 1 12.916000000000 18.642640192133 2.570500000000 + 90 1 12.916000000000 16.778376172920 0.000000000000 + 91 1 14.530500000000 21.439036220953 2.570500000000 + 92 1 14.530500000000 19.574772201740 0.000000000000 + 93 1 16.145000000000 18.642640192133 2.570500000000 + 94 1 16.145000000000 16.778376172920 0.000000000000 + 95 1 17.759500000000 21.439036220953 2.570500000000 + 96 1 17.759500000000 19.574772201740 0.000000000000 + 97 1 0.000000000000 24.235432249773 2.570500000000 + 98 1 0.000000000000 22.371168230560 0.000000000000 + 99 1 1.614500000000 27.031828278593 2.570500000000 + 100 1 1.614500000000 25.167564259380 0.000000000000 + 101 1 3.229000000000 24.235432249773 2.570500000000 + 102 1 3.229000000000 22.371168230560 0.000000000000 + 103 1 4.843500000000 27.031828278593 2.570500000000 + 104 1 4.843500000000 25.167564259380 0.000000000000 + 105 1 6.458000000000 24.235432249773 2.570500000000 + 106 1 6.458000000000 22.371168230560 0.000000000000 + 107 1 8.072500000000 27.031828278593 2.570500000000 + 108 1 8.072500000000 25.167564259380 0.000000000000 + 109 1 9.687000000000 24.235432249773 2.570500000000 + 110 1 9.687000000000 22.371168230560 0.000000000000 + 111 1 11.301500000000 27.031828278593 2.570500000000 + 112 1 11.301500000000 25.167564259380 0.000000000000 + 113 1 12.916000000000 24.235432249773 2.570500000000 + 114 1 12.916000000000 22.371168230560 0.000000000000 + 115 1 14.530500000000 27.031828278593 2.570500000000 + 116 1 14.530500000000 25.167564259380 0.000000000000 + 117 1 16.145000000000 24.235432249773 2.570500000000 + 118 1 16.145000000000 22.371168230560 0.000000000000 + 119 1 17.759500000000 27.031828278593 2.570500000000 + 120 1 17.759500000000 25.167564259380 0.000000000000 + 121 1 0.000000000000 29.828224307413 2.570500000000 + 122 1 0.000000000000 27.963960288200 0.000000000000 + 123 1 1.614500000000 32.624620336233 2.570500000000 + 124 1 1.614500000000 30.760356317019 0.000000000000 + 125 1 3.229000000000 29.828224307413 2.570500000000 + 126 1 3.229000000000 27.963960288200 0.000000000000 + 127 1 4.843500000000 32.624620336233 2.570500000000 + 128 1 4.843500000000 30.760356317019 0.000000000000 + 129 1 6.458000000000 29.828224307413 2.570500000000 + 130 1 6.458000000000 27.963960288200 0.000000000000 + 131 1 8.072500000000 32.624620336233 2.570500000000 + 132 1 8.072500000000 30.760356317019 0.000000000000 + 133 1 9.687000000000 29.828224307413 2.570500000000 + 134 1 9.687000000000 27.963960288200 0.000000000000 + 135 1 11.301500000000 32.624620336233 2.570500000000 + 136 1 11.301500000000 30.760356317019 0.000000000000 + 137 1 12.916000000000 29.828224307413 2.570500000000 + 138 1 12.916000000000 27.963960288200 0.000000000000 + 139 1 14.530500000000 32.624620336233 2.570500000000 + 140 1 14.530500000000 30.760356317019 0.000000000000 + 141 1 16.145000000000 29.828224307413 2.570500000000 + 142 1 16.145000000000 27.963960288200 0.000000000000 + 143 1 17.759500000000 32.624620336233 2.570500000000 + 144 1 17.759500000000 30.760356317019 0.000000000000 + 145 1 0.000000000000 1.864264019213 7.711500000000 + 146 1 0.000000000000 0.000000000000 5.141000000000 + 147 1 1.614500000000 4.660660048033 7.711500000000 + 148 1 1.614500000000 2.796396028820 5.141000000000 + 149 1 3.229000000000 1.864264019213 7.711500000000 + 150 1 3.229000000000 0.000000000000 5.141000000000 + 151 1 4.843500000000 4.660660048033 7.711500000000 + 152 1 4.843500000000 2.796396028820 5.141000000000 + 153 1 6.458000000000 1.864264019213 7.711500000000 + 154 1 6.458000000000 0.000000000000 5.141000000000 + 155 1 8.072500000000 4.660660048033 7.711500000000 + 156 1 8.072500000000 2.796396028820 5.141000000000 + 157 1 9.687000000000 1.864264019213 7.711500000000 + 158 1 9.687000000000 0.000000000000 5.141000000000 + 159 1 11.301500000000 4.660660048033 7.711500000000 + 160 1 11.301500000000 2.796396028820 5.141000000000 + 161 1 12.916000000000 1.864264019213 7.711500000000 + 162 1 12.916000000000 0.000000000000 5.141000000000 + 163 1 14.530500000000 4.660660048033 7.711500000000 + 164 1 14.530500000000 2.796396028820 5.141000000000 + 165 1 16.145000000000 1.864264019213 7.711500000000 + 166 1 16.145000000000 0.000000000000 5.141000000000 + 167 1 17.759500000000 4.660660048033 7.711500000000 + 168 1 17.759500000000 2.796396028820 5.141000000000 + 169 1 0.000000000000 7.457056076853 7.711500000000 + 170 1 0.000000000000 5.592792057640 5.141000000000 + 171 1 1.614500000000 10.253452105673 7.711500000000 + 172 1 1.614500000000 8.389188086460 5.141000000000 + 173 1 3.229000000000 7.457056076853 7.711500000000 + 174 1 3.229000000000 5.592792057640 5.141000000000 + 175 1 4.843500000000 10.253452105673 7.711500000000 + 176 1 4.843500000000 8.389188086460 5.141000000000 + 177 1 6.458000000000 7.457056076853 7.711500000000 + 178 1 6.458000000000 5.592792057640 5.141000000000 + 179 1 8.072500000000 10.253452105673 7.711500000000 + 180 1 8.072500000000 8.389188086460 5.141000000000 + 181 1 9.687000000000 7.457056076853 7.711500000000 + 182 1 9.687000000000 5.592792057640 5.141000000000 + 183 1 11.301500000000 10.253452105673 7.711500000000 + 184 1 11.301500000000 8.389188086460 5.141000000000 + 185 1 12.916000000000 7.457056076853 7.711500000000 + 186 1 12.916000000000 5.592792057640 5.141000000000 + 187 1 14.530500000000 10.253452105673 7.711500000000 + 188 1 14.530500000000 8.389188086460 5.141000000000 + 189 1 16.145000000000 7.457056076853 7.711500000000 + 190 1 16.145000000000 5.592792057640 5.141000000000 + 191 1 17.759500000000 10.253452105673 7.711500000000 + 192 1 17.759500000000 8.389188086460 5.141000000000 + 193 1 0.000000000000 13.049848134493 7.711500000000 + 194 1 0.000000000000 11.185584115280 5.141000000000 + 195 1 1.614500000000 15.846244163313 7.711500000000 + 196 1 1.614500000000 13.981980144100 5.141000000000 + 197 1 3.229000000000 13.049848134493 7.711500000000 + 198 1 3.229000000000 11.185584115280 5.141000000000 + 199 1 4.843500000000 15.846244163313 7.711500000000 + 200 1 4.843500000000 13.981980144100 5.141000000000 + 201 1 6.458000000000 13.049848134493 7.711500000000 + 202 1 6.458000000000 11.185584115280 5.141000000000 + 203 1 8.072500000000 15.846244163313 7.711500000000 + 204 1 8.072500000000 13.981980144100 5.141000000000 + 205 1 9.687000000000 13.049848134493 7.711500000000 + 206 1 9.687000000000 11.185584115280 5.141000000000 + 207 1 11.301500000000 15.846244163313 7.711500000000 + 208 1 11.301500000000 13.981980144100 5.141000000000 + 209 1 12.916000000000 13.049848134493 7.711500000000 + 210 1 12.916000000000 11.185584115280 5.141000000000 + 211 1 14.530500000000 15.846244163313 7.711500000000 + 212 1 14.530500000000 13.981980144100 5.141000000000 + 213 1 16.145000000000 13.049848134493 7.711500000000 + 214 1 16.145000000000 11.185584115280 5.141000000000 + 215 1 17.759500000000 15.846244163313 7.711500000000 + 216 1 17.759500000000 13.981980144100 5.141000000000 + 217 1 0.000000000000 18.642640192133 7.711500000000 + 218 1 0.000000000000 16.778376172920 5.141000000000 + 219 1 1.614500000000 21.439036220953 7.711500000000 + 220 1 1.614500000000 19.574772201740 5.141000000000 + 221 1 3.229000000000 18.642640192133 7.711500000000 + 222 1 3.229000000000 16.778376172920 5.141000000000 + 223 1 4.843500000000 21.439036220953 7.711500000000 + 224 1 4.843500000000 19.574772201740 5.141000000000 + 225 1 6.458000000000 18.642640192133 7.711500000000 + 226 1 6.458000000000 16.778376172920 5.141000000000 + 227 1 8.072500000000 21.439036220953 7.711500000000 + 228 1 8.072500000000 19.574772201740 5.141000000000 + 229 1 9.687000000000 18.642640192133 7.711500000000 + 230 1 9.687000000000 16.778376172920 5.141000000000 + 231 1 11.301500000000 21.439036220953 7.711500000000 + 232 1 11.301500000000 19.574772201740 5.141000000000 + 233 1 12.916000000000 18.642640192133 7.711500000000 + 234 1 12.916000000000 16.778376172920 5.141000000000 + 235 1 14.530500000000 21.439036220953 7.711500000000 + 236 1 14.530500000000 19.574772201740 5.141000000000 + 237 1 16.145000000000 18.642640192133 7.711500000000 + 238 1 16.145000000000 16.778376172920 5.141000000000 + 239 1 17.759500000000 21.439036220953 7.711500000000 + 240 1 17.759500000000 19.574772201740 5.141000000000 + 241 1 0.000000000000 24.235432249773 7.711500000000 + 242 1 0.000000000000 22.371168230560 5.141000000000 + 243 1 1.614500000000 27.031828278593 7.711500000000 + 244 1 1.614500000000 25.167564259380 5.141000000000 + 245 1 3.229000000000 24.235432249773 7.711500000000 + 246 1 3.229000000000 22.371168230560 5.141000000000 + 247 1 4.843500000000 27.031828278593 7.711500000000 + 248 1 4.843500000000 25.167564259380 5.141000000000 + 249 1 6.458000000000 24.235432249773 7.711500000000 + 250 1 6.458000000000 22.371168230560 5.141000000000 + 251 1 8.072500000000 27.031828278593 7.711500000000 + 252 1 8.072500000000 25.167564259380 5.141000000000 + 253 1 9.687000000000 24.235432249773 7.711500000000 + 254 1 9.687000000000 22.371168230560 5.141000000000 + 255 1 11.301500000000 27.031828278593 7.711500000000 + 256 1 11.301500000000 25.167564259380 5.141000000000 + 257 1 12.916000000000 24.235432249773 7.711500000000 + 258 1 12.916000000000 22.371168230560 5.141000000000 + 259 1 14.530500000000 27.031828278593 7.711500000000 + 260 1 14.530500000000 25.167564259380 5.141000000000 + 261 1 16.145000000000 24.235432249773 7.711500000000 + 262 1 16.145000000000 22.371168230560 5.141000000000 + 263 1 17.759500000000 27.031828278593 7.711500000000 + 264 1 17.759500000000 25.167564259380 5.141000000000 + 265 1 0.000000000000 29.828224307413 7.711500000000 + 266 1 0.000000000000 27.963960288200 5.141000000000 + 267 1 1.614500000000 32.624620336233 7.711500000000 + 268 1 1.614500000000 30.760356317019 5.141000000000 + 269 1 3.229000000000 29.828224307413 7.711500000000 + 270 1 3.229000000000 27.963960288200 5.141000000000 + 271 1 4.843500000000 32.624620336233 7.711500000000 + 272 1 4.843500000000 30.760356317019 5.141000000000 + 273 1 6.458000000000 29.828224307413 7.711500000000 + 274 1 6.458000000000 27.963960288200 5.141000000000 + 275 1 8.072500000000 32.624620336233 7.711500000000 + 276 1 8.072500000000 30.760356317019 5.141000000000 + 277 1 9.687000000000 29.828224307413 7.711500000000 + 278 1 9.687000000000 27.963960288200 5.141000000000 + 279 1 11.301500000000 32.624620336233 7.711500000000 + 280 1 11.301500000000 30.760356317019 5.141000000000 + 281 1 12.916000000000 29.828224307413 7.711500000000 + 282 1 12.916000000000 27.963960288200 5.141000000000 + 283 1 14.530500000000 32.624620336233 7.711500000000 + 284 1 14.530500000000 30.760356317019 5.141000000000 + 285 1 16.145000000000 29.828224307413 7.711500000000 + 286 1 16.145000000000 27.963960288200 5.141000000000 + 287 1 17.759500000000 32.624620336233 7.711500000000 + 288 1 17.759500000000 30.760356317019 5.141000000000 + 289 1 0.000000000000 1.864264019213 12.852500000000 + 290 1 0.000000000000 0.000000000000 10.282000000000 + 291 1 1.614500000000 4.660660048033 12.852500000000 + 292 1 1.614500000000 2.796396028820 10.282000000000 + 293 1 3.229000000000 1.864264019213 12.852500000000 + 294 1 3.229000000000 0.000000000000 10.282000000000 + 295 1 4.843500000000 4.660660048033 12.852500000000 + 296 1 4.843500000000 2.796396028820 10.282000000000 + 297 1 6.458000000000 1.864264019213 12.852500000000 + 298 1 6.458000000000 0.000000000000 10.282000000000 + 299 1 8.072500000000 4.660660048033 12.852500000000 + 300 1 8.072500000000 2.796396028820 10.282000000000 + 301 1 9.687000000000 1.864264019213 12.852500000000 + 302 1 9.687000000000 0.000000000000 10.282000000000 + 303 1 11.301500000000 4.660660048033 12.852500000000 + 304 1 11.301500000000 2.796396028820 10.282000000000 + 305 1 12.916000000000 1.864264019213 12.852500000000 + 306 1 12.916000000000 0.000000000000 10.282000000000 + 307 1 14.530500000000 4.660660048033 12.852500000000 + 308 1 14.530500000000 2.796396028820 10.282000000000 + 309 1 16.145000000000 1.864264019213 12.852500000000 + 310 1 16.145000000000 0.000000000000 10.282000000000 + 311 1 17.759500000000 4.660660048033 12.852500000000 + 312 1 17.759500000000 2.796396028820 10.282000000000 + 313 1 0.000000000000 7.457056076853 12.852500000000 + 314 1 0.000000000000 5.592792057640 10.282000000000 + 315 1 1.614500000000 10.253452105673 12.852500000000 + 316 1 1.614500000000 8.389188086460 10.282000000000 + 317 1 3.229000000000 7.457056076853 12.852500000000 + 318 1 3.229000000000 5.592792057640 10.282000000000 + 319 1 4.843500000000 10.253452105673 12.852500000000 + 320 1 4.843500000000 8.389188086460 10.282000000000 + 321 1 6.458000000000 7.457056076853 12.852500000000 + 322 1 6.458000000000 5.592792057640 10.282000000000 + 323 1 8.072500000000 10.253452105673 12.852500000000 + 324 1 8.072500000000 8.389188086460 10.282000000000 + 325 1 9.687000000000 7.457056076853 12.852500000000 + 326 1 9.687000000000 5.592792057640 10.282000000000 + 327 1 11.301500000000 10.253452105673 12.852500000000 + 328 1 11.301500000000 8.389188086460 10.282000000000 + 329 1 12.916000000000 7.457056076853 12.852500000000 + 330 1 12.916000000000 5.592792057640 10.282000000000 + 331 1 14.530500000000 10.253452105673 12.852500000000 + 332 1 14.530500000000 8.389188086460 10.282000000000 + 333 1 16.145000000000 7.457056076853 12.852500000000 + 334 1 16.145000000000 5.592792057640 10.282000000000 + 335 1 17.759500000000 10.253452105673 12.852500000000 + 336 1 17.759500000000 8.389188086460 10.282000000000 + 337 1 0.000000000000 13.049848134493 12.852500000000 + 338 1 0.000000000000 11.185584115280 10.282000000000 + 339 1 1.614500000000 15.846244163313 12.852500000000 + 340 1 1.614500000000 13.981980144100 10.282000000000 + 341 1 3.229000000000 13.049848134493 12.852500000000 + 342 1 3.229000000000 11.185584115280 10.282000000000 + 343 1 4.843500000000 15.846244163313 12.852500000000 + 344 1 4.843500000000 13.981980144100 10.282000000000 + 345 1 6.458000000000 13.049848134493 12.852500000000 + 346 1 6.458000000000 11.185584115280 10.282000000000 + 347 1 8.072500000000 15.846244163313 12.852500000000 + 348 1 8.072500000000 13.981980144100 10.282000000000 + 349 1 9.687000000000 13.049848134493 12.852500000000 + 350 1 9.687000000000 11.185584115280 10.282000000000 + 351 1 11.301500000000 15.846244163313 12.852500000000 + 352 1 11.301500000000 13.981980144100 10.282000000000 + 353 1 12.916000000000 13.049848134493 12.852500000000 + 354 1 12.916000000000 11.185584115280 10.282000000000 + 355 1 14.530500000000 15.846244163313 12.852500000000 + 356 1 14.530500000000 13.981980144100 10.282000000000 + 357 1 16.145000000000 13.049848134493 12.852500000000 + 358 1 16.145000000000 11.185584115280 10.282000000000 + 359 1 17.759500000000 15.846244163313 12.852500000000 + 360 1 17.759500000000 13.981980144100 10.282000000000 + 361 1 0.000000000000 18.642640192133 12.852500000000 + 362 1 0.000000000000 16.778376172920 10.282000000000 + 363 1 1.614500000000 21.439036220953 12.852500000000 + 364 1 1.614500000000 19.574772201740 10.282000000000 + 365 1 3.229000000000 18.642640192133 12.852500000000 + 366 1 3.229000000000 16.778376172920 10.282000000000 + 367 1 4.843500000000 21.439036220953 12.852500000000 + 368 1 4.843500000000 19.574772201740 10.282000000000 + 369 1 6.458000000000 18.642640192133 12.852500000000 + 370 1 6.458000000000 16.778376172920 10.282000000000 + 371 1 8.072500000000 21.439036220953 12.852500000000 + 372 1 8.072500000000 19.574772201740 10.282000000000 + 373 1 9.687000000000 18.642640192133 12.852500000000 + 374 1 9.687000000000 16.778376172920 10.282000000000 + 375 1 11.301500000000 21.439036220953 12.852500000000 + 376 1 11.301500000000 19.574772201740 10.282000000000 + 377 1 12.916000000000 18.642640192133 12.852500000000 + 378 1 12.916000000000 16.778376172920 10.282000000000 + 379 1 14.530500000000 21.439036220953 12.852500000000 + 380 1 14.530500000000 19.574772201740 10.282000000000 + 381 1 16.145000000000 18.642640192133 12.852500000000 + 382 1 16.145000000000 16.778376172920 10.282000000000 + 383 1 17.759500000000 21.439036220953 12.852500000000 + 384 1 17.759500000000 19.574772201740 10.282000000000 + 385 1 0.000000000000 24.235432249773 12.852500000000 + 386 1 0.000000000000 22.371168230560 10.282000000000 + 387 1 1.614500000000 27.031828278593 12.852500000000 + 388 1 1.614500000000 25.167564259380 10.282000000000 + 389 1 3.229000000000 24.235432249773 12.852500000000 + 390 1 3.229000000000 22.371168230560 10.282000000000 + 391 1 4.843500000000 27.031828278593 12.852500000000 + 392 1 4.843500000000 25.167564259380 10.282000000000 + 393 1 6.458000000000 24.235432249773 12.852500000000 + 394 1 6.458000000000 22.371168230560 10.282000000000 + 395 1 8.072500000000 27.031828278593 12.852500000000 + 396 1 8.072500000000 25.167564259380 10.282000000000 + 397 1 9.687000000000 24.235432249773 12.852500000000 + 398 1 9.687000000000 22.371168230560 10.282000000000 + 399 1 11.301500000000 27.031828278593 12.852500000000 + 400 1 11.301500000000 25.167564259380 10.282000000000 + 401 1 12.916000000000 24.235432249773 12.852500000000 + 402 1 12.916000000000 22.371168230560 10.282000000000 + 403 1 14.530500000000 27.031828278593 12.852500000000 + 404 1 14.530500000000 25.167564259380 10.282000000000 + 405 1 16.145000000000 24.235432249773 12.852500000000 + 406 1 16.145000000000 22.371168230560 10.282000000000 + 407 1 17.759500000000 27.031828278593 12.852500000000 + 408 1 17.759500000000 25.167564259380 10.282000000000 + 409 1 0.000000000000 29.828224307413 12.852500000000 + 410 1 0.000000000000 27.963960288200 10.282000000000 + 411 1 1.614500000000 32.624620336233 12.852500000000 + 412 1 1.614500000000 30.760356317019 10.282000000000 + 413 1 3.229000000000 29.828224307413 12.852500000000 + 414 1 3.229000000000 27.963960288200 10.282000000000 + 415 1 4.843500000000 32.624620336233 12.852500000000 + 416 1 4.843500000000 30.760356317019 10.282000000000 + 417 1 6.458000000000 29.828224307413 12.852500000000 + 418 1 6.458000000000 27.963960288200 10.282000000000 + 419 1 8.072500000000 32.624620336233 12.852500000000 + 420 1 8.072500000000 30.760356317019 10.282000000000 + 421 1 9.687000000000 29.828224307413 12.852500000000 + 422 1 9.687000000000 27.963960288200 10.282000000000 + 423 1 11.301500000000 32.624620336233 12.852500000000 + 424 1 11.301500000000 30.760356317019 10.282000000000 + 425 1 12.916000000000 29.828224307413 12.852500000000 + 426 1 12.916000000000 27.963960288200 10.282000000000 + 427 1 14.530500000000 32.624620336233 12.852500000000 + 428 1 14.530500000000 30.760356317019 10.282000000000 + 429 1 16.145000000000 29.828224307413 12.852500000000 + 430 1 16.145000000000 27.963960288200 10.282000000000 + 431 1 17.759500000000 32.624620336233 12.852500000000 + 432 1 17.759500000000 30.760356317019 10.282000000000 + 433 1 0.000000000000 1.864264019213 17.993500000000 + 434 1 0.000000000000 0.000000000000 15.423000000000 + 435 1 1.614500000000 4.660660048033 17.993500000000 + 436 1 1.614500000000 2.796396028820 15.423000000000 + 437 1 3.229000000000 1.864264019213 17.993500000000 + 438 1 3.229000000000 0.000000000000 15.423000000000 + 439 1 4.843500000000 4.660660048033 17.993500000000 + 440 1 4.843500000000 2.796396028820 15.423000000000 + 441 1 6.458000000000 1.864264019213 17.993500000000 + 442 1 6.458000000000 0.000000000000 15.423000000000 + 443 1 8.072500000000 4.660660048033 17.993500000000 + 444 1 8.072500000000 2.796396028820 15.423000000000 + 445 1 9.687000000000 1.864264019213 17.993500000000 + 446 1 9.687000000000 0.000000000000 15.423000000000 + 447 1 11.301500000000 4.660660048033 17.993500000000 + 448 1 11.301500000000 2.796396028820 15.423000000000 + 449 1 12.916000000000 1.864264019213 17.993500000000 + 450 1 12.916000000000 0.000000000000 15.423000000000 + 451 1 14.530500000000 4.660660048033 17.993500000000 + 452 1 14.530500000000 2.796396028820 15.423000000000 + 453 1 16.145000000000 1.864264019213 17.993500000000 + 454 1 16.145000000000 0.000000000000 15.423000000000 + 455 1 17.759500000000 4.660660048033 17.993500000000 + 456 1 17.759500000000 2.796396028820 15.423000000000 + 457 1 0.000000000000 7.457056076853 17.993500000000 + 458 1 0.000000000000 5.592792057640 15.423000000000 + 459 1 1.614500000000 10.253452105673 17.993500000000 + 460 1 1.614500000000 8.389188086460 15.423000000000 + 461 1 3.229000000000 7.457056076853 17.993500000000 + 462 1 3.229000000000 5.592792057640 15.423000000000 + 463 1 4.843500000000 10.253452105673 17.993500000000 + 464 1 4.843500000000 8.389188086460 15.423000000000 + 465 1 6.458000000000 7.457056076853 17.993500000000 + 466 1 6.458000000000 5.592792057640 15.423000000000 + 467 1 8.072500000000 10.253452105673 17.993500000000 + 468 1 8.072500000000 8.389188086460 15.423000000000 + 469 1 9.687000000000 7.457056076853 17.993500000000 + 470 1 9.687000000000 5.592792057640 15.423000000000 + 471 1 11.301500000000 10.253452105673 17.993500000000 + 472 1 11.301500000000 8.389188086460 15.423000000000 + 473 1 12.916000000000 7.457056076853 17.993500000000 + 474 1 12.916000000000 5.592792057640 15.423000000000 + 475 1 14.530500000000 10.253452105673 17.993500000000 + 476 1 14.530500000000 8.389188086460 15.423000000000 + 477 1 16.145000000000 7.457056076853 17.993500000000 + 478 1 16.145000000000 5.592792057640 15.423000000000 + 479 1 17.759500000000 10.253452105673 17.993500000000 + 480 1 17.759500000000 8.389188086460 15.423000000000 + 481 1 0.000000000000 13.049848134493 17.993500000000 + 482 1 0.000000000000 11.185584115280 15.423000000000 + 483 1 1.614500000000 15.846244163313 17.993500000000 + 484 1 1.614500000000 13.981980144100 15.423000000000 + 485 1 3.229000000000 13.049848134493 17.993500000000 + 486 1 3.229000000000 11.185584115280 15.423000000000 + 487 1 4.843500000000 15.846244163313 17.993500000000 + 488 1 4.843500000000 13.981980144100 15.423000000000 + 489 1 6.458000000000 13.049848134493 17.993500000000 + 490 1 6.458000000000 11.185584115280 15.423000000000 + 491 1 8.072500000000 15.846244163313 17.993500000000 + 492 1 8.072500000000 13.981980144100 15.423000000000 + 493 1 9.687000000000 13.049848134493 17.993500000000 + 494 1 9.687000000000 11.185584115280 15.423000000000 + 495 1 11.301500000000 15.846244163313 17.993500000000 + 496 1 11.301500000000 13.981980144100 15.423000000000 + 497 1 12.916000000000 13.049848134493 17.993500000000 + 498 1 12.916000000000 11.185584115280 15.423000000000 + 499 1 14.530500000000 15.846244163313 17.993500000000 + 500 1 14.530500000000 13.981980144100 15.423000000000 + 501 1 16.145000000000 13.049848134493 17.993500000000 + 502 1 16.145000000000 11.185584115280 15.423000000000 + 503 1 17.759500000000 15.846244163313 17.993500000000 + 504 1 17.759500000000 13.981980144100 15.423000000000 + 505 1 0.000000000000 18.642640192133 17.993500000000 + 506 1 0.000000000000 16.778376172920 15.423000000000 + 507 1 1.614500000000 21.439036220953 17.993500000000 + 508 1 1.614500000000 19.574772201740 15.423000000000 + 509 1 3.229000000000 18.642640192133 17.993500000000 + 510 1 3.229000000000 16.778376172920 15.423000000000 + 511 1 4.843500000000 21.439036220953 17.993500000000 + 512 1 4.843500000000 19.574772201740 15.423000000000 + 513 1 6.458000000000 18.642640192133 17.993500000000 + 514 1 6.458000000000 16.778376172920 15.423000000000 + 515 1 8.072500000000 21.439036220953 17.993500000000 + 516 1 8.072500000000 19.574772201740 15.423000000000 + 517 1 9.687000000000 18.642640192133 17.993500000000 + 518 1 9.687000000000 16.778376172920 15.423000000000 + 519 1 11.301500000000 21.439036220953 17.993500000000 + 520 1 11.301500000000 19.574772201740 15.423000000000 + 521 1 12.916000000000 18.642640192133 17.993500000000 + 522 1 12.916000000000 16.778376172920 15.423000000000 + 523 1 14.530500000000 21.439036220953 17.993500000000 + 524 1 14.530500000000 19.574772201740 15.423000000000 + 525 1 16.145000000000 18.642640192133 17.993500000000 + 526 1 16.145000000000 16.778376172920 15.423000000000 + 527 1 17.759500000000 21.439036220953 17.993500000000 + 528 1 17.759500000000 19.574772201740 15.423000000000 + 529 1 0.000000000000 24.235432249773 17.993500000000 + 530 1 0.000000000000 22.371168230560 15.423000000000 + 531 1 1.614500000000 27.031828278593 17.993500000000 + 532 1 1.614500000000 25.167564259380 15.423000000000 + 533 1 3.229000000000 24.235432249773 17.993500000000 + 534 1 3.229000000000 22.371168230560 15.423000000000 + 535 1 4.843500000000 27.031828278593 17.993500000000 + 536 1 4.843500000000 25.167564259380 15.423000000000 + 537 1 6.458000000000 24.235432249773 17.993500000000 + 538 1 6.458000000000 22.371168230560 15.423000000000 + 539 1 8.072500000000 27.031828278593 17.993500000000 + 540 1 8.072500000000 25.167564259380 15.423000000000 + 541 1 9.687000000000 24.235432249773 17.993500000000 + 542 1 9.687000000000 22.371168230560 15.423000000000 + 543 1 11.301500000000 27.031828278593 17.993500000000 + 544 1 11.301500000000 25.167564259380 15.423000000000 + 545 1 12.916000000000 24.235432249773 17.993500000000 + 546 1 12.916000000000 22.371168230560 15.423000000000 + 547 1 14.530500000000 27.031828278593 17.993500000000 + 548 1 14.530500000000 25.167564259380 15.423000000000 + 549 1 16.145000000000 24.235432249773 17.993500000000 + 550 1 16.145000000000 22.371168230560 15.423000000000 + 551 1 17.759500000000 27.031828278593 17.993500000000 + 552 1 17.759500000000 25.167564259380 15.423000000000 + 553 1 0.000000000000 29.828224307413 17.993500000000 + 554 1 0.000000000000 27.963960288200 15.423000000000 + 555 1 1.614500000000 32.624620336233 17.993500000000 + 556 1 1.614500000000 30.760356317019 15.423000000000 + 557 1 3.229000000000 29.828224307413 17.993500000000 + 558 1 3.229000000000 27.963960288200 15.423000000000 + 559 1 4.843500000000 32.624620336233 17.993500000000 + 560 1 4.843500000000 30.760356317019 15.423000000000 + 561 1 6.458000000000 29.828224307413 17.993500000000 + 562 1 6.458000000000 27.963960288200 15.423000000000 + 563 1 8.072500000000 32.624620336233 17.993500000000 + 564 1 8.072500000000 30.760356317019 15.423000000000 + 565 1 9.687000000000 29.828224307413 17.993500000000 + 566 1 9.687000000000 27.963960288200 15.423000000000 + 567 1 11.301500000000 32.624620336233 17.993500000000 + 568 1 11.301500000000 30.760356317019 15.423000000000 + 569 1 12.916000000000 29.828224307413 17.993500000000 + 570 1 12.916000000000 27.963960288200 15.423000000000 + 571 1 14.530500000000 32.624620336233 17.993500000000 + 572 1 14.530500000000 30.760356317019 15.423000000000 + 573 1 16.145000000000 29.828224307413 17.993500000000 + 574 1 16.145000000000 27.963960288200 15.423000000000 + 575 1 17.759500000000 32.624620336233 17.993500000000 + 576 1 17.759500000000 30.760356317019 15.423000000000 + 577 1 0.000000000000 1.864264019213 23.134500000000 + 578 1 0.000000000000 0.000000000000 20.564000000000 + 579 1 1.614500000000 4.660660048033 23.134500000000 + 580 1 1.614500000000 2.796396028820 20.564000000000 + 581 1 3.229000000000 1.864264019213 23.134500000000 + 582 1 3.229000000000 0.000000000000 20.564000000000 + 583 1 4.843500000000 4.660660048033 23.134500000000 + 584 1 4.843500000000 2.796396028820 20.564000000000 + 585 1 6.458000000000 1.864264019213 23.134500000000 + 586 1 6.458000000000 0.000000000000 20.564000000000 + 587 1 8.072500000000 4.660660048033 23.134500000000 + 588 1 8.072500000000 2.796396028820 20.564000000000 + 589 1 9.687000000000 1.864264019213 23.134500000000 + 590 1 9.687000000000 0.000000000000 20.564000000000 + 591 1 11.301500000000 4.660660048033 23.134500000000 + 592 1 11.301500000000 2.796396028820 20.564000000000 + 593 1 12.916000000000 1.864264019213 23.134500000000 + 594 1 12.916000000000 0.000000000000 20.564000000000 + 595 1 14.530500000000 4.660660048033 23.134500000000 + 596 1 14.530500000000 2.796396028820 20.564000000000 + 597 1 16.145000000000 1.864264019213 23.134500000000 + 598 1 16.145000000000 0.000000000000 20.564000000000 + 599 1 17.759500000000 4.660660048033 23.134500000000 + 600 1 17.759500000000 2.796396028820 20.564000000000 + 601 1 0.000000000000 7.457056076853 23.134500000000 + 602 1 0.000000000000 5.592792057640 20.564000000000 + 603 1 1.614500000000 10.253452105673 23.134500000000 + 604 1 1.614500000000 8.389188086460 20.564000000000 + 605 1 3.229000000000 7.457056076853 23.134500000000 + 606 1 3.229000000000 5.592792057640 20.564000000000 + 607 1 4.843500000000 10.253452105673 23.134500000000 + 608 1 4.843500000000 8.389188086460 20.564000000000 + 609 1 6.458000000000 7.457056076853 23.134500000000 + 610 1 6.458000000000 5.592792057640 20.564000000000 + 611 1 8.072500000000 10.253452105673 23.134500000000 + 612 1 8.072500000000 8.389188086460 20.564000000000 + 613 1 9.687000000000 7.457056076853 23.134500000000 + 614 1 9.687000000000 5.592792057640 20.564000000000 + 615 1 11.301500000000 10.253452105673 23.134500000000 + 616 1 11.301500000000 8.389188086460 20.564000000000 + 617 1 12.916000000000 7.457056076853 23.134500000000 + 618 1 12.916000000000 5.592792057640 20.564000000000 + 619 1 14.530500000000 10.253452105673 23.134500000000 + 620 1 14.530500000000 8.389188086460 20.564000000000 + 621 1 16.145000000000 7.457056076853 23.134500000000 + 622 1 16.145000000000 5.592792057640 20.564000000000 + 623 1 17.759500000000 10.253452105673 23.134500000000 + 624 1 17.759500000000 8.389188086460 20.564000000000 + 625 1 0.000000000000 13.049848134493 23.134500000000 + 626 1 0.000000000000 11.185584115280 20.564000000000 + 627 1 1.614500000000 15.846244163313 23.134500000000 + 628 1 1.614500000000 13.981980144100 20.564000000000 + 629 1 3.229000000000 13.049848134493 23.134500000000 + 630 1 3.229000000000 11.185584115280 20.564000000000 + 631 1 4.843500000000 15.846244163313 23.134500000000 + 632 1 4.843500000000 13.981980144100 20.564000000000 + 633 1 6.458000000000 13.049848134493 23.134500000000 + 634 1 6.458000000000 11.185584115280 20.564000000000 + 635 1 8.072500000000 15.846244163313 23.134500000000 + 636 1 8.072500000000 13.981980144100 20.564000000000 + 637 1 9.687000000000 13.049848134493 23.134500000000 + 638 1 9.687000000000 11.185584115280 20.564000000000 + 639 1 11.301500000000 15.846244163313 23.134500000000 + 640 1 11.301500000000 13.981980144100 20.564000000000 + 641 1 12.916000000000 13.049848134493 23.134500000000 + 642 1 12.916000000000 11.185584115280 20.564000000000 + 643 1 14.530500000000 15.846244163313 23.134500000000 + 644 1 14.530500000000 13.981980144100 20.564000000000 + 645 1 16.145000000000 13.049848134493 23.134500000000 + 646 1 16.145000000000 11.185584115280 20.564000000000 + 647 1 17.759500000000 15.846244163313 23.134500000000 + 648 1 17.759500000000 13.981980144100 20.564000000000 + 649 1 0.000000000000 18.642640192133 23.134500000000 + 650 1 0.000000000000 16.778376172920 20.564000000000 + 651 1 1.614500000000 21.439036220953 23.134500000000 + 652 1 1.614500000000 19.574772201740 20.564000000000 + 653 1 3.229000000000 18.642640192133 23.134500000000 + 654 1 3.229000000000 16.778376172920 20.564000000000 + 655 1 4.843500000000 21.439036220953 23.134500000000 + 656 1 4.843500000000 19.574772201740 20.564000000000 + 657 1 6.458000000000 18.642640192133 23.134500000000 + 658 1 6.458000000000 16.778376172920 20.564000000000 + 659 1 8.072500000000 21.439036220953 23.134500000000 + 660 1 8.072500000000 19.574772201740 20.564000000000 + 661 1 9.687000000000 18.642640192133 23.134500000000 + 662 1 9.687000000000 16.778376172920 20.564000000000 + 663 1 11.301500000000 21.439036220953 23.134500000000 + 664 1 11.301500000000 19.574772201740 20.564000000000 + 665 1 12.916000000000 18.642640192133 23.134500000000 + 666 1 12.916000000000 16.778376172920 20.564000000000 + 667 1 14.530500000000 21.439036220953 23.134500000000 + 668 1 14.530500000000 19.574772201740 20.564000000000 + 669 1 16.145000000000 18.642640192133 23.134500000000 + 670 1 16.145000000000 16.778376172920 20.564000000000 + 671 1 17.759500000000 21.439036220953 23.134500000000 + 672 1 17.759500000000 19.574772201740 20.564000000000 + 673 1 0.000000000000 24.235432249773 23.134500000000 + 674 1 0.000000000000 22.371168230560 20.564000000000 + 675 1 1.614500000000 27.031828278593 23.134500000000 + 676 1 1.614500000000 25.167564259380 20.564000000000 + 677 1 3.229000000000 24.235432249773 23.134500000000 + 678 1 3.229000000000 22.371168230560 20.564000000000 + 679 1 4.843500000000 27.031828278593 23.134500000000 + 680 1 4.843500000000 25.167564259380 20.564000000000 + 681 1 6.458000000000 24.235432249773 23.134500000000 + 682 1 6.458000000000 22.371168230560 20.564000000000 + 683 1 8.072500000000 27.031828278593 23.134500000000 + 684 1 8.072500000000 25.167564259380 20.564000000000 + 685 1 9.687000000000 24.235432249773 23.134500000000 + 686 1 9.687000000000 22.371168230560 20.564000000000 + 687 1 11.301500000000 27.031828278593 23.134500000000 + 688 1 11.301500000000 25.167564259380 20.564000000000 + 689 1 12.916000000000 24.235432249773 23.134500000000 + 690 1 12.916000000000 22.371168230560 20.564000000000 + 691 1 14.530500000000 27.031828278593 23.134500000000 + 692 1 14.530500000000 25.167564259380 20.564000000000 + 693 1 16.145000000000 24.235432249773 23.134500000000 + 694 1 16.145000000000 22.371168230560 20.564000000000 + 695 1 17.759500000000 27.031828278593 23.134500000000 + 696 1 17.759500000000 25.167564259380 20.564000000000 + 697 1 0.000000000000 29.828224307413 23.134500000000 + 698 1 0.000000000000 27.963960288200 20.564000000000 + 699 1 1.614500000000 32.624620336233 23.134500000000 + 700 1 1.614500000000 30.760356317019 20.564000000000 + 701 1 3.229000000000 29.828224307413 23.134500000000 + 702 1 3.229000000000 27.963960288200 20.564000000000 + 703 1 4.843500000000 32.624620336233 23.134500000000 + 704 1 4.843500000000 30.760356317019 20.564000000000 + 705 1 6.458000000000 29.828224307413 23.134500000000 + 706 1 6.458000000000 27.963960288200 20.564000000000 + 707 1 8.072500000000 32.624620336233 23.134500000000 + 708 1 8.072500000000 30.760356317019 20.564000000000 + 709 1 9.687000000000 29.828224307413 23.134500000000 + 710 1 9.687000000000 27.963960288200 20.564000000000 + 711 1 11.301500000000 32.624620336233 23.134500000000 + 712 1 11.301500000000 30.760356317019 20.564000000000 + 713 1 12.916000000000 29.828224307413 23.134500000000 + 714 1 12.916000000000 27.963960288200 20.564000000000 + 715 1 14.530500000000 32.624620336233 23.134500000000 + 716 1 14.530500000000 30.760356317019 20.564000000000 + 717 1 16.145000000000 29.828224307413 23.134500000000 + 718 1 16.145000000000 27.963960288200 20.564000000000 + 719 1 17.759500000000 32.624620336233 23.134500000000 + 720 1 17.759500000000 30.760356317019 20.564000000000 + 721 1 0.000000000000 1.864264019213 28.275500000000 + 722 1 0.000000000000 0.000000000000 25.705000000000 + 723 1 1.614500000000 4.660660048033 28.275500000000 + 724 1 1.614500000000 2.796396028820 25.705000000000 + 725 1 3.229000000000 1.864264019213 28.275500000000 + 726 1 3.229000000000 0.000000000000 25.705000000000 + 727 1 4.843500000000 4.660660048033 28.275500000000 + 728 1 4.843500000000 2.796396028820 25.705000000000 + 729 1 6.458000000000 1.864264019213 28.275500000000 + 730 1 6.458000000000 0.000000000000 25.705000000000 + 731 1 8.072500000000 4.660660048033 28.275500000000 + 732 1 8.072500000000 2.796396028820 25.705000000000 + 733 1 9.687000000000 1.864264019213 28.275500000000 + 734 1 9.687000000000 0.000000000000 25.705000000000 + 735 1 11.301500000000 4.660660048033 28.275500000000 + 736 1 11.301500000000 2.796396028820 25.705000000000 + 737 1 12.916000000000 1.864264019213 28.275500000000 + 738 1 12.916000000000 0.000000000000 25.705000000000 + 739 1 14.530500000000 4.660660048033 28.275500000000 + 740 1 14.530500000000 2.796396028820 25.705000000000 + 741 1 16.145000000000 1.864264019213 28.275500000000 + 742 1 16.145000000000 0.000000000000 25.705000000000 + 743 1 17.759500000000 4.660660048033 28.275500000000 + 744 1 17.759500000000 2.796396028820 25.705000000000 + 745 1 0.000000000000 7.457056076853 28.275500000000 + 746 1 0.000000000000 5.592792057640 25.705000000000 + 747 1 1.614500000000 10.253452105673 28.275500000000 + 748 1 1.614500000000 8.389188086460 25.705000000000 + 749 1 3.229000000000 7.457056076853 28.275500000000 + 750 1 3.229000000000 5.592792057640 25.705000000000 + 751 1 4.843500000000 10.253452105673 28.275500000000 + 752 1 4.843500000000 8.389188086460 25.705000000000 + 753 1 6.458000000000 7.457056076853 28.275500000000 + 754 1 6.458000000000 5.592792057640 25.705000000000 + 755 1 8.072500000000 10.253452105673 28.275500000000 + 756 1 8.072500000000 8.389188086460 25.705000000000 + 757 1 9.687000000000 7.457056076853 28.275500000000 + 758 1 9.687000000000 5.592792057640 25.705000000000 + 759 1 11.301500000000 10.253452105673 28.275500000000 + 760 1 11.301500000000 8.389188086460 25.705000000000 + 761 1 12.916000000000 7.457056076853 28.275500000000 + 762 1 12.916000000000 5.592792057640 25.705000000000 + 763 1 14.530500000000 10.253452105673 28.275500000000 + 764 1 14.530500000000 8.389188086460 25.705000000000 + 765 1 16.145000000000 7.457056076853 28.275500000000 + 766 1 16.145000000000 5.592792057640 25.705000000000 + 767 1 17.759500000000 10.253452105673 28.275500000000 + 768 1 17.759500000000 8.389188086460 25.705000000000 + 769 1 0.000000000000 13.049848134493 28.275500000000 + 770 1 0.000000000000 11.185584115280 25.705000000000 + 771 1 1.614500000000 15.846244163313 28.275500000000 + 772 1 1.614500000000 13.981980144100 25.705000000000 + 773 1 3.229000000000 13.049848134493 28.275500000000 + 774 1 3.229000000000 11.185584115280 25.705000000000 + 775 1 4.843500000000 15.846244163313 28.275500000000 + 776 1 4.843500000000 13.981980144100 25.705000000000 + 777 1 6.458000000000 13.049848134493 28.275500000000 + 778 1 6.458000000000 11.185584115280 25.705000000000 + 779 1 8.072500000000 15.846244163313 28.275500000000 + 780 1 8.072500000000 13.981980144100 25.705000000000 + 781 1 9.687000000000 13.049848134493 28.275500000000 + 782 1 9.687000000000 11.185584115280 25.705000000000 + 783 1 11.301500000000 15.846244163313 28.275500000000 + 784 1 11.301500000000 13.981980144100 25.705000000000 + 785 1 12.916000000000 13.049848134493 28.275500000000 + 786 1 12.916000000000 11.185584115280 25.705000000000 + 787 1 14.530500000000 15.846244163313 28.275500000000 + 788 1 14.530500000000 13.981980144100 25.705000000000 + 789 1 16.145000000000 13.049848134493 28.275500000000 + 790 1 16.145000000000 11.185584115280 25.705000000000 + 791 1 17.759500000000 15.846244163313 28.275500000000 + 792 1 17.759500000000 13.981980144100 25.705000000000 + 793 1 0.000000000000 18.642640192133 28.275500000000 + 794 1 0.000000000000 16.778376172920 25.705000000000 + 795 1 1.614500000000 21.439036220953 28.275500000000 + 796 1 1.614500000000 19.574772201740 25.705000000000 + 797 1 3.229000000000 18.642640192133 28.275500000000 + 798 1 3.229000000000 16.778376172920 25.705000000000 + 799 1 4.843500000000 21.439036220953 28.275500000000 + 800 1 4.843500000000 19.574772201740 25.705000000000 + 801 1 6.458000000000 18.642640192133 28.275500000000 + 802 1 6.458000000000 16.778376172920 25.705000000000 + 803 1 8.072500000000 21.439036220953 28.275500000000 + 804 1 8.072500000000 19.574772201740 25.705000000000 + 805 1 9.687000000000 18.642640192133 28.275500000000 + 806 1 9.687000000000 16.778376172920 25.705000000000 + 807 1 11.301500000000 21.439036220953 28.275500000000 + 808 1 11.301500000000 19.574772201740 25.705000000000 + 809 1 12.916000000000 18.642640192133 28.275500000000 + 810 1 12.916000000000 16.778376172920 25.705000000000 + 811 1 14.530500000000 21.439036220953 28.275500000000 + 812 1 14.530500000000 19.574772201740 25.705000000000 + 813 1 16.145000000000 18.642640192133 28.275500000000 + 814 1 16.145000000000 16.778376172920 25.705000000000 + 815 1 17.759500000000 21.439036220953 28.275500000000 + 816 1 17.759500000000 19.574772201740 25.705000000000 + 817 1 0.000000000000 24.235432249773 28.275500000000 + 818 1 0.000000000000 22.371168230560 25.705000000000 + 819 1 1.614500000000 27.031828278593 28.275500000000 + 820 1 1.614500000000 25.167564259380 25.705000000000 + 821 1 3.229000000000 24.235432249773 28.275500000000 + 822 1 3.229000000000 22.371168230560 25.705000000000 + 823 1 4.843500000000 27.031828278593 28.275500000000 + 824 1 4.843500000000 25.167564259380 25.705000000000 + 825 1 6.458000000000 24.235432249773 28.275500000000 + 826 1 6.458000000000 22.371168230560 25.705000000000 + 827 1 8.072500000000 27.031828278593 28.275500000000 + 828 1 8.072500000000 25.167564259380 25.705000000000 + 829 1 9.687000000000 24.235432249773 28.275500000000 + 830 1 9.687000000000 22.371168230560 25.705000000000 + 831 1 11.301500000000 27.031828278593 28.275500000000 + 832 1 11.301500000000 25.167564259380 25.705000000000 + 833 1 12.916000000000 24.235432249773 28.275500000000 + 834 1 12.916000000000 22.371168230560 25.705000000000 + 835 1 14.530500000000 27.031828278593 28.275500000000 + 836 1 14.530500000000 25.167564259380 25.705000000000 + 837 1 16.145000000000 24.235432249773 28.275500000000 + 838 1 16.145000000000 22.371168230560 25.705000000000 + 839 1 17.759500000000 27.031828278593 28.275500000000 + 840 1 17.759500000000 25.167564259380 25.705000000000 + 841 1 0.000000000000 29.828224307413 28.275500000000 + 842 1 0.000000000000 27.963960288200 25.705000000000 + 843 1 1.614500000000 32.624620336233 28.275500000000 + 844 1 1.614500000000 30.760356317019 25.705000000000 + 845 1 3.229000000000 29.828224307413 28.275500000000 + 846 1 3.229000000000 27.963960288200 25.705000000000 + 847 1 4.843500000000 32.624620336233 28.275500000000 + 848 1 4.843500000000 30.760356317019 25.705000000000 + 849 1 6.458000000000 29.828224307413 28.275500000000 + 850 1 6.458000000000 27.963960288200 25.705000000000 + 851 1 8.072500000000 32.624620336233 28.275500000000 + 852 1 8.072500000000 30.760356317019 25.705000000000 + 853 1 9.687000000000 29.828224307413 28.275500000000 + 854 1 9.687000000000 27.963960288200 25.705000000000 + 855 1 11.301500000000 32.624620336233 28.275500000000 + 856 1 11.301500000000 30.760356317019 25.705000000000 + 857 1 12.916000000000 29.828224307413 28.275500000000 + 858 1 12.916000000000 27.963960288200 25.705000000000 + 859 1 14.530500000000 32.624620336233 28.275500000000 + 860 1 14.530500000000 30.760356317019 25.705000000000 + 861 1 16.145000000000 29.828224307413 28.275500000000 + 862 1 16.145000000000 27.963960288200 25.705000000000 + 863 1 17.759500000000 32.624620336233 28.275500000000 + 864 1 17.759500000000 30.760356317019 25.705000000000 diff --git a/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt b/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt new file mode 100644 index 00000000000..c325e0572fa --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt @@ -0,0 +1,61 @@ +variable trequis equal 750.0 +variable prequis_low equal 0.0 +variable prequis_high equal 25.0e4 +variable equilSteps equal 2000 +variable runSteps equal 20000 +variable freqdump equal 200 +variable pstime equal step*dt +variable sxx equal 1.e-4*pxx +variable syy equal 1.e-4*pyy +variable szz equal 1.e-4*pzz +variable sxy equal 1.e-4*pxy +variable sxz equal 1.e-4*pxz +variable syz equal 1.e-4*pyz +variable TK equal temp +variable PE equal pe +variable KE equal ke +variable V equal vol + +dimension 3 +boundary p p p +units metal +atom_style atomic +read_data dir.inputs/Zr_cell.lmp +replicate 1 10 10 + +#neighbor 0.0 bin +# neigh_modify delay 0 every 1 check no + +change_box all triclinic + +include dir.inputs/Zr.potential + +timestep 2.0e-3 + +thermo 1000 +thermo_style custom step pe ke temp pxx pyy pzz pxy pyz pxz + +fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat + +velocity all create ${trequis} 42345 dist gaussian + +# 1st step : compute the bispectrum on 24 nearest neighbors +compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25 + +# 2nd step : perform dimension reduction + logistic regression +compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] + +dump d1 all custom ${freqdump} dir.dumps/slcsa_demo.*.dump id x y z c_slcsa[*] + +#fix 1 all nvt temp ${trequis} ${trequis} 0.100 +fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 + +run ${equilSteps} + +unfix 1 +#fix 1 all nvt temp ${trequis} ${trequis} 0.100 +fix 1 all npt temp ${trequis} ${trequis} 0.100 aniso ${prequis_high} ${prequis_high} 1.0 + +run ${runSteps} + +unfix 1 \ No newline at end of file diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat b/examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat new file mode 100644 index 00000000000..68a78f8c405 --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat @@ -0,0 +1,55 @@ +0.65552758 -0.08218108 -0.23122826 +2.03065849 0.46494117 0.87297750 +-15.80180341 1.50484584 0.31669351 +0.06060238 -0.47589059 -0.41017499 +4.23928030 -2.27982958 4.87969884 +-1.09746642 -1.28258171 2.03459312 +5.48480653 -0.66345012 3.18471732 +-1.57479966 0.17478998 -0.17156696 +3.85779786 1.59890578 1.78936017 +-1.14469715 -2.15823271 2.14353632 +5.97160056 0.11573423 0.97653410 +4.44645807 -0.15365582 -0.08773622 +3.09452721 0.32439223 1.19779688 +-1.22585061 -0.32185613 0.03949731 +0.44816997 -1.11182687 0.26222208 +0.19532128 0.30397832 -0.57154050 +5.52432571 -0.76685448 0.32647935 +6.37957282 -0.96148815 1.53439397 +2.73798648 -0.69516327 1.73607004 +0.94755899 0.41154702 -0.14095753 +1.50733544 1.22254481 0.26284605 +0.98313431 -1.24195379 0.59009611 +-0.76518592 0.11605047 -0.00304658 +-0.68335076 0.48935564 -0.53834507 +1.86534260 -0.49032664 -0.06298849 +1.52931829 0.64853878 -0.56286214 +2.64217062 -1.37348638 0.22526281 +0.18023516 0.03439864 0.77624538 +2.02366558 0.35432524 0.76748492 +0.80982907 0.31806067 0.08774175 +1.57388194 -1.07822533 0.15886237 +0.41345498 0.38916338 -0.29917607 +-0.24819893 0.13763422 0.45471609 +-2.27933523 -0.01771636 -0.20567577 +1.52275665 0.35306670 0.21266257 +0.28547991 1.05230832 1.16641438 +0.97147437 -0.63973458 -0.37994470 +0.48124764 0.03483500 -0.01982056 +0.74502588 0.14367872 -0.24443596 +0.48813660 0.15632903 -0.88469078 +0.04886450 0.00882595 -0.47920447 +0.03103900 -0.15091487 -0.41193682 +-0.10106190 0.14911569 0.10727243 +-0.15552036 -0.49286545 -0.04644942 +0.27304084 0.35638954 1.13331445 +0.57788886 -0.50269555 0.09110942 +0.36780762 -0.08710371 -0.28478716 +1.01678932 -0.42099561 -0.07317253 +0.06561086 -0.27253002 -0.05366136 +0.22266923 0.19999531 -0.30017173 +-0.18666193 0.02576273 0.27752106 +-0.76718071 0.61299522 0.58296511 +0.60978530 0.04962900 -0.32796430 +-0.11572649 0.03034386 -0.83005753 +0.12675714 0.00004617 -0.37078106 diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat b/examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat new file mode 100644 index 00000000000..d8edd92837a --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat @@ -0,0 +1 @@ +-6.32012657 5.62127377 1.19871662 -0.49986382 \ No newline at end of file diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat b/examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat new file mode 100644 index 00000000000..e938d59d8bb --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat @@ -0,0 +1,4 @@ +-0.42810669 1.25467216 0.93144383 +0.09624929 -0.80420088 0.48996738 +-0.09865949 0.39991755 -0.69233982 +0.43051689 -0.85038883 -0.72907140 diff --git a/examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat b/examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat new file mode 100644 index 00000000000..299ef3c72f8 --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat @@ -0,0 +1,20 @@ +5.0540 +-23.8329 4.6638 3.9805 +1.1377 0.1077 -0.0171 +0.1077 0.8846 -0.2577 +-0.0171 -0.2577 0.6783 +5.2340 +-21.2853 -6.1583 1.7948 +1.7124 0.0341 0.1966 +0.0341 0.6453 0.2880 +0.1966 0.2880 1.8991 +5.0360 +-23.1593 1.3059 -5.7549 +0.7496 -0.0806 -0.1101 +-0.0806 1.1178 0.1667 +-0.1101 0.1667 0.6711 +7.9940 +68.1971 0.1604 -0.0067 +0.9663 -0.1846 0.6622 +-0.1846 8.2371 0.9841 +0.6622 0.9841 5.9601 diff --git a/examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat b/examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat new file mode 100644 index 00000000000..ae50ec809fc --- /dev/null +++ b/examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat @@ -0,0 +1,55 @@ +137.71497059 +0.36342014 +-2.78949838 +1.75623090 +-4.86893969 +-2.31918628 +-3.01873942 +59.70217846 +-8.31239311 +-1.05113276 +-4.08948813 +11.70560234 +17.48710737 +42.43158755 +-6.27727395 +-1.46675636 +-3.40739849 +1.58674150 +13.02515977 +5.67885926 +6.45692906 +4.69273492 +21.59764216 +-7.68805780 +-4.37357550 +-5.79764719 +0.53149261 +-0.00723980 +-2.47811316 +-0.34939237 +-4.59425510 +-4.44056296 +107.64051985 +-9.32851480 +-6.62214151 +-5.69590145 +22.80361437 +9.47641390 +2.25214024 +-0.19403065 +3.05386205 +12.91756406 +135.15381317 +-9.93292065 +-3.73311129 +10.67039500 +9.60945072 +-0.03566872 +21.97944941 +6.70251772 +74.60284853 +-5.99090678 +0.21877973 +-1.19909174 +1.37424965 From 99f0a7aa8ec8c6bab20009dcda221019b2bc730a Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Mon, 27 Nov 2023 22:38:35 +0100 Subject: [PATCH 127/300] upd version string in ML-PACE package --- cmake/Modules/Packages/ML-PACE.cmake | 4 ++-- lib/pace/Install.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index 1d760128037..248b8eea761 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -1,6 +1,6 @@ -set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.fix.tar.gz" CACHE STRING "URL for PACE evaluator library sources") -set(PACELIB_MD5 "fda61c88a6c6a335d5fc10a86a5aa710" CACHE STRING "MD5 checksum of PACE evaluator library tarball") +set(PACELIB_MD5 "b45de9a633f42ed65422567e3ce56f9f" CACHE STRING "MD5 checksum of PACE evaluator library tarball") mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_MD5) GetFallbackURL(PACELIB_URL PACELIB_FALLBACK) diff --git a/lib/pace/Install.py b/lib/pace/Install.py index 0d5294e00b8..fcd9497937d 100644 --- a/lib/pace/Install.py +++ b/lib/pace/Install.py @@ -18,11 +18,11 @@ # settings thisdir = fullpath('.') -version ='v.2023.11.25' +version ='v.2023.11.25.fix' # known checksums for different PACE versions. used to validate the download. checksums = { \ - 'v.2023.11.25': 'fda61c88a6c6a335d5fc10a86a5aa710' + 'v.2023.11.25.fix': 'b45de9a633f42ed65422567e3ce56f9f' } parser = ArgumentParser(prog='Install.py', description="LAMMPS library build wrapper script") From 631dcc36dee037c4216f0854599e7dd7424c769f Mon Sep 17 00:00:00 2001 From: Yury Lysogorskiy Date: Mon, 27 Nov 2023 23:51:51 +0100 Subject: [PATCH 128/300] BUGFIX: TagPairPACEComputeNeigh - explicitly check if atom has neighbours (ncount>0), only them run parallel_reduce, otherwise set d_d_min and d_jj_min to default values --- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 49 ++++++++++--------- src/KOKKOS/pair_pace_kokkos.cpp | 45 +++++++++-------- 2 files changed, 52 insertions(+), 42 deletions(-) diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index d47c8a432af..9d47a4a278d 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -901,28 +901,33 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig if(is_zbl) { //adapted from https://www.osti.gov/servlets/purl/1429450 - using minloc_value_type=Kokkos::MinLoc::value_type; - minloc_value_type djjmin; - djjmin.val=1e20; - djjmin.loc=-1; - Kokkos::MinLoc reducer_scalar(djjmin); - // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) - Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), - [&](const int offset, minloc_value_type &min_d_dist) { - int j = d_nearest(ii,offset); - j &= NEIGHMASK; - const int jtype = type(j); - auto r = d_rnorms(ii,offset); - const int mu_j = d_map(type(j)); - const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); - if (d < min_d_dist.val) { - min_d_dist.val = d; - min_d_dist.loc = offset; - } - - }, reducer_scalar); - d_d_min(ii) = djjmin.val; - d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) + if(ncount>0) { + using minloc_value_type=Kokkos::MinLoc::value_type; + minloc_value_type djjmin; + djjmin.val=1e20; + djjmin.loc=-1; + Kokkos::MinLoc reducer_scalar(djjmin); + // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), + [&](const int offset, minloc_value_type &min_d_dist) { + int j = d_nearest(ii,offset); + j &= NEIGHMASK; + const int jtype = type(j); + auto r = d_rnorms(ii,offset); + const int mu_j = d_map(type(j)); + const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); + if (d < min_d_dist.val) { + min_d_dist.val = d; + min_d_dist.loc = offset; + } + + }, reducer_scalar); + d_d_min(ii) = djjmin.val; + d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) + } else { + d_d_min(ii) = 1e20; + d_jj_min(ii) = -1; + } } } diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 84431a5908c..4e297ec7edd 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -844,28 +844,33 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen if(is_zbl) { //adapted from https://www.osti.gov/servlets/purl/1429450 - using minloc_value_type=Kokkos::MinLoc::value_type; - minloc_value_type djjmin; - djjmin.val=1e20; - djjmin.loc=-1; - Kokkos::MinLoc reducer_scalar(djjmin); - // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) - Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), - [&](const int offset, minloc_value_type &min_d_dist) { - int j = d_nearest(ii,offset); - j &= NEIGHMASK; - const int jtype = type(j); - auto r = d_rnorms(ii,offset); - const int mu_j = d_map(type(j)); - const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); - if (d < min_d_dist.val) { - min_d_dist.val = d; - min_d_dist.loc = offset; - } - - }, reducer_scalar); + if(ncount>0) { + using minloc_value_type=Kokkos::MinLoc::value_type; + minloc_value_type djjmin; + djjmin.val=1e20; + djjmin.loc=-1; + Kokkos::MinLoc reducer_scalar(djjmin); + // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), + [&](const int offset, minloc_value_type &min_d_dist) { + int j = d_nearest(ii,offset); + j &= NEIGHMASK; + const int jtype = type(j); + auto r = d_rnorms(ii,offset); + const int mu_j = d_map(type(j)); + const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); + if (d < min_d_dist.val) { + min_d_dist.val = d; + min_d_dist.loc = offset; + } + + }, reducer_scalar); d_d_min(ii) = djjmin.val; d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) + } else { + d_d_min(ii) = 1e20; + d_jj_min(ii) = -1; + } } } From a38fade4830b4651777c5042ed5c7d8e8168ff69 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Nov 2023 01:35:49 -0500 Subject: [PATCH 129/300] whitespace fixes --- doc/src/Bibliography.rst | 2 +- doc/src/compute_slcsa_atom.rst | 4 +- doc/src/compute_sna_atom.rst | 6 +- src/EXTRA-COMPUTE/compute_slcsa_atom.cpp | 192 ++++++------- src/EXTRA-COMPUTE/compute_slcsa_atom.h | 16 +- src/ML-SNAP/compute_sna_atom.cpp | 348 +++++++++++------------ src/ML-SNAP/compute_sna_atom.h | 4 +- 7 files changed, 286 insertions(+), 286 deletions(-) diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index 523e5dd6cad..94fd1a5bbf5 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -564,7 +564,7 @@ Bibliography **(Lafourcade et al, 2023)** Lafourcade, P. and Maillet, J.-B. and Denoual, C. and Duval, E. and Allera, A. and Goryaeva, A. M. and Marinica, M.-C., `Comp. Mat. Science, 230, 112534 (2023) `_ - + **(Lamoureux and Roux)** G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) diff --git a/doc/src/compute_slcsa_atom.rst b/doc/src/compute_slcsa_atom.rst index d0410bf3a66..9ebf3d15782 100644 --- a/doc/src/compute_slcsa_atom.rst +++ b/doc/src/compute_slcsa_atom.rst @@ -39,7 +39,7 @@ The first step of the SL-CSA tool consists in performing a dimension reduction o .. math:: \mathbf{x}^i = \mathbf{C}^T_\mathrm{LDA} \cdot (\mathbf{B}^i - \mu^\mathbf{B}_\mathrm{db}) - + where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is the reduction coefficients matrix of the LDA model read in file *lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}` is the average descriptor of the entire database. The latter is computed from the average descriptors of each crystal structure read from the file *mean_descriptors_file*. The new projected descriptor with dimension :math:`d=C-1` allows for a good separation of different crystal structures fingerprints in the latent space. @@ -49,7 +49,7 @@ Once the dimension reduction step is performed by means of LDA, the new descript .. math:: \mathbf{s}^i = \mathbf{b}_\mathrm{LR} + \mathbf{D}_\mathrm{LR} \cdot {\mathbf{x}^i}^T - + with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and :math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias vector and decision matrix of the LR model after training both read in files *lr_fil1* and *lr_file2* respectively. Finally, a probability vector :math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d \rightarrow \mathbb{R}^C` is defined as: diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index a813b1ba06e..2b12c96bf56 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -89,9 +89,9 @@ Syntax *nnn* value = number of considered nearest neighbors to compute the bispectrum over a target specific number of neighbors (only implemented for compute sna/atom) *wmode* value = weight function for finding optimal cutoff to match the target number of neighbors (required if nnn used, only implemented for compute sna/atom) *0* = heavyside weight function - *1* = hyperbolic tangent weight function + *1* = hyperbolic tangent weight function *delta* value = transition interval centered at cutoff distance for hyperbolic tangent weight function (ignored if wmode=0, required if wmode=1, only implemented for compute sna/atom) - + Examples """""""" @@ -598,7 +598,7 @@ Related commands """""""""""""""" :doc:`pair_style snap ` -:doc:`compute slcsa/atom ` +:doc:`compute slcsa/atom ` Default """"""" diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp index 46a0a69e448..70bc5442a16 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -55,7 +55,7 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : { // command : compute c1 all slcsa/atom jmax nclasses parameters_file.dat // example : compute c1 all slcsa/atom 8 4 slcsa_parameters.dat - // example : compute c1 all slcsa/atom 8 4 database_mean_descriptor.dat lda_scalings.dat lr_decision.dat lr_bias.dat mahalanobis_data.dat c_b1[*] + // example : compute c1 all slcsa/atom 8 4 database_mean_descriptor.dat lda_scalings.dat lr_decision.dat lr_bias.dat mahalanobis_data.dat c_b1[*] // Steps : // 1. bs=bs-xbar // 2. dred=coefs_lda*bs @@ -75,14 +75,14 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : // vector with 1 row x nclasses cols if (narg != 11) error->all(FLERR, "Illegal compute slcsa/atom command; wrong numer of arguments"); - + int twojmax = utils::inumeric(FLERR, arg[3], false, lmp); if (twojmax < 0) error->all(FLERR, "Illegal compute slcsa/atom command: twojmax should be a non-negative integer"); ncomps = compute_ncomps(twojmax); - + nclasses = utils::inumeric(FLERR, arg[4], false, lmp); if (nclasses < 2) error->all(FLERR, "Illegal compute slcsa/atom command: nclasses should be strictly greater than 1"); - + database_mean_descriptor_file = arg[5]; lda_scalings_file = arg[6]; lr_decision_file = arg[7]; @@ -94,22 +94,22 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : std::cout << " file lr decision : " << lr_decision_file << std::endl; std::cout << " file lr bias : " << lr_bias_file << std::endl; std::cout << " file maha stats : " << maha_file << std::endl; - + int expand = 0; char **earg; int nvalues = utils::expand_args(FLERR, narg - 10, &arg[10], 1, earg, lmp); if (earg != &arg[10]) expand = 1; arg = earg; - + ArgInfo argi(arg[0]); value_t val; val.id = ""; - val.val.c = nullptr; + val.val.c = nullptr; val.which = argi.get_type(); val.argindex = argi.get_index1(); val.id = argi.get_name(); if ((val.which == ArgInfo::FIX) || (val.which == ArgInfo::VARIABLE) || (val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1)) - error->all(FLERR, "Invalid compute slcsa/atom argument: {}", arg[0]); + error->all(FLERR, "Invalid compute slcsa/atom argument: {}", arg[0]); // if wildcard expansion occurred, free earg memory from exapnd_args() @@ -117,7 +117,7 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : for (int i = 0; i < nvalues; i++) delete[] earg[i]; memory->sfree(earg); } - + val.val.c = modify->get_compute_by_id(val.id); if (!val.val.c) error->all(FLERR,"Compute ID {} for fix slcsa/atom does not exist", val.id); if (val.val.c->peratom_flag == 0) @@ -136,58 +136,58 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : memory->create(maha_thresholds, nclasses, "slcsa/atom:maha_thresholds"); memory->create(icov_list, nclasses, nclasses-1, nclasses-1, "slcsa/atom:icov_list"); memory->create(mean_projected_descriptors, nclasses, nclasses-1, "slcsa/atom:mean_projected_descriptors"); - + if (comm->me == 0) { - + if (strcmp(database_mean_descriptor_file,"NULL") == 0) { error->one(FLERR,"Cannot open database mean descriptor file {}: ", database_mean_descriptor_file, utils::getsyserror()); } else { PotentialFileReader reader(lmp,database_mean_descriptor_file, "database mean descriptor file"); int nread=0; while (nreadone(FLERR,"Cannot open database linear discriminant analysis scalings file {}: ", lda_scalings_file, utils::getsyserror()); + error->one(FLERR,"Cannot open database linear discriminant analysis scalings file {}: ", lda_scalings_file, utils::getsyserror()); } else { PotentialFileReader reader(lmp,lda_scalings_file, "lda scalings file"); int nread=0; while (nreadone(FLERR,"Cannot open logistic regression decision file {}: ", lr_decision_file, utils::getsyserror()); + error->one(FLERR,"Cannot open logistic regression decision file {}: ", lr_decision_file, utils::getsyserror()); } else { PotentialFileReader reader(lmp,lr_decision_file, "lr decision file"); int nread=0; while (nreadone(FLERR,"Cannot open logistic regression bias file {}: ", lr_bias_file, utils::getsyserror()); + error->one(FLERR,"Cannot open logistic regression bias file {}: ", lr_bias_file, utils::getsyserror()); } else { PotentialFileReader reader(lmp,lr_bias_file, "lr bias file"); auto values = reader.next_values(nclasses); lr_bias[0]=values.next_double(); lr_bias[1]=values.next_double(); lr_bias[2]=values.next_double(); - lr_bias[3]=values.next_double(); + lr_bias[3]=values.next_double(); } if (strcmp(maha_file,"NULL") == 0) { @@ -198,32 +198,32 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : auto values = reader.next_values(nvalues); for(int i=0;idestroy(full_descriptor); memory->destroy(projected_descriptor); memory->destroy(scores); - memory->destroy(probas); + memory->destroy(probas); } /* ---------------------------------------------------------------------- */ @@ -279,7 +279,7 @@ void ComputeSLCSAAtom::compute_peratom() invoked_peratom = update->ntimestep; // grow per-atom if necessary - + if (atom->nmax > nmax) { memory->destroy(classification); nmax = atom->nmax; @@ -290,7 +290,7 @@ void ComputeSLCSAAtom::compute_peratom() int *mask = atom->mask; int nlocal = atom->nlocal; double **compute_array; - + if (descriptorval.which == ArgInfo::COMPUTE) { if (!(descriptorval.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { descriptorval.val.c->compute_peratom(); @@ -300,80 +300,80 @@ void ComputeSLCSAAtom::compute_peratom() } memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor"); - memory->create(projected_descriptor, nclasses-1, "slcsa/atom:reduced descriptor"); - memory->create(scores, nclasses, "slcsa/atom:probas"); - memory->create(probas, nclasses, "slcsa/atom:probas"); + memory->create(projected_descriptor, nclasses-1, "slcsa/atom:reduced descriptor"); + memory->create(scores, nclasses, "slcsa/atom:probas"); + memory->create(probas, nclasses, "slcsa/atom:probas"); memory->create(prodright, nclasses-1, "slcsa/atom:prodright"); - memory->create(dmaha, nclasses, "slcsa/atom:prodright"); - + memory->create(dmaha, nclasses, "slcsa/atom:prodright"); + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { for (int j = 0; j < ncomps; j++) { - full_descriptor[j] = compute_array[i][j]; - } + full_descriptor[j] = compute_array[i][j]; + } // Here comes the LDA + LR process // 1st step : Retrieve mean database descriptor for (int j = 0; j < ncomps; j++) { - full_descriptor[j] -= database_mean_descriptor[j]; + full_descriptor[j] -= database_mean_descriptor[j]; } // 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1 for (int j = 0; j < nclasses-1; j++) { - projected_descriptor[j] = 0.; - for (int k = 0; k < ncomps; k++) { - projected_descriptor[j] += full_descriptor[k]*lda_scalings[k][j]; - } - } - // 3rd step : Matrix multiplication + projected_descriptor[j] = 0.; + for (int k = 0; k < ncomps; k++) { + projected_descriptor[j] += full_descriptor[k]*lda_scalings[k][j]; + } + } + // 3rd step : Matrix multiplication for (int j = 0; j < nclasses; j++) { - scores[j] = lr_bias[j]; - for (int k = 0; k < nclasses-1; k++) { - scores[j] += lr_decision[j][k] * projected_descriptor[k]; - } - } + scores[j] = lr_bias[j]; + for (int k = 0; k < nclasses-1; k++) { + scores[j] += lr_decision[j][k] * projected_descriptor[k]; + } + } // 4th step : Matrix multiplication double sumexpscores=0.; for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]); for (int j = 0; j < nclasses; j++) { - probas[j] = exp(scores[j])/sumexpscores; + probas[j] = exp(scores[j])/sumexpscores; } - + classification[i][nclasses]=argmax(probas,nclasses); // 5th step : Mahalanobis distance for (int j = 0; j < nclasses; j++) { - prodright[0]=0.; - prodright[1]=0.; - prodright[2]=0.; - for (int k = 0; k < nclasses-1; k++) { - for (int l = 0; l < nclasses-1; l++) { - prodright[k] += (icov_list[j][k][l] * (projected_descriptor[k]-mean_projected_descriptors[j][k])); - } - } - double prodleft=0.; - for (int k = 0; k < nclasses-1; k++) { - prodleft += (prodright[k]*(projected_descriptor[k]-mean_projected_descriptors[j][k])); - } - classification[i][j]=sqrt(prodleft); + prodright[0]=0.; + prodright[1]=0.; + prodright[2]=0.; + for (int k = 0; k < nclasses-1; k++) { + for (int l = 0; l < nclasses-1; l++) { + prodright[k] += (icov_list[j][k][l] * (projected_descriptor[k]-mean_projected_descriptors[j][k])); + } + } + double prodleft=0.; + for (int k = 0; k < nclasses-1; k++) { + prodleft += (prodright[k]*(projected_descriptor[k]-mean_projected_descriptors[j][k])); + } + classification[i][j]=sqrt(prodleft); } // 6th step : Sanity check int locclass=classification[i][nclasses]; - + if (classification[i][locclass]>maha_thresholds[locclass]){ - classification[i][nclasses]=-1.; + classification[i][nclasses]=-1.; } - + } else { for (int j = 0; j < ncols; j++) { - classification[i][j] = -1.; - } + classification[i][j] = -1.; + } } } memory->destroy(full_descriptor); memory->destroy(projected_descriptor); memory->destroy(scores); - memory->destroy(probas); + memory->destroy(probas); memory->destroy(prodright); - + } int ComputeSLCSAAtom::compute_ncomps(int twojmax) @@ -387,7 +387,7 @@ int ComputeSLCSAAtom::compute_ncomps(int twojmax) for (int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) if (j >= j1) ncount++; - + return ncount; } diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.h b/src/EXTRA-COMPUTE/compute_slcsa_atom.h index 257277afed9..41b64d5b229 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.h +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.h @@ -60,20 +60,20 @@ class ComputeSLCSAAtom : public Compute { const char *lr_decision_file; const char *lr_bias_file; const char *covmat_file; - const char *maha_file; + const char *maha_file; class NeighList *list; - + // LDA dimension reduction double **lda_scalings; - double *database_mean_descriptor; + double *database_mean_descriptor; // LR classification double *lr_bias; double **lr_decision; - + // Mahalanobis distance calculation - double ***icov_list; - double **mean_projected_descriptors; + double ***icov_list; + double **mean_projected_descriptors; double *maha_thresholds; // Per-atom local arrays @@ -83,10 +83,10 @@ class ComputeSLCSAAtom : public Compute { double *probas; double *prodright; double *dmaha; - + // Output array double **classification; - + }; } // namespace LAMMPS_NS diff --git a/src/ML-SNAP/compute_sna_atom.cpp b/src/ML-SNAP/compute_sna_atom.cpp index f1bd6ffc237..753751690da 100644 --- a/src/ML-SNAP/compute_sna_atom.cpp +++ b/src/ML-SNAP/compute_sna_atom.cpp @@ -132,7 +132,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); delta = utils::numeric(FLERR, arg[iarg + 1], false, lmp); if (delta < 1.0e-3) error->all(FLERR, "Illegal compute compute {} command", style); - iarg += 2; + iarg += 2; } else if (strcmp(arg[iarg], "chem") == 0) { if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style); chemflag = 1; @@ -187,7 +187,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : FLERR, "Illegal compute {} command: switchinnerflag = 0, unexpected sinner/dinner keyword", style); - + snaptr = new SNA(lmp, rfac0, twojmax, rmin0, switchflag, bzeroflag, chemflag, bnormflag, wselfallflag, nelements, switchinnerflag); @@ -202,7 +202,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : nmax = 0; sna = nullptr; - + } /* ---------------------------------------------------------------------- */ @@ -254,7 +254,7 @@ void ComputeSNAAtom::init_list(int /*id*/, NeighList *ptr) void ComputeSNAAtom::compute_peratom() { invoked_peratom = update->ntimestep; - + // grow sna array if necessary if (atom->nmax > nmax) { @@ -298,161 +298,161 @@ void ComputeSNAAtom::compute_peratom() // ############################################################################## // // ##### Start of section for computing bispectrum on nnn nearest neighbors ##### // - // ############################################################################## // + // ############################################################################## // if (nearest_neighbors_mode == true) { - // ##### 1) : consider full neighbor list in rlist - memory->create(distsq, jnum, "snann/atom:distsq"); - memory->create(rlist, jnum, 3, "snann/atom:rlist"); - - int ncount = 0; - for (int jj = 0; jj < jnum; jj++) { - int j = jlist[jj]; - j &= NEIGHMASK; - 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 (rsq < rcutsq) { - distsq[ncount] = rsq; - rlist[ncount][0] = delx; - rlist[ncount][1] = dely; - rlist[ncount][2] = delz; - ncount++; - } - } - - // ##### 2) : compute optimal cutoff such that sum weights S_target = nnn - double S_target=1.*nnn; - double rc_start=0.1; - double rc_max=sqrt(rcutsq); - double tol=1.e-8; - double * sol_dich = dichotomie(S_target, rc_start, rc_max, tol, distsq, ncount, wmode, delta); - memory->destroy(distsq); - - // ##### 3) : assign that optimal cutoff radius to bispectrum context using rcsol - double rcsol = (sol_dich[0]+sol_dich[1])/2.; - memory->destroy(sol_dich); - snaptr->grow_rij(ncount); - - int ninside = 0; - for (int jj = 0; jj < ncount; jj++) { - int j = jlist[jj]; - j &= NEIGHMASK; - - const double rsq = rlist[jj][0]*rlist[jj][0]+rlist[jj][1]*rlist[jj][1]+rlist[jj][2]*rlist[jj][2]; - int jtype = type[j]; - int jelem = 0; - if (chemflag) - jelem = map[jtype]; - - if (rsq < rcsol*rcsol) { - snaptr->rij[ninside][0] = rlist[jj][0];//rijmax; - snaptr->rij[ninside][1] = rlist[jj][1];//rijmax; - snaptr->rij[ninside][2] = rlist[jj][2];//rijmax; - snaptr->inside[ninside] = j; - snaptr->wj[ninside] = 1.; - snaptr->rcutij[ninside] = rcsol; - - if (switchinnerflag) { - snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); - snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); - } - if (chemflag) snaptr->element[ninside] = jelem; - ninside++; - } - } - - memory->destroy(rlist); - - // ############################################################################ // - // ##### End of section for computing bispectrum on nnn nearest neighbors ##### // - // ############################################################################ // - snaptr->compute_ui(ninside, ielem); - snaptr->compute_zi(); - snaptr->compute_bi(ielem); - - for (int icoeff = 0; icoeff < ncoeff; icoeff++) - sna[i][icoeff] = snaptr->blist[icoeff]; - if (quadraticflag) { - int ncount = ncoeff; - for (int icoeff = 0; icoeff < ncoeff; icoeff++) { - double bi = snaptr->blist[icoeff]; - - // diagonal element of quadratic matrix - - sna[i][ncount++] = 0.5*bi*bi; - - // upper-triangular elements of quadratic matrix - - for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) - sna[i][ncount++] = bi*snaptr->blist[jcoeff]; - } - } - - } else { - // ensure rij, inside, and typej are of size jnum - - snaptr->grow_rij(jnum); - - // rij[][3] = displacements between atom I and those neighbors - // inside = indices of neighbors of I within cutoff - // typej = types of neighbors of I within cutoff - - int ninside = 0; - for (int jj = 0; jj < jnum; jj++) { - int j = jlist[jj]; - j &= 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; - int jtype = type[j]; - int jelem = 0; - if (chemflag) - jelem = map[jtype]; - if (rsq < cutsq[itype][jtype] && rsq>1e-20) { - snaptr->rij[ninside][0] = delx; - snaptr->rij[ninside][1] = dely; - snaptr->rij[ninside][2] = delz; - snaptr->inside[ninside] = j; - snaptr->wj[ninside] = wjelem[jtype]; - snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac; - if (switchinnerflag) { - snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); - snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); - } - if (chemflag) snaptr->element[ninside] = jelem; - ninside++; - } - } - snaptr->compute_ui(ninside, ielem); - snaptr->compute_zi(); - snaptr->compute_bi(ielem); - - for (int icoeff = 0; icoeff < ncoeff; icoeff++) - sna[i][icoeff] = snaptr->blist[icoeff]; - if (quadraticflag) { - int ncount = ncoeff; - for (int icoeff = 0; icoeff < ncoeff; icoeff++) { - double bi = snaptr->blist[icoeff]; - - // diagonal element of quadratic matrix - - sna[i][ncount++] = 0.5*bi*bi; - - // upper-triangular elements of quadratic matrix - - for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) - sna[i][ncount++] = bi*snaptr->blist[jcoeff]; - } - } - + // ##### 1) : consider full neighbor list in rlist + memory->create(distsq, jnum, "snann/atom:distsq"); + memory->create(rlist, jnum, 3, "snann/atom:rlist"); + + int ncount = 0; + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + j &= NEIGHMASK; + 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 (rsq < rcutsq) { + distsq[ncount] = rsq; + rlist[ncount][0] = delx; + rlist[ncount][1] = dely; + rlist[ncount][2] = delz; + ncount++; + } + } + + // ##### 2) : compute optimal cutoff such that sum weights S_target = nnn + double S_target=1.*nnn; + double rc_start=0.1; + double rc_max=sqrt(rcutsq); + double tol=1.e-8; + double * sol_dich = dichotomie(S_target, rc_start, rc_max, tol, distsq, ncount, wmode, delta); + memory->destroy(distsq); + + // ##### 3) : assign that optimal cutoff radius to bispectrum context using rcsol + double rcsol = (sol_dich[0]+sol_dich[1])/2.; + memory->destroy(sol_dich); + snaptr->grow_rij(ncount); + + int ninside = 0; + for (int jj = 0; jj < ncount; jj++) { + int j = jlist[jj]; + j &= NEIGHMASK; + + const double rsq = rlist[jj][0]*rlist[jj][0]+rlist[jj][1]*rlist[jj][1]+rlist[jj][2]*rlist[jj][2]; + int jtype = type[j]; + int jelem = 0; + if (chemflag) + jelem = map[jtype]; + + if (rsq < rcsol*rcsol) { + snaptr->rij[ninside][0] = rlist[jj][0];//rijmax; + snaptr->rij[ninside][1] = rlist[jj][1];//rijmax; + snaptr->rij[ninside][2] = rlist[jj][2];//rijmax; + snaptr->inside[ninside] = j; + snaptr->wj[ninside] = 1.; + snaptr->rcutij[ninside] = rcsol; + + if (switchinnerflag) { + snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); + snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); + } + if (chemflag) snaptr->element[ninside] = jelem; + ninside++; + } + } + + memory->destroy(rlist); + + // ############################################################################ // + // ##### End of section for computing bispectrum on nnn nearest neighbors ##### // + // ############################################################################ // + snaptr->compute_ui(ninside, ielem); + snaptr->compute_zi(); + snaptr->compute_bi(ielem); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + sna[i][icoeff] = snaptr->blist[icoeff]; + if (quadraticflag) { + int ncount = ncoeff; + for (int icoeff = 0; icoeff < ncoeff; icoeff++) { + double bi = snaptr->blist[icoeff]; + + // diagonal element of quadratic matrix + + sna[i][ncount++] = 0.5*bi*bi; + + // upper-triangular elements of quadratic matrix + + for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) + sna[i][ncount++] = bi*snaptr->blist[jcoeff]; + } + } + + } else { + // ensure rij, inside, and typej are of size jnum + + snaptr->grow_rij(jnum); + + // rij[][3] = displacements between atom I and those neighbors + // inside = indices of neighbors of I within cutoff + // typej = types of neighbors of I within cutoff + + int ninside = 0; + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + j &= 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; + int jtype = type[j]; + int jelem = 0; + if (chemflag) + jelem = map[jtype]; + if (rsq < cutsq[itype][jtype] && rsq>1e-20) { + snaptr->rij[ninside][0] = delx; + snaptr->rij[ninside][1] = dely; + snaptr->rij[ninside][2] = delz; + snaptr->inside[ninside] = j; + snaptr->wj[ninside] = wjelem[jtype]; + snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac; + if (switchinnerflag) { + snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]); + snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]); + } + if (chemflag) snaptr->element[ninside] = jelem; + ninside++; + } + } + snaptr->compute_ui(ninside, ielem); + snaptr->compute_zi(); + snaptr->compute_bi(ielem); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + sna[i][icoeff] = snaptr->blist[icoeff]; + if (quadraticflag) { + int ncount = ncoeff; + for (int icoeff = 0; icoeff < ncoeff; icoeff++) { + double bi = snaptr->blist[icoeff]; + + // diagonal element of quadratic matrix + + sna[i][ncount++] = 0.5*bi*bi; + + // upper-triangular elements of quadratic matrix + + for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) + sna[i][ncount++] = bi*snaptr->blist[jcoeff]; + } + } + } - + } else { for (int icoeff = 0; icoeff < size_peratom_cols; icoeff++) sna[i][icoeff] = 0.0; @@ -583,7 +583,7 @@ void ComputeSNAAtom::select3(int k, int n, double *arr, int *iarr, double **arr3 double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts) { - double * w=nullptr; + double * w=nullptr; memory->destroy(w); memory->create(w, ncounts, "snann:gauss_weights"); double rloc=0.; @@ -591,9 +591,9 @@ double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts) { rloc = sqrt(rsq[i]); if (rloc > rcut){ - w[i]=0.; + w[i]=0.; } else { - w[i]=1.; + w[i]=1.; } } return w; @@ -601,11 +601,11 @@ double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts) double * ComputeSNAAtom::tanh_weights(double * rsq, double rcut, double delta, int ncounts) { - double * w=nullptr; + double * w=nullptr; memory->destroy(w); memory->create(w, ncounts, "snann:gauss_weights"); double rloc=0.; - + for (int i=0; idestroy(www); + memory->destroy(www); } else if (weightmode == 1) { double * www = tanh_weights(rsq, rcut, delta, ncounts); S_sol = sum_weights(rsq, www, ncounts); @@ -658,19 +658,19 @@ double * ComputeSNAAtom::dichotomie(double S_target, double a, double b, double double f_ra = get_target_rcut(S_target, rsq, a, ncounts, weightmode, delta); double f_rm = get_target_rcut(S_target, rsq, m, ncounts, weightmode, delta); if (f_rm == 0.) - { - sol[0]=m; - sol[1]=m; - return sol; - } + { + sol[0]=m; + sol[1]=m; + return sol; + } else if (f_rm*f_ra > 0.) - { - a = m; - } + { + a = m; + } else - { - b = m; - } + { + b = m; + } cnt+=1; } while ( d > e ); sol[0]=a; diff --git a/src/ML-SNAP/compute_sna_atom.h b/src/ML-SNAP/compute_sna_atom.h index 0deab63a3b5..22838654313 100644 --- a/src/ML-SNAP/compute_sna_atom.h +++ b/src/ML-SNAP/compute_sna_atom.h @@ -40,11 +40,11 @@ class ComputeSNAAtom : public Compute { void select3(int, int, double *, int *, double **); double * weights(double *, double, int); - double * tanh_weights(double *, double, double, int); + double * tanh_weights(double *, double, double, int); double sum_weights(double *, double *, int); double get_target_rcut(double, double *, double, int, int, double); double * dichotomie(double, double, double, double, double *, int, int, double); - + private: int nmax; int ncoeff; From d39cd265aefac9ab1af2de3d24ecec78503c4187 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Nov 2023 02:11:18 -0500 Subject: [PATCH 130/300] make citations consistent --- doc/src/Bibliography.rst | 4 ++-- doc/src/compute_slcsa_atom.rst | 5 +++-- doc/src/compute_sna_atom.rst | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index 94fd1a5bbf5..4ed8e73dfea 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -562,8 +562,8 @@ Bibliography **(Kumar)** Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008) -**(Lafourcade et al, 2023)** - Lafourcade, P. and Maillet, J.-B. and Denoual, C. and Duval, E. and Allera, A. and Goryaeva, A. M. and Marinica, M.-C., `Comp. Mat. Science, 230, 112534 (2023) `_ +**(Lafourcade)** + Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, `Comp. Mat. Science, 230, 112534 (2023) `_ **(Lamoureux and Roux)** G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) diff --git a/doc/src/compute_slcsa_atom.rst b/doc/src/compute_slcsa_atom.rst index 9ebf3d15782..38ac2efa851 100644 --- a/doc/src/compute_slcsa_atom.rst +++ b/doc/src/compute_slcsa_atom.rst @@ -93,6 +93,7 @@ none ---------- -.. _Lafourcade2023: +.. _Lafourcade2023_1: -**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, Marinica, Comp. Mat. Science, XXX, XXX, (2023). +**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, +`Comp. Mat. Science, 230, 112534 (2023) `_ diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index 2b12c96bf56..b667e8b161d 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -639,6 +639,7 @@ of Angular Momentum, World Scientific, Singapore (1987). **(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021) -.. _Lafourcade2023: +.. _Lafourcade2023_2: -**(Lafourcade)** Lafourcade, P. and Maillet, J.-B. and Denoual, C. and Duval, E. and Allera, A. and Goryaeva, A. M. and Marinica, M.-C., `Comp. Mat. Science, 230, 112534 (2023) `_ +**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, +`Comp. Mat. Science, 230, 112534 (2023) `_ From 918cddfb90c1caa3b1765e10ec79f3391311b870 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Nov 2023 02:11:44 -0500 Subject: [PATCH 131/300] reformat to conform to LAMMPS writing style --- doc/src/compute_slcsa_atom.rst | 103 ++++++++++++++++++++++++++------- doc/src/compute_sna_atom.rst | 19 +++++- 2 files changed, 101 insertions(+), 21 deletions(-) diff --git a/doc/src/compute_slcsa_atom.rst b/doc/src/compute_slcsa_atom.rst index 38ac2efa851..6b2708c4d93 100644 --- a/doc/src/compute_slcsa_atom.rst +++ b/doc/src/compute_slcsa_atom.rst @@ -16,7 +16,7 @@ Syntax * nclasses = number of crystal structures used in the database for the classifier SL-CSA * db_mean_descriptor_file = file name of file containing the database mean descriptor * lda_file = file name of file containing the linear discriminant analysis matrix for dimension reduction -* lr_decision_file = file name of file containing the scalings matrix for logistic regression classification +* lr_decision_file = file name of file containing the scaling matrix for logistic regression classification * lr_bias_file = file name of file containing the bias vector for logistic regression classification * maha_file = file name of file containing for each crystal structure: the Mahalanobis distance threshold for sanity check purposes, the average reduced descriptor and the inverse of the corresponding covariance matrix * c_ID[*] = compute ID of previously required *compute sna/atom* command @@ -32,54 +32,117 @@ Examples Description """"""""""" -Define a computation that performs the Supervised Learning Crystal Structure Analysis (SL-CSA) from :ref:`(Lafourcade) ` for each atom in the group. The SL-CSA tool takes as an input a per-atom descriptor (bispectrum) that is computed through the *compute sna/atom* command and then proceeds to a dimension reduction step followed by a logistic regression in order to assign a probable crystal structure to each atom in the group. The SL-CSA tool is pre-trained on a database containing :math:`C` distinct crystal structures from which a crystal structure classifier is derived and a tutorial to build such a tool is available at `SL-CSA `_. - -The first step of the SL-CSA tool consists in performing a dimension reduction of the per-atom descriptor :math:`\mathbf{B}^i \in \mathbb{R}^{D}` through the Linear Discriminant Analysis (LDA) method, leading to a new projected descriptor :math:`\mathbf{x}^i=\mathrm{P}_\mathrm{LDA}(\mathbf{B}^i):\mathbb{R}^D \rightarrow \mathbb{R}^{d=C-1}`: +.. versionadded:: TBD + +Define a computation that performs the Supervised Learning Crystal +Structure Analysis (SL-CSA) from :ref:`(Lafourcade) ` +for each atom in the group. The SL-CSA tool takes as an input a per-atom +descriptor (bispectrum) that is computed through the *compute sna/atom* +command and then proceeds to a dimension reduction step followed by a +logistic regression in order to assign a probable crystal structure to +each atom in the group. The SL-CSA tool is pre-trained on a database +containing :math:`C` distinct crystal structures from which a crystal +structure classifier is derived and a tutorial to build such a tool is +available at `SL-CSA `_. + +The first step of the SL-CSA tool consists in performing a dimension +reduction of the per-atom descriptor :math:`\mathbf{B}^i \in +\mathbb{R}^{D}` through the Linear Discriminant Analysis (LDA) method, +leading to a new projected descriptor +:math:`\mathbf{x}^i=\mathrm{P}_\mathrm{LDA}(\mathbf{B}^i):\mathbb{R}^D +\rightarrow \mathbb{R}^{d=C-1}`: .. math:: \mathbf{x}^i = \mathbf{C}^T_\mathrm{LDA} \cdot (\mathbf{B}^i - \mu^\mathbf{B}_\mathrm{db}) -where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is the reduction coefficients matrix of the LDA model read in file *lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}` is the average descriptor of the entire database. The latter is computed from the average descriptors of each crystal structure read from the file *mean_descriptors_file*. - -The new projected descriptor with dimension :math:`d=C-1` allows for a good separation of different crystal structures fingerprints in the latent space. - -Once the dimension reduction step is performed by means of LDA, the new descriptor :math:`\mathbf{x}^i \in \mathbb{R}^{d=C-1}` is taken as an input for performing a multinomial logistic regression (LR) which provides a score vector :math:`\mathbf{s}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d \rightarrow \mathbb{R}^C` defined as: +where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is +the reduction coefficients matrix of the LDA model read in file +*lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of +atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}` +is the average descriptor of the entire database. The latter is computed +from the average descriptors of each crystal structure read from the +file *mean_descriptors_file*. + +The new projected descriptor with dimension :math:`d=C-1` allows for a +good separation of different crystal structures fingerprints in the +latent space. + +Once the dimension reduction step is performed by means of LDA, the new +descriptor :math:`\mathbf{x}^i \in \mathbb{R}^{d=C-1}` is taken as an +input for performing a multinomial logistic regression (LR) which +provides a score vector +:math:`\mathbf{s}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d +\rightarrow \mathbb{R}^C` defined as: .. math:: \mathbf{s}^i = \mathbf{b}_\mathrm{LR} + \mathbf{D}_\mathrm{LR} \cdot {\mathbf{x}^i}^T -with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and :math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias vector and decision matrix of the LR model after training both read in files *lr_fil1* and *lr_file2* respectively. +with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and +:math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias +vector and decision matrix of the LR model after training both read in +files *lr_fil1* and *lr_file2* respectively. -Finally, a probability vector :math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d \rightarrow \mathbb{R}^C` is defined as: +Finally, a probability vector +:math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d +\rightarrow \mathbb{R}^C` is defined as: .. math:: \mathbf{p}^i = \frac{\mathrm{exp}(\mathbf{s}^i)}{\sum\limits_{j} \mathrm{exp}(s^i_j) } -from which the crystal structure assigned to each atom with descriptor :math:`\mathbf{B}^i` and projected descriptor :math:`\mathbf{x}^i` is computed as the *argmax* of the probability vector :math:`\mathbf{p}^i`. Since the logistic regression step systematically attributes a crystal structure to each atom, a sanity check is needed to avoid misclassification. To this end, a per-atom Mahalanobis distance to each crystal structure *CS* present in the database is computed: +from which the crystal structure assigned to each atom with descriptor +:math:`\mathbf{B}^i` and projected descriptor :math:`\mathbf{x}^i` is +computed as the *argmax* of the probability vector +:math:`\mathbf{p}^i`. Since the logistic regression step systematically +attributes a crystal structure to each atom, a sanity check is needed to +avoid misclassification. To this end, a per-atom Mahalanobis distance to +each crystal structure *CS* present in the database is computed: .. math:: d_\mathrm{Mahalanobis}^{i \rightarrow \mathrm{CS}} = \sqrt{(\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS})^\mathrm{T} \cdot \mathbf{\Sigma}^{-1}_\mathrm{CS} \cdot (\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS}) } -where :math:`\mathbf{\mu}^\mathbf{x}_\mathrm{CS} \in \mathbb{R}^{d}` is the average projected descriptor of crystal structure *CS* in the database and where :math:`\mathbf{\Sigma}_\mathrm{CS} \in \mathbb{R}^{d \times d}` is the corresponding covariance matrix. Finally, if the Mahalanobis distance to crystal structure *CS* for atom *i* is greater than the pre-determined threshold, no crystal structure is assigned to atom *i*. The Mahalanobis distance thresholds are read in file *maha_file* while the covariance matrices are read in file *covmat_file*. - -The `SL-CSA `_ framework provides an automatic computation of the different matrices and thresholds required for a proper classification and writes down all the required files for calling the *compute slcsa/atom* command. - -The *compute slcsa/atom* command requires that the *compute sna/atom* command is called before as it takes the resulting per-atom bispectrum as an input. In addition, it is crucial that the value *twojmax* is set to the same value of the value *twojmax* used in the *compute sna/atom* command, as well as that the value *nclasses* is set to the number of crystal structures used in the database to train the SL-CSA tool. +where :math:`\mathbf{\mu}^\mathbf{x}_\mathrm{CS} \in \mathbb{R}^{d}` is +the average projected descriptor of crystal structure *CS* in the +database and where :math:`\mathbf{\Sigma}_\mathrm{CS} \in \mathbb{R}^{d +\times d}` is the corresponding covariance matrix. Finally, if the +Mahalanobis distance to crystal structure *CS* for atom *i* is greater +than the pre-determined threshold, no crystal structure is assigned to +atom *i*. The Mahalanobis distance thresholds are read in file +*maha_file* while the covariance matrices are read in file +*covmat_file*. + +The `SL-CSA `_ framework provides +an automatic computation of the different matrices and thresholds +required for a proper classification and writes down all the required +files for calling the *compute slcsa/atom* command. + +The *compute slcsa/atom* command requires that the :doc:`compute +sna/atom ` command is called before as it takes the +resulting per-atom bispectrum as an input. In addition, it is crucial +that the value *twojmax* is set to the same value of the value *twojmax* +used in the *compute sna/atom* command, as well as that the value +*nclasses* is set to the number of crystal structures used in the +database to train the SL-CSA tool. Output info """"""""""" -By default, this compute computes the Mahalanobis distances to the different crystal structures present in the database in addition to assigning a crystal structure for each atom as a per-atom vector, which can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` page for an overview of LAMMPS output options. +By default, this compute computes the Mahalanobis distances to the +different crystal structures present in the database in addition to +assigning a crystal structure for each atom as a per-atom vector, which +can be accessed by any command that uses per-atom values from a compute +as input. See the :doc:`Howto output ` page for an +overview of LAMMPS output options. Restrictions """""""""""" -This compute is part of the EXTRA-COMPUTE package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +This compute is part of the EXTRA-COMPUTE package. It is only enabled +if LAMMPS was built with that package. See the :doc:`Build package +` page for more info. Related commands """""""""""""""" diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index b667e8b161d..179c362dc67 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -444,7 +444,24 @@ requires that *bikflag=1*. The rerun script can use a :doc:`special_bonds ` command that includes all pairs in the neighbor list. -The keyword *nnn* allows for the calculation of the bispectrum over a specific target number of neighbors. This option is only implemented for the compute *sna/atom*\ . An optimal cutoff radius for defining the neighborhood of the central atom is calculated by means of a dichotomy algorithm. This iterative process allows to assign weights to neighboring atoms in order to match the total sum of weights with the target number of neighbors. Depending on the radial weight function used in that process, the cutoff radius can fluctuate a lot in the presence of thermal noise. Therefore, in addition to the *nnn* keyword, the keyword *wmode* allows to choose whether a Heavyside (*wmode* = 0) function or a Hyperbolic tangent function (*wmode* = 1) should be used. If the Heavyside function is used, the cutoff radius exactly matches the distance between the central atom an its *nnn*'th neighbor. However, in the case of the hyperbolic tangent function, the dichotomy algorithm allows to span the weights over a distance *delta* in order to reduce fluctuations in the resulting local atomic environment fingerprint. The detailed formalism is given in the paper by Lafourcade et al. :ref:`(Lafourcade) `. +The keyword *nnn* allows for the calculation of the bispectrum over a +specific target number of neighbors. This option is only implemented for +the compute *sna/atom*\ . An optimal cutoff radius for defining the +neighborhood of the central atom is calculated by means of a dichotomy +algorithm. This iterative process allows to assign weights to +neighboring atoms in order to match the total sum of weights with the +target number of neighbors. Depending on the radial weight function +used in that process, the cutoff radius can fluctuate a lot in the +presence of thermal noise. Therefore, in addition to the *nnn* keyword, +the keyword *wmode* allows to choose whether a Heaviside (*wmode* = 0) +function or a Hyperbolic tangent function (*wmode* = 1) should be used. +If the Heaviside function is used, the cutoff radius exactly matches the +distance between the central atom an its *nnn*'th neighbor. However, in +the case of the hyperbolic tangent function, the dichotomy algorithm +allows to span the weights over a distance *delta* in order to reduce +fluctuations in the resulting local atomic environment fingerprint. The +detailed formalism is given in the paper by Lafourcade et +al. :ref:`(Lafourcade) `. ---------- From fe418bbe77441e605b56274b93b453146572f347 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Nov 2023 02:11:54 -0500 Subject: [PATCH 132/300] spelling --- doc/utils/sphinx-config/false_positives.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 75589e31157..9a99bb7718e 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -79,6 +79,7 @@ Alessandro Alexey ali aliceblue +Allera Allinger allocatable allocator @@ -719,6 +720,7 @@ dem Dendrimer dendritic Denniston +Denoual dephase dephasing dequidt @@ -860,6 +862,7 @@ Dunweg Dupend Dupont dUs +Duval dV dvector dVx @@ -1297,6 +1300,7 @@ Gonzalez-Melchor googlemail googletest Gordan +Goryaeva Goudeau GPa GPL @@ -1383,6 +1387,7 @@ hcp hdnnp HDNNP Hearn +Heaviside heatconduction heatflow Hebbeker @@ -1846,6 +1851,7 @@ lbl LBtype lcbop ld +lda ldfftw ldg lebedeva @@ -1967,6 +1973,7 @@ lossy Lozovik lps lpsapi +lr lrt lsfftw ltbbmalloc @@ -2008,7 +2015,10 @@ magelec Maginn magneton magnetons +maha +Mahalanobis Mahoney +Maillet mainboard mainboards makefile @@ -2187,6 +2197,7 @@ mintcream Mintmire Miron mis +misclassification Mises Mishin Mishra @@ -2295,6 +2306,7 @@ multicomponent multicore multielectron multinode +multinomial multiphysics Multipole multiscale @@ -2386,6 +2398,7 @@ Nbtypes Nbytes nc Nc +nclasses nchunk Nchunk ncoeff @@ -3346,6 +3359,7 @@ Skylake slateblue slategray slater +slcsa Slepoy Sliozberg sLL From 368ea39816cf1ee01039f3b389d6888f12438325 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Nov 2023 02:12:23 -0500 Subject: [PATCH 133/300] fully integrate additions into distribution --- doc/src/Commands_compute.rst | 1 + doc/src/compute.rst | 1 + src/.gitignore | 2 ++ 3 files changed, 4 insertions(+) diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index dbd6b58ce7e..3f32fb8ed17 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -121,6 +121,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`reduce/region ` * :doc:`rigid/local ` * :doc:`saed ` + * :doc:`slcsa/atom ` * :doc:`slice ` * :doc:`smd/contact/radius ` * :doc:`smd/damage ` diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 67372036183..b258f986b79 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -285,6 +285,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`reduce/region ` - same as compute reduce, within a region * :doc:`rigid/local ` - extract rigid body attributes * :doc:`saed ` - electron diffraction intensity on a mesh of reciprocal lattice nodes +* :doc:`slcsa/atom ` - perform Supervised Learning Crystal Structure Analysis (SL-CSA) * :doc:`slice ` - extract values from global vector or array * :doc:`smd/contact/radius ` - contact radius for Smooth Mach Dynamics * :doc:`smd/damage ` - damage status of SPH particles in Smooth Mach Dynamics diff --git a/src/.gitignore b/src/.gitignore index 3ee771e139e..5c6891c35e7 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -631,6 +631,8 @@ /compute_ptm_atom.h /compute_rigid_local.cpp /compute_rigid_local.h +/compute_slcsa_atom.cpp +/compute_slcsa_atom.h /compute_smd_triangle_vertices.cpp /compute_smd_triangle_vertices.h /compute_spec_atom.cpp From 5bbdfe5b4fa17a24cf47196ade2aa9ccd74f1d5e Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Thu, 2 Feb 2023 17:11:28 -0500 Subject: [PATCH 134/300] enabled the use of heffte for the cpu backend --- cmake/Modules/Packages/KSPACE.cmake | 16 +++++++++++++ src/KSPACE/fft3d_wrap.cpp | 36 +++++++++++++++++++++++++++++ src/KSPACE/fft3d_wrap.h | 18 +++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index de7e7e5b20f..119c8fa8674 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -46,6 +46,22 @@ else() target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() +option(FFT_HEFFTE "Use heFFTe as the distributed FFT engine." OFF) +if(FFT_HEFFTE) + # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte + if(FFT STREQUAL "FFTW3") # respect the backend choice, FFTW or MKL + set(HEFFTE_COMPONENTS "FFTW") + elseif(FFT STREQUAL "MKL") + set(HEFFTE_COMPONENTS "MKL") + else() + message(FATAL_ERROR "Using -DFFT_HEFFTE=ON, requires FFT either FFTW or MKL") + endif() + + find_package(Heffte 2.3.0 REQUIRED ${HEFFTE_COMPONENTS}) + target_compile_definitions(lammps PRIVATE -DHEFFTE) + target_link_libraries(lammps PRIVATE Heffte::Heffte) +endif() + set(FFT_PACK "array" CACHE STRING "Optimization for FFT") set(FFT_PACK_VALUES array pointer memcpy) set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES}) diff --git a/src/KSPACE/fft3d_wrap.cpp b/src/KSPACE/fft3d_wrap.cpp index 478cf6fc9d4..a6b4167d71d 100644 --- a/src/KSPACE/fft3d_wrap.cpp +++ b/src/KSPACE/fft3d_wrap.cpp @@ -27,30 +27,66 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, int out_klo, int out_khi, int scaled, int permute, int *nbuf, int usecollective) : Pointers(lmp) { + #ifndef HEFFTE plan = fft_3d_create_plan(comm,nfast,nmid,nslow, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, scaled,permute,nbuf,usecollective); if (plan == nullptr) error->one(FLERR,"Could not create 3d FFT plan"); + #else + heffte::plan_options options = heffte::default_options(); + options.algorithm = (usecollective == 0) ? + heffte::reshape_algorithm::p2p_plined + : heffte::reshape_algorithm::alltoallv; + options.use_reorder = (permute != 0); + hscale = (scaled == 0) ? heffte::scale::none : heffte::scale::full; + + heffte_plan = std::unique_ptr>( + new heffte::fft3d( + heffte::box3d<>({in_ilo,in_jlo,in_klo}, {in_ihi, in_jhi, in_khi}), + heffte::box3d<>({out_ilo,out_jlo,out_klo}, {out_ihi, out_jhi, out_khi}), + comm, options) + ); + *nbuf = heffte_plan->size_workspace(); + heffte_workspace.resize(heffte_plan->size_workspace()); + #endif } /* ---------------------------------------------------------------------- */ FFT3d::~FFT3d() { + #ifndef HEFFTE fft_3d_destroy_plan(plan); + #endif } /* ---------------------------------------------------------------------- */ void FFT3d::compute(FFT_SCALAR *in, FFT_SCALAR *out, int flag) { + #ifndef HEFFTE fft_3d((FFT_DATA *) in,(FFT_DATA *) out,flag,plan); + #else + if (flag == 1) + heffte_plan->forward(reinterpret_cast*>(in), + reinterpret_cast*>(out), + reinterpret_cast*>(heffte_workspace.data()) + ); + else + heffte_plan->backward(reinterpret_cast*>(in), + reinterpret_cast*>(out), + reinterpret_cast*>(heffte_workspace.data()), + hscale + ); + #endif } /* ---------------------------------------------------------------------- */ void FFT3d::timing1d(FFT_SCALAR *in, int nsize, int flag) { + #ifndef HEFFTE fft_1d_only((FFT_DATA *) in,nsize,flag,plan); + #endif } diff --git a/src/KSPACE/fft3d_wrap.h b/src/KSPACE/fft3d_wrap.h index f72cfd4622e..f34680d6821 100644 --- a/src/KSPACE/fft3d_wrap.h +++ b/src/KSPACE/fft3d_wrap.h @@ -17,6 +17,17 @@ #include "fft3d.h" // IWYU pragma: export #include "pointers.h" +#ifdef HEFFTE +#include "heffte.h" +// select the backend +#if defined(FFT_FFTW3) +using heffte_backend = heffte::backend::fftw; +#elif defined(FFT_MKL) +using heffte_backend = heffte::backend::mkl; +#endif + +#endif // HEFFTE + namespace LAMMPS_NS { class FFT3d : protected Pointers { @@ -30,7 +41,14 @@ class FFT3d : protected Pointers { void timing1d(FFT_SCALAR *, int, int); private: + #ifdef HEFFTE + // the heFFTe plan supersedes the internal fft_plan_3d + std::unique_ptr> heffte_plan; + std::vector> heffte_workspace; + heffte::scale hscale; + #else struct fft_plan_3d *plan; + #endif }; } // namespace LAMMPS_NS From 03b6b2d03026698fdca12ce38b0ce21895d87d69 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Thu, 2 Feb 2023 20:46:20 -0500 Subject: [PATCH 135/300] enable automatically downlowding of heffte --- cmake/Modules/Packages/KSPACE.cmake | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 119c8fa8674..7eb04f8f198 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -51,13 +51,27 @@ if(FFT_HEFFTE) # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte if(FFT STREQUAL "FFTW3") # respect the backend choice, FFTW or MKL set(HEFFTE_COMPONENTS "FFTW") + set(Heffte_ENABLE_FFTW "ON" CACHE BOOL "Enables FFTW backend for heFFTe") elseif(FFT STREQUAL "MKL") set(HEFFTE_COMPONENTS "MKL") + set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe") else() message(FATAL_ERROR "Using -DFFT_HEFFTE=ON, requires FFT either FFTW or MKL") endif() - find_package(Heffte 2.3.0 REQUIRED ${HEFFTE_COMPONENTS}) + find_package(Heffte 2.3.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) + if (NOT Heffte_FOUND) # download and build + include(FetchContent) + FetchContent_Declare(HEFFTE_PROJECT # using v2.3.0 + URL "https://bitbucket.org/icl/heffte/get/f49e25969bd7abbcb09e338db9a5e59550c8a05a.tar.gz" + URL_HASH SHA256=27c0a8da8f7bc91c8715ecb640721ab7e0454e22f6e3f521fe5acc45c28d60a9 + ) + FetchContent_Populate(HEFFTE_PROJECT) + add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR}) + set_target_properties(lmp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + set_target_properties(lammps PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + endif() + target_compile_definitions(lammps PRIVATE -DHEFFTE) target_link_libraries(lammps PRIVATE Heffte::Heffte) endif() From 77ad06745865dff460e4eb70518c72af8cee3bcd Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Mon, 6 Feb 2023 13:27:50 -0500 Subject: [PATCH 136/300] added documentation --- cmake/CMakeLists.txt | 5 +++++ doc/src/Build_settings.rst | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 28e02bbee7b..8e3e38570b3 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -983,6 +983,11 @@ if(PKG_KSPACE) else() message(STATUS "Using non-threaded FFTs") endif() + if (FFT_HEFFTE) + message(STATUS "Using distributed algorithms from heFTTe") + else() + message(STATUS "Using builtin distributed algorithms") + endif() if(PKG_KOKKOS) if(Kokkos_ENABLE_CUDA) if(FFT STREQUAL "KISS") diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 7576cae3eb2..828e4bb2ed2 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -43,6 +43,11 @@ When the KSPACE package is included in a LAMMPS build, the require use of an FFT library to compute 1d FFTs. The KISS FFT library is included with LAMMPS, but other libraries can be faster. LAMMPS can use them if they are available on your system. +Alternatively, LAMMPS can use the +`heFFTe `_ +library for the MPI communication algorithms, +currently heFFTe can be build only with CMake +and the value of FFT should be FFTW3 or MKL. .. tabs:: @@ -53,6 +58,7 @@ LAMMPS can use them if they are available on your system. -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy + -D FFT_HEFFTE=value # yes or no (default), yes links to heFFTe .. note:: @@ -76,6 +82,8 @@ LAMMPS can use them if they are available on your system. -D MKL_INCLUDE_DIR=path # ditto for Intel MKL library -D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries -D MKL_LIBRARY=path # path to MKL libraries + -D Heffte_ROOT=path # path to an existing heFFTe installation + .. tab:: Traditional make @@ -170,6 +178,16 @@ Depending on the machine, the size of the FFT grid, the number of processors used, one option may be slightly faster. The default is ARRAY mode. +When using ``-DFFT_HEFFTE`` CMake will first look for an existing install +with hints provided by ``-DHeffte_ROOT``, as recommended by the CMake +standard and note that the name is case sensitive. If CMake cannot find +a heFFTe installation with the correct backend (e.g., FFTW or MKL), +it will attempt to download and build the library automatically. +In this case, LAMMPS CMake will also accept all heFFTe specific variables +listed in the +`heFFTe documentation `_ +and those variables will be passed into the heFFTe build. + ---------- .. _size: From a6e629f4e48f503d82ad281bdb6890157c1a5640 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Thu, 26 Oct 2023 14:46:08 -0400 Subject: [PATCH 137/300] update variable names --- cmake/CMakeLists.txt | 73 +++++++++++++++++------------ cmake/Modules/Packages/KSPACE.cmake | 16 ++++--- src/KSPACE/fft3d_wrap.cpp | 8 ++-- src/KSPACE/fft3d_wrap.h | 12 +++-- 4 files changed, 65 insertions(+), 44 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 8e3e38570b3..37cb4985950 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -971,38 +971,53 @@ if(PKG_KOKKOS) endif() endif() if(PKG_KSPACE) - message(STATUS "<<< FFT settings >>> --- Primary FFT lib: ${FFT}") - if(FFT_SINGLE) - message(STATUS "Using single precision FFTs") - else() - message(STATUS "Using double precision FFTs") - endif() - if(FFT_FFTW_THREADS OR FFT_MKL_THREADS) - message(STATUS "Using threaded FFTs") - else() - message(STATUS "Using non-threaded FFTs") - endif() - if (FFT_HEFFTE) - message(STATUS "Using distributed algorithms from heFTTe") + if (LMP_HEFFTE) + message(STATUS "<<< FFT settings >>> +-- Primary FFT lib: heFFTe") + if (HEFFTE_BACKEND) + message(STATUS "heFFTe backend: ${HEFFTE_BACKEND}") + else() + message(STATUS "heFFTe backend: stock (not intended for production)") + endif() + if(FFT_SINGLE) + message(STATUS "Using single precision FFTs") + else() + message(STATUS "Using double precision FFTs") + endif() else() - message(STATUS "Using builtin distributed algorithms") - endif() - if(PKG_KOKKOS) - if(Kokkos_ENABLE_CUDA) - if(FFT STREQUAL "KISS") - message(STATUS "Kokkos FFT: KISS") - else() - message(STATUS "Kokkos FFT: cuFFT") - endif() - elseif(Kokkos_ENABLE_HIP) - if(FFT STREQUAL "KISS") - message(STATUS "Kokkos FFT: KISS") + message(STATUS "<<< FFT settings >>> +-- Primary FFT lib: ${FFT}") + if(FFT_SINGLE) + message(STATUS "Using single precision FFTs") + else() + message(STATUS "Using double precision FFTs") + endif() + if(FFT_FFTW_THREADS OR FFT_MKL_THREADS) + message(STATUS "Using threaded FFTs") + else() + message(STATUS "Using non-threaded FFTs") + endif() + if (FFT_HEFFTE) + message(STATUS "Using distributed algorithms from heFTTe") + else() + message(STATUS "Using builtin distributed algorithms") + endif() + if(PKG_KOKKOS) + if(Kokkos_ENABLE_CUDA) + if(FFT STREQUAL "KISS") + message(STATUS "Kokkos FFT: KISS") + else() + message(STATUS "Kokkos FFT: cuFFT") + endif() + elseif(Kokkos_ENABLE_HIP) + if(FFT STREQUAL "KISS") + message(STATUS "Kokkos FFT: KISS") + else() + message(STATUS "Kokkos FFT: hipFFT") + endif() else() - message(STATUS "Kokkos FFT: hipFFT") + message(STATUS "Kokkos FFT: ${FFT}") endif() - else() - message(STATUS "Kokkos FFT: ${FFT}") endif() endif() endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 7eb04f8f198..202009678a8 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -46,17 +46,21 @@ else() target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() -option(FFT_HEFFTE "Use heFFTe as the distributed FFT engine." OFF) -if(FFT_HEFFTE) +option(LMP_HEFFTE "Use heFFTe as the distributed FFT engine, supersedes the FFT option." OFF) +if(LMP_HEFFTE) # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte - if(FFT STREQUAL "FFTW3") # respect the backend choice, FFTW or MKL + set(HEFFTE_BACKEND_VALUES FFTW MKL) + set(HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") + set_property(CACHE HEFFTE_BACKEND PROPERTY STRINGS ${HEFFTE_BACKEND_VALUES}) + + if(HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL set(HEFFTE_COMPONENTS "FFTW") set(Heffte_ENABLE_FFTW "ON" CACHE BOOL "Enables FFTW backend for heFFTe") - elseif(FFT STREQUAL "MKL") + elseif(HEFFTE_BACKEND STREQUAL "MKL") set(HEFFTE_COMPONENTS "MKL") set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe") else() - message(FATAL_ERROR "Using -DFFT_HEFFTE=ON, requires FFT either FFTW or MKL") + message(WARNING "HEFFTE_BACKEND not selected, defaulting to 'stock' backend, which is not intended for production") endif() find_package(Heffte 2.3.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) @@ -72,7 +76,7 @@ if(FFT_HEFFTE) set_target_properties(lammps PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") endif() - target_compile_definitions(lammps PRIVATE -DHEFFTE) + target_compile_definitions(lammps PRIVATE -DLMP_HEFFTE "-DHEFFTE_${HEFFTE_BACKEND}") target_link_libraries(lammps PRIVATE Heffte::Heffte) endif() diff --git a/src/KSPACE/fft3d_wrap.cpp b/src/KSPACE/fft3d_wrap.cpp index a6b4167d71d..c79ba8a780f 100644 --- a/src/KSPACE/fft3d_wrap.cpp +++ b/src/KSPACE/fft3d_wrap.cpp @@ -27,7 +27,7 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, int out_klo, int out_khi, int scaled, int permute, int *nbuf, int usecollective) : Pointers(lmp) { - #ifndef HEFFTE + #ifndef LMP_HEFFTE plan = fft_3d_create_plan(comm,nfast,nmid,nslow, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, @@ -56,7 +56,7 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, FFT3d::~FFT3d() { - #ifndef HEFFTE + #ifndef LMP_HEFFTE fft_3d_destroy_plan(plan); #endif } @@ -65,7 +65,7 @@ FFT3d::~FFT3d() void FFT3d::compute(FFT_SCALAR *in, FFT_SCALAR *out, int flag) { - #ifndef HEFFTE + #ifndef LMP_HEFFTE fft_3d((FFT_DATA *) in,(FFT_DATA *) out,flag,plan); #else if (flag == 1) @@ -86,7 +86,7 @@ void FFT3d::compute(FFT_SCALAR *in, FFT_SCALAR *out, int flag) void FFT3d::timing1d(FFT_SCALAR *in, int nsize, int flag) { - #ifndef HEFFTE + #ifndef LMP_HEFFTE fft_1d_only((FFT_DATA *) in,nsize,flag,plan); #endif } diff --git a/src/KSPACE/fft3d_wrap.h b/src/KSPACE/fft3d_wrap.h index f34680d6821..505b4b195ce 100644 --- a/src/KSPACE/fft3d_wrap.h +++ b/src/KSPACE/fft3d_wrap.h @@ -17,16 +17,18 @@ #include "fft3d.h" // IWYU pragma: export #include "pointers.h" -#ifdef HEFFTE +#ifdef LMP_HEFFTE #include "heffte.h" // select the backend -#if defined(FFT_FFTW3) +#if defined(HEFFTE_FFTW) using heffte_backend = heffte::backend::fftw; -#elif defined(FFT_MKL) +#elif defined(HEFFTE_MKL) using heffte_backend = heffte::backend::mkl; +#elif defined(HEFFTE_) +using heffte_backend = heffte::backend::stock; #endif -#endif // HEFFTE +#endif // LMP_HEFFTE namespace LAMMPS_NS { @@ -41,7 +43,7 @@ class FFT3d : protected Pointers { void timing1d(FFT_SCALAR *, int, int); private: - #ifdef HEFFTE + #ifdef LMP_HEFFTE // the heFFTe plan supersedes the internal fft_plan_3d std::unique_ptr> heffte_plan; std::vector> heffte_workspace; From f75648030f67ec7975ee1702f93582290e5e7f06 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Tue, 31 Oct 2023 17:06:25 -0400 Subject: [PATCH 138/300] document traditional make --- doc/src/Build_settings.rst | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 828e4bb2ed2..d285f1c28cc 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -44,10 +44,11 @@ require use of an FFT library to compute 1d FFTs. The KISS FFT library is included with LAMMPS, but other libraries can be faster. LAMMPS can use them if they are available on your system. Alternatively, LAMMPS can use the -`heFFTe `_ +`heFFTe `_ library for the MPI communication algorithms, -currently heFFTe can be build only with CMake -and the value of FFT should be FFTW3 or MKL. +which comes with many optimizations for special cases, +e.g., leveraging 2D or 3D backend transforms or +better pipelining for packing and communication. .. tabs:: @@ -58,7 +59,7 @@ and the value of FFT should be FFTW3 or MKL. -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy - -D FFT_HEFFTE=value # yes or no (default), yes links to heFFTe + -D LMP_HEFFTE=value # yes or no (default), yes links to heFFTe .. note:: @@ -82,6 +83,7 @@ and the value of FFT should be FFTW3 or MKL. -D MKL_INCLUDE_DIR=path # ditto for Intel MKL library -D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries -D MKL_LIBRARY=path # path to MKL libraries + -D HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock backend -D Heffte_ROOT=path # path to an existing heFFTe installation @@ -119,6 +121,22 @@ and the value of FFT should be FFTW3 or MKL. files in its default search path. You must specify ``FFT_LIB`` with the appropriate FFT libraries to include in the link. + Traditional make can also link to heFFTe using an existing installation + + .. code-block:: make + + include /share/heffte/HeffteMakefile.in + FFT_INC = -DLMP_HEFFTE -DHEFFTE_FFTW $(heffte_include) + FFT_PATH = + FFT_LIB = $(heffte_link) $(heffte_libs) + + The heFFTe install path will contain `HeffteMakefile.in`. + which will define the `heffte_` include variables needed to link to heFFTe from + an external project using traditional make. + The `-DLMP_HEFFTE` is required to switch to using heFFTe, while the optional `-DHEFFTE_FFTW` + selects the desired heFFTe backend, e.g., `-DHEFFTE_FFTW` or `-DHEFFTE_MKL`, + omitting the variable will default to the `stock` backend. + The `KISS FFT library `_ is included in the LAMMPS distribution. It is portable across all platforms. Depending on the size of the FFTs and the number of From d0ae489ddadcd23040a1970ea72f4d5bd96c6187 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Thu, 9 Nov 2023 11:38:33 -0500 Subject: [PATCH 139/300] addressed some pr comments --- cmake/CMakeLists.txt | 2 +- cmake/Modules/Packages/KSPACE.cmake | 14 ++++++++------ doc/src/Build_settings.rst | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 37cb4985950..f7e9b314bd1 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -977,7 +977,7 @@ if(PKG_KSPACE) if (HEFFTE_BACKEND) message(STATUS "heFFTe backend: ${HEFFTE_BACKEND}") else() - message(STATUS "heFFTe backend: stock (not intended for production)") + message(STATUS "heFFTe backend: stock (builtin FFT implementation, tested for corrected but not optimized for production)") endif() if(FFT_SINGLE) message(STATUS "Using single precision FFTs") diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 202009678a8..9e8ab211608 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -46,7 +46,7 @@ else() target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() -option(LMP_HEFFTE "Use heFFTe as the distributed FFT engine, supersedes the FFT option." OFF) +option(LMP_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF) if(LMP_HEFFTE) # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte set(HEFFTE_BACKEND_VALUES FFTW MKL) @@ -60,20 +60,22 @@ if(LMP_HEFFTE) set(HEFFTE_COMPONENTS "MKL") set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe") else() - message(WARNING "HEFFTE_BACKEND not selected, defaulting to 'stock' backend, which is not intended for production") + message(WARNING "HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs") endif() - find_package(Heffte 2.3.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) + find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) if (NOT Heffte_FOUND) # download and build include(FetchContent) - FetchContent_Declare(HEFFTE_PROJECT # using v2.3.0 - URL "https://bitbucket.org/icl/heffte/get/f49e25969bd7abbcb09e338db9a5e59550c8a05a.tar.gz" - URL_HASH SHA256=27c0a8da8f7bc91c8715ecb640721ab7e0454e22f6e3f521fe5acc45c28d60a9 + FetchContent_Declare(HEFFTE_PROJECT # using v2.4.0 + URL "https://github.com/icl-utk-edu/heffte/archive/refs/tags/v2.4.0.tar.gz" + URL_HASH SHA256=02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d ) FetchContent_Populate(HEFFTE_PROJECT) add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR}) set_target_properties(lmp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set_target_properties(lammps PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + add_library(Heffte::Heffte INTERFACE IMPORTED GLOBAL) + target_link_libraries(Heffte::Heffte INTERFACE Heffte) endif() target_compile_definitions(lammps PRIVATE -DLMP_HEFFTE "-DHEFFTE_${HEFFTE_BACKEND}") diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index d285f1c28cc..b355d08238b 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -47,7 +47,7 @@ Alternatively, LAMMPS can use the `heFFTe `_ library for the MPI communication algorithms, which comes with many optimizations for special cases, -e.g., leveraging 2D or 3D backend transforms or +e.g., leveraging 2D and 3D backend transforms and better pipelining for packing and communication. .. tabs:: From bc7d0f5d504aabe1d711e5881ce932079d54b506 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Wed, 15 Nov 2023 11:53:12 -0500 Subject: [PATCH 140/300] renamed cmake option --- cmake/Modules/Packages/KSPACE.cmake | 4 ++-- doc/src/Build_settings.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 9e8ab211608..7e40e509410 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -46,8 +46,8 @@ else() target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() -option(LMP_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF) -if(LMP_HEFFTE) +option(FFT_USE_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF) +if(FFT_USE_HEFFTE) # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte set(HEFFTE_BACKEND_VALUES FFTW MKL) set(HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index b355d08238b..630be1d8eb3 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -59,7 +59,7 @@ better pipelining for packing and communication. -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy - -D LMP_HEFFTE=value # yes or no (default), yes links to heFFTe + -D FFT_USE_HEFFTE=value # yes or no (default), yes links to heFFTe .. note:: From 3c331321b3b5c737f975bc1653cff3c1a660826e Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Wed, 15 Nov 2023 17:16:04 -0500 Subject: [PATCH 141/300] update the naming convention --- cmake/Modules/Packages/KSPACE.cmake | 14 +++++++------- doc/src/Build_settings.rst | 8 ++++---- src/KSPACE/fft3d_wrap.cpp | 8 ++++---- src/KSPACE/fft3d_wrap.h | 12 ++++++------ 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 7e40e509410..9c9c879cd4a 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -49,18 +49,18 @@ endif() option(FFT_USE_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF) if(FFT_USE_HEFFTE) # if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte - set(HEFFTE_BACKEND_VALUES FFTW MKL) - set(HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") - set_property(CACHE HEFFTE_BACKEND PROPERTY STRINGS ${HEFFTE_BACKEND_VALUES}) + set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL) + set(FFT_HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL") + set_property(CACHE FFT_HEFFTE_BACKEND PROPERTY STRINGS ${FFT_HEFFTE_BACKEND_VALUES}) - if(HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL + if(FFT_HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL set(HEFFTE_COMPONENTS "FFTW") set(Heffte_ENABLE_FFTW "ON" CACHE BOOL "Enables FFTW backend for heFFTe") - elseif(HEFFTE_BACKEND STREQUAL "MKL") + elseif(FFT_HEFFTE_BACKEND STREQUAL "MKL") set(HEFFTE_COMPONENTS "MKL") set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe") else() - message(WARNING "HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs") + message(WARNING "FFT_HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs") endif() find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS}) @@ -78,7 +78,7 @@ if(FFT_USE_HEFFTE) target_link_libraries(Heffte::Heffte INTERFACE Heffte) endif() - target_compile_definitions(lammps PRIVATE -DLMP_HEFFTE "-DHEFFTE_${HEFFTE_BACKEND}") + target_compile_definitions(lammps PRIVATE -DFFT_HEFFTE "-DFFT_HEFFTE_${FFT_HEFFTE_BACKEND}") target_link_libraries(lammps PRIVATE Heffte::Heffte) endif() diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 630be1d8eb3..d0004da6062 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -83,7 +83,7 @@ better pipelining for packing and communication. -D MKL_INCLUDE_DIR=path # ditto for Intel MKL library -D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries -D MKL_LIBRARY=path # path to MKL libraries - -D HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock backend + -D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock backend -D Heffte_ROOT=path # path to an existing heFFTe installation @@ -126,15 +126,15 @@ better pipelining for packing and communication. .. code-block:: make include /share/heffte/HeffteMakefile.in - FFT_INC = -DLMP_HEFFTE -DHEFFTE_FFTW $(heffte_include) + FFT_INC = -DFFT_HEFFTE -DFFT_HEFFTE_FFTW $(heffte_include) FFT_PATH = FFT_LIB = $(heffte_link) $(heffte_libs) The heFFTe install path will contain `HeffteMakefile.in`. which will define the `heffte_` include variables needed to link to heFFTe from an external project using traditional make. - The `-DLMP_HEFFTE` is required to switch to using heFFTe, while the optional `-DHEFFTE_FFTW` - selects the desired heFFTe backend, e.g., `-DHEFFTE_FFTW` or `-DHEFFTE_MKL`, + The `-DFFT_HEFFTE` is required to switch to using heFFTe, while the optional `-DFFT_HEFFTE_FFTW` + selects the desired heFFTe backend, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`, omitting the variable will default to the `stock` backend. The `KISS FFT library `_ is diff --git a/src/KSPACE/fft3d_wrap.cpp b/src/KSPACE/fft3d_wrap.cpp index c79ba8a780f..7b00543eeab 100644 --- a/src/KSPACE/fft3d_wrap.cpp +++ b/src/KSPACE/fft3d_wrap.cpp @@ -27,7 +27,7 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, int out_klo, int out_khi, int scaled, int permute, int *nbuf, int usecollective) : Pointers(lmp) { - #ifndef LMP_HEFFTE + #ifndef FFT_HEFFTE plan = fft_3d_create_plan(comm,nfast,nmid,nslow, in_ilo,in_ihi,in_jlo,in_jhi,in_klo,in_khi, out_ilo,out_ihi,out_jlo,out_jhi,out_klo,out_khi, @@ -56,7 +56,7 @@ FFT3d::FFT3d(LAMMPS *lmp, MPI_Comm comm, int nfast, int nmid, int nslow, FFT3d::~FFT3d() { - #ifndef LMP_HEFFTE + #ifndef FFT_HEFFTE fft_3d_destroy_plan(plan); #endif } @@ -65,7 +65,7 @@ FFT3d::~FFT3d() void FFT3d::compute(FFT_SCALAR *in, FFT_SCALAR *out, int flag) { - #ifndef LMP_HEFFTE + #ifndef FFT_HEFFTE fft_3d((FFT_DATA *) in,(FFT_DATA *) out,flag,plan); #else if (flag == 1) @@ -86,7 +86,7 @@ void FFT3d::compute(FFT_SCALAR *in, FFT_SCALAR *out, int flag) void FFT3d::timing1d(FFT_SCALAR *in, int nsize, int flag) { - #ifndef LMP_HEFFTE + #ifndef FFT_HEFFTE fft_1d_only((FFT_DATA *) in,nsize,flag,plan); #endif } diff --git a/src/KSPACE/fft3d_wrap.h b/src/KSPACE/fft3d_wrap.h index 505b4b195ce..04b828b7de5 100644 --- a/src/KSPACE/fft3d_wrap.h +++ b/src/KSPACE/fft3d_wrap.h @@ -17,18 +17,18 @@ #include "fft3d.h" // IWYU pragma: export #include "pointers.h" -#ifdef LMP_HEFFTE +#ifdef FFT_HEFFTE #include "heffte.h" // select the backend -#if defined(HEFFTE_FFTW) +#if defined(FFT_HEFFTE_FFTW) using heffte_backend = heffte::backend::fftw; -#elif defined(HEFFTE_MKL) +#elif defined(FFT_HEFFTE_MKL) using heffte_backend = heffte::backend::mkl; -#elif defined(HEFFTE_) +#else using heffte_backend = heffte::backend::stock; #endif -#endif // LMP_HEFFTE +#endif // FFT_HEFFTE namespace LAMMPS_NS { @@ -43,7 +43,7 @@ class FFT3d : protected Pointers { void timing1d(FFT_SCALAR *, int, int); private: - #ifdef LMP_HEFFTE + #ifdef FFT_HEFFTE // the heFFTe plan supersedes the internal fft_plan_3d std::unique_ptr> heffte_plan; std::vector> heffte_workspace; From e41d9cb7467563af6102fdb0d7c693f6a8d9a126 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Fri, 1 Dec 2023 15:21:23 -0500 Subject: [PATCH 142/300] added explanations about the stock backend to the cmake --- doc/src/Build_settings.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index d0004da6062..e2b096c6e05 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -86,6 +86,12 @@ better pipelining for packing and communication. -D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock backend -D Heffte_ROOT=path # path to an existing heFFTe installation + .. note:: + + heFFTe comes with a builtin stock backend for FFTs; however, the backend + is intended for testing purposes and is not performance optimized + for large scale production runs. + .. tab:: Traditional make @@ -136,6 +142,8 @@ better pipelining for packing and communication. The `-DFFT_HEFFTE` is required to switch to using heFFTe, while the optional `-DFFT_HEFFTE_FFTW` selects the desired heFFTe backend, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`, omitting the variable will default to the `stock` backend. + The heFFTe `stock` backend is intended to be used for testing and debugging, + but is not performance optimized for large scale production runs. The `KISS FFT library `_ is included in the LAMMPS distribution. It is portable across all From 782ca9e0ff366c8a2e540bfc08d558155357fac5 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Fri, 1 Dec 2023 14:46:30 -0700 Subject: [PATCH 143/300] Thread over neighbors in addition to atoms when using a half neighbor list --- src/KOKKOS/kokkos.cpp | 4 +- src/KOKKOS/pair_kokkos.h | 318 ++++++++++++++++++++++++++++----------- 2 files changed, 236 insertions(+), 86 deletions(-) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index c963cd52d0c..5572f69901a 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -608,8 +608,8 @@ void KokkosLMP::accelerator(int narg, char **arg) force->newton = force->newton_pair = force->newton_bond = newtonflag; - if (neigh_thread && neighflag != FULL) - error->all(FLERR,"Must use KOKKOS package option 'neigh full' with 'neigh/thread on'"); + if (neigh_thread && newtonflag) + error->all(FLERR,"Must use KOKKOS package option 'newton off' with 'neigh/thread on'"); neighbor->binsize_user = binsize; if (binsize <= 0.0) neighbor->binsizeflag = 0; diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index d3c766f5ae4..c0b81cc5941 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -116,6 +116,7 @@ struct PairComputeFunctor { // Loop over neighbors of one atom without coulomb interaction // This function is called in parallel + template KOKKOS_FUNCTION EV_FLOAT compute_item(const int& ii, @@ -161,7 +162,7 @@ struct PairComputeFunctor { fytmp += dely*fpair; fztmp += delz*fpair; - if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < c.nlocal)) { + if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && (NEWTON_PAIR || j < c.nlocal)) { a_f(j,0) -= delx*fpair; a_f(j,1) -= dely*fpair; a_f(j,2) -= delz*fpair; @@ -169,9 +170,9 @@ struct PairComputeFunctor { if (EVFLAG) { F_FLOAT evdwl = 0.0; - if (c.eflag) { + if (c.eflag_either) { evdwl = factor_lj * c.template compute_evdwl(rsq,i,j,itype,jtype); - ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD)&&(NEWTON_PAIR||(j KOKKOS_FUNCTION EV_FLOAT compute_item(const int& ii, @@ -241,7 +243,7 @@ struct PairComputeFunctor { fytmp += dely*fpair; fztmp += delz*fpair; - if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < c.nlocal)) { + if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && (NEWTON_PAIR || j < c.nlocal)) { a_f(j,0) -= delx*fpair; a_f(j,1) -= dely*fpair; a_f(j,2) -= delz*fpair; @@ -250,14 +252,14 @@ struct PairComputeFunctor { if (EVFLAG) { F_FLOAT evdwl = 0.0; F_FLOAT ecoul = 0.0; - if (c.eflag) { + if (c.eflag_either) { if (rsq < (STACKPARAMS?c.m_cut_ljsq[itype][jtype]:c.d_cut_ljsq(itype,jtype))) { evdwl = factor_lj * c.template compute_evdwl(rsq,i,j,itype,jtype); - ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD)&&(NEWTON_PAIR||(j(rsq,i,j,itype,jtype,factor_coul,qtmp); - ev.ecoul += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD)&&(NEWTON_PAIR||(j::member_type team, const NeighListKokkos &list, const NoCoulTag&) const { + auto a_f = dup_f.template access::value>(); + const int inum = team.league_size(); const int atoms_per_team = team.team_size(); const int firstatom = team.league_rank()*atoms_per_team; @@ -292,7 +297,7 @@ struct PairComputeFunctor { const X_FLOAT ztmp = c.x(i,2); const int itype = c.type(i); - if (ZEROFLAG) { + if (NEIGHFLAG == FULL && ZEROFLAG) { Kokkos::single(Kokkos::PerThread(team), [&] (){ f(i,0) = 0.0; f(i,1) = 0.0; @@ -321,35 +326,49 @@ struct PairComputeFunctor { const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); - ftmp.x += delx*fpair; - ftmp.y += dely*fpair; - ftmp.z += delz*fpair; + const F_FLOAT fx = delx*fpair; + const F_FLOAT fy = dely*fpair; + const F_FLOAT fz = delz*fpair; + + ftmp.x += fx; + ftmp.y += fy; + ftmp.z += fz; + + if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal) { + a_f(j,0) -= fx; + a_f(j,1) -= fy; + a_f(j,2) -= fz; + } } },fsum); Kokkos::single(Kokkos::PerThread(team), [&] () { - f(i,0) += fsum.x; - f(i,1) += fsum.y; - f(i,2) += fsum.z; + a_f(i,0) += fsum.x; + a_f(i,1) += fsum.y; + a_f(i,2) += fsum.z; }); }); } - // Use TeamPolicy, assume Newton off, Full Neighborlist, and no energy/virial + // TeamPolicy, newton off, and no energy/virial // Loop over neighbors of one atom with coulomb interaction // This function is called in parallel + KOKKOS_FUNCTION void compute_item_team(typename Kokkos::TeamPolicy::member_type team, const NeighListKokkos &list, const CoulTag& ) const { + auto a_f = dup_f.template access::value>(); + const int inum = team.league_size(); const int atoms_per_team = team.team_size(); int firstatom = team.league_rank()*atoms_per_team; int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; Kokkos::parallel_for(Kokkos::TeamThreadRange(team, firstatom, lastatom), [&] (const int &ii) { + const int i = list.d_ilist[ii]; const X_FLOAT xtmp = c.x(i,0); const X_FLOAT ytmp = c.x(i,1); @@ -357,8 +376,9 @@ struct PairComputeFunctor { const int itype = c.type(i); const F_FLOAT qtmp = c.q(i); - if (ZEROFLAG) { - Kokkos::single(Kokkos::PerThread(team), [&] (){ + if (NEIGHFLAG == FULL && ZEROFLAG) { + Kokkos::single(Kokkos::PerThread(team), [&] () + { f(i,0) = 0.0; f(i,1) = 0.0; f(i,2) = 0.0; @@ -391,34 +411,50 @@ struct PairComputeFunctor { if (rsq < (STACKPARAMS?c.m_cut_coulsq[itype][jtype]:c.d_cut_coulsq(itype,jtype))) fpair+=c.template compute_fcoul(rsq,i,j,itype,jtype,factor_coul,qtmp); - ftmp.x += delx*fpair; - ftmp.y += dely*fpair; - ftmp.z += delz*fpair; + const F_FLOAT fx = delx*fpair; + const F_FLOAT fy = dely*fpair; + const F_FLOAT fz = delz*fpair; + + ftmp.x += fx; + ftmp.y += fy; + ftmp.z += fz; + + if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal) { + a_f(j,0) -= fx; + a_f(j,1) -= fy; + a_f(j,2) -= fz; + } } + },fsum); Kokkos::single(Kokkos::PerThread(team), [&] () { - f(i,0) += fsum.x; - f(i,1) += fsum.y; - f(i,2) += fsum.z; + a_f(i,0) += fsum.x; + a_f(i,1) += fsum.y; + a_f(i,2) += fsum.z; }); }); } - - // Use TeamPolicy, assume Newton off, Full Neighborlist, and energy/virial + // TeamPolicy, newton off, and energy/virial // Loop over neighbors of one atom without coulomb interaction // This function is called in parallel + KOKKOS_FUNCTION EV_FLOAT compute_item_team_ev(typename Kokkos::TeamPolicy::member_type team, const NeighListKokkos &list, const NoCoulTag&) const { + auto a_f = dup_f.template access::value>(); + auto a_eatom = dup_eatom.template access::value>(); + auto a_vatom = dup_vatom.template access::value>(); + EV_FLOAT ev; const int inum = team.league_size(); const int atoms_per_team = team.team_size(); const int firstatom = team.league_rank()*atoms_per_team; const int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, firstatom, lastatom), [&] (const int &ii) { const int i = list.d_ilist[ii]; @@ -427,8 +463,9 @@ struct PairComputeFunctor { const X_FLOAT ztmp = c.x(i,2); const int itype = c.type(i); - if (ZEROFLAG) { - Kokkos::single(Kokkos::PerThread(team), [&] (){ + if (NEIGHFLAG == FULL && ZEROFLAG) { + Kokkos::single(Kokkos::PerThread(team), [&] () + { f(i,0) = 0.0; f(i,1) = 0.0; f(i,2) = 0.0; @@ -456,37 +493,85 @@ struct PairComputeFunctor { const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); - fev_tmp.f[0] += delx*fpair; - fev_tmp.f[1] += dely*fpair; - fev_tmp.f[2] += delz*fpair; + const F_FLOAT fx = delx*fpair; + const F_FLOAT fy = dely*fpair; + const F_FLOAT fz = delz*fpair; + + fev_tmp.f[0] += fx; + fev_tmp.f[1] += fy; + fev_tmp.f[2] += fz; + + const int I_CONTRIB = (NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD); + const int J_CONTRIB = ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal); + const E_FLOAT factor = J_CONTRIB?1.0:0.5; + + if (J_CONTRIB) { + a_f(j,0) -= fx; + a_f(j,1) -= fy; + a_f(j,2) -= fz; + } F_FLOAT evdwl = 0.0; - if (c.eflag) { + if (c.eflag_either) { evdwl = factor_lj * c.template compute_evdwl(rsq,i,j,itype,jtype); - fev_tmp.evdwl += 0.5*evdwl; + fev_tmp.evdwl += factor * evdwl; + + if (c.eflag_atom) { + const E_FLOAT epairhalf = 0.5 * evdwl; + + if (I_CONTRIB) + a_eatom[i] += epairhalf; + + if (J_CONTRIB) + a_eatom[j] += epairhalf; + } } + if (c.vflag_either) { - fev_tmp.v[0] += 0.5*delx*delx*fpair; - fev_tmp.v[1] += 0.5*dely*dely*fpair; - fev_tmp.v[2] += 0.5*delz*delz*fpair; - fev_tmp.v[3] += 0.5*delx*dely*fpair; - fev_tmp.v[4] += 0.5*delx*delz*fpair; - fev_tmp.v[5] += 0.5*dely*delz*fpair; + 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; + + fev_tmp.v[0] += factor*v0; + fev_tmp.v[1] += factor*v1; + fev_tmp.v[2] += factor*v2; + fev_tmp.v[3] += factor*v3; + fev_tmp.v[4] += factor*v4; + fev_tmp.v[5] += factor*v5; + + if (c.vflag_atom) { + if (I_CONTRIB) { + a_vatom(i,0) += 0.5*v0; + a_vatom(i,1) += 0.5*v1; + a_vatom(i,2) += 0.5*v2; + a_vatom(i,3) += 0.5*v3; + a_vatom(i,4) += 0.5*v4; + a_vatom(i,5) += 0.5*v5; + } + if (J_CONTRIB) { + a_vatom(j,0) += 0.5*v0; + a_vatom(j,1) += 0.5*v1; + a_vatom(j,2) += 0.5*v2; + a_vatom(j,3) += 0.5*v3; + a_vatom(j,4) += 0.5*v4; + a_vatom(j,5) += 0.5*v5; + } + } } } },fev); Kokkos::single(Kokkos::PerThread(team), [&] () { - f(i,0) += fev.f[0]; - f(i,1) += fev.f[1]; - f(i,2) += fev.f[2]; + a_f(i,0) += fev.f[0]; + a_f(i,1) += fev.f[1]; + a_f(i,2) += fev.f[2]; if (c.eflag_global) ev.evdwl += fev.evdwl; - if (c.eflag_atom) - d_eatom(i) += fev.evdwl; - if (c.vflag_global) { ev.v[0] += fev.v[0]; ev.v[1] += fev.v[1]; @@ -496,26 +581,37 @@ struct PairComputeFunctor { ev.v[5] += fev.v[5]; } - if (c.vflag_atom) { - d_vatom(i,0) += fev.v[0]; - d_vatom(i,1) += fev.v[1]; - d_vatom(i,2) += fev.v[2]; - d_vatom(i,3) += fev.v[3]; - d_vatom(i,4) += fev.v[4]; - d_vatom(i,5) += fev.v[5]; + if (NEIGHFLAG == FULL) { + + if (c.eflag_atom) + a_eatom(i) += fev.evdwl; + + if (c.vflag_atom) { + a_vatom(i,0) += fev.v[0]; + a_vatom(i,1) += fev.v[1]; + a_vatom(i,2) += fev.v[2]; + a_vatom(i,3) += fev.v[3]; + a_vatom(i,4) += fev.v[4]; + a_vatom(i,5) += fev.v[5]; + } } }); }); return ev; } - // Use TeamPolicy, assume Newton off, Full Neighborlist, and energy/virial + // TeamPolicy, newton off, and energy/virial // Loop over neighbors of one atom with coulomb interaction // This function is called in parallel + KOKKOS_FUNCTION EV_FLOAT compute_item_team_ev(typename Kokkos::TeamPolicy::member_type team, const NeighListKokkos &list, const CoulTag& ) const { + auto a_f = dup_f.template access::value>(); + auto a_eatom = dup_eatom.template access::value>(); + auto a_vatom = dup_vatom.template access::value>(); + EV_FLOAT ev; const int inum = team.league_size(); @@ -566,45 +662,92 @@ struct PairComputeFunctor { if (rsq < (STACKPARAMS?c.m_cut_coulsq[itype][jtype]:c.d_cut_coulsq(itype,jtype))) fpair+=c.template compute_fcoul(rsq,i,j,itype,jtype,factor_coul,qtmp); - fev_tmp.f[0] += delx*fpair; - fev_tmp.f[1] += dely*fpair; - fev_tmp.f[2] += delz*fpair; + const F_FLOAT fx = delx*fpair; + const F_FLOAT fy = dely*fpair; + const F_FLOAT fz = delz*fpair; + + fev_tmp.f[0] += fx; + fev_tmp.f[1] += fy; + fev_tmp.f[2] += fz; + + const int I_CONTRIB = (NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD); + const int J_CONTRIB = ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal); + const E_FLOAT factor = J_CONTRIB?1.0:0.5; + + if ((NEIGHFLAG == HALF || NEIGHFLAG == HALFTHREAD) && j < c.nlocal) { + a_f(j,0) -= fx; + a_f(j,1) -= fy; + a_f(j,2) -= fz; + } F_FLOAT evdwl = 0.0; F_FLOAT ecoul = 0.0; - if (c.eflag) { + if (c.eflag_either) { if (rsq < (STACKPARAMS?c.m_cut_ljsq[itype][jtype]:c.d_cut_ljsq(itype,jtype))) { evdwl = factor_lj * c.template compute_evdwl(rsq,i,j,itype,jtype); - fev_tmp.evdwl += 0.5*evdwl; + fev_tmp.evdwl += factor * evdwl; } if (rsq < (STACKPARAMS?c.m_cut_coulsq[itype][jtype]:c.d_cut_coulsq(itype,jtype))) { ecoul = c.template compute_ecoul(rsq,i,j,itype,jtype,factor_coul,qtmp); - fev_tmp.ecoul += 0.5*ecoul; + fev_tmp.ecoul += factor * ecoul; + } + + + if (c.eflag_atom) { + const E_FLOAT epairhalf = 0.5 * (evdwl + ecoul); + + if (I_CONTRIB) + a_eatom[i] += epairhalf; + + if (J_CONTRIB) + a_eatom[j] += epairhalf; } } + if (c.vflag_either) { - fev_tmp.v[0] += 0.5*delx*delx*fpair; - fev_tmp.v[1] += 0.5*dely*dely*fpair; - fev_tmp.v[2] += 0.5*delz*delz*fpair; - fev_tmp.v[3] += 0.5*delx*dely*fpair; - fev_tmp.v[4] += 0.5*delx*delz*fpair; - fev_tmp.v[5] += 0.5*dely*delz*fpair; + 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; + + fev_tmp.v[0] += factor*v0; + fev_tmp.v[1] += factor*v1; + fev_tmp.v[2] += factor*v2; + fev_tmp.v[3] += factor*v3; + fev_tmp.v[4] += factor*v4; + fev_tmp.v[5] += factor*v5; + + if (c.vflag_atom) { + if (I_CONTRIB) { + a_vatom(i,0) += 0.5*v0; + a_vatom(i,1) += 0.5*v1; + a_vatom(i,2) += 0.5*v2; + a_vatom(i,3) += 0.5*v3; + a_vatom(i,4) += 0.5*v4; + a_vatom(i,5) += 0.5*v5; + } + if (J_CONTRIB) { + a_vatom(j,0) += 0.5*v0; + a_vatom(j,1) += 0.5*v1; + a_vatom(j,2) += 0.5*v2; + a_vatom(j,3) += 0.5*v3; + a_vatom(j,4) += 0.5*v4; + a_vatom(j,5) += 0.5*v5; + } + } } } },fev); Kokkos::single(Kokkos::PerThread(team), [&] () { - f(i,0) += fev.f[0]; - f(i,1) += fev.f[1]; - f(i,2) += fev.f[2]; + a_f(i,0) += fev.f[0]; + a_f(i,1) += fev.f[1]; + a_f(i,2) += fev.f[2]; - if (c.eflag_global) { + if (c.eflag_global) ev.evdwl += fev.evdwl; - ev.ecoul += fev.ecoul; - } - - if (c.eflag_atom) - d_eatom(i) += fev.evdwl + fev.ecoul; if (c.vflag_global) { ev.v[0] += fev.v[0]; @@ -615,13 +758,19 @@ struct PairComputeFunctor { ev.v[5] += fev.v[5]; } - if (c.vflag_atom) { - d_vatom(i,0) += fev.v[0]; - d_vatom(i,1) += fev.v[1]; - d_vatom(i,2) += fev.v[2]; - d_vatom(i,3) += fev.v[3]; - d_vatom(i,4) += fev.v[4]; - d_vatom(i,5) += fev.v[5]; + if (NEIGHFLAG == FULL) { + + if (c.eflag_atom) + a_eatom(i) += fev.evdwl; + + if (c.vflag_atom) { + a_vatom(i,0) += fev.v[0]; + a_vatom(i,1) += fev.v[1]; + a_vatom(i,2) += fev.v[2]; + a_vatom(i,3) += fev.v[3]; + a_vatom(i,4) += fev.v[4]; + a_vatom(i,5) += fev.v[5]; + } } }); }); @@ -636,7 +785,7 @@ struct PairComputeFunctor { auto a_eatom = dup_eatom.template access::value>(); auto a_vatom = dup_vatom.template access::value>(); - const int EFLAG = c.eflag; + const int EFLAG = c.eflag_either; const int NEWTON_PAIR = c.newton_pair; const int VFLAG = c.vflag_either; @@ -657,7 +806,7 @@ struct PairComputeFunctor { const E_FLOAT v5 = dely*delz*fpair; if (c.vflag_global) { - if (NEIGHFLAG!=FULL) { + if (NEIGHFLAG != FULL) { if (NEWTON_PAIR) { ev.v[0] += v0; ev.v[1] += v1; @@ -747,7 +896,8 @@ struct PairComputeFunctor { // This uses the fact that failure to match template parameters is not an error. // By having the enable_if with a ! and without it, exactly one of the functions // pair_compute_neighlist will match - either the dummy version -// or the real one further below. +// or the real one further below + template EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t*> list) { EV_FLOAT ev; From 21701a5eac98e727d638ee3af06b716388c1f76c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 2 Dec 2023 16:34:32 -0500 Subject: [PATCH 144/300] correct dpi to get proper image scaling in PDF output --- doc/src/compute_saed.rst | 2 +- doc/src/img/saed_mesh.jpg | Bin 110946 -> 0 bytes doc/src/img/saed_mesh.png | Bin 0 -> 92096 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 doc/src/img/saed_mesh.jpg create mode 100644 doc/src/img/saed_mesh.png diff --git a/doc/src/compute_saed.rst b/doc/src/compute_saed.rst index 9ec455d03be..3079afb7cef 100644 --- a/doc/src/compute_saed.rst +++ b/doc/src/compute_saed.rst @@ -68,7 +68,7 @@ reciprocal lattice nodes. The mesh spacing is defined either (a) by the entire simulation domain or (b) manually using selected values as shown in the 2D diagram below. -.. image:: img/saed_mesh.jpg +.. image:: img/saed_mesh.png :scale: 75% :align: center diff --git a/doc/src/img/saed_mesh.jpg b/doc/src/img/saed_mesh.jpg deleted file mode 100644 index 7b0bf4117f1397345fda738cba8c4229081560ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110946 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 z 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 diff --git a/doc/src/img/saed_mesh.png b/doc/src/img/saed_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..bd558ce072e40e1eee9a5384064fedbef908e57a GIT binary patch literal 92096 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 B97q5F literal 0 HcmV?d00001 From c0cab665e40c0926a2499ff7b22c9bb938ecb12a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 3 Dec 2023 04:18:44 -0500 Subject: [PATCH 145/300] complete printf format --- tools/msi2lmp/src/SearchAndFill.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/msi2lmp/src/SearchAndFill.c b/tools/msi2lmp/src/SearchAndFill.c index 7a7a1032ea3..ce344c5ab6e 100644 --- a/tools/msi2lmp/src/SearchAndFill.c +++ b/tools/msi2lmp/src/SearchAndFill.c @@ -93,7 +93,7 @@ void SearchAndFill(struct FrcFieldItem *item) file_pos = ftell(FrcF); if (file_pos < 0) { - fprintf(stderr, "Could not obtain file stream position: ", strerror(errno)); + fprintf(stderr, "Could not obtain file stream position: %s\n", strerror(errno)); exit(2); } From 47edf5effa5c6a1e64e39778f6c8feec3a9fa30c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 3 Dec 2023 04:33:00 -0500 Subject: [PATCH 146/300] use memory class for memory allocation consistently --- src/MDI/mdi_plugin.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/MDI/mdi_plugin.cpp b/src/MDI/mdi_plugin.cpp index d7805d0cba3..92b78b6afbd 100644 --- a/src/MDI/mdi_plugin.cpp +++ b/src/MDI/mdi_plugin.cpp @@ -20,6 +20,7 @@ #include "error.h" #include "input.h" +#include "memory.h" #include "modify.h" #include @@ -67,12 +68,12 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp) // do variable substitution in multiple word extra_arg int ncopy = strlen(extra_arg) + 1; - char *copy = (char *) malloc(ncopy); + char *copy = (char *) memory->smalloc(ncopy,"mdi_plugin:copy"); strncpy(copy, extra_arg, ncopy); - char *work = (char *) malloc(ncopy); + char *work = (char *) memory->smalloc(ncopy,"mdi_plugin:work"); int nwork = ncopy; input->substitute(copy, work, ncopy, nwork, 0); - free(work); + memory->sfree(work); extra_arg = copy; iarg += 2; @@ -83,12 +84,12 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp) // do variable substitution in multiple word lammps_command int ncopy = strlen(lammps_command) + 1; - char *copy = (char *) malloc(ncopy); - strncpy(copy, extra_arg, ncopy); - char *work = (char *) malloc(ncopy); + char *copy = (char *) memory->smalloc(ncopy,"mdi_plugin:work"); + strncpy(copy, lammps_command, ncopy); + char *work = (char *) memory->smalloc(ncopy,"mdi_plugin:work"); int nwork = ncopy; input->substitute(copy, work, ncopy, nwork, 0); - free(work); + memory->sfree(work); lammps_command = copy; iarg += 2; @@ -128,8 +129,8 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp) MDI_Launch_plugin(plugin_name, plugin_args, &world, plugin_wrapper, (void *) this); delete[] plugin_args; - delete[] extra_arg; - delete[] lammps_command; + memory->sfree(extra_arg); + memory->sfree(lammps_command); } /* ---------------------------------------------------------------------- From 2a245f780a8013d0fe5fbc13715cbda38e24a2f6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 3 Dec 2023 04:45:53 -0500 Subject: [PATCH 147/300] initialize class members --- src/MDI/fix_mdi_qm.cpp | 11 +++++++++++ src/MDI/fix_mdi_qmmm.cpp | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/MDI/fix_mdi_qm.cpp b/src/MDI/fix_mdi_qm.cpp index 3ff6b22764f..ff2c667f1ce 100644 --- a/src/MDI/fix_mdi_qm.cpp +++ b/src/MDI/fix_mdi_qm.cpp @@ -48,6 +48,17 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : if (atom->map_style == Atom::MAP_NONE) error->all(FLERR, "Fix mdi/qm requires an atom map be defined"); + // initialize class members + + plugin = 0; + natoms_exists = 0; + celldispl_exists = 0; + elements_exists = 0; + types_exists = 0; + stress_exists = 0; + pe_exists = 0; + keelec_exists = 0; + // confirm LAMMPS is being run as a driver int role; diff --git a/src/MDI/fix_mdi_qmmm.cpp b/src/MDI/fix_mdi_qmmm.cpp index 8e63a344724..958b5ec3121 100644 --- a/src/MDI/fix_mdi_qmmm.cpp +++ b/src/MDI/fix_mdi_qmmm.cpp @@ -53,6 +53,18 @@ FixMDIQMMM::FixMDIQMMM(LAMMPS *lmp, int narg, char **arg) : if (atom->map_style == Atom::MAP_NONE) error->all(FLERR, "Fix mdi/qmmm requires an atom map be defined"); + // initialize class members + + plugin = 0; + maxlocal = 0; + natoms_exists = 0; + celldispl_exists = 0; + elements_exists = 0; + types_exists = 0; + stress_exists = 0; + pe_exists = 0; + keelec_exists = 0; + // confirm LAMMPS is being run as a driver int role; From e0862c6618fbd35e0079ed25b451ddcb9f824fcd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 3 Dec 2023 11:22:03 -0500 Subject: [PATCH 148/300] must do region check only when region is active --- src/MC/fix_gcmc.cpp | 43 ++++++++++++++++++++++++++++--------------- src/MC/fix_widom.cpp | 44 +++++++++++++++++++++++++++++--------------- 2 files changed, 57 insertions(+), 30 deletions(-) diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp index ff8c5eb9c96..2e29b403fd1 100644 --- a/src/MC/fix_gcmc.cpp +++ b/src/MC/fix_gcmc.cpp @@ -89,6 +89,7 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) : ngroups = 0; ngrouptypes = 0; + triclinic = domain->triclinic; // required args @@ -123,8 +124,7 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) : // error checks on region and its extent being inside simulation box - region_xlo = region_xhi = region_ylo = region_yhi = - region_zlo = region_zhi = 0.0; + region_xlo = region_xhi = region_ylo = region_yhi = region_zlo = region_zhi = 0.0; if (region) { if (region->bboxflag == 0) error->all(FLERR,"Fix gcmc region does not support a bounding box"); @@ -298,8 +298,7 @@ void FixGCMC::options(int narg, char **arg) } else if (strcmp(arg[iarg],"region") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command"); region = domain->get_region_by_id(arg[iarg+1]); - if (!region) - error->all(FLERR,"Region {} for fix gcmc does not exist",arg[iarg+1]); + if (!region) error->all(FLERR,"Region {} for fix gcmc does not exist",arg[iarg+1]); idregion = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"maxangle") == 0) { @@ -464,6 +463,8 @@ int FixGCMC::setmask() void FixGCMC::init() { + triclinic = domain->triclinic; + // set index and check validity of region if (idregion) { @@ -471,19 +472,31 @@ void FixGCMC::init() if (!region) error->all(FLERR, "Region {} for fix gcmc does not exist", idregion); } - triclinic = domain->triclinic; + if (region) { + if (region->bboxflag == 0) + error->all(FLERR,"Fix gcmc region does not support a bounding box"); + if (region->dynamic_check()) + error->all(FLERR,"Fix gcmc region cannot be dynamic"); - if (triclinic) { - if ((region_xlo < domain->boxlo_bound[0]) || (region_xhi > domain->boxhi_bound[0]) || - (region_ylo < domain->boxlo_bound[1]) || (region_yhi > domain->boxhi_bound[1]) || - (region_zlo < domain->boxlo_bound[2]) || (region_zhi > domain->boxhi_bound[2])) { - error->all(FLERR,"Fix gcmc region extends outside simulation box"); + region_xlo = region->extent_xlo; + region_xhi = region->extent_xhi; + region_ylo = region->extent_ylo; + region_yhi = region->extent_yhi; + region_zlo = region->extent_zlo; + region_zhi = region->extent_zhi; + + if (triclinic) { + if ((region_xlo < domain->boxlo_bound[0]) || (region_xhi > domain->boxhi_bound[0]) || + (region_ylo < domain->boxlo_bound[1]) || (region_yhi > domain->boxhi_bound[1]) || + (region_zlo < domain->boxlo_bound[2]) || (region_zhi > domain->boxhi_bound[2])) { + error->all(FLERR,"Fix gcmc region extends outside simulation box"); + } + } else { + if ((region_xlo < domain->boxlo[0]) || (region_xhi > domain->boxhi[0]) || + (region_ylo < domain->boxlo[1]) || (region_yhi > domain->boxhi[1]) || + (region_zlo < domain->boxlo[2]) || (region_zhi > domain->boxhi[2])) + error->all(FLERR,"Fix gcmc region extends outside simulation box"); } - } else { - if ((region_xlo < domain->boxlo[0]) || (region_xhi > domain->boxhi[0]) || - (region_ylo < domain->boxlo[1]) || (region_yhi > domain->boxhi[1]) || - (region_zlo < domain->boxlo[2]) || (region_zhi > domain->boxhi[2])) - error->all(FLERR,"Fix gcmc region extends outside simulation box"); } // set probabilities for MC moves diff --git a/src/MC/fix_widom.cpp b/src/MC/fix_widom.cpp index cc2f1bc94d9..7869b213a06 100644 --- a/src/MC/fix_widom.cpp +++ b/src/MC/fix_widom.cpp @@ -73,6 +73,8 @@ FixWidom::FixWidom(LAMMPS *lmp, int narg, char **arg) : restart_global = 1; time_depend = 1; + triclinic = domain->triclinic; + // required args nevery = utils::inumeric(FLERR,arg[3],false,lmp); @@ -111,18 +113,6 @@ FixWidom::FixWidom(LAMMPS *lmp, int narg, char **arg) : region_zlo = region->extent_zlo; region_zhi = region->extent_zhi; - if (triclinic) { - if ((region_xlo < domain->boxlo_bound[0]) || (region_xhi > domain->boxhi_bound[0]) || - (region_ylo < domain->boxlo_bound[1]) || (region_yhi > domain->boxhi_bound[1]) || - (region_zlo < domain->boxlo_bound[2]) || (region_zhi > domain->boxhi_bound[2])) - error->all(FLERR,"Fix widom region {} extends outside simulation box", region->id); - } else { - if ((region_xlo < domain->boxlo[0]) || (region_xhi > domain->boxhi[0]) || - (region_ylo < domain->boxlo[1]) || (region_yhi > domain->boxhi[1]) || - (region_zlo < domain->boxlo[2]) || (region_zhi > domain->boxhi[2])) - error->all(FLERR,"Fix widom region {} extends outside simulation box", region->id); - } - // estimate region volume using MC trials double coord[3]; @@ -216,8 +206,7 @@ void FixWidom::options(int narg, char **arg) } else if (strcmp(arg[iarg],"region") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix widom command"); region = domain->get_region_by_id(arg[iarg+1]); - if (!region) - error->all(FLERR,"Region {} for fix widom does not exist",arg[iarg+1]); + if (!region) error->all(FLERR,"Region {} for fix widom does not exist",arg[iarg+1]); idregion = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"charge") == 0) { @@ -292,6 +281,7 @@ int FixWidom::setmask() void FixWidom::init() { + triclinic = domain->triclinic; // set index and check validity of region @@ -300,7 +290,31 @@ void FixWidom::init() if (!region) error->all(FLERR, "Region {} for fix widom does not exist", idregion); } - triclinic = domain->triclinic; + if (region) { + if (region->bboxflag == 0) + error->all(FLERR,"Fix gcmc region does not support a bounding box"); + if (region->dynamic_check()) + error->all(FLERR,"Fix gcmc region cannot be dynamic"); + + region_xlo = region->extent_xlo; + region_xhi = region->extent_xhi; + region_ylo = region->extent_ylo; + region_yhi = region->extent_yhi; + region_zlo = region->extent_zlo; + region_zhi = region->extent_zhi; + + if (triclinic) { + if ((region_xlo < domain->boxlo_bound[0]) || (region_xhi > domain->boxhi_bound[0]) || + (region_ylo < domain->boxlo_bound[1]) || (region_yhi > domain->boxhi_bound[1]) || + (region_zlo < domain->boxlo_bound[2]) || (region_zhi > domain->boxhi_bound[2])) + error->all(FLERR,"Fix widom region {} extends outside simulation box", region->id); + } else { + if ((region_xlo < domain->boxlo[0]) || (region_xhi > domain->boxhi[0]) || + (region_ylo < domain->boxlo[1]) || (region_yhi > domain->boxhi[1]) || + (region_zlo < domain->boxlo[2]) || (region_zhi > domain->boxhi[2])) + error->all(FLERR,"Fix widom region {} extends outside simulation box", region->id); + } + } ave_widom_chemical_potential = 0.0; From 1f7d262bd73ba018912231cad672ad17a4ec63e1 Mon Sep 17 00:00:00 2001 From: jbcouli Date: Mon, 4 Dec 2023 16:01:39 -0700 Subject: [PATCH 149/300] add mol keyword to fix rigid doc --- doc/src/fix_rigid.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_rigid.rst b/doc/src/fix_rigid.rst index a50e2156812..3174a0929ce 100644 --- a/doc/src/fix_rigid.rst +++ b/doc/src/fix_rigid.rst @@ -80,7 +80,7 @@ Syntax groupID1, groupID2, ... = list of N group IDs * zero or more keyword/value pairs may be appended -* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity* +* keyword = *langevin* or *reinit* or *temp* or *mol* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity* .. parsed-literal:: @@ -92,6 +92,8 @@ Syntax *temp* values = Tstart Tstop Tdamp Tstart,Tstop = desired temperature at start/stop of run (temperature units) Tdamp = temperature damping parameter (time units) + *mol* value = template-ID + template-ID = ID of molecule template specified in a separate :doc:`molecule ` command *iso* or *aniso* values = Pstart Pstop Pdamp Pstart,Pstop = scalar external pressure at start/end of run (pressure units) Pdamp = pressure damping parameter (time units) From 69fb814b33980f807c24c8438316afc8f04d9825 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Mon, 4 Dec 2023 17:31:38 -0700 Subject: [PATCH 150/300] Remove duplicated code, small whitespace tweaks --- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 11 ++--- src/KOKKOS/pair_pace_kokkos.cpp | 46 ++----------------- src/KOKKOS/pair_pace_kokkos.h | 3 -- 3 files changed, 9 insertions(+), 51 deletions(-) diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index 9d47a4a278d..0980ad776d7 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -899,9 +899,9 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig offset++; }); - if(is_zbl) { + if (is_zbl) { //adapted from https://www.osti.gov/servlets/purl/1429450 - if(ncount>0) { + if (ncount > 0) { using minloc_value_type=Kokkos::MinLoc::value_type; minloc_value_type djjmin; djjmin.val=1e20; @@ -920,7 +920,6 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig min_d_dist.val = d; min_d_dist.loc = offset; } - }, reducer_scalar); d_d_min(ii) = djjmin.val; d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) @@ -1133,7 +1132,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeFS, inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); FS_values_and_derivatives(ii, evdwl, mu_i); - if(is_zbl) { + if (is_zbl) { if (d_jj_min(ii) != -1) { const int mu_jmin = d_mu(ii,d_jj_min(ii)); F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); @@ -1334,8 +1333,8 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeDeri f_ij(ii, jj, 1) = scale * f_ji[1] + fpair * r_hat[1]; f_ij(ii, jj, 2) = scale * f_ji[2] + fpair * r_hat[2]; - if(is_zbl) { - if(jj==d_jj_min(ii)) { + if (is_zbl) { + if (jj==d_jj_min(ii)) { // DCRU = 1.0 f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 4e297ec7edd..805d7f68bb5 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -697,7 +697,6 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for("ComputeDerivative",policy_derivative,*this); } - //ComputeForce { if (evflag) { @@ -842,7 +841,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen offset++; }); - if(is_zbl) { + if (is_zbl) { //adapted from https://www.osti.gov/servlets/purl/1429450 if(ncount>0) { using minloc_value_type=Kokkos::MinLoc::value_type; @@ -863,7 +862,6 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen min_d_dist.val = d; min_d_dist.loc = offset; } - }, reducer_scalar); d_d_min(ii) = djjmin.val; d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) @@ -1066,7 +1064,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeFS, const int& ii evdwl = fcut = dfcut = 0.0; FS_values_and_derivatives(ii, evdwl, mu_i); - if(is_zbl) { + if (is_zbl) { if (d_jj_min(ii) != -1) { const int mu_jmin = d_mu(ii,d_jj_min(ii)); F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); @@ -1238,8 +1236,8 @@ void PairPACEKokkos::operator() (TagPairPACEComputeDerivative, const f_ij(ii, jj, 1) = scale * f_ji[1] + fpair * r_hat[1]; f_ij(ii, jj, 2) = scale * f_ji[2] + fpair * r_hat[2]; - if(is_zbl) { - if(jj==d_jj_min(ii)) { + if (is_zbl) { + if (jj==d_jj_min(ii)) { // DCRU = 1.0 f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; @@ -1840,42 +1838,6 @@ double PairPACEKokkos::memory_usage() return bytes; } - -/* ---------------------------------------------------------------------- - extract method for extracting value of scale variable - ---------------------------------------------------------------------- */ - -template -void *PairPACEKokkos::extract(const char *str, int &dim) -{ - dim = 0; - if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; - - dim = 2; - if (strcmp(str, "scale") == 0) return (void *) scale; - return nullptr; -} - -/* ---------------------------------------------------------------------- - peratom requests from FixPair - return ptr to requested data - also return ncol = # of quantites per atom - 0 = per-atom vector - 1 or more = # of columns in per-atom array - return NULL if str is not recognized ----------------------------------------------------------------------- */ - -template -void *PairPACEKokkos::extract_peratom(const char *str, int &ncol) -{ - if (strcmp(str, "corerep") == 0) { - ncol = 0; - return (void *) corerep_factor; - } - - return nullptr; -} - /* ---------------------------------------------------------------------- */ namespace LAMMPS_NS { diff --git a/src/KOKKOS/pair_pace_kokkos.h b/src/KOKKOS/pair_pace_kokkos.h index 2c5aaa846e9..36486f86281 100644 --- a/src/KOKKOS/pair_pace_kokkos.h +++ b/src/KOKKOS/pair_pace_kokkos.h @@ -95,9 +95,6 @@ class PairPACEKokkos : public PairPACE { KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeForce,const int& ii, EV_FLOAT&) const; - void *extract(const char *str, int &dim) override; - void *extract_peratom(const char *str, int &ncol) override; - protected: int inum, maxneigh, chunk_size, chunk_offset, idx_rho_max; int host_flag; From 250307f7c612d7b9a54fa8803ea2db9508d23fed Mon Sep 17 00:00:00 2001 From: jbcouli Date: Mon, 4 Dec 2023 21:13:50 -0700 Subject: [PATCH 151/300] add description for undocumented Body entries in molecule command --- doc/src/Howto_body.rst | 2 +- doc/src/molecule.rst | 72 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/doc/src/Howto_body.rst b/doc/src/Howto_body.rst index 115b7797c80..968e10edd8a 100644 --- a/doc/src/Howto_body.rst +++ b/doc/src/Howto_body.rst @@ -335,7 +335,7 @@ faces are listed, so that M = 6 + 3\*N + 1. The integer line has three values: number of vertices (N), number of edges (E) and number of faces (F). The floating point line(s) list 6 moments of inertia followed by the coordinates of the N vertices (x1 -to zN) as 3N values, followed by 2N vertex indices corresponding to +to zN) as 3N values, followed by 2E vertex indices corresponding to the end points of the E edges, then 4\*F vertex indices defining F faces. The last value is the diameter value = the rounded diameter of the sphere that surrounds each vertex. The diameter value can be diff --git a/doc/src/molecule.rst b/doc/src/molecule.rst index 480e175e7b0..1de905886c6 100644 --- a/doc/src/molecule.rst +++ b/doc/src/molecule.rst @@ -154,21 +154,25 @@ These are the recognized header keywords. Header lines can come in any order. The numeric value(s) are read from the beginning of the line. The keyword should appear at the end of the line. All these settings have default values, as explained below. A line need only -appear if the value(s) are different than the default. +appear if the value(s) are different than the default, except when +defining a *body* particle, which requires setting the number of +*atoms* to 1, and setting the *inertia* in a specific section (see below). * N *atoms* = # of atoms N in molecule, default = 0 * Nb *bonds* = # of bonds Nb in molecule, default = 0 * Na *angles* = # of angles Na in molecule, default = 0 * Nd *dihedrals* = # of dihedrals Nd in molecule, default = 0 * Ni *impropers* = # of impropers Ni in molecule, default = 0 -* Nf *fragments* = # of fragments in molecule, default = 0 +* Nf *fragments* = # of fragments Nf in molecule, default = 0 +* Ninteger Ndouble *body* = # of integer and floating-point values in body +particle, default = 0 * Mtotal *mass* = total mass of molecule * Xc Yc Zc *com* = coordinates of center-of-mass of molecule * Ixx Iyy Izz Ixy Ixz Iyz *inertia* = 6 components of inertia tensor of molecule For *mass*, *com*, and *inertia*, the default is for LAMMPS to calculate this quantity itself if needed, assuming the molecules -consists of a set of point particles or finite-size particles (with a +consist of a set of point particles or finite-size particles (with a non-zero diameter) that do not overlap. If finite-size particles in the molecule do overlap, LAMMPS will not account for the overlap effects when calculating any of these 3 quantities, so you should @@ -188,6 +192,7 @@ These are the allowed section keywords for the body of the file. * *Bonds, Angles, Dihedrals, Impropers* = molecular topology sections * *Special Bond Counts, Special Bonds* = special neighbor info * *Shake Flags, Shake Atoms, Shake Bond Types* = SHAKE info +* *Body Integers, Body Doubles* = body-property sections For the Types, Bonds, Angles, Dihedrals, and Impropers sections, each atom/bond/angle/etc type can be specified either as a number (numeric @@ -515,6 +520,67 @@ of SHAKE clusters. ---------- +*Body Integers* section: + +* one line +* line syntax: N E F +* N = number of sub-particles or number or vertices +* E,F = number of edges and faces + +This section is only needed when the molecule is a body particle. the other +Body section must also appear in the file. + +The total number of values that must appear is determined by the body style, and +must be equal to the Ninteger value given in the *body* header. + +For *nparticle* and *rounded/polygon*, only the number of sub-particles or +vertices N is required, and Ninteger should have a value of 1. + +For *rounded/polyhedron*, the number of edges E and faces F is required, and +Ninteger should have a value of 3. + +See the :doc:`Howto body ` page for a further description of +the file format. + +---------- + +*Body Doubles* section: + +* first line +* line syntax: Ixx Iyy Izz Ixy Ixz Iyz +* Ixx Iyy Izz Ixy Ixz Iyz = 6 components of inertia tensor of body particle +* one line per sub-particle or vertex +* line syntax: x y z +* x, y, z = coordinates of sub-particle or vertex +* one line per edge +* line syntax: N1 N2 +* N1, N2 = vertex indices +* one line per face +* line syntax: N1 N2 N3 N4 +* N1, N2, N3, N4 = vertex indices +* last line +* line syntax: diam +* diam = rounded diameter that surrounds each vertex + +This section is only needed when the molecule is a body particle. the other +Body section must also appear in the file. + +The total number of values that must appear is determined by the body style, and +must be equal to the Ndouble value given in the *body* header. The 6 moments of +inertia and the 3N coordinates of the sub-particles or vertices are required +for all body styles. + +For *rounded/polygon*, the E = 6 + 3*N + 1 edges are automatically determined +from the vertices. + +For *rounded/polyhedron*, the 2E vertex indices for the end points of the edges +and 4F vertex indices defining the faces are required. + +See the :doc:`Howto body ` page for a further description of +the file format. + +---------- + Restrictions """""""""""" From a5894d8ab3993d29d9761d7d2e01705855dae00e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 03:18:56 -0500 Subject: [PATCH 152/300] clarify --- doc/src/compute_stress_atom.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/compute_stress_atom.rst b/doc/src/compute_stress_atom.rst index 8a45171dfea..ffd0d2ffb46 100644 --- a/doc/src/compute_stress_atom.rst +++ b/doc/src/compute_stress_atom.rst @@ -127,11 +127,11 @@ result in more consistent heat flux values for angle, dihedrals, improper and constraint force contributions when computed via :doc:`compute heat/flux `. -If no extra keywords are listed, the kinetic contribution all of the -virial contribution terms are included in the per-atom stress tensor. -If any extra keywords are listed, only those terms are summed to -compute the tensor. The *virial* keyword means include all terms -except the kinetic energy *ke*\ . +If no extra keywords are listed, the kinetic contribution *and* all +of the virial contribution terms are included in the per-atom stress +tensor. If any extra keywords are listed, only those terms are +summed to compute the tensor. The *virial* keyword means include all +terms except the kinetic energy *ke*\ . Note that the stress for each atom is due to its interaction with all other atoms in the simulation, not just with other atoms in the group. From 73f1bac8276e89bcb94a78c1eb1e42ec7b66f8fa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 06:09:34 -0500 Subject: [PATCH 153/300] remove commented out code. print warnings only on mpi rank 0 --- src/ML-PACE/compute_pace.cpp | 58 +++++++++--------------------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 4d9e761d26f..cf3be8f47fc 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -66,16 +66,10 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag && !bikflag) error->all(FLERR,"Illegal compute pace command: dgradflag=1 requires bikflag=1"); - // map[i] = which element the Ith atom type is, -1 if not mapped - // map[0] is not used memory->create(map,ntypes+1,"pace:map"); - /* - for (int i=0; i basis_set; acecimpl -> basis_set = new ACECTildeBasisSet(potential_file_name); @@ -83,30 +77,17 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : cutmax = acecimpl -> basis_set->cutoffmax; double cuti; double radelemall = 0.5; - /* - memory->create(cutsq,ntypes+1,ntypes+1,"pace:cutsq"); - printf("----- looping over ntypes\n"); - for (int i = 1; i <= ntypes; i++) { - printf("----- map[%d]: %d\n", i, map[i]); - cuti = basis_set->radial_functions->cut(map[i], map[i]); - if (cuti > cutmax) cutmax = cuti; - cutsq[i][i] = cuti*cuti; - for (int j = i+1; j <= ntypes; j++) { - //printf("----- j: %d\n", j); - printf("----- map[%d]: %d\n", j, map[j]); - cuti = basis_set->radial_functions->cut(map[i], map[j]); - cutsq[i][j] = cutsq[j][i] = cuti*cuti; - } - } - printf("----- looped over ntypes\n"); - */ + //# of rank 1, rank > 1 functions + int n_r1, n_rp = 0; n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; n_rp = acecimpl -> basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; + //int nvalues = ncoeff; + nvalues = ncoeff; //----------------------------------------------------------- @@ -124,9 +105,9 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : if (dgradflag) { size_array_rows = bik_rows + 3*natoms*natoms + 1; size_array_cols = nvalues + 3; - error->warning(FLERR,"dgradflag=1 creates a N^2 array, beware of large systems."); - } - else size_array_cols = nvalues*atom->ntypes + 1; + if (comm->me == 0) + error->warning(FLERR,"dgradflag=1 creates a N^2 array, beware of large systems."); + } else size_array_cols = nvalues*atom->ntypes + 1; lastcol = size_array_cols-1; ndims_peratom = ndims_force; @@ -154,13 +135,9 @@ void ComputePACE::init() if (force->pair == nullptr) error->all(FLERR,"Compute pace requires a pair style be defined"); - //printf("----- cutoffmax: %f\n", cutmax); if (cutmax > force->pair->cutforce) error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); - //if (basis_set->cutoffmax > force->pair->cutforce) - // error->all(FLERR,"Compute pace cutoff is longer than pairwise cutoff"); - // need an occasional full neighbor list neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL); @@ -171,10 +148,8 @@ void ComputePACE::init() error->warning(FLERR,"More than one compute pace"); // allocate memory for global array - memory->create(pace,size_array_rows,size_array_cols, - "pace:pace"); - memory->create(paceall,size_array_rows,size_array_cols, - "pace:paceall"); + memory->create(pace,size_array_rows,size_array_cols, "pace:pace"); + memory->create(paceall,size_array_rows,size_array_cols, "pace:paceall"); array = paceall; // find compute for reference energy @@ -195,10 +170,8 @@ void ComputePACE::init() if (ivirial == -1) error->all(FLERR,"compute pace_press does not exist."); c_virial = modify->compute[ivirial]; - } - /* ---------------------------------------------------------------------- */ void ComputePACE::init_list(int /*id*/, NeighList *ptr) @@ -219,8 +192,7 @@ void ComputePACE::compute_array() if (atom->nmax > nmax) { memory->destroy(pace_peratom); nmax = atom->nmax; - memory->create(pace_peratom,nmax,size_peratom, - "pace:pace_peratom"); + memory->create(pace_peratom,nmax,size_peratom,"pace:pace_peratom"); } // clear global array @@ -514,11 +486,9 @@ void ComputePACE::dbdotr_compute() double ComputePACE::memory_usage() { - double bytes = (double)size_array_rows*size_array_cols * - sizeof(double); // pace - bytes += (double)size_array_rows*size_array_cols * - sizeof(double); // paceall - bytes += (double)nmax*size_peratom * sizeof(double); // pace_peratom + double bytes = (double)size_array_rows*size_array_cols*sizeof(double); // pace + bytes += (double)size_array_rows*size_array_cols*sizeof(double); // paceall + bytes += (double)nmax*size_peratom * sizeof(double); // pace_peratom int n = atom->ntypes+1; bytes += (double)n*sizeof(int); // map From e5ae46a01a0f55a67ab413c8fe67a2515984db8f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 06:15:40 -0500 Subject: [PATCH 154/300] update compute pace example to follow usual conventions --- examples/PACKAGES/pace/README.md | 2 +- examples/PACKAGES/pace/compute/README.md | 0 .../pace/compute/{in.lammps => in.compute} | 0 .../pace/compute/log.5Dec23.compute.g++.1 | 81 +++++++++++++++++++ .../pace/compute/log.5Dec23.compute.g++.4 | 81 +++++++++++++++++++ 5 files changed, 163 insertions(+), 1 deletion(-) delete mode 100644 examples/PACKAGES/pace/compute/README.md rename examples/PACKAGES/pace/compute/{in.lammps => in.compute} (100%) create mode 100644 examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.1 create mode 100644 examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.4 diff --git a/examples/PACKAGES/pace/README.md b/examples/PACKAGES/pace/README.md index ab2d3a54f55..66254b5241a 100644 --- a/examples/PACKAGES/pace/README.md +++ b/examples/PACKAGES/pace/README.md @@ -5,5 +5,5 @@ compute/latte_cell_0.data # lammps data file with C-H-O structure compute/latte_cell_0.xyz # xyz file with C-H-O structure compute/coupling_coefficients.yace # .yace file containing coupling coefficients (or ACE potential parameters) -compute/in.lammps # input file for calling `compute pace` +compute/in.compute # input file for calling `compute pace` diff --git a/examples/PACKAGES/pace/compute/README.md b/examples/PACKAGES/pace/compute/README.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/examples/PACKAGES/pace/compute/in.lammps b/examples/PACKAGES/pace/compute/in.compute similarity index 100% rename from examples/PACKAGES/pace/compute/in.lammps rename to examples/PACKAGES/pace/compute/in.compute diff --git a/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.1 b/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.1 new file mode 100644 index 00000000000..e5036cfe5b6 --- /dev/null +++ b/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.1 @@ -0,0 +1,81 @@ +LAMMPS (21 Nov 2023) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +boundary p p p +read_data latte_cell_0.data +Reading data file ... + orthogonal box = (0 0 0) to (12 12 12) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 161 atoms + read_data CPU = 0.001 seconds +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + + # potential settings + +pair_style zero 5.7 +pair_coeff * * + +compute pace all pace coupling_coefficients.yace 1 0 + +thermo 1 +thermo_style custom step temp c_pace[1][183] + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard + (2) compute pace, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.993 | 6.993 | 6.993 Mbytes + Step Temp c_pace[1][183] + 0 0 8.6885642 +Loop time of 1.217e-06 on 1 procs for 0 steps with 161 atoms + +164.3% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.217e-06 | | |100.00 + +Nlocal: 161 ave 161 max 161 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1754 ave 1754 max 1754 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 14230 ave 14230 max 14230 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 28460 ave 28460 max 28460 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 28460 +Ave neighs/atom = 176.77019 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.4 b/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.4 new file mode 100644 index 00000000000..49ca6129b63 --- /dev/null +++ b/examples/PACKAGES/pace/compute/log.5Dec23.compute.g++.4 @@ -0,0 +1,81 @@ +LAMMPS (21 Nov 2023) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +#info all out log +units metal +atom_style atomic +boundary p p p +atom_modify map hash +boundary p p p +read_data latte_cell_0.data +Reading data file ... + orthogonal box = (0 0 0) to (12 12 12) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 161 atoms + read_data CPU = 0.001 seconds +mass 1 1.00 +mass 2 14.00 +mass 3 15.999 + + # potential settings + +pair_style zero 5.7 +pair_coeff * * + +compute pace all pace coupling_coefficients.yace 1 0 + +thermo 1 +thermo_style custom step temp c_pace[1][183] + +run 0 +WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60) +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard + (2) compute pace, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.97 | 6.97 | 6.971 Mbytes + Step Temp c_pace[1][183] + 0 0 8.6885642 +Loop time of 1.979e-06 on 4 procs for 0 steps with 161 atoms + +164.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0 | 0 | 0 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 1.979e-06 | | |100.00 + +Nlocal: 40.25 ave 44 max 35 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 1134.5 ave 1159 max 1117 min +Histogram: 1 1 0 0 1 0 0 0 0 1 +Neighs: 3557.5 ave 4115 max 3189 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +FullNghs: 7115 ave 7755 max 6158 min +Histogram: 1 0 0 0 1 0 0 0 0 2 + +Total # of neighbors = 28460 +Ave neighs/atom = 176.77019 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 From 17ffd5c228aa640913deec22de78062be0e94632 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 06:16:48 -0500 Subject: [PATCH 155/300] remove misplaced file --- examples/test.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 examples/test.txt diff --git a/examples/test.txt b/examples/test.txt deleted file mode 100644 index 58e2592d61b..00000000000 --- a/examples/test.txt +++ /dev/null @@ -1,2 +0,0 @@ -this is a test - From 9588ddabf6328848bbc15aadfd86e07f2a0fd8a9 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 5 Dec 2023 13:30:26 -0600 Subject: [PATCH 156/300] Added the GPU versions of lj/cut/coul/cut/soft and lj/cut/coul/long/soft --- lib/gpu/geryon/ocl_mat.h | 2 +- lib/gpu/lal_base_dpd.cpp | 6 +- lib/gpu/lal_base_dpd.h | 5 +- lib/gpu/lal_device.cpp | 38 ++- lib/gpu/lal_device.h | 1 + lib/gpu/lal_lj_coul_long.h | 2 +- lib/gpu/lal_lj_coul_long_soft.cpp | 174 ++++++++++++ lib/gpu/lal_lj_coul_long_soft.cu | 288 ++++++++++++++++++++ lib/gpu/lal_lj_coul_long_soft.h | 88 ++++++ lib/gpu/lal_lj_coul_long_soft_ext.cpp | 151 +++++++++++ lib/gpu/lal_lj_coul_soft.cpp | 157 +++++++++++ lib/gpu/lal_lj_coul_soft.cu | 275 +++++++++++++++++++ lib/gpu/lal_lj_coul_soft.h | 85 ++++++ lib/gpu/lal_lj_coul_soft_ext.cpp | 128 +++++++++ src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp | 249 +++++++++++++++++ src/GPU/pair_lj_cut_coul_cut_soft_gpu.h | 45 ++++ src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp | 297 +++++++++++++++++++++ src/GPU/pair_lj_cut_coul_long_soft_gpu.h | 46 ++++ 18 files changed, 2023 insertions(+), 14 deletions(-) create mode 100644 lib/gpu/lal_lj_coul_long_soft.cpp create mode 100644 lib/gpu/lal_lj_coul_long_soft.cu create mode 100644 lib/gpu/lal_lj_coul_long_soft.h create mode 100644 lib/gpu/lal_lj_coul_long_soft_ext.cpp create mode 100644 lib/gpu/lal_lj_coul_soft.cpp create mode 100644 lib/gpu/lal_lj_coul_soft.cu create mode 100644 lib/gpu/lal_lj_coul_soft.h create mode 100644 lib/gpu/lal_lj_coul_soft_ext.cpp create mode 100644 src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp create mode 100644 src/GPU/pair_lj_cut_coul_cut_soft_gpu.h create mode 100644 src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp create mode 100644 src/GPU/pair_lj_cut_coul_long_soft_gpu.h diff --git a/lib/gpu/geryon/ocl_mat.h b/lib/gpu/geryon/ocl_mat.h index 3135594dc3d..66ca6ab5275 100644 --- a/lib/gpu/geryon/ocl_mat.h +++ b/lib/gpu/geryon/ocl_mat.h @@ -54,6 +54,6 @@ namespace ucl_opencl { #include "ucl_print.h" #undef UCL_PRINT_ALLOW -} // namespace ucl_cudart +} // namespace ucl_opencl #endif diff --git a/lib/gpu/lal_base_dpd.cpp b/lib/gpu/lal_base_dpd.cpp index e103699d40b..0ddd24d21ed 100644 --- a/lib/gpu/lal_base_dpd.cpp +++ b/lib/gpu/lal_base_dpd.cpp @@ -56,7 +56,8 @@ int BaseDPDT::init_atomic(const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, const void *pair_program, - const char *k_name, const int onetype) { + const char *k_name, const int onetype, + const int extra_fields) { screen=_screen; int gpu_nbor=0; @@ -75,7 +76,8 @@ int BaseDPDT::init_atomic(const int nlocal, const int nall, bool charge = false; bool rot = false; bool vel = true; - int success=device->init(*ans,charge,rot,nlocal,nall,maxspecial,vel); + _extra_fields = extra_fields; + int success=device->init(*ans,charge,rot,nlocal,nall,maxspecial,vel,_extra_fields/4); if (success!=0) return success; diff --git a/lib/gpu/lal_base_dpd.h b/lib/gpu/lal_base_dpd.h index 9eb56993afa..6e9451d72a0 100644 --- a/lib/gpu/lal_base_dpd.h +++ b/lib/gpu/lal_base_dpd.h @@ -53,7 +53,7 @@ class BaseDPD { const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, const void *pair_program, const char *k_name, - const int onetype=0); + const int onetype=0, const int extra_fields=0); /// Estimate the overhead for GPU context changes and CPU driver void estimate_gpu_overhead(); @@ -167,7 +167,6 @@ class BaseDPD { /// Atom Data Atom *atom; - // ------------------------ FORCE/ENERGY DATA ----------------------- Answer *ans; @@ -197,6 +196,8 @@ class BaseDPD { numtyp _dtinvsqrt; int _seed, _timestep; + int _extra_fields; + protected: bool _compiled; int _block_size, _threads_per_atom, _onetype; diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 70ba373a653..e9ef2294b2d 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -364,6 +364,12 @@ int DeviceT::init_device(MPI_Comm /*world*/, MPI_Comm replica, const int ngpu, } else _neighbor_shared.setup_auto_cell_size(false,_user_cell_size,_simd_size); + #ifndef LAL_USE_OLD_NEIGHBOR + _use_old_nbor_build = 0; + #else + _use_old_nbor_build = 1; + #endif + return flag; } @@ -510,9 +516,13 @@ int DeviceT::init(Answer &ans, const bool charge, gpu_nbor=1; else if (_gpu_mode==Device::GPU_HYB_NEIGH) gpu_nbor=2; + + // NOTE: enforce the hybrid mode (binning on the CPU) + // when not using sorting on the device #if !defined(USE_CUDPP) && !defined(USE_HIP_DEVICE_SORT) if (gpu_nbor==1) gpu_nbor=2; #endif + // or when the device supports subgroups #ifndef LAL_USE_OLD_NEIGHBOR if (gpu_nbor==1) gpu_nbor=2; #endif @@ -886,19 +896,31 @@ void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, } if (times[5] > 0.0) fprintf(screen,"Device Overhead: %.4f s.\n",times[5]/_replica_size); - fprintf(screen,"Average split: %.4f.\n",avg_split); - fprintf(screen,"Lanes / atom: %d.\n",threads_per_atom); - fprintf(screen,"Vector width: %d.\n", simd_size()); - fprintf(screen,"Prefetch mode: "); - if (_nbor_prefetch==2) fprintf(screen,"Intrinsics.\n"); - else if (_nbor_prefetch==1) fprintf(screen,"API.\n"); - else fprintf(screen,"None.\n"); - fprintf(screen,"Max Mem / Proc: %.2f MB.\n",max_mb); if (nbor.gpu_nbor()==2) fprintf(screen,"CPU Neighbor: %.4f s.\n",times[8]/_replica_size); fprintf(screen,"CPU Cast/Pack: %.4f s.\n",times[4]/_replica_size); fprintf(screen,"CPU Driver_Time: %.4f s.\n",times[6]/_replica_size); fprintf(screen,"CPU Idle_Time: %.4f s.\n",times[7]/_replica_size); + fprintf(screen,"Average split: %.4f.\n",avg_split); + fprintf(screen,"Max Mem / Proc: %.2f MB.\n",max_mb); + fprintf(screen,"Prefetch mode: "); + if (_nbor_prefetch==2) fprintf(screen,"Intrinsics.\n"); + else if (_nbor_prefetch==1) fprintf(screen,"API.\n"); + else fprintf(screen,"None.\n"); + fprintf(screen,"Vector width: %d.\n", simd_size()); + fprintf(screen,"Lanes / atom: %d.\n",threads_per_atom); + fprintf(screen,"Pair block: %d.\n",_block_pair); + fprintf(screen,"Neigh block: %d.\n",_block_nbor_build); + if (nbor.gpu_nbor()==2) { + fprintf(screen,"Neigh mode: Hybrid (binning on host)"); + if (_use_old_nbor_build == 1) fprintf(screen," - legacy\n"); + else fprintf(screen," with subgroup support\n"); + } else if (nbor.gpu_nbor()==1) { + fprintf(screen,"Neigh mode: Device"); + if (_use_old_nbor_build == 1) fprintf(screen," - legacy\n"); + else fprintf(screen," - with subgroup support\n"); + } else if (nbor.gpu_nbor()==0) + fprintf(screen,"Neigh mode: Host\n"); fprintf(screen,"-------------------------------------"); fprintf(screen,"--------------------------------\n\n"); diff --git a/lib/gpu/lal_device.h b/lib/gpu/lal_device.h index ba693e551a5..d6b52484f1a 100644 --- a/lib/gpu/lal_device.h +++ b/lib/gpu/lal_device.h @@ -347,6 +347,7 @@ class Device { int _pppm_block, _block_nbor_build, _block_cell_2d, _block_cell_id; int _max_shared_types, _max_bio_shared_types, _pppm_max_spline; int _nbor_prefetch; + int _use_old_nbor_build; UCL_Program *dev_program; UCL_Kernel k_zero, k_info; diff --git a/lib/gpu/lal_lj_coul_long.h b/lib/gpu/lal_lj_coul_long.h index bc4fce40a54..ace5a263393 100644 --- a/lib/gpu/lal_lj_coul_long.h +++ b/lib/gpu/lal_lj_coul_long.h @@ -78,7 +78,7 @@ class LJCoulLong : public BaseCharge { numtyp _cut_coulsq, _qqrd2e, _g_ewald; - private: +protected: bool _allocated; int loop(const int eflag, const int vflag); }; diff --git a/lib/gpu/lal_lj_coul_long_soft.cpp b/lib/gpu/lal_lj_coul_long_soft.cpp new file mode 100644 index 00000000000..2b90333bae0 --- /dev/null +++ b/lib/gpu/lal_lj_coul_long_soft.cpp @@ -0,0 +1,174 @@ +/*************************************************************************** + lj_coul_long_soft.cpp + ------------------- + Trung Nguyen (U Chicago) + + Class for acceleration of the lj/cut/coul/long/soft pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : + email : ndtrung@uchicago.edu + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "lj_coul_long_soft_cl.h" +#elif defined(USE_CUDART) +const char *lj_coul_long_soft=0; +#else +#include "lj_coul_long_soft_cubin.h" +#endif + +#include "lal_lj_coul_long_soft.h" +#include +namespace LAMMPS_AL { +#define LJCoulLongSoftT LJCoulLongSoft + +extern Device device; + +template +LJCoulLongSoftT::LJCoulLongSoft() : BaseCharge(), + _allocated(false) { +} + +template +LJCoulLongSoftT::~LJCoulLongSoft() { + clear(); +} + +template +int LJCoulLongSoftT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int LJCoulLongSoftT::init(const int ntypes, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double **host_epsilon, + double *host_special_lj, const int nlocal, + const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *_screen, + double **host_cut_ljsq, const double host_cut_coulsq, + double *host_special_coul, const double qqrd2e, + const double g_ewald) { + int success; + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, + _screen,lj_coul_long_soft,"k_lj_coul_long_soft"); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, + host_cutsq, host_cut_ljsq); + + lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, + host_offset, host_epsilon); + + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); + for (int i=0; i<4; i++) { + host_write[i]=host_special_lj[i]; + host_write[i+4]=host_special_coul[i]; + } + ucl_copy(sp_lj,host_write,8,false); + + _cut_coulsq=host_cut_coulsq; + _qqrd2e=qqrd2e; + _g_ewald=g_ewald; + + _allocated=true; + this->_max_bytes=lj1.row_bytes()+lj3.row_bytes()+sp_lj.row_bytes(); + return 0; +} + +template +void LJCoulLongSoftT::reinit(const int ntypes, double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, + double **host_offset, double **host_epsilon, double **host_cut_ljsq) { + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; i<_lj_types*_lj_types; i++) + host_write[i]=0.0; + + this->atom->type_pack4(ntypes,_lj_types,lj1,host_write,host_lj1,host_lj2, + host_cutsq, host_cut_ljsq); + this->atom->type_pack4(ntypes,_lj_types,lj3,host_write,host_lj3,host_lj4, + host_offset, host_epsilon); +} + +template +void LJCoulLongSoftT::clear() { + if (!_allocated) + return; + _allocated=false; + + lj1.clear(); + lj3.clear(); + sp_lj.clear(); + this->clear_atomic(); +} + +template +double LJCoulLongSoftT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(LJCoulLongSoft); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int LJCoulLongSoftT::loop(const int eflag, const int vflag) { + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &lj1, &lj3, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, + &vflag, &ainum, &nbor_pitch, &this->atom->q, + &_cut_coulsq, &_qqrd2e, &_g_ewald, + &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &lj1, &lj3, + &_lj_types, &sp_lj, &this->nbor->dev_nbor, + &this->_nbor_data->begin(), &this->ans->force, + &this->ans->engv, &eflag, &vflag, &ainum, + &nbor_pitch, &this->atom->q, &_cut_coulsq, + &_qqrd2e, &_g_ewald, &this->_threads_per_atom); + } + this->time_pair.stop(); + return GX; +} + +template class LJCoulLongSoft; +} diff --git a/lib/gpu/lal_lj_coul_long_soft.cu b/lib/gpu/lal_lj_coul_long_soft.cu new file mode 100644 index 00000000000..242b52fb791 --- /dev/null +++ b/lib/gpu/lal_lj_coul_long_soft.cu @@ -0,0 +1,288 @@ +// ************************************************************************** +// lj_coul_long_soft.cu +// ------------------- +// Trung Nguyen (U Chicago) +// +// Device code for acceleration of the lj/cut/coul/long/soft pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : +// email : ndtrung@uchicago.edu +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( q_tex,float); +#else +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +#endif + +#else +#define pos_tex x_ +#define q_tex q_ +#endif + +__kernel void k_lj_coul_long_soft(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp *restrict q_, + const numtyp cut_coulsq, const numtyp qqrd2e, + const numtyp g_ewald, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + __local numtyp sp_lj[8]; + int n_stride; + local_allocate_store_charge(); + + sp_lj[0]=sp_lj_in[0]; + sp_lj[1]=sp_lj_in[1]; + sp_lj[2]=sp_lj_in[2]; + sp_lj[3]=sp_lj_in[3]; + sp_lj[4]=sp_lj_in[4]; + sp_lj[5]=sp_lj_in[5]; + sp_lj[6]=sp_lj_in[6]; + sp_lj[7]=sp_lj_in[7]; + + acctyp4 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp energy, e_coul, virial[6]; + if (EVFLAG) { + energy=(acctyp)0; + e_coul=(acctyp)0; + for (int i=0; i<6; i++) virial[i]=(acctyp)0; + } + + if (ii +class LJCoulLongSoft : public BaseCharge { + public: + LJCoulLongSoft(); + ~LJCoulLongSoft(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double **host_epsilon, double *host_special_lj, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, double **host_cut_ljsq, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald); + + /// Send updated coeffs from host to device (to be compatible with fix adapt) + void reinit(const int ntypes, double **host_cutsq, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double **host_epsilon, double **host_cut_ljsq); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + // --------------------------- TYPE DATA -------------------------- + + /// lj1.x = lj1, lj1.y = lj2, lj1.z = cutsq, lj1.w = cutsq_vdw + UCL_D_Vec lj1; + /// lj3.x = lj3, lj3.y = lj4, lj3.z = offset, lj3.w = epsilon + UCL_D_Vec lj3; + /// Special LJ values [0-3] and Special Coul values [4-7] + UCL_D_Vec sp_lj; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + numtyp _cut_coulsq, _qqrd2e, _g_ewald; + +protected: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_lj_coul_long_soft_ext.cpp b/lib/gpu/lal_lj_coul_long_soft_ext.cpp new file mode 100644 index 00000000000..efccbd6ab86 --- /dev/null +++ b/lib/gpu/lal_lj_coul_long_soft_ext.cpp @@ -0,0 +1,151 @@ +/*************************************************************************** + lj_coul_long_soft_ext.cpp + ------------------- + Trung Nguyen (U Chicago) + + Functions for LAMMPS access to lj/cut/coul/long/soft acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : + email : ndtrung@uchicago.edu + ***************************************************************************/ + +#include +#include +#include + +#include "lal_lj_coul_long_soft.h" + +using namespace std; +using namespace LAMMPS_AL; + +static LJCoulLongSoft LJCLSMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int ljcls_gpu_init(const int ntypes, double **cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, + double **offset, double **epsilon, double *special_lj, const int inum, + const int nall, const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen, + double **host_cut_ljsq, double host_cut_coulsq, + double *host_special_coul, const double qqrd2e, + const double g_ewald) { + LJCLSMF.clear(); + gpu_mode=LJCLSMF.device->gpu_mode(); + double gpu_split=LJCLSMF.device->particle_split(); + int first_gpu=LJCLSMF.device->first_device(); + int last_gpu=LJCLSMF.device->last_device(); + int world_me=LJCLSMF.device->world_me(); + int gpu_rank=LJCLSMF.device->gpu_rank(); + int procs_per_gpu=LJCLSMF.device->procs_per_gpu(); + + LJCLSMF.device->init_message(screen,"lj/cut/coul/long/soft",first_gpu,last_gpu); + + bool message=false; + if (LJCLSMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=LJCLSMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, + offset, epsilon, special_lj, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen, host_cut_ljsq, + host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); + + LJCLSMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; igpu_barrier(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + LJCLSMF.estimate_gpu_overhead(); + return init_ok; +} + +// --------------------------------------------------------------------------- +// Copy updated coeffs from host to device +// --------------------------------------------------------------------------- +void ljcls_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, + double **offset, double **epsilon, double **host_cut_ljsq) { + int world_me=LJCLSMF.device->world_me(); + int gpu_rank=LJCLSMF.device->gpu_rank(); + int procs_per_gpu=LJCLSMF.device->procs_per_gpu(); + + if (world_me==0) + LJCLSMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, + offset, epsilon, host_cut_ljsq); + LJCLSMF.device->world_barrier(); + + for (int i=0; igpu_barrier(); + } +} + +void ljcls_gpu_clear() { + LJCLSMF.clear(); +} + +int** ljcls_gpu_compute_n(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, double *host_q, double *boxlo, + double *prd) { + return LJCLSMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_q, boxlo, prd); +} + +void ljcls_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, + const int nlocal, double *boxlo, double *prd) { + LJCLSMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj, + firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, + host_q,nlocal,boxlo,prd); +} + +double ljcls_gpu_bytes() { + return LJCLSMF.host_memory_usage(); +} + diff --git a/lib/gpu/lal_lj_coul_soft.cpp b/lib/gpu/lal_lj_coul_soft.cpp new file mode 100644 index 00000000000..96bcf41aa36 --- /dev/null +++ b/lib/gpu/lal_lj_coul_soft.cpp @@ -0,0 +1,157 @@ +/*************************************************************************** + lj_coul_soft.cpp + ------------------- + Trung Nguyen (U Chicago) + + Class for acceleration of the lj/cut/coul/cut/soft pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : + email : ndtrung@uchicago.edu + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "lj_coul_soft_cl.h" +#elif defined(USE_CUDART) +const char *lj_coul_soft=0; +#else +#include "lj_coul_soft_cubin.h" +#endif + +#include "lal_lj_coul_soft.h" +#include +namespace LAMMPS_AL { +#define LJCoulSoftT LJCoulSoft + +extern Device device; + +template +LJCoulSoftT::LJCoulSoft() : BaseCharge(), + _allocated(false) { +} + +template +LJCoulSoftT::~LJCoulSoft() { + clear(); +} + +template +int LJCoulSoftT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int LJCoulSoftT::init(const int ntypes, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double **host_epsilon, + double *host_special_lj, const int nlocal, + const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *_screen, + double **host_cut_ljsq, double **host_cut_coulsq, + double *host_special_coul, const double qqrd2e) { + int success; + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, + _screen,lj_coul_soft,"lj_coul_soft"); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, + host_cut_ljsq, host_cut_coulsq); + + lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, + host_offset, host_epsilon); + + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack1(ntypes,lj_types,cutsq,host_write,host_cutsq); + + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); + for (int i=0; i<4; i++) { + host_write[i]=host_special_lj[i]; + host_write[i+4]=host_special_coul[i]; + } + ucl_copy(sp_lj,host_write,8,false); + + _qqrd2e=qqrd2e; + + _allocated=true; + this->_max_bytes=lj1.row_bytes()+lj3.row_bytes()+cutsq.row_bytes()+ + sp_lj.row_bytes(); + return 0; +} + +template +void LJCoulSoftT::clear() { + if (!_allocated) + return; + _allocated=false; + + lj1.clear(); + lj3.clear(); + cutsq.clear(); + sp_lj.clear(); + this->clear_atomic(); +} + +template +double LJCoulSoftT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(LJCoulSoft); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int LJCoulSoftT::loop(const int eflag, const int vflag) { + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &lj1, &lj3, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, + &vflag, &ainum, &nbor_pitch, &this->atom->q, + &cutsq, &_qqrd2e, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, + &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, + &cutsq, &_qqrd2e, &this->_threads_per_atom); + } + this->time_pair.stop(); + return GX; +} + +template class LJCoulSoft; +} diff --git a/lib/gpu/lal_lj_coul_soft.cu b/lib/gpu/lal_lj_coul_soft.cu new file mode 100644 index 00000000000..beea2ded436 --- /dev/null +++ b/lib/gpu/lal_lj_coul_soft.cu @@ -0,0 +1,275 @@ +// ************************************************************************** +// lj_coul_soft.cu +// ------------------- +// Trung Nguyen (U Chicago) +// +// Device code for acceleration of the lj/coul/cut/soft pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : +// email : ndtrung@uchicago.edu +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) + +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( q_tex,float); +#else +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +#endif + +#else +#define pos_tex x_ +#define q_tex q_ +#endif + +__kernel void k_lj_coul_soft(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, + const numtyp qqrd2e, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + __local numtyp sp_lj[8]; + int n_stride; + local_allocate_store_charge(); + + sp_lj[0]=sp_lj_in[0]; + sp_lj[1]=sp_lj_in[1]; + sp_lj[2]=sp_lj_in[2]; + sp_lj[3]=sp_lj_in[3]; + sp_lj[4]=sp_lj_in[4]; + sp_lj[5]=sp_lj_in[5]; + sp_lj[6]=sp_lj_in[6]; + sp_lj[7]=sp_lj_in[7]; + + acctyp4 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp energy, e_coul, virial[6]; + if (EVFLAG) { + energy=(acctyp)0; + e_coul=(acctyp)0; + for (int i=0; i<6; i++) virial[i]=(acctyp)0; + } + + if (ii +class LJCoulSoft : public BaseCharge { + public: + LJCoulSoft(); + ~LJCoulSoft(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, + double **host_offset, double **host_epsilon, double *host_special_lj, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, double **host_cut_ljsq, + double **host_cut_coulsq, double *host_special_coul, + const double qqrd2e); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + // --------------------------- TYPE DATA -------------------------- + + /// lj1.x = lj1, lj1.y = lj2, lj1.z = cutsq_vdw, lj1.w = cutsq_coul + UCL_D_Vec lj1; + /// lj3.x = lj3, lj3.y = lj4, lj3.z = offset, lj3.w = epsilon + UCL_D_Vec lj3; + /// cutsq + UCL_D_Vec cutsq; + /// Special LJ values [0-3] and Special Coul values [4-7] + UCL_D_Vec sp_lj; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + numtyp _qqrd2e; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_lj_coul_soft_ext.cpp b/lib/gpu/lal_lj_coul_soft_ext.cpp new file mode 100644 index 00000000000..8c10db14f69 --- /dev/null +++ b/lib/gpu/lal_lj_coul_soft_ext.cpp @@ -0,0 +1,128 @@ +/*************************************************************************** + lj_coul_soft_ext.cpp + ------------------- + Trung Nguyen (U Chicago) + + Functions for LAMMPS access to lj/cut/coul/cut/soft acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : + email : ndtrung@uchicago.edu + ***************************************************************************/ + +#include +#include +#include + +#include "lal_lj_coul_soft.h" + +using namespace std; +using namespace LAMMPS_AL; + +static LJCoulSoft LJCSMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int ljcs_gpu_init(const int ntypes, double **cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, + double **offset, double **epsilon, double *special_lj, const int inum, + const int nall, const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen, + double **host_cut_ljsq, double **host_cut_coulsq, + double *host_special_coul, const double qqrd2e) { + LJCSMF.clear(); + gpu_mode=LJCSMF.device->gpu_mode(); + double gpu_split=LJCSMF.device->particle_split(); + int first_gpu=LJCSMF.device->first_device(); + int last_gpu=LJCSMF.device->last_device(); + int world_me=LJCSMF.device->world_me(); + int gpu_rank=LJCSMF.device->gpu_rank(); + int procs_per_gpu=LJCSMF.device->procs_per_gpu(); + + LJCSMF.device->init_message(screen,"lj/cut/coul/cut",first_gpu,last_gpu); + + bool message=false; + if (LJCSMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=LJCSMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, + host_lj4, offset, epsilon, special_lj, inum, nall, max_nbors, + maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, + host_cut_coulsq, host_special_coul, qqrd2e); + + LJCSMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; igpu_barrier(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + LJCSMF.estimate_gpu_overhead(); + return init_ok; +} + +void ljcs_gpu_clear() { + LJCSMF.clear(); +} + +int** ljcs_gpu_compute_n(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, double *host_q, double *boxlo, + double *prd) { + return LJCSMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_q, boxlo, prd); +} + +void ljcs_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, + const int nlocal, double *boxlo, double *prd) { + LJCSMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj,firstneigh,eflag, + vflag,eatom,vatom,host_start,cpu_time,success,host_q, + nlocal,boxlo,prd); +} + +double ljcs_gpu_bytes() { + return LJCSMF.host_memory_usage(); +} + + diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp new file mode 100644 index 00000000000..7b0d115d96f --- /dev/null +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp @@ -0,0 +1,249 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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: Trung Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_lj_cut_coul_cut_soft_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" + +#include + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int ljcs_gpu_init(const int ntypes, double **cutsq, double **host_lj1, double **host_lj2, + double **host_lj3, double **host_lj4, double **offset, double **epsilon, double *special_lj, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, + double **host_cut_coulsq, double *host_special_coul, const double qqrd2e); +void ljcs_gpu_clear(); +int **ljcs_gpu_compute_n(const int ago, const int inum, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double *host_q, double *boxlo, + double *prd); +void ljcs_gpu_compute(const int ago, const int inum, const int nall, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, const double cpu_time, + bool &success, double *host_q, const int nlocal, double *boxlo, double *prd); +double ljcs_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutSoftGPU::PairLJCutCoulCutSoftGPU(LAMMPS *lmp) : + PairLJCutCoulCutSoft(lmp), gpu_mode(GPU_FORCE) +{ + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairLJCutCoulCutSoftGPU::~PairLJCutCoulCutSoftGPU() +{ + ljcs_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulCutSoftGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = ljcs_gpu_compute_n(neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, + atom->tag, atom->nspecial, atom->special, eflag, vflag, + eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, + success, atom->q, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + ljcs_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, atom->q, + atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + if (host_start < inum) { + cpu_time = platform::walltime(); + cpu_compute(host_start, inum, eflag, vflag, ilist, numneigh, firstneigh); + cpu_time = platform::walltime() - cpu_time; + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulCutSoftGPU::init_style() +{ + if (!atom->q_flag) error->all(FLERR, "Pair style lj/cut/coul/cut/soft/gpu requires atom attribute q"); + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double cut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + cut = init_one(i, j); + cut *= cut; + if (cut > maxcut) maxcut = cut; + cutsq[i][j] = cutsq[j][i] = cut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + ljcs_gpu_init(atom->ntypes + 1, cutsq, lj1, lj2, lj3, lj4, offset, epsilon, force->special_lj, + atom->nlocal, atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, + screen, cut_ljsq, cut_coulsq, force->special_coul, force->qqrd2e); + GPU_EXTRA::check_flag(success, error, world); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulCutSoftGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + ljcs_gpu_bytes(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulCutSoftGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, + int *numneigh, int **firstneigh) +{ + int i, j, ii, jj, jnum, itype, jtype, itable; + double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double denc, denlj, r4sig6; + int *jlist; + double rsq; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + + // loop over neighbors of my atoms + + for (ii = start; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[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]) { + + if (rsq < cut_coulsq[itype][jtype]) { + denc = sqrt(lj4[itype][jtype] + rsq); + forcecoul = qqrd2e * lj1[itype][jtype] * qtmp*q[j] / (denc*denc*denc); + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r4sig6 = rsq*rsq / lj2[itype][jtype]; + denlj = lj3[itype][jtype] + rsq*r4sig6; + forcelj = lj1[itype][jtype] * epsilon[itype][jtype] * + (48.0*r4sig6/(denlj*denlj*denlj) - 24.0*r4sig6/(denlj*denlj)); + } else forcelj = 0.0; + + fpair = factor_coul*forcecoul + factor_lj*forcelj; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + + if (eflag) { + if (rsq < cut_coulsq[itype][jtype]) + ecoul = factor_coul * qqrd2e * lj1[itype][jtype] * qtmp*q[j] / denc; + else + ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = lj1[itype][jtype] * 4.0 * epsilon[itype][jtype] * + (1.0/(denlj*denlj) - 1.0/denlj) - offset[itype][jtype]; + evdwl *= factor_lj; + } else + evdwl = 0.0; + } + + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair, delx, dely, delz); + } + } + } +} diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h new file mode 100644 index 00000000000..fcd5439f7a3 --- /dev/null +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h @@ -0,0 +1,45 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +PairStyle(lj/cut/coul/soft/soft/gpu,PairLJCutCoulCutSoftGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_CUT_SOFT_GPU_H +#define LMP_PAIR_LJ_CUT_COUL_CUT_SOFT_GPU_H + +#include "pair_lj_cut_coul_cut_soft.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulCutSoftGPU : public PairLJCutCoulCutSoft { + public: + PairLJCutCoulCutSoftGPU(LAMMPS *lmp); + ~PairLJCutCoulCutSoftGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp new file mode 100644 index 00000000000..45d26f5155c --- /dev/null +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp @@ -0,0 +1,297 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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: Trung Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_lj_cut_coul_long_soft_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "kspace.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" + +#include + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int ljcls_gpu_init(const int ntypes, double **cutsq, double **host_lj1, double **host_lj2, + double **host_lj3, double **host_lj4, double **offset, double **epsilon, double *special_lj, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, + double host_cut_coulsq, double *host_special_coul, const double qqrd2e, + const double g_ewald); +void ljcls_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, double **host_lj2, + double **host_lj3, double **host_lj4, double **offset, double **epsilon, + double **host_lj_cutsq); +void ljcls_gpu_clear(); +int **ljcls_gpu_compute_n(const int ago, const int inum, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double *host_q, double *boxlo, + double *prd); +void ljcls_gpu_compute(const int ago, const int inum, const int nall, double **host_x, + int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, const int nlocal, + double *boxlo, double *prd); +double ljcls_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongSoftGPU::PairLJCutCoulLongSoftGPU(LAMMPS *lmp) : + PairLJCutCoulLongSoft(lmp), gpu_mode(GPU_FORCE) +{ + respa_enable = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairLJCutCoulLongSoftGPU::~PairLJCutCoulLongSoftGPU() +{ + ljcls_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongSoftGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = ljcls_gpu_compute_n(neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, + atom->tag, atom->nspecial, atom->special, eflag, vflag, + eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, + success, atom->q, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + ljcls_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, atom->q, + atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + if (host_start < inum) { + cpu_time = platform::walltime(); + cpu_compute(host_start, inum, eflag, vflag, ilist, numneigh, firstneigh); + cpu_time = platform::walltime() - cpu_time; + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulLongSoftGPU::init_style() +{ + cut_respa = nullptr; + + if (!atom->q_flag) error->all(FLERR, "Pair style lj/cut/coul/long/soft/gpu requires atom attribute q"); + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double cut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + cut = init_one(i, j); + cut *= cut; + if (cut > maxcut) maxcut = cut; + cutsq[i][j] = cutsq[j][i] = cut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + cut_coulsq = cut_coul * cut_coul; + + // insure use of KSpace long-range solver, set g_ewald + + if (force->kspace == nullptr) error->all(FLERR, "Pair style requires a KSpace style"); + g_ewald = force->kspace->g_ewald; + + // setup force tables + + if (ncoultablebits) init_tables(cut_coul, cut_respa); + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + ljcls_gpu_init(atom->ntypes + 1, cutsq, lj1, lj2, lj3, lj4, offset, epsilon, force->special_lj, + atom->nlocal, atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, + screen, cut_ljsq, cut_coulsq, force->special_coul, force->qqrd2e, g_ewald); + GPU_EXTRA::check_flag(success, error, world); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongSoftGPU::reinit() +{ + Pair::reinit(); + + ljcls_gpu_reinit(atom->ntypes + 1, cutsq, lj1, lj2, lj3, lj4, offset, epsilon, cut_ljsq); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulLongSoftGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + ljcls_gpu_bytes(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongSoftGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, + int *numneigh, int **firstneigh) +{ + int i, j, ii, jj, jnum, itype, jtype, itable; + double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double denc, denlj, r4sig6; + double grij, expm2, prefactor, t, erfc; + int *jlist; + double rsq; + + evdwl = ecoul = 0.0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + double qqrd2e = force->qqrd2e; + + // loop over neighbors of my atoms + + for (ii = start; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[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; + + if (rsq < cut_coulsq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + + denc = sqrt(lj4[itype][jtype] + rsq); + prefactor = qqrd2e * lj1[itype][jtype] * qtmp*q[j] / (denc*denc*denc); + + forcecoul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; + } else + forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r4sig6 = rsq*rsq / lj2[itype][jtype]; + denlj = lj3[itype][jtype] + rsq*r4sig6; + forcelj = lj1[itype][jtype] * epsilon[itype][jtype] * + (48.0*r4sig6/(denlj*denlj*denlj) - 24.0*r4sig6/(denlj*denlj)); + } else + forcelj = 0.0; + + fpair = (forcecoul + factor_lj * forcelj) * r2inv; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + if (eflag) { + if (rsq < cut_coulsq) { + prefactor = qqrd2e * lj1[itype][jtype] * qtmp*q[j] / denc; + ecoul = prefactor*erfc; + } else + ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = lj1[itype][jtype] * 4.0 * epsilon[itype][jtype] * + (1.0/(denlj*denlj) - 1.0/denlj) - offset[itype][jtype]; + evdwl *= factor_lj; + } else + evdwl = 0.0; + } + + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair, delx, dely, delz); + } + } + } +} diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.h b/src/GPU/pair_lj_cut_coul_long_soft_gpu.h new file mode 100644 index 00000000000..d4ff0e375fd --- /dev/null +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +PairStyle(lj/cut/coul/long/soft/gpu,PairLJCutCoulLongSoftGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_SOFT_GPU_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_SOFT_GPU_H + +#include "pair_lj_cut_coul_long_soft.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongSoftGPU : public PairLJCutCoulLongSoft { + public: + PairLJCutCoulLongSoftGPU(LAMMPS *lmp); + ~PairLJCutCoulLongSoftGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + void reinit() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From 086cf49a8c64130aad9879a834a683c9d6e5f220 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 5 Dec 2023 13:32:33 -0600 Subject: [PATCH 157/300] Added the GPU version of coul/slater/long --- lib/gpu/lal_coul_slater_long.cpp | 150 +++++++++++++++ lib/gpu/lal_coul_slater_long.cu | 237 ++++++++++++++++++++++++ lib/gpu/lal_coul_slater_long.h | 82 +++++++++ lib/gpu/lal_coul_slater_long_ext.cpp | 145 +++++++++++++++ src/GPU/pair_coul_slater_long_gpu.cpp | 255 ++++++++++++++++++++++++++ src/GPU/pair_coul_slater_long_gpu.h | 46 +++++ 6 files changed, 915 insertions(+) create mode 100644 lib/gpu/lal_coul_slater_long.cpp create mode 100644 lib/gpu/lal_coul_slater_long.cu create mode 100644 lib/gpu/lal_coul_slater_long.h create mode 100644 lib/gpu/lal_coul_slater_long_ext.cpp create mode 100644 src/GPU/pair_coul_slater_long_gpu.cpp create mode 100644 src/GPU/pair_coul_slater_long_gpu.h diff --git a/lib/gpu/lal_coul_slater_long.cpp b/lib/gpu/lal_coul_slater_long.cpp new file mode 100644 index 00000000000..98b73ab7535 --- /dev/null +++ b/lib/gpu/lal_coul_slater_long.cpp @@ -0,0 +1,150 @@ +/*************************************************************************** + coul_slater_long_ext.cpp + ------------------- + Trung Nguyen (U Chicago) + + Class for acceleration of the coul/slater/long pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "coul_slater_long_cl.h" +#elif defined(USE_CUDART) +const char *coul_slater_long=0; +#else +#include "coul_slater_long_cubin.h" +#endif + +#include "lal_coul_slater_long.h" +#include +namespace LAMMPS_AL { +#define CoulSlaterLongT CoulSlaterLong + +extern Device pair_gpu_device; + +template +CoulSlaterLongT::CoulSlaterLong() : BaseCharge(), _allocated(false) { +} + +template +CoulSlaterLongT::~CoulSlaterLong() { + clear(); +} + +template +int CoulSlaterLongT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int CoulSlaterLongT::init(const int ntypes, double **host_scale, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *_screen, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald, double lamda) { + int success; + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,coul_slater_long,"k_coul_slater_long"); + if (success!=0) + return success; + + int lj_types=ntypes; + shared_types=false; + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack1(ntypes,lj_types,scale,host_write,host_scale); + + sp_cl.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + for (int i=0; i<4; i++) { + host_write[i]=host_special_coul[i]; + } + ucl_copy(sp_cl,host_write,4,false); + + _cut_coulsq=host_cut_coulsq; + _qqrd2e=qqrd2e; + _g_ewald=g_ewald; + _lamda=lamda; + + _allocated=true; + this->_max_bytes=scale.row_bytes()+sp_cl.row_bytes(); + return 0; +} + +template +void CoulSlaterLongT::reinit(const int ntypes, double **host_scale) { + UCL_H_Vec hscale(_lj_types*_lj_types,*(this->ucl_device), + UCL_WRITE_ONLY); + this->atom->type_pack1(ntypes,_lj_types,scale,hscale,host_scale); +} + +template +void CoulSlaterLongT::clear() { + if (!_allocated) + return; + _allocated=false; + + scale.clear(); + sp_cl.clear(); + this->clear_atomic(); +} + +template +double CoulSlaterLongT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(CoulSlaterLong); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int CoulSlaterLongT::loop(const int eflag, const int vflag) { + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &scale, &sp_cl, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, + &eflag, &vflag, &ainum, &nbor_pitch, + &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, + &_lamda, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &scale, &_lj_types, &sp_cl, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, + &_qqrd2e, &_g_ewald, &_lamda, &this->_threads_per_atom); + } + this->time_pair.stop(); + return GX; +} + +template class CoulSlaterLong; +} diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu new file mode 100644 index 00000000000..f8902c59d74 --- /dev/null +++ b/lib/gpu/lal_coul_slater_long.cu @@ -0,0 +1,237 @@ +// ************************************************************************** +// coul_slater_long.cu +// ------------------- +// Trung Nguyen (U Chicago) +// +// Device code for acceleration of the coul/slater/long pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : September 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) + +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( q_tex,float); +#else +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +#endif + +#else +#define pos_tex x_ +#define q_tex q_ +#endif + +__kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, + const __global numtyp *restrict scale, + const int lj_types, + const __global numtyp *restrict sp_cl_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp *restrict q_, + const numtyp cut_coulsq, const numtyp qqrd2e, + const numtyp g_ewald, const numtyp lamda, + const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + __local numtyp sp_cl[4]; + int n_stride; + local_allocate_store_charge(); + + sp_cl[0]=sp_cl_in[0]; + sp_cl[1]=sp_cl_in[1]; + sp_cl[2]=sp_cl_in[2]; + sp_cl[3]=sp_cl_in[3]; + + acctyp3 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp e_coul, virial[6]; + if (EVFLAG) { + e_coul=(acctyp)0; + for (int i=0; i<6; i++) virial[i]=(acctyp)0; + } + + if (ii +class CoulSlaterLong : public BaseCharge { + public: + CoulSlaterLong(); + ~CoulSlaterLong(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **scale, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald, const double lamda); + + /// Send updated coeffs from host to device (to be compatible with fix adapt) + void reinit(const int ntypes, double **scale); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + // --------------------------- TYPE DATA -------------------------- + + /// scale + UCL_D_Vec scale; + /// Special Coul values [0-3] + UCL_D_Vec sp_cl; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + numtyp _cut_coulsq, _qqrd2e, _g_ewald, _lamda; + + protected: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_coul_slater_long_ext.cpp b/lib/gpu/lal_coul_slater_long_ext.cpp new file mode 100644 index 00000000000..fb5d9725c91 --- /dev/null +++ b/lib/gpu/lal_coul_slater_long_ext.cpp @@ -0,0 +1,145 @@ +/*************************************************************************** + coul_slater_long_ext.cpp + ------------------- + Trung Nguyen (U Chicago) + + Functions for LAMMPS access to coul/slater/long acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_coul_slater_long.h" + +using namespace std; +using namespace LAMMPS_AL; + +static CoulSlaterLong CSLMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int csl_gpu_init(const int ntypes, double **host_scale, + const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, + FILE *screen, double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald, const double lamda) { + CSLMF.clear(); + gpu_mode=CSLMF.device->gpu_mode(); + double gpu_split=CSLMF.device->particle_split(); + int first_gpu=CSLMF.device->first_device(); + int last_gpu=CSLMF.device->last_device(); + int world_me=CSLMF.device->world_me(); + int gpu_rank=CSLMF.device->gpu_rank(); + int procs_per_gpu=CSLMF.device->procs_per_gpu(); + + CSLMF.device->init_message(screen,"coul/slater/long",first_gpu,last_gpu); + + bool message=false; + if (CSLMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=CSLMF.init(ntypes, host_scale, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen, host_cut_coulsq, + host_special_coul, qqrd2e, g_ewald, lamda); + + CSLMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + CSLMF.estimate_gpu_overhead(); + return init_ok; +} + +// --------------------------------------------------------------------------- +// Copy updated coeffs from host to device +// --------------------------------------------------------------------------- +void csl_gpu_reinit(const int ntypes, double **host_scale) { + int world_me=CSLMF.device->world_me(); + int gpu_rank=CSLMF.device->gpu_rank(); + int procs_per_gpu=CSLMF.device->procs_per_gpu(); + + if (world_me==0) + CSLMF.reinit(ntypes, host_scale); + + CSLMF.device->world_barrier(); + + for (int i=0; iserialize_init(); + } +} + +void csl_gpu_clear() { + CSLMF.clear(); +} + +int** csl_gpu_compute_n(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, double *host_q, double *boxlo, + double *prd) { + return CSLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_q, boxlo, prd); +} + +void csl_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, + const int nlocal, double *boxlo, double *prd) { + CSLMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj, + firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, + host_q,nlocal,boxlo,prd); +} + +double csl_gpu_bytes() { + return CSLMF.host_memory_usage(); +} + + diff --git a/src/GPU/pair_coul_slater_long_gpu.cpp b/src/GPU/pair_coul_slater_long_gpu.cpp new file mode 100644 index 00000000000..d812ebe2004 --- /dev/null +++ b/src/GPU/pair_coul_slater_long_gpu.cpp @@ -0,0 +1,255 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_coul_slater_long_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "kspace.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" + +#include + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int csl_gpu_init(const int ntypes, double **scale, const int nlocal, const int nall, + const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, + FILE *screen, double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald, const double lamda); +void csl_gpu_reinit(const int ntypes, double **scale); +void csl_gpu_clear(); +int **csl_gpu_compute_n(const int ago, const int inum, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double *host_q, double *boxlo, + double *prd); +void csl_gpu_compute(const int ago, const int inum, const int nall, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, const double cpu_time, + bool &success, double *host_q, const int nlocal, double *boxlo, double *prd); +double csl_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairCoulSlaterLongGPU::PairCoulSlaterLongGPU(LAMMPS *lmp) : PairCoulSlaterLong(lmp), gpu_mode(GPU_FORCE) +{ + respa_enable = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairCoulSlaterLongGPU::~PairCoulSlaterLongGPU() +{ + csl_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulSlaterLongGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = csl_gpu_compute_n(neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, + atom->tag, atom->nspecial, atom->special, eflag, vflag, + eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, + success, atom->q, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + csl_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, atom->q, + atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); + if (host_start < inum) { + cpu_time = platform::walltime(); + cpu_compute(host_start, inum, eflag, vflag, ilist, numneigh, firstneigh); + cpu_time = platform::walltime() - cpu_time; + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairCoulSlaterLongGPU::init_style() +{ + if (!atom->q_flag) error->all(FLERR, "Pair style coul/slater/long/gpu requires atom attribute q"); + + // Call init_one calculation make sure scale is correct + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { init_one(i, j); } + } + } + double cell_size = cut_coul + neighbor->skin; + + cut_coulsq = cut_coul * cut_coul; + + // ensure use of KSpace long-range solver, set g_ewald + + if (force->kspace == nullptr) error->all(FLERR, "Pair style requires a KSpace style"); + g_ewald = force->kspace->g_ewald; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = csl_gpu_init(atom->ntypes + 1, scale, atom->nlocal, atom->nlocal + atom->nghost, mnf, + maxspecial, cell_size, gpu_mode, screen, cut_coulsq, + force->special_coul, force->qqrd2e, g_ewald, lamda); + + GPU_EXTRA::check_flag(success, error, world); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulSlaterLongGPU::reinit() +{ + Pair::reinit(); + + csl_gpu_reinit(atom->ntypes + 1, scale); +} + +/* ---------------------------------------------------------------------- */ + +double PairCoulSlaterLongGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + csl_gpu_bytes(); +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulSlaterLongGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, + int *numneigh, int **firstneigh) +{ + int i, j, ii, jj, jnum, itable; + double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, ecoul, fpair; + double fraction, table; + double r, r2inv, forcecoul, factor_coul; + double grij, expm2, prefactor, t, erfc; + int *jlist; + double rsq; + + ecoul = 0.0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *special_coul = force->special_coul; + double qqrd2e = force->qqrd2e; + + // loop over neighbors of my atoms + + for (ii = start; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_coul = special_coul[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; + + r2inv = 1.0 / rsq; + + if (rsq < cut_coulsq) { + r2inv = 1.0/rsq; + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + double slater_term = exp(-2*r/lamda)*(1 + (2*r/lamda*(1+r/lamda))); + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - slater_term); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor*(1-slater_term); + + fpair = forcecoul * r2inv; + + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; + + if (eflag) { + if (rsq < cut_coulsq) { + ecoul = prefactor*(erfc - (1 + r/lamda)*exp(-2*r/lamda)); + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor*(1.0-(1 + r/lamda)*exp(-2*r/lamda)); + } else + ecoul = 0.0; + } + + if (evflag) ev_tally_full(i, 0.0, ecoul, fpair, delx, dely, delz); + } + } + } +} diff --git a/src/GPU/pair_coul_slater_long_gpu.h b/src/GPU/pair_coul_slater_long_gpu.h new file mode 100644 index 00000000000..4a30a71d25a --- /dev/null +++ b/src/GPU/pair_coul_slater_long_gpu.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(coul/slater/long/gpu,PairCoulSlaterLongGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_COUL_SLATER_LONG_GPU_H +#define LMP_PAIR_COUL_SLATER_LONG_GPU_H + +#include "pair_coul_slater_long.h" + +namespace LAMMPS_NS { + +class PairCoulSlaterLongGPU : public PairCoulSlaterLong { + public: + PairCoulSlaterLongGPU(LAMMPS *lmp); + ~PairCoulSlaterLongGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + void reinit() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From fe96d9f83618a2763147641ccd7b902f317bd30f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 5 Dec 2023 13:34:37 -0600 Subject: [PATCH 158/300] Added the GPU version of pair edpd and mdpd --- lib/gpu/lal_edpd.cpp | 295 ++++++++++++++++++ lib/gpu/lal_edpd.cu | 619 ++++++++++++++++++++++++++++++++++++++ lib/gpu/lal_edpd.h | 106 +++++++ lib/gpu/lal_edpd_ext.cpp | 142 +++++++++ lib/gpu/lal_mdpd.cpp | 218 ++++++++++++++ lib/gpu/lal_mdpd.cu | 475 +++++++++++++++++++++++++++++ lib/gpu/lal_mdpd.h | 88 ++++++ lib/gpu/lal_mdpd_ext.cpp | 133 ++++++++ src/GPU/pair_edpd_gpu.cpp | 195 ++++++++++++ src/GPU/pair_edpd_gpu.h | 48 +++ src/GPU/pair_mdpd_gpu.cpp | 171 +++++++++++ src/GPU/pair_mdpd_gpu.h | 45 +++ 12 files changed, 2535 insertions(+) create mode 100644 lib/gpu/lal_edpd.cpp create mode 100644 lib/gpu/lal_edpd.cu create mode 100644 lib/gpu/lal_edpd.h create mode 100644 lib/gpu/lal_edpd_ext.cpp create mode 100644 lib/gpu/lal_mdpd.cpp create mode 100644 lib/gpu/lal_mdpd.cu create mode 100644 lib/gpu/lal_mdpd.h create mode 100644 lib/gpu/lal_mdpd_ext.cpp create mode 100644 src/GPU/pair_edpd_gpu.cpp create mode 100644 src/GPU/pair_edpd_gpu.h create mode 100644 src/GPU/pair_mdpd_gpu.cpp create mode 100644 src/GPU/pair_mdpd_gpu.h diff --git a/lib/gpu/lal_edpd.cpp b/lib/gpu/lal_edpd.cpp new file mode 100644 index 00000000000..2a32d01abb7 --- /dev/null +++ b/lib/gpu/lal_edpd.cpp @@ -0,0 +1,295 @@ +/*************************************************************************** + edpd.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the edpd pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "edpd_cl.h" +#elif defined(USE_CUDART) +const char *edpd=0; +#else +#include "edpd_cubin.h" +#endif + +#include "lal_edpd.h" +#include +namespace LAMMPS_AL { +#define EDPDT EDPD + +extern Device device; + +template +EDPDT::EDPD() : BaseDPD(), _allocated(false) { + _max_q_size = 0; +} + +template +EDPDT::~EDPD() { + clear(); +} + +template +int EDPDT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int EDPDT::init(const int ntypes, + double **host_cutsq, double **host_a0, + double **host_gamma, double **host_cut, + double **host_power, double **host_kappa, + double **host_powerT, double **host_cutT, + double ***host_sc, double ***host_kc, double *host_mass, + double *host_special_lj, + const int power_flag, const int kappa_flag, + const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { + const int max_shared_types=this->device->max_shared_types(); + + int onetype=0; + #ifdef USE_OPENCL + if (maxspecial==0) + for (int i=1; i0) { + if (onetype>0) + onetype=-1; + else if (onetype==0) + onetype=i*max_shared_types+j; + } + if (onetype<0) onetype=0; + #endif + + int success; + int extra_fields = 4; // round up to accomodate quadruples of numtyp values + // T and cv + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,edpd,"k_edpd",onetype,extra_fields); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_a0,host_gamma, + host_cut); + + coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_power,host_kappa, + host_powerT,host_cutT); + + UCL_H_Vec dview_mass(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + for (int i = 0; i < ntypes; i++) + dview_mass[i] = host_mass[i]; + mass.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); + ucl_copy(mass,dview_mass,false); + + if (host_sc) { + UCL_H_Vec dview(lj_types*lj_types,*(this->ucl_device),UCL_WRITE_ONLY);; + sc.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + int n = 0; + for (int i = 1; i < ntypes; i++) + for (int j = 1; j < ntypes; j++) { + dview[n].x = host_sc[i][j][0]; + dview[n].y = host_sc[i][j][1]; + dview[n].z = host_sc[i][j][2]; + dview[n].w = host_sc[i][j][3]; + n++; + } + ucl_copy(sc,dview,false); + } + + if (host_kc) { + UCL_H_Vec dview(lj_types*lj_types,*(this->ucl_device),UCL_WRITE_ONLY);; + kc.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + int n = 0; + for (int i = 1; i < ntypes; i++) + for (int j = 1; j < ntypes; j++) { + dview[n].x = host_kc[i][j][0]; + dview[n].y = host_kc[i][j][1]; + dview[n].z = host_kc[i][j][2]; + dview[n].w = host_kc[i][j][3]; + n++; + } + ucl_copy(kc,dview,false); + } + + UCL_H_Vec host_rsq(lj_types*lj_types,*(this->ucl_device), + UCL_WRITE_ONLY); + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack1(ntypes,lj_types,cutsq,host_rsq,host_cutsq); + + double special_sqrt[4]; + special_sqrt[0] = sqrt(host_special_lj[0]); + special_sqrt[1] = sqrt(host_special_lj[1]); + special_sqrt[2] = sqrt(host_special_lj[2]); + special_sqrt[3] = sqrt(host_special_lj[3]); + + UCL_H_Vec dview; + sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(host_special_lj,4,*(this->ucl_device)); + ucl_copy(sp_lj,dview,false); + sp_sqrt.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(special_sqrt,4,*(this->ucl_device)); + ucl_copy(sp_sqrt,dview,false); + + _power_flag = power_flag; + _kappa_flag = kappa_flag; + + // allocate per-atom array Q + + int ef_nall=nall; + if (ef_nall==0) + ef_nall=2000; + + _max_q_size=static_cast(static_cast(ef_nall)*1.10); + Q.alloc(_max_q_size,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + + _allocated=true; + this->_max_bytes=coeff.row_bytes()+coeff2.row_bytes()+Q.row_bytes()+ + sc.row_bytes()+kc.row_bytes()+mass.row_bytes()+cutsq.row_bytes()+sp_lj.row_bytes()+sp_sqrt.row_bytes(); + return 0; +} + +template +void EDPDT::clear() { + if (!_allocated) + return; + _allocated=false; + + coeff.clear(); + coeff2.clear(); + sc.clear(); + kc.clear(); + Q.clear(); + mass.clear(); + cutsq.clear(); + sp_lj.clear(); + sp_sqrt.clear(); + this->clear_atomic(); +} + +template +double EDPDT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(EDPD); +} + +template +void EDPDT::update_flux(void **flux_ptr) { + *flux_ptr=Q.host.begin(); + Q.update_host(_max_q_size,false); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int EDPDT::loop(const int eflag, const int vflag) { + + int nall = this->atom->nall(); + + // Resize Q array if necessary + if (nall > _max_q_size) { + _max_q_size=static_cast(static_cast(nall)*1.10); + Q.resize(_max_q_size); + } + + // signal that we need to transfer extra data from the host + + this->atom->extra_data_unavail(); + + numtyp4 *pextra=reinterpret_cast(&(this->atom->extra[0])); + + int n = 0; + int nstride = 1; + for (int i = 0; i < nall; i++) { + int idx = n+i*nstride; + numtyp4 v; + v.x = edpd_temp[i]; + v.y = edpd_cv[i]; + v.z = 0; + v.w = 0; + pextra[idx] = v; + } + this->atom->add_extra_data(); + + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, &mass, + &sc, &kc, &sp_lj, &sp_sqrt, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &Q, &eflag, &vflag, + &_power_flag, &_kappa_flag, &ainum, &nbor_pitch, + &this->atom->v, &cutsq, &this->_dtinvsqrt, &this->_seed, + &this->_timestep, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, &mass, + &sc, &kc, &_lj_types, &sp_lj, &sp_sqrt, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &Q, &eflag, &vflag, + &_power_flag, &_kappa_flag, &ainum, &nbor_pitch, + &this->atom->v, &cutsq, &this->_dtinvsqrt, &this->_seed, + &this->_timestep, &this->_threads_per_atom); + } + + this->time_pair.stop(); + return GX; +} + +template +void EDPDT::update_coeff(int ntypes, double **host_a0, double **host_gamma, + double **host_sigma, double **host_cut) +{ + UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + this->atom->type_pack4(ntypes,_lj_types,coeff,host_write,host_a0,host_gamma, + host_sigma,host_cut); +} + +// --------------------------------------------------------------------------- +// Get the extra data pointers from host +// --------------------------------------------------------------------------- + +template +void EDPDT::get_extra_data(double *host_T, double *host_cv) { + edpd_temp = host_T; + edpd_cv = host_cv; +} + +template class EDPD; +} diff --git a/lib/gpu/lal_edpd.cu b/lib/gpu/lal_edpd.cu new file mode 100644 index 00000000000..9662d15aea3 --- /dev/null +++ b/lib/gpu/lal_edpd.cu @@ -0,0 +1,619 @@ +// ************************************************************************** +// edpd.cu +// ------------------- +// Trung Dac Nguyen (U Chicago) +// +// Device code for acceleration of the edpd pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : September 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( vel_tex,float4); +#else +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); +#endif +#else +#define pos_tex x_ +#define vel_tex v_ +#endif + +#define EPSILON (numtyp)1.0e-10 + +//#define _USE_UNIFORM_SARU_LCG +//#define _USE_UNIFORM_SARU_TEA8 +//#define _USE_GAUSSIAN_SARU_LCG + +#if !defined(_USE_UNIFORM_SARU_LCG) && !defined(_USE_UNIFORM_SARU_TEA8) && !defined(_USE_GAUSSIAN_SARU_LCG) +#define _USE_UNIFORM_SARU_LCG +#endif + +// References: +// 1. Y. Afshar, F. Schmid, A. Pishevar, S. Worley, Comput. Phys. Comm. 184 (2013), 1119–1128. +// 2. C. L. Phillips, J. A. Anderson, S. C. Glotzer, Comput. Phys. Comm. 230 (2011), 7191-7201. +// PRNG period = 3666320093*2^32 ~ 2^64 ~ 10^19 + +#define LCGA 0x4beb5d59 /* Full period 32 bit LCG */ +#define LCGC 0x2600e1f7 +#define oWeylPeriod 0xda879add /* Prime period 3666320093 */ +#define oWeylOffset 0x8009d14b +#define TWO_N32 0.232830643653869628906250e-9f /* 2^-32 */ + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns uniformly distributed random numbers u in [-1.0;1.0] +// using the inherent LCG, then multiply u with sqrt(3) to "match" +// with a normal random distribution. +// Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) +// Curly brackets to make variables local to the scope. +#ifdef _USE_UNIFORM_SARU_LCG +#define SQRT3 (numtyp)1.7320508075688772935274463 +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + unsigned int wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + unsigned int v = (state ^ (state>>26)) + wstate; \ + unsigned int s = (signed int)((v^(v>>20))*0x6957f5a7); \ + randnum = SQRT3*(s*TWO_N32*(numtyp)2.0-(numtyp)1.0); \ +} +#endif + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns uniformly distributed random numbers u in [-1.0;1.0] using TEA8 +// then multiply u with sqrt(3) to "match" with a normal random distribution +// Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) +#ifdef _USE_UNIFORM_SARU_TEA8 +#define SQRT3 (numtyp)1.7320508075688772935274463 +#define k0 0xA341316C +#define k1 0xC8013EA4 +#define k2 0xAD90777D +#define k3 0x7E95761E +#define delta 0x9e3779b9 +#define rounds 8 +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + unsigned int wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + unsigned int sum = 0; \ + for (int i=0; i < rounds; i++) { \ + sum += delta; \ + state += ((wstate<<4) + k0)^(wstate + sum)^((wstate>>5) + k1); \ + wstate += ((state<<4) + k2)^(state + sum)^((state>>5) + k3); \ + } \ + unsigned int v = (state ^ (state>>26)) + wstate; \ + unsigned int s = (signed int)((v^(v>>20))*0x6957f5a7); \ + randnum = SQRT3*(s*TWO_N32*(numtyp)2.0-(numtyp)1.0); \ +} +#endif + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns two uniformly distributed random numbers r1 and r2 in [-1.0;1.0], +// and uses the polar method (Marsaglia's) to transform to a normal random value +// This is used to compared with CPU DPD using RandMars::gaussian() +#ifdef _USE_GAUSSIAN_SARU_LCG +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state=0x12345678; \ + unsigned int wstate=12345678; \ + state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + unsigned int v, s; \ + numtyp r1, r2, rsq; \ + while (1) { \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + v = (state ^ (state>>26)) + wstate; \ + s = (signed int)((v^(v>>20))*0x6957f5a7); \ + r1 = s*TWO_N32*(numtyp)2.0-(numtyp)1.0; \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + v = (state ^ (state>>26)) + wstate; \ + s = (signed int)((v^(v>>20))*0x6957f5a7); \ + r2 = s*TWO_N32*(numtyp)2.0-(numtyp)1.0; \ + rsq = r1 * r1 + r2 * r2; \ + if (rsq < (numtyp)1.0) break; \ + } \ + numtyp fac = ucl_sqrt((numtyp)-2.0*log(rsq)/rsq); \ + randnum = r2*fac; \ +} +#endif + +#if (SHUFFLE_AVAIL == 0) + +#define store_heatflux(Qi, ii, inum, tid, t_per_atom, offset, Q) \ + if (t_per_atom>1) { \ + simdsync(); \ + simd_reduce_add1(t_per_atom, red_acc, offset, tid, Qi); \ + } \ + if (offset==0 && ii1) { \ + simd_reduce_add1(t_per_atom,Qi); \ + } \ + if (offset==0 && ii tag2) { + tag1 = jtag; tag2 = itag; + } + + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + numtyp T_ij=(numtyp)0.5*(Ti+Tj); + numtyp4 T_pow; + T_pow.x = T_ij - (numtyp)1.0; + T_pow.y = T_pow.x*T_pow.x; + T_pow.z = T_pow.x*T_pow.y; + T_pow.w = T_pow.x*T_pow.z; + + numtyp coeff2x = coeff2[mtype].x; //power[itype][jtype] + numtyp coeff2y = coeff2[mtype].y; //kappa[itype][jtype] + numtyp coeff2z = coeff2[mtype].z; //powerT[itype][jtype] + numtyp coeff2w = coeff2[mtype].w; //cutT[itype][jtype] + numtyp power_d = coeff2x; + if (power_flag) { + numtyp factor = (numtyp)1.0; + factor += sc[mtype].x*T_pow.x + sc[mtype].y*T_pow.y + + sc[mtype].z*T_pow.z + sc[mtype].w*T_pow.w; + power_d *= factor; + } + + power_d = MAX((numtyp)0.01,power_d); + numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] + wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); + numtyp wr = ucl_pow(wc, (numtyp)0.5*power_d); + + numtyp kboltz = (numtyp)1.0; + numtyp GammaIJ = coeffy; // gamma[itype][jtype] + numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); + SigmaIJ = ucl_sqrt(SigmaIJ); + + numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] + force -= GammaIJ *wr*wr *dot*rinv; + force += SigmaIJ * wr *randnum * dtinvsqrt; + force *= factor_dpd*rinv; + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + // heat transfer + + if (r < coeff2w) { + numtyp wrT = (numtyp)1.0 - r/coeff2w; + wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); + wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] + numtyp randnumT = (numtyp)0; + saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); + randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); + + numtyp kappaT = coeff2y; // kappa[itype][jtype] + if (kappa_flag) { + numtyp factor = (numtyp)1.0; + factor += kc[mtype].x*T_pow.x + kc[mtype].y*T_pow.y + + kc[mtype].z*T_pow.z + kc[mtype].w*T_pow.w; + kappaT *= factor; + } + + numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; + numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); + + numtyp dQc = kij * wrT*wrT * (Tj - Ti)/(Ti*Tj); + numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cvi+cvj); + numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; + Qi += (dQc + dQd + dQr ); + } + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; + energy+=factor_dpd*e; + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + } // for nbor + } // if ii + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, + ans,engv); + store_heatflux(Qi,ii,inum,tid,t_per_atom,offset,Q); +} + +__kernel void k_edpd_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff_in, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp *restrict mass, + const __global numtyp4 *restrict sc_in, + const __global numtyp4 *restrict kc_in, + const __global numtyp *restrict sp_lj_in, + const __global numtyp *restrict sp_sqrt_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict Q, + const int eflag, const int vflag, + const int power_flag, const int kappa_flag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const __global numtyp *restrict cutsq, + const numtyp dtinvsqrt, const int seed, + const int timestep, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + #ifndef ONETYPE + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 sc[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 kc[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[4]; + __local numtyp sp_sqrt[4]; + if (tid<4) { + sp_lj[tid]=sp_lj_in[tid]; + sp_sqrt[tid]=sp_sqrt_in[tid]; + } + if (tid tag2) { + tag1 = jtag; tag2 = itag; + } + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + numtyp T_ij=(numtyp)0.5*(Ti+Tj); + numtyp4 T_pow; + T_pow.x = T_ij - (numtyp)1.0; + T_pow.y = T_pow.x*T_pow.x; + T_pow.z = T_pow.x*T_pow.y; + T_pow.w = T_pow.x*T_pow.z; + + numtyp power_d = coeff2x; // power[itype][jtype] + if (power_flag) { + numtyp factor = (numtyp)1.0; + factor += scx*T_pow.x + scy*T_pow.y + scz*T_pow.z + scw*T_pow.w; + power_d *= factor; + } + + power_d = MAX((numtyp)0.01,power_d); + numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] + wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); + numtyp wr = ucl_pow((numtyp)wc, (numtyp)0.5*power_d); + + numtyp kboltz = (numtyp)1.0; + numtyp GammaIJ = coeffy; // gamma[itype][jtype] + numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); + SigmaIJ = ucl_sqrt(SigmaIJ); + + numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] + force -= GammaIJ *wr*wr *dot*rinv; + force += SigmaIJ* wr *randnum * dtinvsqrt; + #ifndef ONETYPE + force *= factor_dpd*rinv; + #else + force *= rinv; + #endif + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + // heat transfer + + if (r < coeff2w) { + numtyp wrT = (numtyp)1.0 - r/coeff2w; + wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); + wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] + numtyp randnumT = (numtyp)0; + saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); + randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); + + numtyp kappaT = coeff2y; // kappa[itype][jtype] + if (kappa_flag) { + numtyp factor = (numtyp)1.0; + factor += kcx*T_pow.x + kcy*T_pow.y + kcz*T_pow.z + kcw*T_pow.w; + kappaT *= factor; + } + + numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; + numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); + + numtyp dQc = kij * wrT*wrT * (Tj - Ti )/(Ti*Tj); + numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cvi+cvj); + numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; + Qi += (dQc + dQd + dQr ); + } + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; + #ifndef ONETYPE + energy+=factor_dpd*e; + #else + energy+=e; + #endif + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + + } + } // for nbor + } // if ii + + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, ans,engv); + store_heatflux(Qi,ii,inum,tid,t_per_atom,offset,Q); +} + diff --git a/lib/gpu/lal_edpd.h b/lib/gpu/lal_edpd.h new file mode 100644 index 00000000000..b7935bf2f4e --- /dev/null +++ b/lib/gpu/lal_edpd.h @@ -0,0 +1,106 @@ +/*************************************************************************** + edpd.h + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the dpd pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#ifndef LAL_DPD_H +#define LAL_DPD_H + +#include "lal_base_dpd.h" + +namespace LAMMPS_AL { + +template +class EDPD : public BaseDPD { + public: + EDPD(); + ~EDPD(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, double **host_a0, + double **host_gamma, double **host_cut, double **host_power, + double **host_kappa, double **host_powerT, double **host_cutT, + double ***host_sc, double ***host_kc, double *host_mass, + double *host_special_lj, const int power_flag, const int kappa_flag, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, + FILE *screen); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + /// Update coeff if needed (tstat only) + void update_coeff(int ntypes, double **host_a0, double **host_gamma, + double **host_sigma, double **host_cut); + + void get_extra_data(double *host_T, double *host_cv); + + /// copy Q (flux) from device to host + void update_flux(void **flux_ptr); + + // --------------------------- TYPE DATA -------------------------- + + /// coeff.x = a0, coeff.y = gamma, coeff.z = cut + UCL_D_Vec coeff; + /// coeff2.x = power, coeff2.y = kappa, coeff2.z = powerT, coeff2.w = cutT + UCL_D_Vec coeff2; + + UCL_D_Vec kc, sc; + UCL_D_Vec cutsq; + + /// per-type array + UCL_D_Vec mass; + + /// Special LJ values + UCL_D_Vec sp_lj, sp_sqrt; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + /// Per-atom arrays + UCL_Vector Q; + int _max_q_size; + + int _power_flag, _kappa_flag; + + /// pointer to host data + double *edpd_temp, *edpd_cv; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_edpd_ext.cpp b/lib/gpu/lal_edpd_ext.cpp new file mode 100644 index 00000000000..a9f60c39411 --- /dev/null +++ b/lib/gpu/lal_edpd_ext.cpp @@ -0,0 +1,142 @@ +/*************************************************************************** + edpd_ext.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Functions for LAMMPS access to edpd acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_edpd.h" + +using namespace std; +using namespace LAMMPS_AL; + +static EDPD EDPDMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int edpd_gpu_init(const int ntypes, double **cutsq, double **host_a0, + double **host_gamma, double **host_cut, double **host_power, + double **host_kappa, double **host_powerT, double **host_cutT, + double ***host_sc, double ***host_kc, double *host_mass, + double *special_lj, const int power_flag, const int kappa_flag, + const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen) { + EDPDMF.clear(); + gpu_mode=EDPDMF.device->gpu_mode(); + double gpu_split=EDPDMF.device->particle_split(); + int first_gpu=EDPDMF.device->first_device(); + int last_gpu=EDPDMF.device->last_device(); + int world_me=EDPDMF.device->world_me(); + int gpu_rank=EDPDMF.device->gpu_rank(); + int procs_per_gpu=EDPDMF.device->procs_per_gpu(); + + EDPDMF.device->init_message(screen,"edpd",first_gpu,last_gpu); + + bool message=false; + if (EDPDMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=EDPDMF.init(ntypes, cutsq, host_a0, host_gamma, host_cut, + host_power, host_kappa, host_powerT, + host_cutT, host_sc, host_kc, host_mass, + special_lj, power_flag, kappa_flag, + inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); + + EDPDMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + EDPDMF.estimate_gpu_overhead(); + return init_ok; +} + +void edpd_gpu_clear() { + EDPDMF.clear(); +} + +int ** edpd_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + double *boxlo, double *prd) { + return EDPDMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_v, dtinvsqrt, seed, timestep, boxlo, prd); +} + +void edpd_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + const int nlocal, double *boxlo, double *prd) { + EDPDMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); +} + +void edpd_gpu_get_extra_data(double *host_T, double *host_cv) { + EDPDMF.get_extra_data(host_T, host_cv); +} + +void edpd_gpu_update_flux(void **flux_ptr) { + EDPDMF.update_flux(flux_ptr); +} + +double edpd_gpu_bytes() { + return EDPDMF.host_memory_usage(); +} diff --git a/lib/gpu/lal_mdpd.cpp b/lib/gpu/lal_mdpd.cpp new file mode 100644 index 00000000000..16cf926df86 --- /dev/null +++ b/lib/gpu/lal_mdpd.cpp @@ -0,0 +1,218 @@ +/*************************************************************************** + mdpd.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the mdpd pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "mdpd_cl.h" +#elif defined(USE_CUDART) +const char *mdpd=0; +#else +#include "mdpd_cubin.h" +#endif + +#include "lal_mdpd.h" +#include +namespace LAMMPS_AL { +#define MDPDT MDPD + +extern Device device; + +template +MDPDT::MDPD() : BaseDPD(), _allocated(false) { +} + +template +MDPDT::~MDPD() { + clear(); +} + +template +int MDPDT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int MDPDT::init(const int ntypes, + double **host_cutsq, double **host_A_att, double **host_B_rep, + double **host_gamma, double **host_sigma, + double **host_cut, double **host_cut_r, + double *host_special_lj, const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { + const int max_shared_types=this->device->max_shared_types(); + + int onetype=0; + #ifdef USE_OPENCL + if (maxspecial==0) + for (int i=1; i0) { + if (onetype>0) + onetype=-1; + else if (onetype==0) + onetype=i*max_shared_types+j; + } + if (onetype<0) onetype=0; + #endif + + int success; + int extra_fields = 4; // round up to accomodate quadruples of numtyp values + // rho + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,mdpd,"k_mdpd",onetype,extra_fields); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_A_att,host_B_rep, + host_gamma,host_sigma); + + coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_cut,host_cut_r, + host_cutsq); + + UCL_H_Vec host_rsq(lj_types*lj_types,*(this->ucl_device), + UCL_WRITE_ONLY); + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); + this->atom->type_pack1(ntypes,lj_types,cutsq,host_rsq,host_cutsq); + + double special_sqrt[4]; + special_sqrt[0] = sqrt(host_special_lj[0]); + special_sqrt[1] = sqrt(host_special_lj[1]); + special_sqrt[2] = sqrt(host_special_lj[2]); + special_sqrt[3] = sqrt(host_special_lj[3]); + + UCL_H_Vec dview; + sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(host_special_lj,4,*(this->ucl_device)); + ucl_copy(sp_lj,dview,false); + sp_sqrt.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(special_sqrt,4,*(this->ucl_device)); + ucl_copy(sp_sqrt,dview,false); + + // allocate per-atom array Q + + int ef_nall=nall; + if (ef_nall==0) + ef_nall=2000; + + _allocated=true; + this->_max_bytes=coeff.row_bytes()+coeff2.row_bytes()+cutsq.row_bytes()+ + sp_lj.row_bytes()+sp_sqrt.row_bytes(); + return 0; +} + +template +void MDPDT::clear() { + if (!_allocated) + return; + _allocated=false; + + coeff.clear(); + coeff2.clear(); + cutsq.clear(); + sp_lj.clear(); + sp_sqrt.clear(); + this->clear_atomic(); +} + +template +double MDPDT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(MDPD); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int MDPDT::loop(const int eflag, const int vflag) { + + int nall = this->atom->nall(); + + // signal that we need to transfer extra data from the host + + this->atom->extra_data_unavail(); + + numtyp4 *pextra=reinterpret_cast(&(this->atom->extra[0])); + + int n = 0; + int nstride = 1; + for (int i = 0; i < nall; i++) { + int idx = n+i*nstride; + numtyp4 v; + v.x = mdpd_rho[i]; + v.y = 0; + v.z = 0; + v.w = 0; + pextra[idx] = v; + } + this->atom->add_extra_data(); + + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, + &sp_lj, &sp_sqrt, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &cutsq, &this->_dtinvsqrt, &this->_seed, + &this->_timestep, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, + &_lj_types, &sp_lj, &sp_sqrt, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &cutsq, &this->_dtinvsqrt, &this->_seed, + &this->_timestep, &this->_threads_per_atom); + } + + this->time_pair.stop(); + return GX; +} + +// --------------------------------------------------------------------------- +// Get the extra data pointers from host +// --------------------------------------------------------------------------- + +template +void MDPDT::get_extra_data(double *host_rho) { + mdpd_rho = host_rho; +} + +template class MDPD; +} diff --git a/lib/gpu/lal_mdpd.cu b/lib/gpu/lal_mdpd.cu new file mode 100644 index 00000000000..6230cb24961 --- /dev/null +++ b/lib/gpu/lal_mdpd.cu @@ -0,0 +1,475 @@ +// ************************************************************************** +// mdpd.cu +// ------------------- +// Trung Dac Nguyen (ORNL) +// +// Device code for acceleration of the mdpd pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : December 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( vel_tex,float4); +#else +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); +#endif +#else +#define pos_tex x_ +#define vel_tex v_ +#endif + +#define EPSILON (numtyp)1.0e-10 + +//#define _USE_UNIFORM_SARU_LCG +//#define _USE_UNIFORM_SARU_TEA8 +//#define _USE_GAUSSIAN_SARU_LCG + +#if !defined(_USE_UNIFORM_SARU_LCG) && !defined(_USE_UNIFORM_SARU_TEA8) && !defined(_USE_GAUSSIAN_SARU_LCG) +#define _USE_UNIFORM_SARU_LCG +#endif + +// References: +// 1. Y. Afshar, F. Schmid, A. Pishevar, S. Worley, Comput. Phys. Comm. 184 (2013), 1119–1128. +// 2. C. L. Phillips, J. A. Anderson, S. C. Glotzer, Comput. Phys. Comm. 230 (2011), 7191-7201. +// PRNG period = 3666320093*2^32 ~ 2^64 ~ 10^19 + +#define LCGA 0x4beb5d59 /* Full period 32 bit LCG */ +#define LCGC 0x2600e1f7 +#define oWeylPeriod 0xda879add /* Prime period 3666320093 */ +#define oWeylOffset 0x8009d14b +#define TWO_N32 0.232830643653869628906250e-9f /* 2^-32 */ + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns uniformly distributed random numbers u in [-1.0;1.0] +// using the inherent LCG, then multiply u with sqrt(3) to "match" +// with a normal random distribution. +// Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) +// Curly brackets to make variables local to the scope. +#ifdef _USE_UNIFORM_SARU_LCG +#define SQRT3 (numtyp)1.7320508075688772935274463 +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + unsigned int wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + unsigned int v = (state ^ (state>>26)) + wstate; \ + unsigned int s = (signed int)((v^(v>>20))*0x6957f5a7); \ + randnum = SQRT3*(s*TWO_N32*(numtyp)2.0-(numtyp)1.0); \ +} +#endif + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns uniformly distributed random numbers u in [-1.0;1.0] using TEA8 +// then multiply u with sqrt(3) to "match" with a normal random distribution +// Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) +#ifdef _USE_UNIFORM_SARU_TEA8 +#define SQRT3 (numtyp)1.7320508075688772935274463 +#define k0 0xA341316C +#define k1 0xC8013EA4 +#define k2 0xAD90777D +#define k3 0x7E95761E +#define delta 0x9e3779b9 +#define rounds 8 +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + unsigned int wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + unsigned int sum = 0; \ + for (int i=0; i < rounds; i++) { \ + sum += delta; \ + state += ((wstate<<4) + k0)^(wstate + sum)^((wstate>>5) + k1); \ + wstate += ((state<<4) + k2)^(state + sum)^((state>>5) + k3); \ + } \ + unsigned int v = (state ^ (state>>26)) + wstate; \ + unsigned int s = (signed int)((v^(v>>20))*0x6957f5a7); \ + randnum = SQRT3*(s*TWO_N32*(numtyp)2.0-(numtyp)1.0); \ +} +#endif + +// specifically implemented for steps = 1; high = 1.0; low = -1.0 +// returns two uniformly distributed random numbers r1 and r2 in [-1.0;1.0], +// and uses the polar method (Marsaglia's) to transform to a normal random value +// This is used to compared with CPU DPD using RandMars::gaussian() +#ifdef _USE_GAUSSIAN_SARU_LCG +#define saru(seed1, seed2, seed, timestep, randnum) { \ + unsigned int seed3 = seed + timestep; \ + seed3^=(seed1<<7)^(seed2>>6); \ + seed2+=(seed1>>4)^(seed3>>15); \ + seed1^=(seed2<<9)+(seed3<<8); \ + seed3^=0xA5366B4D*((seed2>>11) ^ (seed1<<1)); \ + seed2+=0x72BE1579*((seed1<<4) ^ (seed3>>16)); \ + seed1^=0x3F38A6ED*((seed3>>5) ^ (((signed int)seed2)>>22)); \ + seed2+=seed1*seed3; \ + seed1+=seed3 ^ (seed2>>2); \ + seed2^=((signed int)seed2)>>17; \ + unsigned int state=0x12345678; \ + unsigned int wstate=12345678; \ + state = 0x79dedea3*(seed1^(((signed int)seed1)>>14)); \ + wstate = (state + seed2) ^ (((signed int)state)>>8); \ + state = state + (wstate*(wstate^0xdddf97f5)); \ + wstate = 0xABCB96F7 + (wstate>>1); \ + unsigned int v, s; \ + numtyp r1, r2, rsq; \ + while (1) { \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + v = (state ^ (state>>26)) + wstate; \ + s = (signed int)((v^(v>>20))*0x6957f5a7); \ + r1 = s*TWO_N32*(numtyp)2.0-(numtyp)1.0; \ + state = LCGA*state + LCGC; \ + wstate = wstate + oWeylOffset+((((signed int)wstate)>>31) & oWeylPeriod); \ + v = (state ^ (state>>26)) + wstate; \ + s = (signed int)((v^(v>>20))*0x6957f5a7); \ + r2 = s*TWO_N32*(numtyp)2.0-(numtyp)1.0; \ + rsq = r1 * r1 + r2 * r2; \ + if (rsq < (numtyp)1.0) break; \ + } \ + numtyp fac = ucl_sqrt((numtyp)-2.0*log(rsq)/rsq); \ + randnum = r2*fac; \ +} +#endif + +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) < (B) ? (B) : (A)) + +// coeff.x = A_att, coeff.y = B_rep, coeff.z = gamma, coeff.w = sigma +// coeff2.x = cut, coeff2.y = cut_r, coeff2.z = cutsq + +__kernel void k_mdpd(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff, + const __global numtyp4 *restrict coeff2, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global numtyp *restrict sp_sqrt, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp4 *restrict v_, + const __global numtyp *restrict cutsq, + const numtyp dtinvsqrt, const int seed, + const int timestep, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + int n_stride; + local_allocate_store_pair(); + + acctyp3 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp energy, virial[6]; + if (EVFLAG) { + energy=(acctyp)0; + for (int i=0; i<6; i++) virial[i]=(acctyp)0; + } + + if (ii tag2) { + tag1 = jtag; tag2 = itag; + } + + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + // 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; + + numtyp force = A_attij*wc + B_repij*(rhoi+rhoj)*wc_r; + force -= gammaij*wr*wr*dot*rinv; + force += sigmaij*wr*randnum*dtinvsqrt; + force *= factor_dpd*rinv; + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + if (EVFLAG && eflag) { + // unshifted eng of conservative term: + // eng shifted to 0.0 at cutoff + numtyp e = (numtyp)0.5*A_attij*cutij * wr*wr + (numtyp)0.5*B_repij*cut_rij*(rhoi+rhoj)*wc_r*wc_r; + energy+=factor_dpd*e; + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + } // if ii + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, + ans,engv); +} + +__kernel void k_mdpd_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff_in, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp *restrict sp_lj_in, + const __global numtyp *restrict sp_sqrt_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp4 *restrict v_, + const __global numtyp *restrict cutsq, + const numtyp dtinvsqrt, const int seed, + const int timestep, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + #ifndef ONETYPE + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[4]; + __local numtyp sp_sqrt[4]; + if (tid<4) { + sp_lj[tid]=sp_lj_in[tid]; + sp_sqrt[tid]=sp_sqrt_in[tid]; + } + if (tid tag2) { + tag1 = jtag; tag2 = itag; + } + + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + // 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; + + numtyp force = A_attij*wc + B_repij*(rhoi+rhoj)*wc_r; + force -= gammaij*wr*wr*dot*rinv; + force += sigmaij*wr*randnum*dtinvsqrt; + #ifndef ONETYPE + force *= factor_dpd*rinv; + #else + force*=rinv; + #endif + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + if (EVFLAG && eflag) { + // unshifted eng of conservative term: + // eng shifted to 0.0 at cutoff + numtyp e = (numtyp)0.5*A_attij*cutij * wr*wr + (numtyp)0.5*B_repij*cut_rij*(rhoi+rhoj)*wc_r*wc_r; + #ifndef ONETYPE + energy+=factor_dpd*e; + #else + energy+=e; + #endif + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + } // if ii + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, + ans,engv); +} + diff --git a/lib/gpu/lal_mdpd.h b/lib/gpu/lal_mdpd.h new file mode 100644 index 00000000000..ca702dba73c --- /dev/null +++ b/lib/gpu/lal_mdpd.h @@ -0,0 +1,88 @@ +/*************************************************************************** + mdpd.h + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the mdpd pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#ifndef LAL_DPD_H +#define LAL_DPD_H + +#include "lal_base_dpd.h" + +namespace LAMMPS_AL { + +template +class MDPD : public BaseDPD { + public: + MDPD(); + ~MDPD(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, + double **host_A_att, double **host_B_rep, + double **host_gamma, double **host_sigma, + double **host_cut, double **host_cut_r, double *host_special_lj, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, + FILE *screen); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + void get_extra_data(double *host_rho); + + // --------------------------- TYPE DATA -------------------------- + + /// coeff.x = A_att, coeff.x = B_rep, coeff.z = gamma, coeff.w = sigma + UCL_D_Vec coeff; + /// coeff2.x = cut, coeff2.y = cut_r, coeff2.z = cutsq + UCL_D_Vec coeff2; + + UCL_D_Vec cutsq; + + /// Special LJ values + UCL_D_Vec sp_lj, sp_sqrt; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + /// pointer to host data + double *mdpd_rho; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_mdpd_ext.cpp b/lib/gpu/lal_mdpd_ext.cpp new file mode 100644 index 00000000000..def6adb1f60 --- /dev/null +++ b/lib/gpu/lal_mdpd_ext.cpp @@ -0,0 +1,133 @@ +/*************************************************************************** + mdpd_ext.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Functions for LAMMPS access to mdpd acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_mdpd.h" + +using namespace std; +using namespace LAMMPS_AL; + +static MDPD MDPDMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int mdpd_gpu_init(const int ntypes, double **cutsq, + double **host_A_att, double **host_B_rep, + double **host_gamma, double **host_sigma, + double **host_cut, double **host_cut_r, + double *special_lj, const int inum, + const int nall, const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen) { + MDPDMF.clear(); + gpu_mode=MDPDMF.device->gpu_mode(); + double gpu_split=MDPDMF.device->particle_split(); + int first_gpu=MDPDMF.device->first_device(); + int last_gpu=MDPDMF.device->last_device(); + int world_me=MDPDMF.device->world_me(); + int gpu_rank=MDPDMF.device->gpu_rank(); + int procs_per_gpu=MDPDMF.device->procs_per_gpu(); + + MDPDMF.device->init_message(screen,"mdpd",first_gpu,last_gpu); + + bool message=false; + if (MDPDMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=MDPDMF.init(ntypes, cutsq, host_A_att, host_B_rep, host_gamma, host_sigma, + host_cut, host_cut_r, special_lj, inum, nall, max_nbors, + maxspecial, cell_size, gpu_split, screen); + + MDPDMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + MDPDMF.estimate_gpu_overhead(); + return init_ok; +} + +void mdpd_gpu_clear() { + MDPDMF.clear(); +} + +int ** mdpd_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + double *boxlo, double *prd) { + return MDPDMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_v, dtinvsqrt, seed, timestep, boxlo, prd); +} + +void mdpd_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + const int nlocal, double *boxlo, double *prd) { + MDPDMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); +} + +void mdpd_gpu_get_extra_data(double *host_rho) { + MDPDMF.get_extra_data(host_rho); +} + +double mdpd_gpu_bytes() { + return MDPDMF.host_memory_usage(); +} + + diff --git a/src/GPU/pair_edpd_gpu.cpp b/src/GPU/pair_edpd_gpu.cpp new file mode 100644 index 00000000000..5bee0cadb81 --- /dev/null +++ b/src/GPU/pair_edpd_gpu.cpp @@ -0,0 +1,195 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Dac Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_edpd_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "info.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int edpd_gpu_init(const int ntypes, double **cutsq, double **host_a0, double **host_gamma, + double **host_cut, double **host_power, double **host_kappa, + double **host_powerT, double** host_cutT, double*** host_sc, double ***host_kc, + double *host_mass, double *special_lj, const int power_flag, const int kappa_flag, + const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen); +void edpd_gpu_clear(); +int **edpd_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double **host_v, + const double dtinvsqrt, const int seed, const int timestep, double *boxlo, + double *prd); +void edpd_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, double **host_v, + const double dtinvsqrt, const int seed, const int timestep, const int nlocal, + double *boxlo, double *prd); +void edpd_gpu_get_extra_data(double *host_T, double *host_cv); +void edpd_gpu_update_flux(void **flux_ptr); +double edpd_gpu_bytes(); + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +PairEDPDGPU::PairEDPDGPU(LAMMPS *lmp) : PairEDPD(lmp), gpu_mode(GPU_FORCE) +{ + flux_pinned = nullptr; + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairEDPDGPU::~PairEDPDGPU() +{ + edpd_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairEDPDGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + double dtinvsqrt = 1.0 / sqrt(update->dt); + + bool success = true; + int *ilist, *numneigh, **firstneigh; + + double *T = atom->edpd_temp; + double *cv = atom->edpd_cv; + edpd_gpu_get_extra_data(T, cv); + + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = edpd_gpu_compute_n( + neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->tag, atom->nspecial, + atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + cpu_time, success, atom->v, dtinvsqrt, seed, update->ntimestep, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + edpd_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, atom->tag, + atom->v, dtinvsqrt, seed, update->ntimestep, atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + // get the heat flux from device + + double *Q = atom->edpd_flux; + edpd_gpu_update_flux(&flux_pinned); + + int nlocal = atom->nlocal; + if (acc_float) { + auto flux_ptr = (float *)flux_pinned; + for (int i = 0; i < nlocal; i++) + Q[i] = flux_ptr[i]; + + } else { + auto flux_ptr = (double *)flux_pinned; + for (int i = 0; i < nlocal; i++) + Q[i] = flux_ptr[i]; + } + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairEDPDGPU::init_style() +{ + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double mcut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + mcut = init_one(i, j); + mcut *= mcut; + if (mcut > maxcut) maxcut = mcut; + cutsq[i][j] = cutsq[j][i] = mcut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + edpd_gpu_init(atom->ntypes + 1, cutsq, a0, gamma, cut, power, kappa, + powerT, cutT, sc, kc, atom->mass, force->special_lj, + power_flag, kappa_flag, atom->nlocal, atom->nlocal + atom->nghost, + mnf, maxspecial, cell_size, gpu_mode, screen); + GPU_EXTRA::check_flag(success, error, world); + + acc_float = Info::has_accelerator_feature("GPU", "precision", "single"); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairEDPDGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + edpd_gpu_bytes(); +} diff --git a/src/GPU/pair_edpd_gpu.h b/src/GPU/pair_edpd_gpu.h new file mode 100644 index 00000000000..75495b2ca4a --- /dev/null +++ b/src/GPU/pair_edpd_gpu.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(edpd/gpu,PairEDPDGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_EDPD_GPU_H +#define LMP_PAIR_EDPD_GPU_H + +#include "pair_edpd.h" + +namespace LAMMPS_NS { + +class PairEDPDGPU : public PairEDPD { + public: + PairEDPDGPU(LAMMPS *lmp); + ~PairEDPDGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + void *flux_pinned; + bool acc_float; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif diff --git a/src/GPU/pair_mdpd_gpu.cpp b/src/GPU/pair_mdpd_gpu.cpp new file mode 100644 index 00000000000..bebe1e97360 --- /dev/null +++ b/src/GPU/pair_mdpd_gpu.cpp @@ -0,0 +1,171 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Dac Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_mdpd_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "info.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int mdpd_gpu_init(const int ntypes, double **cutsq, double **host_A_att, double **host_B_rep, + double **host_gamma, double **host_sigma, double **host_cut, double **host_cut_r, + double *special_lj, const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen); +void mdpd_gpu_clear(); +int **mdpd_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double **host_v, + const double dtinvsqrt, const int seed, const int timestep, double *boxlo, + double *prd); +void mdpd_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, double **host_v, + const double dtinvsqrt, const int seed, const int timestep, const int nlocal, + double *boxlo, double *prd); +void mdpd_gpu_get_extra_data(double *host_rho); +double mdpd_gpu_bytes(); + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +PairMDPDGPU::PairMDPDGPU(LAMMPS *lmp) : PairMDPD(lmp), gpu_mode(GPU_FORCE) +{ + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairMDPDGPU::~PairMDPDGPU() +{ + mdpd_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPDGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + double dtinvsqrt = 1.0 / sqrt(update->dt); + + bool success = true; + int *ilist, *numneigh, **firstneigh; + + double *rho = atom->rho; + mdpd_gpu_get_extra_data(rho); + + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = mdpd_gpu_compute_n( + neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->tag, atom->nspecial, + atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + cpu_time, success, atom->v, dtinvsqrt, seed, update->ntimestep, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + mdpd_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, atom->tag, + atom->v, dtinvsqrt, seed, update->ntimestep, atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairMDPDGPU::init_style() +{ + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double mcut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + mcut = init_one(i, j); + mcut *= mcut; + if (mcut > maxcut) maxcut = mcut; + cutsq[i][j] = cutsq[j][i] = mcut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + mdpd_gpu_init(atom->ntypes + 1, cutsq, A_att, B_rep, gamma, sigma, + cut, cut_r, force->special_lj, + atom->nlocal, atom->nlocal + atom->nghost, + mnf, maxspecial, cell_size, gpu_mode, screen); + GPU_EXTRA::check_flag(success, error, world); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairMDPDGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + mdpd_gpu_bytes(); +} diff --git a/src/GPU/pair_mdpd_gpu.h b/src/GPU/pair_mdpd_gpu.h new file mode 100644 index 00000000000..5f27c4014e8 --- /dev/null +++ b/src/GPU/pair_mdpd_gpu.h @@ -0,0 +1,45 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(mdpd/gpu,PairMDPDGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_MDPD_GPU_H +#define LMP_PAIR_MDPD_GPU_H + +#include "pair_mdpd.h" + +namespace LAMMPS_NS { + +class PairMDPDGPU : public PairMDPD { + public: + PairMDPDGPU(LAMMPS *lmp); + ~PairMDPDGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From e53b3c76f5982f7f4f27f175fc3937081d38063e Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 5 Dec 2023 15:32:57 -0600 Subject: [PATCH 159/300] Updated doc pages for the added pair styles, added a cmake preset for gpu-cuda, added "comm_modify vel yes" to in.mdpd --- cmake/presets/gpu-cuda.cmake | 12 ++++++++++++ doc/src/pair_coul_slater.rst | 3 +++ doc/src/pair_fep_soft.rst | 6 ++++-- doc/src/pair_mesodpd.rst | 6 ++++++ examples/PACKAGES/dpd-meso/mdpd/in.mdpd | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 cmake/presets/gpu-cuda.cmake diff --git a/cmake/presets/gpu-cuda.cmake b/cmake/presets/gpu-cuda.cmake new file mode 100644 index 00000000000..c5e967754a5 --- /dev/null +++ b/cmake/presets/gpu-cuda.cmake @@ -0,0 +1,12 @@ +# preset that enables GPU and selects CUDA API + +set(PKG_GPU ON CACHE BOOL "Build GPU package" FORCE) +set(GPU_API "cuda" CACHE STRING "APU used by GPU package" FORCE) +set(GPU_PREC "mixed" CACHE STRING "" FORCE) +set(GPU_ARCH "sm_60;sm_70;sm_80" CACHE STRING "LAMMPS GPU CUDA SM architectures" FORCE) + +set(CUDA_NVCC_FLAGS "-allow-unsupported-compiler" CACHE STRING "" FORCE) +set(CUDA_NVCC_FLAGS_DEBUG "-allow-unsupported-compiler" CACHE STRING "" FORCE) +set(CUDA_NVCC_FLAGS_MINSIZEREL "-allow-unsupported-compiler" CACHE STRING "" FORCE) +set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "-allow-unsupported-compiler" CACHE STRING "" FORCE) +set(CUDA_NVCC_FLAGS_RELEASE "-allow-unsupported-compiler" CACHE STRING "" FORCE) diff --git a/doc/src/pair_coul_slater.rst b/doc/src/pair_coul_slater.rst index 443de4262b8..074f10ba834 100644 --- a/doc/src/pair_coul_slater.rst +++ b/doc/src/pair_coul_slater.rst @@ -1,6 +1,7 @@ .. index:: pair_style coul/slater .. index:: pair_style coul/slater/cut .. index:: pair_style coul/slater/long +.. index:: pair_style coul/slater/long/gpu pair_style coul/slater command ============================== @@ -11,6 +12,8 @@ pair_style coul/slater/cut command pair_style coul/slater/long command =================================== +Accelerator Variants: *coul/slater/gpu* + Syntax """""" diff --git a/doc/src/pair_fep_soft.rst b/doc/src/pair_fep_soft.rst index 400ad0cc4a4..20e17ce0b42 100644 --- a/doc/src/pair_fep_soft.rst +++ b/doc/src/pair_fep_soft.rst @@ -1,8 +1,10 @@ .. index:: pair_style lj/cut/soft .. index:: pair_style lj/cut/soft/omp .. index:: pair_style lj/cut/coul/cut/soft +.. index:: pair_style lj/cut/coul/cut/soft/gpu .. index:: pair_style lj/cut/coul/cut/soft/omp .. index:: pair_style lj/cut/coul/long/soft +.. index:: pair_style lj/cut/coul/long/soft/gpu .. index:: pair_style lj/cut/coul/long/soft/omp .. index:: pair_style lj/cut/tip4p/long/soft .. index:: pair_style lj/cut/tip4p/long/soft/omp @@ -27,12 +29,12 @@ Accelerator Variants: *lj/cut/soft/omp* pair_style lj/cut/coul/cut/soft command ======================================= -Accelerator Variants: *lj/cut/coul/cut/soft/omp* +Accelerator Variants: *lj/cut/coul/cut/soft/gpu*, *lj/cut/coul/cut/soft/omp* pair_style lj/cut/coul/long/soft command ======================================== -Accelerator Variants: *lj/cut/coul/long/soft/omp* +Accelerator Variants: *lj/cut/coul/long/soft/gpu*, *lj/cut/coul/long/soft/omp* pair_style lj/cut/tip4p/long/soft command ========================================= diff --git a/doc/src/pair_mesodpd.rst b/doc/src/pair_mesodpd.rst index 5d244f3b1d1..28a398754ff 100644 --- a/doc/src/pair_mesodpd.rst +++ b/doc/src/pair_mesodpd.rst @@ -1,14 +1,20 @@ .. index:: pair_style edpd +.. index:: pair_style edpd/gpu .. index:: pair_style mdpd +.. index:: pair_style mdpd/gpu .. index:: pair_style mdpd/rhosum .. index:: pair_style tdpd pair_style edpd command ======================= +Accelerator Variants: *edpd/gpu* + pair_style mdpd command ======================= +Accelerator Variants: *mdpd/gpu* + pair_style mdpd/rhosum command ============================== diff --git a/examples/PACKAGES/dpd-meso/mdpd/in.mdpd b/examples/PACKAGES/dpd-meso/mdpd/in.mdpd index b0740c82276..2c740f41275 100644 --- a/examples/PACKAGES/dpd-meso/mdpd/in.mdpd +++ b/examples/PACKAGES/dpd-meso/mdpd/in.mdpd @@ -16,6 +16,7 @@ neighbor 0.3 bin neigh_modify every 1 delay 0 check yes atom_style mdpd +comm_modify vel yes region mdpd block -25 25 -10 10 -10 10 units box create_box 1 mdpd From 21027d660d7b8e03b8695608cce64e932692d889 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 16:35:07 -0500 Subject: [PATCH 160/300] Clarify exception handling some more. --- doc/src/Build_settings.rst | 4 ++-- doc/src/Python_error.rst | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 7576cae3eb2..75112cce427 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -463,8 +463,8 @@ Exception handling when using LAMMPS as a library LAMMPS errors do not kill the calling code, but throw an exception. In the C-library interface, the call stack is unwound and control returns -to the caller, e.g. to Python or a code that is coupled to LAMMPS and -the error status can be queried. When using C++ directly, the calling +to the caller, e.g. to Python or a code that is coupled to LAMMPS. The +error status can then be queried. When using C++ directly, the calling code has to be set up to *catch* exceptions thrown from within LAMMPS. .. note:: diff --git a/doc/src/Python_error.rst b/doc/src/Python_error.rst index 6aec8df391c..bdf69df5b46 100644 --- a/doc/src/Python_error.rst +++ b/doc/src/Python_error.rst @@ -1,11 +1,11 @@ Handling LAMMPS errors ********************** -The shared library is compiled with :ref:`C++ exception support -` to provide a better error handling experience. C++ -exceptions allow capturing errors on the C++ side and rethrowing them on -the Python side. This way LAMMPS errors can be handled through the -Python exception handling mechanism. +LAMMPS and the LAMMPS library are compiled with :ref:`C++ exception support +` to provide a better error handling experience. LAMMPS errors +trigger throwing a C++ exception. These exceptions allow capturing errors on +the C++ side and rethrowing them on the Python side. This way LAMMPS errors +can be handled through the Python exception handling mechanism. .. code-block:: python From c90999a083204d74d8e329ec92cad46ddfdd1a45 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 21:56:29 -0500 Subject: [PATCH 161/300] cosmetic --- src/KOKKOS/pair_pace_extrapolation_kokkos.h | 1 - src/ML-PACE/pair_pace.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.h b/src/KOKKOS/pair_pace_extrapolation_kokkos.h index d8c0038f3bc..aa6c49c36d0 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.h +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.h @@ -106,7 +106,6 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { protected: int inum, maxneigh, chunk_size, chunk_offset, idx_ms_combs_max, total_num_functions_max; int host_flag; - //int gamma_flag; int eflag, vflag; diff --git a/src/ML-PACE/pair_pace.cpp b/src/ML-PACE/pair_pace.cpp index 933d4abecb1..e9bd25f9d7d 100644 --- a/src/ML-PACE/pair_pace.cpp +++ b/src/ML-PACE/pair_pace.cpp @@ -46,7 +46,7 @@ Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1, #include "ace-evaluator/ace_recursive.h" #include "ace-evaluator/ace_version.h" #include "ace/ace_b_basis.h" -#include + namespace LAMMPS_NS { struct ACEImpl { ACEImpl() : basis_set(nullptr), ace(nullptr) {} @@ -423,4 +423,4 @@ void *PairPACE::extract_peratom(const char *str, int &ncol) } return nullptr; -} \ No newline at end of file +} From 131f3cee2017be492152ef6a28670d4f6724216c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 5 Dec 2023 22:09:06 -0500 Subject: [PATCH 162/300] fix typo --- doc/src/fix_nh_uef.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/fix_nh_uef.rst b/doc/src/fix_nh_uef.rst index a515375746e..2d4cc32c762 100644 --- a/doc/src/fix_nh_uef.rst +++ b/doc/src/fix_nh_uef.rst @@ -62,7 +62,7 @@ performed using the :doc:`fix deform `, :doc:`fix nvt/sllod `, and :doc:`compute temp/deform ` commands. -The applied flow field is set by the *eps* keyword. The values +The applied flow field is set by the *erate* keyword. The values *edot_x* and *edot_y* correspond to the strain rates in the xx and yy directions. It is implicitly assumed that the flow field is traceless, and therefore the strain rate in the zz direction is eqal From 9c103ff6e2493299ab0ce651e1d13d0d716fbef2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 6 Dec 2023 02:59:47 -0500 Subject: [PATCH 163/300] fix some accumulated formatting and spelling issues in the manual --- doc/src/compute_rattlers_atom.rst | 4 ++-- doc/src/molecule.rst | 4 ++-- doc/utils/sphinx-config/false_positives.txt | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/src/compute_rattlers_atom.rst b/doc/src/compute_rattlers_atom.rst index a69d0914668..cf4e888657e 100644 --- a/doc/src/compute_rattlers_atom.rst +++ b/doc/src/compute_rattlers_atom.rst @@ -1,7 +1,7 @@ .. index:: compute rattlers/atom compute rattlers/atom command -======================== +============================= Syntax """""" @@ -35,7 +35,7 @@ Description .. versionadded:: TBD Define a compute that identifies rattlers in a system. Rattlers are often -identified in granular or glassy packings as undercoordinated atoms that +identified in granular or glassy packings as under-coordinated atoms that do not have the required number of contacts to constrain their translational degrees of freedom. Such atoms are not considered rigid and can often freely rattle around in the system. This compute identifies rattlers which can be diff --git a/doc/src/molecule.rst b/doc/src/molecule.rst index 1de905886c6..b930a9fc653 100644 --- a/doc/src/molecule.rst +++ b/doc/src/molecule.rst @@ -164,8 +164,8 @@ defining a *body* particle, which requires setting the number of * Nd *dihedrals* = # of dihedrals Nd in molecule, default = 0 * Ni *impropers* = # of impropers Ni in molecule, default = 0 * Nf *fragments* = # of fragments Nf in molecule, default = 0 -* Ninteger Ndouble *body* = # of integer and floating-point values in body -particle, default = 0 +* Ninteger Ndouble *body* = # of integer and floating-point values + in body particle, default = 0 * Mtotal *mass* = total mass of molecule * Xc Yc Zc *com* = coordinates of center-of-mass of molecule * Ixx Iyy Izz Ixy Ixz Iyz *inertia* = 6 components of inertia tensor of molecule diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c31c6a0a709..7256272142e 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -4032,6 +4032,7 @@ xy xyz xz xzhou +yace Yade yade yaff From 9edf5533329801a03e693337faafc973c8cab1e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 6 Dec 2023 07:22:23 -0500 Subject: [PATCH 164/300] flag development branch --- src/version.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/version.h b/src/version.h index e2f596d1aab..d1d8472ca62 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1,2 @@ #define LAMMPS_VERSION "21 Nov 2023" +#define LAMMPS_UPDATE "Development" From e05751f4877d462347413736a41b01d0c69b3fc8 Mon Sep 17 00:00:00 2001 From: Danyang Chen Date: Wed, 6 Dec 2023 08:14:12 -0500 Subject: [PATCH 165/300] Update fix_nh_uef.rst Fixing typo --- doc/src/fix_nh_uef.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_nh_uef.rst b/doc/src/fix_nh_uef.rst index a515375746e..60d47994f09 100644 --- a/doc/src/fix_nh_uef.rst +++ b/doc/src/fix_nh_uef.rst @@ -23,7 +23,7 @@ Syntax .. parsed-literal:: keyword = *erate* or *ext* or *strain* or *temp* or *iso* or *x* or *y* or *z* or *tchain* or *pchain* or *tloop* or *ploop* or *mtk* - *erate* values = e_x e_y = engineering strain rates (required) + *erate* values = e_x e_y = true strain rates (required) *ext* value = *x* or *y* or *z* or *xy* or *yz* or *xz* = external dimensions sets the external dimensions used to calculate the scalar pressure *strain* values = e_x e_y = initial strain @@ -62,7 +62,7 @@ performed using the :doc:`fix deform `, :doc:`fix nvt/sllod `, and :doc:`compute temp/deform ` commands. -The applied flow field is set by the *eps* keyword. The values +The applied flow field is set by the *erate* keyword. The values *edot_x* and *edot_y* correspond to the strain rates in the xx and yy directions. It is implicitly assumed that the flow field is traceless, and therefore the strain rate in the zz direction is eqal From 884af7e88cba1e577ee1585b0df3df5d1b433b34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 6 Dec 2023 13:53:45 -0500 Subject: [PATCH 166/300] update list of supported pair styles and parameters --- doc/src/fix_adapt.rst | 2 +- doc/src/fix_adapt_fep.rst | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 9cfbef7a115..f857a6333cf 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -221,7 +221,7 @@ formulas for the meaning of these parameters: +------------------------------------------------------------------------------+--------------------------------------------------+-------------+ | :doc:`table ` | table_cutoff | type pairs | +------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`ufm ` | epsilon,sigma | type pairs | +| :doc:`ufm ` | epsilon,sigma,scale | type pairs | +------------------------------------------------------------------------------+--------------------------------------------------+-------------+ | :doc:`wf/cut ` | epsilon,sigma,nu,mu | type pairs | +------------------------------------------------------------------------------+--------------------------------------------------+-------------+ diff --git a/doc/src/fix_adapt_fep.rst b/doc/src/fix_adapt_fep.rst index 1b2298cd96f..474fc799de0 100644 --- a/doc/src/fix_adapt_fep.rst +++ b/doc/src/fix_adapt_fep.rst @@ -123,19 +123,29 @@ styles and their energy formulas for the meaning of these parameters: +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`born ` | a,b,c | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`born/gauss ` | biga0,biga1,r0 | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm ` | a,c | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`buck/mdf ` | a,c | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/cut ` | scale | type pairs | +| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`coul/cut/soft ` | lambda | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`coul/debye ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`coul/long, coul/msm ` | scale | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`coul/long/soft ` | scale, lambda | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`eam ` | scale | type pairs | +| :doc:`coul/slater/long ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`coul/streitz ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`eam, eam/alloy, eam/fs ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`harmonic/cut ` | k | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`gauss ` | a | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ @@ -163,6 +173,8 @@ styles and their energy formulas for the meaning of these parameters: +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`meam ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`mie/cut ` | epsilon,sigma,gamR,gamA | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`morse, morse/smooth/linear ` | d0,r0,alpha | type pairs | @@ -173,12 +185,16 @@ styles and their energy formulas for the meaning of these parameters: +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0,r0,nn,mm | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`pace, pace/extrapolation ` | scale | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`snap ` | scale | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`soft ` | a | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ | :doc:`ufm ` | epsilon,sigma,scale | type pairs | +------------------------------------------------------------------------------+-------------------------+------------+ +| :doc:`wf/cut ` | epsilon,sigma,nu,mu | type pairs | ++------------------------------------------------------------------------------+-------------------------+------------+ .. note:: From 52f576fd1c3c313199715ffd7f5613d174b73acf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 6 Dec 2023 13:54:44 -0500 Subject: [PATCH 167/300] update fix adapt/fep from fix adapt. only supports 2-d parameters for pair styles --- src/FEP/fix_adapt_fep.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/FEP/fix_adapt_fep.cpp b/src/FEP/fix_adapt_fep.cpp index c32b44b081f..e0c5868e96e 100644 --- a/src/FEP/fix_adapt_fep.cpp +++ b/src/FEP/fix_adapt_fep.cpp @@ -48,9 +48,9 @@ enum{DIAMETER, CHARGE}; FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all(FLERR,"Illegal fix adapt/fep command"); + if (narg < 5) utils::missing_cmd_args(FLERR,"fix adapt/fep", error); nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery < 0) error->all(FLERR,"Illegal fix adapt/fep command"); + if (nevery < 0) error->all(FLERR,"Illegal fix adapt/fep every value {}", nevery); dynamic_group_allow = 1; create_attribute = 1; @@ -62,21 +62,21 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) : int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"pair") == 0) { - if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt/fep command"); + if (iarg+6 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep pair", error); nadapt++; iarg += 6; } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep kspace", error); nadapt++; iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { - if (iarg+4 > narg) error->all(FLERR,"Illegal fix adapt/fep command"); + if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep atom", error); nadapt++; iarg += 4; } else break; } - if (nadapt == 0) error->all(FLERR,"Illegal fix adapt/fep command"); + if (nadapt == 0) error->all(FLERR,"Nothing to adapt in fix adapt/fep command"); adapt = new Adapt[nadapt]; // parse keywords @@ -136,11 +136,11 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"reset") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep reset", error); resetflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"scale") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt/fep command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix adapt/fep scale", error); scaleflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"after") == 0) { @@ -208,7 +208,7 @@ void FixAdaptFEP::post_constructor() id_fix_diam = nullptr; id_fix_chg = nullptr; - if (diam_flag) { + if (diam_flag && atom->radius_flag) { id_fix_diam = utils::strdup(id + std::string("_FIX_STORE_DIAM")); fix_diam = dynamic_cast( modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1", id_fix_diam,group->names[igroup]))); @@ -226,7 +226,7 @@ void FixAdaptFEP::post_constructor() } } - if (chgflag) { + if (chgflag && atom->q_flag) { id_fix_chg = utils::strdup(id + std::string("_FIX_STORE_CHG")); fix_chg = dynamic_cast( modify->add_fix(fmt::format("{} {} STORE/ATOM 1 0 0 1",id_fix_chg,group->names[igroup]))); @@ -267,9 +267,9 @@ void FixAdaptFEP::init() ad->ivar = input->variable->find(ad->var); if (ad->ivar < 0) - error->all(FLERR,"Variable name for fix adapt/fep does not exist"); + error->all(FLERR,"Variable name {} for fix adapt/fep does not exist", ad->var); if (!input->variable->equalstyle(ad->ivar)) - error->all(FLERR,"Variable for fix adapt/fep is invalid style"); + error->all(FLERR,"Variable {} for fix adapt/fep is invalid style", ad->var); if (ad->which == PAIR) { anypair = 1; @@ -285,8 +285,9 @@ void FixAdaptFEP::init() if (ptr == nullptr) error->all(FLERR,"Fix adapt/fep pair style param not supported"); - ad->pdim = 2; - if (ad->pdim == 0) ad->scalar = (double *) ptr; + if (ad->pdim != 2) + error->all(FLERR,"Pair style parameter {} is not compatible with fix adapt/fep", ad->pparam); + if (ad->pdim == 2) ad->array = (double **) ptr; // if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style From 0940793537b45aa16cd090c9a617769dba1b118d Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 09:23:49 -0600 Subject: [PATCH 168/300] Updated the coul_soft and coul_long_soft kernels with forces as acctyp3 --- lib/gpu/lal_lj_coul_long_soft.cu | 12 +++++++----- lib/gpu/lal_lj_coul_soft.cu | 9 +++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/gpu/lal_lj_coul_long_soft.cu b/lib/gpu/lal_lj_coul_long_soft.cu index 242b52fb791..7e55f34a45c 100644 --- a/lib/gpu/lal_lj_coul_long_soft.cu +++ b/lib/gpu/lal_lj_coul_long_soft.cu @@ -14,7 +14,7 @@ // *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) -#include + #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE _texture( pos_tex,float4); @@ -36,7 +36,7 @@ __kernel void k_lj_coul_long_soft(const __global numtyp4 *restrict x_, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, + __global acctyp3 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, @@ -59,7 +59,7 @@ __kernel void k_lj_coul_long_soft(const __global numtyp4 *restrict x_, sp_lj[6]=sp_lj_in[6]; sp_lj[7]=sp_lj_in[7]; - acctyp4 f; + acctyp3 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp energy, e_coul, virial[6]; if (EVFLAG) { @@ -79,6 +79,7 @@ __kernel void k_lj_coul_long_soft(const __global numtyp4 *restrict x_, int itype=ix.w; for ( ; nbor Date: Thu, 7 Dec 2023 10:16:40 -0600 Subject: [PATCH 169/300] Removed unused member functions in edpd --- lib/gpu/lal_base_dpd.h | 4 +--- lib/gpu/lal_edpd.cpp | 10 ---------- lib/gpu/lal_edpd.h | 8 ++------ lib/gpu/lal_mdpd.h | 4 ++-- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/lib/gpu/lal_base_dpd.h b/lib/gpu/lal_base_dpd.h index 6e9451d72a0..64ec725d95a 100644 --- a/lib/gpu/lal_base_dpd.h +++ b/lib/gpu/lal_base_dpd.h @@ -196,11 +196,9 @@ class BaseDPD { numtyp _dtinvsqrt; int _seed, _timestep; - int _extra_fields; - protected: bool _compiled; - int _block_size, _threads_per_atom, _onetype; + int _block_size, _threads_per_atom, _onetype, _extra_fields; double _max_bytes, _max_an_bytes; double _gpu_overhead, _driver_overhead; UCL_D_Vec *_nbor_data; diff --git a/lib/gpu/lal_edpd.cpp b/lib/gpu/lal_edpd.cpp index 2a32d01abb7..c85644a60bc 100644 --- a/lib/gpu/lal_edpd.cpp +++ b/lib/gpu/lal_edpd.cpp @@ -271,16 +271,6 @@ int EDPDT::loop(const int eflag, const int vflag) { return GX; } -template -void EDPDT::update_coeff(int ntypes, double **host_a0, double **host_gamma, - double **host_sigma, double **host_cut) -{ - UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), - UCL_WRITE_ONLY); - this->atom->type_pack4(ntypes,_lj_types,coeff,host_write,host_a0,host_gamma, - host_sigma,host_cut); -} - // --------------------------------------------------------------------------- // Get the extra data pointers from host // --------------------------------------------------------------------------- diff --git a/lib/gpu/lal_edpd.h b/lib/gpu/lal_edpd.h index b7935bf2f4e..c293b86ee66 100644 --- a/lib/gpu/lal_edpd.h +++ b/lib/gpu/lal_edpd.h @@ -13,8 +13,8 @@ email : ndactrung@gmail.com ***************************************************************************/ -#ifndef LAL_DPD_H -#define LAL_DPD_H +#ifndef LAL_EDPD_H +#define LAL_EDPD_H #include "lal_base_dpd.h" @@ -56,10 +56,6 @@ class EDPD : public BaseDPD { /// Total host memory used by library for pair style double host_memory_usage() const; - /// Update coeff if needed (tstat only) - void update_coeff(int ntypes, double **host_a0, double **host_gamma, - double **host_sigma, double **host_cut); - void get_extra_data(double *host_T, double *host_cv); /// copy Q (flux) from device to host diff --git a/lib/gpu/lal_mdpd.h b/lib/gpu/lal_mdpd.h index ca702dba73c..0e95185714d 100644 --- a/lib/gpu/lal_mdpd.h +++ b/lib/gpu/lal_mdpd.h @@ -13,8 +13,8 @@ email : ndactrung@gmail.com ***************************************************************************/ -#ifndef LAL_DPD_H -#define LAL_DPD_H +#ifndef LAL_MDPD_H +#define LAL_MDPD_H #include "lal_base_dpd.h" From 26c7358a849eaadf956252c2e6a63a6e31f8440b Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 10:24:25 -0600 Subject: [PATCH 170/300] Working on sph_lj kernels --- lib/gpu/lal_sph_lj.cpp | 212 ++++++++++++++++++ lib/gpu/lal_sph_lj.cu | 432 +++++++++++++++++++++++++++++++++++++ lib/gpu/lal_sph_lj.h | 88 ++++++++ lib/gpu/lal_sph_lj_ext.cpp | 132 ++++++++++++ 4 files changed, 864 insertions(+) create mode 100644 lib/gpu/lal_sph_lj.cpp create mode 100644 lib/gpu/lal_sph_lj.cu create mode 100644 lib/gpu/lal_sph_lj.h create mode 100644 lib/gpu/lal_sph_lj_ext.cpp diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp new file mode 100644 index 00000000000..8367a81b1e2 --- /dev/null +++ b/lib/gpu/lal_sph_lj.cpp @@ -0,0 +1,212 @@ +/*************************************************************************** + sph_lj.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the sph_lj pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "sph_lj_cl.h" +#elif defined(USE_CUDART) +const char *sph_lj=0; +#else +#include "sph_lj_cubin.h" +#endif + +#include "lal_sph_lj.h" +#include +namespace LAMMPS_AL { +#define SPHLJT SPHLJ + +extern Device device; + +template +SPHLJT::SPHLJ() : BaseDPD(), _allocated(false) { + _max_drhoE_size = 0; +} + +template +SPHLJT::~SPHLJ() { + clear(); +} + +template +int SPHLJT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int SPHLJT::init(const int ntypes, + double **host_cutsq, double **host_viscosity, + double *host_special_lj, + const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { + const int max_shared_types=this->device->max_shared_types(); + + int onetype=0; + #ifdef USE_OPENCL + if (maxspecial==0) + for (int i=1; i0) { + if (onetype>0) + onetype=-1; + else if (onetype==0) + onetype=i*max_shared_types+j; + } + if (onetype<0) onetype=0; + #endif + + int success; + int extra_fields = 4; // round up to accomodate quadruples of numtyp values + // rho, cv, mass + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,sph_lj,"k_sph_lj",onetype,extra_fields); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack2(ntypes,lj_types,coeff,host_write,host_viscosity, + host_cutsq); + + UCL_H_Vec dview; + sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(host_special_lj,4,*(this->ucl_device)); + ucl_copy(sp_lj,dview,false); + + // allocate per-atom array Q + + int ef_nall=nall; + if (ef_nall==0) + ef_nall=2000; + + _max_drhoE_size=static_cast(static_cast(ef_nall)*1.10); + drhoE.alloc(_max_drhoE_size,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + + _allocated=true; + this->_max_bytes=coeff.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); + return 0; +} + +template +void SPHLJT::clear() { + if (!_allocated) + return; + _allocated=false; + + coeff.clear(); + drhoE.clear(); + sp_lj.clear(); + this->clear_atomic(); +} + +template +double SPHLJT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(SPHLJ); +} + +template +void SPHLJT::update_drhoE(void **drhoE_ptr) { + *drhoE_ptr=drhoE.host.begin(); + drhoE.update_host(_max_drhoE_size,false); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int SPHLJT::loop(const int eflag, const int vflag) { + + int nall = this->atom->nall(); + + // Resize drhoE array if necessary + if (nall > _max_drhoE_size) { + _max_drhoE_size=static_cast(static_cast(nall)*1.10); + drhoE.resize(_max_drhoE_size); + } + + // signal that we need to transfer extra data from the host + + this->atom->extra_data_unavail(); + + numtyp4 *pextra=reinterpret_cast(&(this->atom->extra[0])); + + int n = 0; + int nstride = 1; + for (int i = 0; i < nall; i++) { + int idx = n+i*nstride; + numtyp4 v; + v.x = rho[i]; + v.y = cv[i]; + v.z = mass[i]; + v.w = 0; + pextra[idx] = v; + } + this->atom->add_extra_data(); + + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, + &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + } + + this->time_pair.stop(); + return GX; +} + +// --------------------------------------------------------------------------- +// Get the extra data pointers from host +// --------------------------------------------------------------------------- + +template +void SPHLJT::get_extra_data(double *host_rho, double *host_cv, double* host_mass) { + rho = host_rho; + cv = host_cv; + mass = host_mass; +} + +template class SPHLJ; +} diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu new file mode 100644 index 00000000000..c6fe0713991 --- /dev/null +++ b/lib/gpu/lal_sph_lj.cu @@ -0,0 +1,432 @@ +// ************************************************************************** +// edpd.cu +// ------------------- +// Trung Dac Nguyen (U Chicago) +// +// Device code for acceleration of the edpd pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : September 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( vel_tex,float4); +#else +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); +#endif +#else +#define pos_tex x_ +#define vel_tex v_ +#endif + +#if (SHUFFLE_AVAIL == 0) + +#define store_drhoE(drhoI, deltaE, ii, inum, tid, t_per_atom, offset, \ + drhoE) \ + if (t_per_atom>1) { \ + simdsync(); \ + simd_reduce_add2(t_per_atom, red_acc, offset, tid, rhoEi, deltaE); \ + } \ + if (offset==0 && ii1) { \ + simd_reduce_add2(t_per_atom,drhoI,deltaE); \ + } \ + if (offset==0 && ii tag2) { + tag1 = jtag; tag2 = itag; + } + + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + numtyp T_ij=(numtyp)0.5*(Ti+Tj); + numtyp4 T_pow; + T_pow.x = T_ij - (numtyp)1.0; + T_pow.y = T_pow.x*T_pow.x; + T_pow.z = T_pow.x*T_pow.y; + T_pow.w = T_pow.x*T_pow.z; + + numtyp coeff2x = coeff2[mtype].x; //power[itype][jtype] + numtyp coeff2y = coeff2[mtype].y; //kappa[itype][jtype] + numtyp coeff2z = coeff2[mtype].z; //powerT[itype][jtype] + numtyp coeff2w = coeff2[mtype].w; //cutT[itype][jtype] + numtyp power_d = coeff2x; + if (power_flag) { + numtyp factor = (numtyp)1.0; + factor += sc[mtype].x*T_pow.x + sc[mtype].y*T_pow.y + + sc[mtype].z*T_pow.z + sc[mtype].w*T_pow.w; + power_d *= factor; + } + + power_d = MAX((numtyp)0.01,power_d); + numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] + wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); + numtyp wr = ucl_pow(wc, (numtyp)0.5*power_d); + + numtyp kboltz = (numtyp)1.0; + numtyp GammaIJ = coeffy; // gamma[itype][jtype] + numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); + SigmaIJ = ucl_sqrt(SigmaIJ); + + numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] + force -= GammaIJ *wr*wr *dot*rinv; + force += SigmaIJ * wr *randnum * dtinvsqrt; + force *= factor_dpd*rinv; + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + // heat transfer + + if (r < coeff2w) { + numtyp wrT = (numtyp)1.0 - r/coeff2w; + wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); + wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] + numtyp randnumT = (numtyp)0; + saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); + randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); + + numtyp kappaT = coeff2y; // kappa[itype][jtype] + if (kappa_flag) { + numtyp factor = (numtyp)1.0; + factor += kc[mtype].x*T_pow.x + kc[mtype].y*T_pow.y + + kc[mtype].z*T_pow.z + kc[mtype].w*T_pow.w; + kappaT *= factor; + } + + numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; + numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); + + numtyp dQc = kij * wrT*wrT * (Tj - Ti)/(Ti*Tj); + numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cvi+cvj); + numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; + Qi += (dQc + dQd + dQr ); + } + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; + energy+=factor_dpd*e; + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + } // for nbor + } // if ii + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, + ans,engv); + store_drhoE(Qi,ii,inum,tid,t_per_atom,offset,Q); +} + +__kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict extra, + const __global numtyp2 *restrict coeff_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + #ifndef ONETYPE + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[4]; + if (tid<4) { + sp_lj[tid]=sp_lj_in[tid]; + } + if (tid tag2) { + tag1 = jtag; tag2 = itag; + } + numtyp randnum = (numtyp)0.0; + saru(tag1, tag2, seed, timestep, randnum); + + numtyp T_ij=(numtyp)0.5*(Ti+Tj); + numtyp4 T_pow; + T_pow.x = T_ij - (numtyp)1.0; + T_pow.y = T_pow.x*T_pow.x; + T_pow.z = T_pow.x*T_pow.y; + T_pow.w = T_pow.x*T_pow.z; + + numtyp power_d = coeff2x; // power[itype][jtype] + if (power_flag) { + numtyp factor = (numtyp)1.0; + factor += scx*T_pow.x + scy*T_pow.y + scz*T_pow.z + scw*T_pow.w; + power_d *= factor; + } + + power_d = MAX((numtyp)0.01,power_d); + numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] + wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); + numtyp wr = ucl_pow((numtyp)wc, (numtyp)0.5*power_d); + + numtyp kboltz = (numtyp)1.0; + numtyp GammaIJ = coeffy; // gamma[itype][jtype] + numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); + SigmaIJ = ucl_sqrt(SigmaIJ); + + numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] + force -= GammaIJ *wr*wr *dot*rinv; + force += SigmaIJ* wr *randnum * dtinvsqrt; + #ifndef ONETYPE + force *= factor_dpd*rinv; + #else + force *= rinv; + #endif + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + // heat transfer + + if (r < coeff2w) { + numtyp wrT = (numtyp)1.0 - r/coeff2w; + wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); + wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] + numtyp randnumT = (numtyp)0; + saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); + randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); + + numtyp kappaT = coeff2y; // kappa[itype][jtype] + if (kappa_flag) { + numtyp factor = (numtyp)1.0; + factor += kcx*T_pow.x + kcy*T_pow.y + kcz*T_pow.z + kcw*T_pow.w; + kappaT *= factor; + } + + numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; + numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); + + numtyp dQc = kij * wrT*wrT * (Tj - Ti )/(Ti*Tj); + numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cvi+cvj); + numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; + Qi += (dQc + dQd + dQr ); + } + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; + #ifndef ONETYPE + energy+=factor_dpd*e; + #else + energy+=e; + #endif + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + + } + } // for nbor + } // if ii + + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, ans,engv); + store_drhoE(Qi,ii,inum,tid,t_per_atom,offset,Q); +} + diff --git a/lib/gpu/lal_sph_lj.h b/lib/gpu/lal_sph_lj.h new file mode 100644 index 00000000000..5e26d019b27 --- /dev/null +++ b/lib/gpu/lal_sph_lj.h @@ -0,0 +1,88 @@ +/*************************************************************************** + sph_lj.h + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the sph lj pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#ifndef LAL_SPH_LJ_H +#define LAL_SPH_LJ_H + +#include "lal_base_dpd.h" + +namespace LAMMPS_AL { + +template +class SPHLJ : public BaseDPD { + public: + SPHLJ(); + ~SPHLJ(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, double **host_viscosity, + double *host_special_lj, const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, + FILE *screen); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + void get_extra_data(double *host_rho, double *host_cv, double* host_mass); + + /// copy drho and desph from device to host + void update_drhoE(void **drhoE_ptr); + + // --------------------------- TYPE DATA -------------------------- + + /// coeff.x = viscosity, coeff.y = cutsq + UCL_D_Vec coeff; + + /// Special LJ values + UCL_D_Vec sp_lj; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + /// Per-atom arrays + UCL_Vector drhoE; + int _max_drhoE_size; + + /// pointer to host data + double *rho, *cv, *mass; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp new file mode 100644 index 00000000000..7abaa10805f --- /dev/null +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -0,0 +1,132 @@ +/*************************************************************************** + sph_lj_ext.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Functions for LAMMPS access to sph lj acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_sph_lj.h" + +using namespace std; +using namespace LAMMPS_AL; + +static SPHLJ SPHLJMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int sph_lj_gpu_init(const int ntypes, double **cutsq, double **host_viscosity, + double *special_lj, const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen) { + SPHLJMF.clear(); + gpu_mode=SPHLJMF.device->gpu_mode(); + double gpu_split=SPHLJMF.device->particle_split(); + int first_gpu=SPHLJMF.device->first_device(); + int last_gpu=SPHLJMF.device->last_device(); + int world_me=SPHLJMF.device->world_me(); + int gpu_rank=SPHLJMF.device->gpu_rank(); + int procs_per_gpu=SPHLJMF.device->procs_per_gpu(); + + SPHLJMF.device->init_message(screen,"sph_lj",first_gpu,last_gpu); + + bool message=false; + if (SPHLJMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=SPHLJMF.init(ntypes, cutsq, host_viscosity, special_lj, + inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); + + SPHLJMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + SPHLJMF.estimate_gpu_overhead(); + return init_ok; +} + +void sph_lj_gpu_clear() { + SPHLJMF.clear(); +} + +int ** sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + double *boxlo, double *prd) { + return SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_v, dtinvsqrt, seed, timestep, boxlo, prd); +} + +void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, + const int nlocal, double *boxlo, double *prd) { + SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); +} + +void sph_lj_gpu_get_extra_data(double *host_rho, double *host_cv, double *host_mass) { + SPHLJMF.get_extra_data(host_rho, host_cv, host_mass); +} + +void sph_lj_gpu_update_drhoE(void **drhoE_ptr) { + SPHLJMF.update_drhoE(drhoE_ptr); +} + +double sph_lj_gpu_bytes() { + return SPHLJMF.host_memory_usage(); +} From 379d3c8e2073af5b4394eaf127fb9d6b18c5ba36 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 11:06:17 -0600 Subject: [PATCH 171/300] Updated host_esph to extra data and cut to coeff --- lib/gpu/lal_sph_lj.cpp | 16 ++-- lib/gpu/lal_sph_lj.cu | 158 ++++++++++++++++--------------------- lib/gpu/lal_sph_lj.h | 10 ++- lib/gpu/lal_sph_lj_ext.cpp | 20 ++--- 4 files changed, 92 insertions(+), 112 deletions(-) diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index 8367a81b1e2..3abef71cfb8 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -45,8 +45,8 @@ int SPHLJT::bytes_per_atom(const int max_nbors) const { template int SPHLJT::init(const int ntypes, - double **host_cutsq, double **host_viscosity, - double *host_special_lj, + double **host_cutsq, double **host_cut, + double **host_viscosity, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -92,8 +92,8 @@ int SPHLJT::init(const int ntypes, host_write[i]=0.0; coeff.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); - this->atom->type_pack2(ntypes,lj_types,coeff,host_write,host_viscosity, - host_cutsq); + this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_viscosity, + host_cut, host_cutsq); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -163,9 +163,9 @@ int SPHLJT::loop(const int eflag, const int vflag) { int idx = n+i*nstride; numtyp4 v; v.x = rho[i]; + v.x = esph[i]; v.y = cv[i]; - v.z = mass[i]; - v.w = 0; + v.w = mass[i]; pextra[idx] = v; } this->atom->add_extra_data(); @@ -202,8 +202,10 @@ int SPHLJT::loop(const int eflag, const int vflag) { // --------------------------------------------------------------------------- template -void SPHLJT::get_extra_data(double *host_rho, double *host_cv, double* host_mass) { +void SPHLJT::get_extra_data(double *host_rho, double *host_esph, + double *host_cv, double* host_mass) { rho = host_rho; + esph = host_esph; cv = host_cv; mass = host_mass; } diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index c6fe0713991..4d21c093a8f 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -77,7 +77,8 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, energy=(acctyp)0; for (int i=0; i<6; i++) virial[i]=(acctyp)0; } - acctyp Qi = (acctyp)0; + acctyp2 drhoEacc; + drhoEacc.x = drhoEacc.x = (acctyp)0; if (iidimension == 3 Lucy Kernel, 3d + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + + // Lucy Kernel, 2d + //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + + // function call to LJ EOS + numtyp fj, cj; + //LJEOS2(rho[j], esph[j], cv[j], &fj, &cj); + //fj /= (rho[j] * rho[j]); + + // apply long-range correction to model a LJ fluid with cutoff + // this implies that the modelled LJ fluid has cutoff == SPH cutoff + numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); + fi += lrc; + fj += lrc; + + // dot product of velocity delta and distance vector numtyp delvx = iv.x - jv.x; numtyp delvy = iv.y - jv.y; numtyp delvz = iv.z - jv.z; - numtyp dot = delx*delvx + dely*delvy + delz*delvz; - numtyp vijeij = dot*rinv; - - const numtyp coeffx=coeff[mtype].x; // a0[itype][jtype] - const numtyp coeffy=coeff[mtype].y; // gamma[itype][jtype] - const numtyp coeffz=coeff[mtype].z; // cut[itype][jtype] + numtyp delVdotDelR = delx*delvx + dely*delvy + delz*delvz; - const numtyp4 Tcvj = extra[j]; - numtyp Tj = Tcvj.x; - numtyp cvj = Tcvj.y; - - unsigned int tag1=itag, tag2=jtag; - if (tag1 > tag2) { - tag1 = jtag; tag2 = itag; - } - - numtyp randnum = (numtyp)0.0; - saru(tag1, tag2, seed, timestep, randnum); - - numtyp T_ij=(numtyp)0.5*(Ti+Tj); - numtyp4 T_pow; - T_pow.x = T_ij - (numtyp)1.0; - T_pow.y = T_pow.x*T_pow.x; - T_pow.z = T_pow.x*T_pow.y; - T_pow.w = T_pow.x*T_pow.z; - - numtyp coeff2x = coeff2[mtype].x; //power[itype][jtype] - numtyp coeff2y = coeff2[mtype].y; //kappa[itype][jtype] - numtyp coeff2z = coeff2[mtype].z; //powerT[itype][jtype] - numtyp coeff2w = coeff2[mtype].w; //cutT[itype][jtype] - numtyp power_d = coeff2x; - if (power_flag) { - numtyp factor = (numtyp)1.0; - factor += sc[mtype].x*T_pow.x + sc[mtype].y*T_pow.y + - sc[mtype].z*T_pow.z + sc[mtype].w*T_pow.w; - power_d *= factor; + // artificial viscosity (Monaghan 1992) + numtyp fvisc = (numtyp)0; + if (delVdotDelR < (numyp)0) { + mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); + fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] } - power_d = MAX((numtyp)0.01,power_d); - numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] - wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); - numtyp wr = ucl_pow(wc, (numtyp)0.5*power_d); - - numtyp kboltz = (numtyp)1.0; - numtyp GammaIJ = coeffy; // gamma[itype][jtype] - numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); - SigmaIJ = ucl_sqrt(SigmaIJ); - - numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] - force -= GammaIJ *wr*wr *dot*rinv; - force += SigmaIJ * wr *randnum * dtinvsqrt; - force *= factor_dpd*rinv; + // total pair force & thermal energy increment + numtyp force = -massi * massj * (fi + fj + fvisc) * wfd; + numtyp deltaE = (numtyp)-0.5 * force * delVdotDelR; f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; - // heat transfer - - if (r < coeff2w) { - numtyp wrT = (numtyp)1.0 - r/coeff2w; - wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); - wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] - numtyp randnumT = (numtyp)0; - saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); - randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); - - numtyp kappaT = coeff2y; // kappa[itype][jtype] - if (kappa_flag) { - numtyp factor = (numtyp)1.0; - factor += kc[mtype].x*T_pow.x + kc[mtype].y*T_pow.y + - kc[mtype].z*T_pow.z + kc[mtype].w*T_pow.w; - kappaT *= factor; - } + // and change in density, drho[i] + drhoEacc.x += massj * delVdotDelR * wfd; - numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; - numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); - - numtyp dQc = kij * wrT*wrT * (Tj - Ti)/(Ti*Tj); - numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; - dQd /= (cvi+cvj); - numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; - Qi += (dQc + dQd + dQr ); - } + // change in thermal energy, desph[i] + drhoEacc.y += deltaE; if (EVFLAG && eflag) { - numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; - energy+=factor_dpd*e; + numtyp e = (numtyp)0; + energy+=e; } if (EVFLAG && vflag) { virial[0] += delx*delx*force; @@ -224,12 +198,12 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, } // if ii store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, ans,engv); - store_drhoE(Qi,ii,inum,tid,t_per_atom,offset,Q); + store_drhoE(drhoEacc,ii,inum,tid,t_per_atom,offset,drhoE); } __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict extra, - const __global numtyp2 *restrict coeff_in, + const __global numtyp4 *restrict coeff_in, const __global numtyp *restrict sp_lj_in, const __global int * dev_nbor, const __global int * dev_packed, diff --git a/lib/gpu/lal_sph_lj.h b/lib/gpu/lal_sph_lj.h index 5e26d019b27..04423f85fac 100644 --- a/lib/gpu/lal_sph_lj.h +++ b/lib/gpu/lal_sph_lj.h @@ -37,7 +37,8 @@ class SPHLJ : public BaseDPD { * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, double **host_cutsq, double **host_viscosity, + int init(const int ntypes, double **host_cutsq, + double** host_cut, double **host_viscosity, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -52,14 +53,15 @@ class SPHLJ : public BaseDPD { /// Total host memory used by library for pair style double host_memory_usage() const; - void get_extra_data(double *host_rho, double *host_cv, double* host_mass); + void get_extra_data(double *host_rho, double *host_esph, + double *host_cv, double* host_mass); /// copy drho and desph from device to host void update_drhoE(void **drhoE_ptr); // --------------------------- TYPE DATA -------------------------- - /// coeff.x = viscosity, coeff.y = cutsq + /// coeff.x = viscosity, coeff.y = cut, coeff.z = cutsq UCL_D_Vec coeff; /// Special LJ values @@ -76,7 +78,7 @@ class SPHLJ : public BaseDPD { int _max_drhoE_size; /// pointer to host data - double *rho, *cv, *mass; + double *rho, *esph, *cv, *mass; private: bool _allocated; diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index 7abaa10805f..7db601c9eb0 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -27,8 +27,9 @@ static SPHLJ SPHLJMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int sph_lj_gpu_init(const int ntypes, double **cutsq, double **host_viscosity, - double *special_lj, const int inum, const int nall, +int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_viscosity, double *special_lj, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { SPHLJMF.clear(); @@ -53,8 +54,8 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double **host_viscosity, int init_ok=0; if (world_me==0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_viscosity, special_lj, - inum, nall, max_nbors, maxspecial, + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, + special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); SPHLJMF.device->world_barrier(); @@ -71,9 +72,9 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double **host_viscosity, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_viscosity, special_lj, - inum, nall, max_nbors, maxspecial, - cell_size, gpu_split, screen); + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, + special_lj, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); SPHLJMF.device->serialize_init(); if (message) @@ -119,8 +120,9 @@ void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); } -void sph_lj_gpu_get_extra_data(double *host_rho, double *host_cv, double *host_mass) { - SPHLJMF.get_extra_data(host_rho, host_cv, host_mass); +void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, + double *host_cv, double *host_mass) { + SPHLJMF.get_extra_data(host_rho, host_esph, host_cv, host_mass); } void sph_lj_gpu_update_drhoE(void **drhoE_ptr) { From fef28c9daaac21caddffcefe06aed378e3cf2411 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 11:41:37 -0600 Subject: [PATCH 172/300] Updated sph_lj kernels --- lib/gpu/lal_sph_lj.cu | 297 ++++++++++++++++++++++-------------------- 1 file changed, 157 insertions(+), 140 deletions(-) diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index 4d21c093a8f..b965df25a29 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -29,41 +29,86 @@ _texture_2d( vel_tex,int4); #if (SHUFFLE_AVAIL == 0) -#define store_drhoE(drhoI, deltaE, ii, inum, tid, t_per_atom, offset, \ - drhoE) \ +#define store_drhoE(drhoEacc, ii, inum, tid, t_per_atom, offset, drhoE) \ if (t_per_atom>1) { \ simdsync(); \ - simd_reduce_add2(t_per_atom, red_acc, offset, tid, rhoEi, deltaE); \ + simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ + drhoEacc.x, drhoEacc.y); \ } \ if (offset==0 && ii1) { \ - simd_reduce_add2(t_per_atom,drhoI,deltaE); \ - } \ - if (offset==0 && ii1) { \ + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ + drhoEacc.x += shfl_down(drhoEacc.x, s, t_per_atom); \ + drhoEacc.y += shfl_down(drhoEacc.y, s, t_per_atom); \ + } \ + } \ + if (offset==0 && ii (numtyp)0.0) { + pc[1] = ucl_sqrt(csq); // soundspeed + } else { + pc[1] = (numtyp)0.0; + } +} + + __kernel void k_sph_lj(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict extra, - const __global numtyp4 *restrict coeff, - const int lj_types, - const __global numtyp *restrict sp_lj, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp3 *restrict ans, - __global acctyp *restrict engv, - __global acctyp *restrict drhoE, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp4 *restrict v_, - const int t_per_atom) { + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -87,7 +132,6 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; - numtyp mass_itype = mass[itype]; numtyp4 iv; fetch4(iv,i,vel_tex); //v_[i]; const numtyp4 extrai = extra[i]; @@ -97,11 +141,12 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, numtyp massi= extrai.w; // compute pressure of particle i with LJ EOS - numtyp fi, ci; - //LJEOS2(rho[i], esph[i], cv[i], &fi, &ci); - //fi /= (rho[i] * rho[i]); + numtyp fci[2]; + LJEOS2(rhoi, esphi, cvi, fci); + numtyp fi = fci[0]; + numtyp ci = fci[1]; + fi /= (rhoi * rhoi); - numtyp factor_lj; for ( ; nbordimension == 3 Lucy Kernel, 3d - wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; // Lucy Kernel, 2d //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; // function call to LJ EOS - numtyp fj, cj; - //LJEOS2(rho[j], esph[j], cv[j], &fj, &cj); - //fj /= (rho[j] * rho[j]); + numtyp fcj[2]; + LJEOS2(rhoj, esphj, cvj, fcj); + numtyp fj = fcj[0]; + numtyp cj = fcj[1]; + fj /= (rhoj * rhoj); // apply long-range correction to model a LJ fluid with cutoff // this implies that the modelled LJ fluid has cutoff == SPH cutoff @@ -163,7 +210,7 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, // artificial viscosity (Monaghan 1992) numtyp fvisc = (numtyp)0; if (delVdotDelR < (numyp)0) { - mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); + numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] } @@ -202,18 +249,18 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, } __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict extra, - const __global numtyp4 *restrict coeff_in, - const __global numtyp *restrict sp_lj_in, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp3 *restrict ans, - __global acctyp *restrict engv, - __global acctyp *restrict drhoE, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp4 *restrict v_, - const int t_per_atom) { + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -229,7 +276,8 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, __syncthreads(); #else const numtyp coeffx=coeff_in[ONETYPE].x; // viscosity[itype][jtype] - const numtyp coeffy=coeff_in[ONETYPE].y; // cutsq[itype][jtype] + const numtyp coeffy=coeff_in[ONETYPE].y; // cut[itype][jtype] + const numtyp cutsq_p=coeff_in[ONETYPE].z; // cutsq[itype][jtype] #endif int n_stride; @@ -242,7 +290,8 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, energy=(acctyp)0; for (int i=0; i<6; i++) virial[i]=(acctyp)0; } - acctyp Qi = (acctyp)0; + acctyp2 drhoEacc; + drhoEacc.x = drhoEacc.x = (acctyp)0; if (iidimension == 3 Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + + // Lucy Kernel, 2d + //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + + // function call to LJ EOS + numtyp fcj[2]; + LJEOS2(rhoj, esphj, cvj, fcj); + numtyp fj = fcj[0]; + numtyp cj = fcj[1]; + fj /= (rhoj * rhoj); - unsigned int tag1=itag, tag2=jtag; - if (tag1 > tag2) { - tag1 = jtag; tag2 = itag; - } - numtyp randnum = (numtyp)0.0; - saru(tag1, tag2, seed, timestep, randnum); - - numtyp T_ij=(numtyp)0.5*(Ti+Tj); - numtyp4 T_pow; - T_pow.x = T_ij - (numtyp)1.0; - T_pow.y = T_pow.x*T_pow.x; - T_pow.z = T_pow.x*T_pow.y; - T_pow.w = T_pow.x*T_pow.z; - - numtyp power_d = coeff2x; // power[itype][jtype] - if (power_flag) { - numtyp factor = (numtyp)1.0; - factor += scx*T_pow.x + scy*T_pow.y + scz*T_pow.z + scw*T_pow.w; - power_d *= factor; - } + // apply long-range correction to model a LJ fluid with cutoff + // this implies that the modelled LJ fluid has cutoff == SPH cutoff + numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); + fi += lrc; + fj += lrc; - power_d = MAX((numtyp)0.01,power_d); - numtyp wc = (numtyp)1.0 - r/coeffz; // cut[itype][jtype] - wc = MAX((numtyp)0.0,MIN((numtyp)1.0,wc)); - numtyp wr = ucl_pow((numtyp)wc, (numtyp)0.5*power_d); + // dot product of velocity delta and distance vector + numtyp delvx = iv.x - jv.x; + numtyp delvy = iv.y - jv.y; + numtyp delvz = iv.z - jv.z; + numtyp delVdotDelR = delx*delvx + dely*delvy + delz*delvz; - numtyp kboltz = (numtyp)1.0; - numtyp GammaIJ = coeffy; // gamma[itype][jtype] - numtyp SigmaIJ = (numtyp)4.0*GammaIJ*kboltz*Ti*Tj/(Ti+Tj); - SigmaIJ = ucl_sqrt(SigmaIJ); + // artificial viscosity (Monaghan 1992) + numtyp fvisc = (numtyp)0; + if (delVdotDelR < (numyp)0) { + numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); + fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] + } - numtyp force = coeffx*T_ij*wc; // a0[itype][jtype] - force -= GammaIJ *wr*wr *dot*rinv; - force += SigmaIJ* wr *randnum * dtinvsqrt; - #ifndef ONETYPE - force *= factor_dpd*rinv; - #else - force *= rinv; - #endif + // total pair force & thermal energy increment + numtyp force = -massi * massj * (fi + fj + fvisc) * wfd; + numtyp deltaE = (numtyp)-0.5 * force * delVdotDelR; f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; - // heat transfer - - if (r < coeff2w) { - numtyp wrT = (numtyp)1.0 - r/coeff2w; - wrT = MAX((numtyp)0.0,MIN((numtyp)1.0,wrT)); - wrT = ucl_pow(wrT, (numtyp)0.5*coeff2z); // powerT[itype][jtype] - numtyp randnumT = (numtyp)0; - saru(tag1, tag2, seed+tag1+tag2, timestep, randnumT); // randomT->gaussian(); - randnumT = MAX((numtyp)-5.0,MIN(randnum,(numtyp)5.0)); - - numtyp kappaT = coeff2y; // kappa[itype][jtype] - if (kappa_flag) { - numtyp factor = (numtyp)1.0; - factor += kcx*T_pow.x + kcy*T_pow.y + kcz*T_pow.z + kcw*T_pow.w; - kappaT *= factor; - } - - numtyp kij = cvi*cvj*kappaT * T_ij*T_ij; - numtyp alphaij = ucl_sqrt((numtyp)2.0*kboltz*kij); - - numtyp dQc = kij * wrT*wrT * (Tj - Ti )/(Ti*Tj); - numtyp dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass_itype ) - SigmaIJ * wr *vijeij *randnum; - dQd /= (cvi+cvj); - numtyp dQr = alphaij * wrT * dtinvsqrt * randnumT; - Qi += (dQc + dQd + dQr ); - } - if (EVFLAG && eflag) { - numtyp e = (numtyp)0.5*coeffx*T_ij*coeffz * wc*wc; - #ifndef ONETYPE - energy+=factor_dpd*e; - #else + numtyp e = (numtyp)0; energy+=e; - #endif } if (EVFLAG && vflag) { virial[0] += delx*delx*force; @@ -401,6 +418,6 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, } // if ii store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, ans,engv); - store_drhoE(Qi,ii,inum,tid,t_per_atom,offset,Q); + store_drhoE(drhoEacc,ii,inum,tid,t_per_atom,offset,drhoE); } From e51a8ccfbf96a54b2eca8eba94d5d767f74d9312 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 12:00:24 -0600 Subject: [PATCH 173/300] Removed the unnecessary line since CUDA_BUILD_MULTIARCH is ON by default --- cmake/presets/gpu-cuda.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/presets/gpu-cuda.cmake b/cmake/presets/gpu-cuda.cmake index c5e967754a5..2ac6bd9ea65 100644 --- a/cmake/presets/gpu-cuda.cmake +++ b/cmake/presets/gpu-cuda.cmake @@ -3,7 +3,6 @@ set(PKG_GPU ON CACHE BOOL "Build GPU package" FORCE) set(GPU_API "cuda" CACHE STRING "APU used by GPU package" FORCE) set(GPU_PREC "mixed" CACHE STRING "" FORCE) -set(GPU_ARCH "sm_60;sm_70;sm_80" CACHE STRING "LAMMPS GPU CUDA SM architectures" FORCE) set(CUDA_NVCC_FLAGS "-allow-unsupported-compiler" CACHE STRING "" FORCE) set(CUDA_NVCC_FLAGS_DEBUG "-allow-unsupported-compiler" CACHE STRING "" FORCE) From 6fe16c7606c66226637303fcae139ba6b6a8b917 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 14:33:47 -0600 Subject: [PATCH 174/300] Added pair style sph/lj/gpu in src/GPU, removed commented codes --- lib/gpu/lal_amoeba.cpp | 8 +- lib/gpu/lal_hippo.cpp | 8 +- lib/gpu/lal_sph_lj.cpp | 6 +- lib/gpu/lal_sph_lj_ext.cpp | 30 +++--- src/GPU/pair_sph_lj_gpu.cpp | 199 ++++++++++++++++++++++++++++++++++++ src/GPU/pair_sph_lj_gpu.h | 48 +++++++++ 6 files changed, 269 insertions(+), 30 deletions(-) create mode 100644 src/GPU/pair_sph_lj_gpu.cpp create mode 100644 src/GPU/pair_sph_lj_gpu.h diff --git a/lib/gpu/lal_amoeba.cpp b/lib/gpu/lal_amoeba.cpp index 5e199979135..805c4c4b26b 100644 --- a/lib/gpu/lal_amoeba.cpp +++ b/lib/gpu/lal_amoeba.cpp @@ -281,13 +281,7 @@ int AmoebaT::polar_real(const int eflag, const int vflag) { const int BX=this->block_size(); const int GX=static_cast(ceil(static_cast(ainum)/(BX/this->_threads_per_atom))); - /* - const int cus = this->device->gpu->cus(); - while (GX < cus && GX > 1) { - BX /= 2; - GX=static_cast(ceil(static_cast(ainum)/(BX/this->_threads_per_atom))); - } - */ + this->time_pair.start(); // Build the short neighbor list if not done yet diff --git a/lib/gpu/lal_hippo.cpp b/lib/gpu/lal_hippo.cpp index 8d6ad5dfb29..3511d82b000 100644 --- a/lib/gpu/lal_hippo.cpp +++ b/lib/gpu/lal_hippo.cpp @@ -603,13 +603,7 @@ int HippoT::polar_real(const int eflag, const int vflag) { const int BX=this->block_size(); const int GX=static_cast(ceil(static_cast(ainum)/(BX/this->_threads_per_atom))); - /* - const int cus = this->device->gpu->cus(); - while (GX < cus && GX > 1) { - BX /= 2; - GX=static_cast(ceil(static_cast(ainum)/(BX/this->_threads_per_atom))); - } - */ + this->time_pair.start(); // Build the short neighbor list if not done yet diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index 3abef71cfb8..02b5cc0765e 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -107,7 +107,7 @@ int SPHLJT::init(const int ntypes, ef_nall=2000; _max_drhoE_size=static_cast(static_cast(ef_nall)*1.10); - drhoE.alloc(_max_drhoE_size,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + drhoE.alloc(_max_drhoE_size*2,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); _allocated=true; this->_max_bytes=coeff.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); @@ -134,7 +134,7 @@ double SPHLJT::host_memory_usage() const { template void SPHLJT::update_drhoE(void **drhoE_ptr) { *drhoE_ptr=drhoE.host.begin(); - drhoE.update_host(_max_drhoE_size,false); + drhoE.update_host(_max_drhoE_size*2,false); } // --------------------------------------------------------------------------- @@ -148,7 +148,7 @@ int SPHLJT::loop(const int eflag, const int vflag) { // Resize drhoE array if necessary if (nall > _max_drhoE_size) { _max_drhoE_size=static_cast(static_cast(nall)*1.10); - drhoE.resize(_max_drhoE_size); + drhoE.resize(_max_drhoE_size*2); } // signal that we need to transfer extra data from the host diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index 7db601c9eb0..f1483c1db84 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -94,13 +94,15 @@ void sph_lj_gpu_clear() { int ** sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, int **nspecial, + double *subhi, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, - double **host_v, const double dtinvsqrt, - const int seed, const int timestep, - double *boxlo, double *prd) { + double **host_v, double *boxlo, double *prd) { + double dtinvsqrt = 1.0; + int seed = 0; + int timestep = 0; + tagint* tag = nullptr; return SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, @@ -108,16 +110,18 @@ int ** sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, } void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, - double **host_x, int *host_type, int *ilist, int *numj, - int **firstneigh, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, tagint *tag, - double **host_v, const double dtinvsqrt, - const int seed, const int timestep, - const int nlocal, double *boxlo, double *prd) { + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, + double **host_v, const int nlocal, double *boxlo, double *prd) { + double dtinvsqrt = 1.0; + int seed = 0; + int timestep = 0; + tagint* tag = nullptr; SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, - firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, - tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); } void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp new file mode 100644 index 00000000000..b73153c1ac5 --- /dev/null +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -0,0 +1,199 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Dac Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_sph_lj_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "info.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_viscosity, double *special_lj, + const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen); +void sph_lj_gpu_clear(); +int **sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double **host_v, + double *boxlo, double *prd); +void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double **host_v, + const int nlocal, double *boxlo, double *prd); +void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, + double *host_cv, double *host_mass); +void sph_lj_gpu_update_drhoE(void **drhoE_ptr); +double sph_lj_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairSPHLJGPU::PairSPHLJGPU(LAMMPS *lmp) : PairSPHLJ(lmp), gpu_mode(GPU_FORCE) +{ + drhoE_pinned = nullptr; + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairSPHLJGPU::~PairSPHLJGPU() +{ + sph_lj_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHLJGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + + double *rho = atom->rho; + double *esph = atom->esph; + double *cv = atom->cv; + double *mass = atom->mass; + sph_lj_gpu_get_extra_data(rho, esph, cv, mass); + + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = sph_lj_gpu_compute_n( + neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->nspecial, + atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + cpu_time, success, atom->v, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, + atom->v, atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + // get the drho and dE from device + + double *drho = atom->drho; + double *desph = atom->desph; + sph_lj_gpu_update_drhoE(&drhoE_pinned); + + int nlocal = atom->nlocal; + if (acc_float) { + auto drhoE_ptr = (float *)drhoE_pinned; + int idx = 0; + for (int i = 0; i < nlocal; i++) { + drho[i] = drhoE_ptr[idx]; + desph[i] = drhoE_ptr[idx+1]; + idx += 2; + } + + } else { + auto drhoE_ptr = (double *)drhoE_pinned; + int idx = 0; + for (int i = 0; i < nlocal; i++) { + drho[i] = drhoE_ptr[idx]; + desph[i] = drhoE_ptr[idx+1]; + idx += 2; + } + } + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairSPHLJGPU::init_style() +{ + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double mcut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + mcut = init_one(i, j); + mcut *= mcut; + if (mcut > maxcut) maxcut = mcut; + cutsq[i][j] = cutsq[j][i] = mcut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + sph_lj_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, + force->special_lj, atom->nlocal, atom->nlocal + atom->nghost, + mnf, maxspecial, cell_size, gpu_mode, screen); + GPU_EXTRA::check_flag(success, error, world); + + acc_float = Info::has_accelerator_feature("GPU", "precision", "single"); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHLJGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + sph_lj_gpu_bytes(); +} diff --git a/src/GPU/pair_sph_lj_gpu.h b/src/GPU/pair_sph_lj_gpu.h new file mode 100644 index 00000000000..9aae3c2d6ab --- /dev/null +++ b/src/GPU/pair_sph_lj_gpu.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(sph/lj/gpu,PairSPHLJGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_SPH_LJ_GPU_H +#define LMP_PAIR_SPH_LJ_GPU_H + +#include "pair_sph_lj.h" + +namespace LAMMPS_NS { + +class PairSPHLJGPU : public PairSPHLJ { + public: + PairSPHLJGPU(LAMMPS *lmp); + ~PairSPHLJGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + void *drhoE_pinned; + bool acc_float; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From cad4c25750a539e61c27ada926515057bd531c29 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 7 Dec 2023 17:22:45 -0600 Subject: [PATCH 175/300] Adding sph/taitwater in lib/gpu --- lib/gpu/lal_edpd.cpp | 2 +- lib/gpu/lal_sph_lj.cpp | 4 +- lib/gpu/lal_sph_lj.cu | 4 +- lib/gpu/lal_sph_taitwater.cpp | 221 ++++++++++++++++++ lib/gpu/lal_sph_taitwater.cu | 374 ++++++++++++++++++++++++++++++ lib/gpu/lal_sph_taitwater.h | 93 ++++++++ lib/gpu/lal_sph_taitwater_ext.cpp | 140 +++++++++++ src/GPU/pair_sph_lj_gpu.cpp | 4 +- 8 files changed, 835 insertions(+), 7 deletions(-) create mode 100644 lib/gpu/lal_sph_taitwater.cpp create mode 100644 lib/gpu/lal_sph_taitwater.cu create mode 100644 lib/gpu/lal_sph_taitwater.h create mode 100644 lib/gpu/lal_sph_taitwater_ext.cpp diff --git a/lib/gpu/lal_edpd.cpp b/lib/gpu/lal_edpd.cpp index c85644a60bc..c03591b9ed5 100644 --- a/lib/gpu/lal_edpd.cpp +++ b/lib/gpu/lal_edpd.cpp @@ -104,7 +104,7 @@ int EDPDT::init(const int ntypes, this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_power,host_kappa, host_powerT,host_cutT); - UCL_H_Vec dview_mass(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + UCL_H_Vec dview_mass(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); for (int i = 0; i < ntypes; i++) dview_mass[i] = host_mass[i]; mass.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index 02b5cc0765e..e5184b9e918 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -163,8 +163,8 @@ int SPHLJT::loop(const int eflag, const int vflag) { int idx = n+i*nstride; numtyp4 v; v.x = rho[i]; - v.x = esph[i]; - v.y = cv[i]; + v.y = esph[i]; + v.z = cv[i]; v.w = mass[i]; pextra[idx] = v; } diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index b965df25a29..0281d9c16aa 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -1,9 +1,9 @@ // ************************************************************************** -// edpd.cu +// sph_lj.cu // ------------------- // Trung Dac Nguyen (U Chicago) // -// Device code for acceleration of the edpd pair style +// Device code for acceleration of the sph/lj pair style // // __________________________________________________________________________ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) diff --git a/lib/gpu/lal_sph_taitwater.cpp b/lib/gpu/lal_sph_taitwater.cpp new file mode 100644 index 00000000000..1548502ffa0 --- /dev/null +++ b/lib/gpu/lal_sph_taitwater.cpp @@ -0,0 +1,221 @@ +/*************************************************************************** + sph_taitwater.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the sph_taitwater pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "sph_taitwater_cl.h" +#elif defined(USE_CUDART) +const char *sph_taitwater=0; +#else +#include "sph_taitwater_cubin.h" +#endif + +#include "lal_sph_taitwater.h" +#include +namespace LAMMPS_AL { +#define SPHTaitwaterT SPHTaitwater + +extern Device device; + +template +SPHTaitwaterT::SPHTaitwater() : BaseDPD(), _allocated(false) { + _max_drhoE_size = 0; +} + +template +SPHTaitwaterT::~SPHTaitwater() { + clear(); +} + +template +int SPHTaitwaterT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int SPHTaitwaterT::init(const int ntypes, + double **host_cutsq, double **host_cut, + double **host_viscosity, double* host_rho0, + double* host_soundspeed, double *host_special_lj, + const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { + const int max_shared_types=this->device->max_shared_types(); + + int onetype=0; + #ifdef USE_OPENCL + if (maxspecial==0) + for (int i=1; i0) { + if (onetype>0) + onetype=-1; + else if (onetype==0) + onetype=i*max_shared_types+j; + } + if (onetype<0) onetype=0; + #endif + + int success; + int extra_fields = 4; // round up to accomodate quadruples of numtyp values + // rho, mass + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,sph_taitwater,"k_sph_taitwater",onetype,extra_fields); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=taitwater_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_viscosity, + host_cut, host_cutsq); + + UCL_H_Vec dview_rho0ss(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + for (int i = 0; i < ntypes; i++) { + dview_rho0ss[i].x = host_rho0[i]; + dview_rho0ss[i].y = host_soundspeed[i]; + } + rho0sspeed.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); + ucl_copy(rho0sspeed,dview_rho0ss,false); + + UCL_H_Vec dview; + sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(host_special_lj,4,*(this->ucl_device)); + ucl_copy(sp_lj,dview,false); + + // allocate per-atom array Q + + int ef_nall=nall; + if (ef_nall==0) + ef_nall=2000; + + _max_drhoE_size=static_cast(static_cast(ef_nall)*1.10); + drhoE.alloc(_max_drhoE_size*2,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + + _allocated=true; + this->_max_bytes=coeff.row_bytes()+corho0sspeedeff.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); + return 0; +} + +template +void SPHTaitwaterT::clear() { + if (!_allocated) + return; + _allocated=false; + + coeff.clear(); + dview_rho0ss.clear(); + drhoE.clear(); + sp_lj.clear(); + this->clear_atomic(); +} + +template +double SPHTaitwaterT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(SPHTaitwater); +} + +template +void SPHTaitwaterT::update_drhoE(void **drhoE_ptr) { + *drhoE_ptr=drhoE.host.begin(); + drhoE.update_host(_max_drhoE_size*2,false); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int SPHTaitwaterT::loop(const int eflag, const int vflag) { + + int nall = this->atom->nall(); + + // Resize drhoE array if necessary + if (nall > _max_drhoE_size) { + _max_drhoE_size=static_cast(static_cast(nall)*1.10); + drhoE.resize(_max_drhoE_size*2); + } + + // signal that we need to transfer extra data from the host + + this->atom->extra_data_unavail(); + + numtyp4 *pextra=reinterpret_cast(&(this->atom->extra[0])); + + int n = 0; + int nstride = 1; + for (int i = 0; i < nall; i++) { + int idx = n+i*nstride; + numtyp4 v; + v.x = rho[i]; + v.y = mass[i]; + v.z = 0; + v.w = 0; + pextra[idx] = v; + } + this->atom->add_extra_data(); + + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &rho0sspeed, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &rho0sspeed, + &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + } + + this->time_pair.stop(); + return GX; +} + +// --------------------------------------------------------------------------- +// Get the extra data pointers from host +// --------------------------------------------------------------------------- + +template +void SPHTaitwaterT::get_extra_data(double *host_rho, double* host_mass) { + rho = host_rho; + mass = host_mass; +} + +template class SPHTaitwater; +} diff --git a/lib/gpu/lal_sph_taitwater.cu b/lib/gpu/lal_sph_taitwater.cu new file mode 100644 index 00000000000..d9e809bd451 --- /dev/null +++ b/lib/gpu/lal_sph_taitwater.cu @@ -0,0 +1,374 @@ +// ************************************************************************** +// sph_taitwater.cu +// ------------------- +// Trung Dac Nguyen (U Chicago) +// +// Device code for acceleration of the sph/taitwater pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : September 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( vel_tex,float4); +#else +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); +#endif +#else +#define pos_tex x_ +#define vel_tex v_ +#endif + +#if (SHUFFLE_AVAIL == 0) + +#define store_drhoE(drhoEacc, ii, inum, tid, t_per_atom, offset, drhoE) \ + if (t_per_atom>1) { \ + simdsync(); \ + simd_reduce_add2(t_per_atom, red_acc, offset, tid, \ + drhoEacc.x, drhoEacc.y); \ + } \ + if (offset==0 && ii1) { \ + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ + drhoEacc.x += shfl_down(drhoEacc.x, s, t_per_atom); \ + drhoEacc.y += shfl_down(drhoEacc.y, s, t_per_atom); \ + } \ + } \ + if (offset==0 && iidimension == 3 Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + + // Lucy Kernel, 2d + //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + + // compute pressure of atom j with Tait EOS + numtyp tmp = rho[j] / rho0[jtype]; + numtyp fj = tmp * tmp * tmp; + fj = B[jtype] * (fj * fj * tmp - 1.0); + fj /= (rhoj * rhoj); + + // dot product of velocity delta and distance vector + numtyp delvx = iv.x - jv.x; + numtyp delvy = iv.y - jv.y; + numtyp delvz = iv.z - jv.z; + numtyp delVdotDelR = delx*delvx + dely*delvy + delz*delvz; + + // artificial viscosity (Monaghan 1992) + numtyp fvisc = (numtyp)0; + if (delVdotDelR < (numyp)0) { + numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); + //fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] + + fvisc = -coeffx * (soundspeed[itype] + + soundspeed[jtype]) * mu / (rhoi + rhoj); + } + + // total pair force & thermal energy increment + numtyp force = -massi * massj * (fi + fj + fvisc) * wfd; + numtyp deltaE = (numtyp)-0.5 * force * delVdotDelR; + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + // and change in density, drho[i] + drhoEacc.x += massj * delVdotDelR * wfd; + + // change in thermal energy, desph[i] + drhoEacc.y += deltaE; + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0; + energy+=e; + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + } // for nbor + } // if ii + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, + ans,engv); + store_drhoE(drhoEacc,ii,inum,tid,t_per_atom,offset,drhoE); +} + +__kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff_in, + const __global numtyp2 *restrict rho0sspeed_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + #ifndef ONETYPE + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[4]; + if (tid<4) { + sp_lj[tid]=sp_lj_in[tid]; + } + if (tiddimension == 3 Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + + // Lucy Kernel, 2d + //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + + // function call to LJ EOS + numtyp fcj[2]; + LJEOS2(rhoj, esphj, cvj, fcj); + numtyp fj = fcj[0]; + numtyp cj = fcj[1]; + fj /= (rhoj * rhoj); + + // apply long-range correction to model a LJ fluid with cutoff + // this implies that the modelled LJ fluid has cutoff == SPH cutoff + numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); + fi += lrc; + fj += lrc; + + // dot product of velocity delta and distance vector + numtyp delvx = iv.x - jv.x; + numtyp delvy = iv.y - jv.y; + numtyp delvz = iv.z - jv.z; + numtyp delVdotDelR = delx*delvx + dely*delvy + delz*delvz; + + // artificial viscosity (Monaghan 1992) + numtyp fvisc = (numtyp)0; + if (delVdotDelR < (numyp)0) { + numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); + fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] + } + + // total pair force & thermal energy increment + numtyp force = -massi * massj * (fi + fj + fvisc) * wfd; + numtyp deltaE = (numtyp)-0.5 * force * delVdotDelR; + + f.x+=delx*force; + f.y+=dely*force; + f.z+=delz*force; + + if (EVFLAG && eflag) { + numtyp e = (numtyp)0; + energy+=e; + } + if (EVFLAG && vflag) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + + } + } // for nbor + } // if ii + + store_answers(f,energy,virial,ii,inum,tid,t_per_atom,offset,eflag,vflag, ans,engv); + store_drhoE(drhoEacc,ii,inum,tid,t_per_atom,offset,drhoE); +} + diff --git a/lib/gpu/lal_sph_taitwater.h b/lib/gpu/lal_sph_taitwater.h new file mode 100644 index 00000000000..cae5a0b09d4 --- /dev/null +++ b/lib/gpu/lal_sph_taitwater.h @@ -0,0 +1,93 @@ +/*************************************************************************** + sph_lj.h + ------------------- + Trung Dac Nguyen (U Chicago) + + Class for acceleration of the sph lj pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#ifndef LAL_SPH_TAITWATER_H +#define LAL_SPH_TaitLAL_SPH_TAITWATER_Hwater_H + +#include "lal_base_dpd.h" + +namespace LAMMPS_AL { + +template +class SPHTaitwater : public BaseDPD { + public: + SPHTaitwater(); + ~SPHTaitwater(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, + double** host_cut, double **host_viscosity, + double* host_rho0, double* host_soundspeed, + double *host_special_lj, const int nlocal, + const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + void get_extra_data(double *host_rho, double* host_mass); + + /// copy drho and desph from device to host + void update_drhoE(void **drhoE_ptr); + + // --------------------------- TYPE DATA -------------------------- + + /// coeff.x = viscosity, coeff.y = cut, coeff.z = cutsq + UCL_D_Vec coeff; + + UCL_D_Vec rho0sspeed; + + /// Special LJ values + UCL_D_Vec sp_lj; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + /// Per-atom arrays + UCL_Vector drhoE; + int _max_drhoE_size; + + /// pointer to host data + double *rho, *mass; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_sph_taitwater_ext.cpp b/lib/gpu/lal_sph_taitwater_ext.cpp new file mode 100644 index 00000000000..ef4bd54ab4c --- /dev/null +++ b/lib/gpu/lal_sph_taitwater_ext.cpp @@ -0,0 +1,140 @@ +/*************************************************************************** + sph_taitwater_ext.cpp + ------------------- + Trung Dac Nguyen (U Chicago) + + Functions for LAMMPS access to sph lj acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_sph_taitwater.h" + +using namespace std; +using namespace LAMMPS_AL; + +static SPHTaitwater SPHTaitwaterMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_viscosity, double* host_rho0, + double* host_soundspeed, double *special_lj, + const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen) { + SPHTaitwaterMF.clear(); + gpu_mode=SPHTaitwaterMF.device->gpu_mode(); + double gpu_split=SPHTaitwaterMF.device->particle_split(); + int first_gpu=SPHTaitwaterMF.device->first_device(); + int last_gpu=SPHTaitwaterMF.device->last_device(); + int world_me=SPHTaitwaterMF.device->world_me(); + int gpu_rank=SPHTaitwaterMF.device->gpu_rank(); + int procs_per_gpu=SPHTaitwaterMF.device->procs_per_gpu(); + + SPHTaitwaterMF.device->init_message(screen,"sph_taitwater",first_gpu,last_gpu); + + bool message=false; + if (SPHTaitwaterMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, + host_rho0, host_soundspeed, special_lj, + inum, nall, max_nbors, maxspecial, cell_size, + gpu_split, screen); + + SPHTaitwaterMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + SPHTaitwaterMF.estimate_gpu_overhead(); + return init_ok; +} + +void sph_taitwater_gpu_clear() { + SPHTaitwaterMF.clear(); +} + +int ** sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v, double *boxlo, double *prd) { + double dtinvsqrt = 1.0; + int seed = 0; + int timestep = 0; + tagint* tag = nullptr; + return SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_v, dtinvsqrt, seed, timestep, boxlo, prd); +} + +void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, + double **host_v, const int nlocal, double *boxlo, double *prd) { + double dtinvsqrt = 1.0; + int seed = 0; + int timestep = 0; + tagint* tag = nullptr; + SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); +} + +void sph_taitwater_gpu_get_extra_data(double *host_rho, double *host_mass) { + SPHTaitwaterMF.get_extra_data(host_rho, host_mass); +} + +void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr) { + SPHTaitwaterMF.update_drhoE(drhoE_ptr); +} + +double sph_taitwater_gpu_bytes() { + return SPHTaitwaterMF.host_memory_usage(); +} diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp index b73153c1ac5..0b6a7ee72d6 100644 --- a/src/GPU/pair_sph_lj_gpu.cpp +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -118,8 +118,8 @@ void PairSPHLJGPU::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, - eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->v, atom->nlocal, domain->boxlo, domain->prd); + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, + atom->v, atom->nlocal, domain->boxlo, domain->prd); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); From 7fad795141d1cb34b8fba0f41fd8119685f20044 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 8 Dec 2023 00:10:01 -0600 Subject: [PATCH 176/300] Added pair sph/taitwater/gpu in src/GPU --- lib/gpu/lal_sph_lj.cpp | 9 +- lib/gpu/lal_sph_lj.cu | 30 +++-- lib/gpu/lal_sph_lj.h | 4 +- lib/gpu/lal_sph_lj_ext.cpp | 8 +- lib/gpu/lal_sph_taitwater.cpp | 47 ++++--- lib/gpu/lal_sph_taitwater.cu | 155 +++++++++++----------- lib/gpu/lal_sph_taitwater.h | 13 +- lib/gpu/lal_sph_taitwater_ext.cpp | 15 ++- src/GPU/pair_sph_lj_gpu.cpp | 14 +- src/GPU/pair_sph_taitwater_gpu.cpp | 198 +++++++++++++++++++++++++++++ src/GPU/pair_sph_taitwater_gpu.h | 48 +++++++ 11 files changed, 405 insertions(+), 136 deletions(-) create mode 100644 src/GPU/pair_sph_taitwater_gpu.cpp create mode 100644 src/GPU/pair_sph_taitwater_gpu.h diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index e5184b9e918..85c144e2401 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -46,7 +46,8 @@ int SPHLJT::bytes_per_atom(const int max_nbors) const { template int SPHLJT::init(const int ntypes, double **host_cutsq, double **host_cut, - double **host_viscosity, double *host_special_lj, + double **host_viscosity, const int dimension, + double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -109,6 +110,8 @@ int SPHLJT::init(const int ntypes, _max_drhoE_size=static_cast(static_cast(ef_nall)*1.10); drhoE.alloc(_max_drhoE_size*2,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + _dimension = dimension; + _allocated=true; this->_max_bytes=coeff.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); return 0; @@ -184,13 +187,13 @@ int SPHLJT::loop(const int eflag, const int vflag) { this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index 0281d9c16aa..ab41477d2f0 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -108,7 +108,7 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp4 *restrict v_, - const int t_per_atom) { + const int dimension, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -182,12 +182,14 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, numtyp ihcub = ihsq * ih; numtyp wfd = h - ucl_sqrt(rsq); - // domain->dimension == 3 Lucy Kernel, 3d - wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; - - // Lucy Kernel, 2d - //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; - + if (dimension == 3) { + // Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + // function call to LJ EOS numtyp fcj[2]; LJEOS2(rhoj, esphj, cvj, fcj); @@ -260,7 +262,7 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp4 *restrict v_, - const int t_per_atom) { + const int dimension, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -360,11 +362,13 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, numtyp ihcub = ihsq * ih; numtyp wfd = h - ucl_sqrt(rsq); - // domain->dimension == 3 Lucy Kernel, 3d - wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; - - // Lucy Kernel, 2d - //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + if (dimension == 3) { + // Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } // function call to LJ EOS numtyp fcj[2]; diff --git a/lib/gpu/lal_sph_lj.h b/lib/gpu/lal_sph_lj.h index 04423f85fac..b2f78ddeca6 100644 --- a/lib/gpu/lal_sph_lj.h +++ b/lib/gpu/lal_sph_lj.h @@ -38,7 +38,7 @@ class SPHLJ : public BaseDPD { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double** host_cut, double **host_viscosity, + double** host_cut, double **host_viscosity, const int dimension, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -77,6 +77,8 @@ class SPHLJ : public BaseDPD { UCL_Vector drhoE; int _max_drhoE_size; + int _dimension; + /// pointer to host data double *rho, *esph, *cv, *mass; diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index f1483c1db84..b23a398db7c 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -28,8 +28,8 @@ static SPHLJ SPHLJMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, double *special_lj, - const int inum, const int nall, + double **host_viscosity, const int dimension, + double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { SPHLJMF.clear(); @@ -54,7 +54,7 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, int init_ok=0; if (world_me==0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -72,7 +72,7 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); diff --git a/lib/gpu/lal_sph_taitwater.cpp b/lib/gpu/lal_sph_taitwater.cpp index 1548502ffa0..84a25aab5c1 100644 --- a/lib/gpu/lal_sph_taitwater.cpp +++ b/lib/gpu/lal_sph_taitwater.cpp @@ -44,14 +44,14 @@ int SPHTaitwaterT::bytes_per_atom(const int max_nbors) const { } template -int SPHTaitwaterT::init(const int ntypes, - double **host_cutsq, double **host_cut, - double **host_viscosity, double* host_rho0, - double* host_soundspeed, double *host_special_lj, - const int nlocal, const int nall, - const int max_nbors, const int maxspecial, - const double cell_size, - const double gpu_split, FILE *_screen) { +int SPHTaitwaterT::init(const int ntypes, double **host_cutsq, + double **host_cut, double **host_viscosity, + double* host_rho0, double* host_soundspeed, + double* host_B, const int dimension, + double *host_special_lj, const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { const int max_shared_types=this->device->max_shared_types(); int onetype=0; @@ -72,7 +72,8 @@ int SPHTaitwaterT::init(const int ntypes, int extra_fields = 4; // round up to accomodate quadruples of numtyp values // rho, mass success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, - gpu_split,_screen,sph_taitwater,"k_sph_taitwater",onetype,extra_fields); + gpu_split,_screen,sph_taitwater,"k_sph_taitwater", + onetype,extra_fields); if (success!=0) return success; @@ -83,7 +84,7 @@ int SPHTaitwaterT::init(const int ntypes, lj_types=max_shared_types; shared_types=true; } - _lj_types=taitwater_types; + _lj_types=lj_types; // Allocate a host write buffer for data initialization UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), @@ -96,13 +97,15 @@ int SPHTaitwaterT::init(const int ntypes, this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_viscosity, host_cut, host_cutsq); - UCL_H_Vec dview_rho0ss(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + UCL_H_Vec dview_coeff2(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); for (int i = 0; i < ntypes; i++) { - dview_rho0ss[i].x = host_rho0[i]; - dview_rho0ss[i].y = host_soundspeed[i]; + dview_coeff2[i].x = host_rho0[i]; + dview_coeff2[i].y = host_soundspeed[i]; + dview_coeff2[i].z = host_B[i]; + dview_coeff2[i].w = 0; } - rho0sspeed.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); - ucl_copy(rho0sspeed,dview_rho0ss,false); + coeff2.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); + ucl_copy(coeff2,dview_coeff2,false); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -118,8 +121,10 @@ int SPHTaitwaterT::init(const int ntypes, _max_drhoE_size=static_cast(static_cast(ef_nall)*1.10); drhoE.alloc(_max_drhoE_size*2,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + _dimension = dimension; + _allocated=true; - this->_max_bytes=coeff.row_bytes()+corho0sspeedeff.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); + this->_max_bytes=coeff.row_bytes()+coeff2.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); return 0; } @@ -130,7 +135,7 @@ void SPHTaitwaterT::clear() { _allocated=false; coeff.clear(); - dview_rho0ss.clear(); + coeff2.clear(); drhoE.clear(); sp_lj.clear(); this->clear_atomic(); @@ -191,16 +196,16 @@ int SPHTaitwaterT::loop(const int eflag, const int vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_sel->set_size(GX,BX); - this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &rho0sspeed, &sp_lj, + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &rho0sspeed, + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &coeff2, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->v, &this->_threads_per_atom); + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_sph_taitwater.cu b/lib/gpu/lal_sph_taitwater.cu index d9e809bd451..d07defc42b1 100644 --- a/lib/gpu/lal_sph_taitwater.cu +++ b/lib/gpu/lal_sph_taitwater.cu @@ -52,20 +52,20 @@ _texture_2d( vel_tex,int4); #endif __kernel void k_sph_taitwater(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict extra, - const __global numtyp4 *restrict coeff, - const __global numtyp2 *restrict rho0sspeed, - const int lj_types, - const __global numtyp *restrict sp_lj, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp3 *restrict ans, - __global acctyp *restrict engv, - __global acctyp *restrict drhoE, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp4 *restrict v_, - const int t_per_atom) { + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff, + const __global numtyp4 *restrict coeff2, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int dimension, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -89,6 +89,9 @@ __kernel void k_sph_taitwater(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; + numtyp rho0_itype = coeff2[itype].x; + numtyp soundspeed_itype = coeff2[itype].y; + numtyp B_itype = coeff2[itype].z; numtyp4 iv; fetch4(iv,i,vel_tex); //v_[i]; const numtyp4 extrai = extra[i]; @@ -96,9 +99,9 @@ __kernel void k_sph_taitwater(const __global numtyp4 *restrict x_, numtyp massi= extrai.y; // compute pressure of atom i with Tait EOS - numtyp tmp = rho[i] / rho0[itype]; + numtyp tmp = rhoi / rho0_itype; numtyp fi = tmp * tmp * tmp; - fi = B[itype] * (fi * fi * tmp - 1.0); + fi = B_itype * (fi * fi * tmp - (numtyp)1.0); fi /= (rhoi * rhoi); for ( ; nbordimension == 3 Lucy Kernel, 3d - wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + if (dimension == 3) { + // Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } - // Lucy Kernel, 2d - //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; - // compute pressure of atom j with Tait EOS - numtyp tmp = rho[j] / rho0[jtype]; + + numtyp tmp = rhoj / rho0_jtype; numtyp fj = tmp * tmp * tmp; - fj = B[jtype] * (fj * fj * tmp - 1.0); + fj = B_jtype * (fj * fj * tmp - (numtyp)1.0); fj /= (rhoj * rhoj); // dot product of velocity delta and distance vector @@ -158,10 +165,8 @@ __kernel void k_sph_taitwater(const __global numtyp4 *restrict x_, numtyp fvisc = (numtyp)0; if (delVdotDelR < (numyp)0) { numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); - //fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] - - fvisc = -coeffx * (soundspeed[itype] - + soundspeed[jtype]) * mu / (rhoi + rhoj); + fvisc = -coeffx * (soundspeed_itype + + soundspeed_jtype) * mu / (rhoi + rhoj); } // total pair force & thermal energy increment @@ -199,19 +204,20 @@ __kernel void k_sph_taitwater(const __global numtyp4 *restrict x_, } __kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict extra, - const __global numtyp4 *restrict coeff_in, - const __global numtyp2 *restrict rho0sspeed_in, - const __global numtyp *restrict sp_lj_in, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp3 *restrict ans, - __global acctyp *restrict engv, - __global acctyp *restrict drhoE, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp4 *restrict v_, - const int t_per_atom) { + const __global numtyp4 *restrict extra, + const __global numtyp4 *restrict coeff_in, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp2 *restrict rho0sspeed_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp3 *restrict ans, + __global acctyp *restrict engv, + __global acctyp *restrict drhoE, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp4 *restrict v_, + const int dimension, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -251,7 +257,9 @@ __kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int iw=ix.w; - numtyp mass_itype = mass[iw]; + numtyp rho0_itype = coeff2[iw].x; + numtyp soundspeed_itype = coeff2[iw].y; + numtyp B_itype = coeff2[iw].z; #ifndef ONETYPE int itype=fast_mul((int)MAX_SHARED_TYPES,iw); #endif @@ -260,15 +268,12 @@ __kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, const numtyp4 extrai = extra[i]; numtyp rhoi = extrai.x; - numtyp esphi = extrai.y; - numtyp cvi = extrai.z; - numtyp massi= extrai.w; - - // compute pressure of particle i with LJ EOS - numtyp fci[2]; - LJEOS2(rhoi, esphi, cvi, fci); - numtyp fi = fci[0]; - numtyp ci = fci[1]; + numtyp massi= extrai.y; + + // compute pressure of atom i with Tait EOS + numtyp tmp = rhoi / rho0_itype; + numtyp fi = tmp * tmp * tmp; + fi = B_itype * (fi * fi * tmp - (numtyp)1.0); fi /= (rhoi * rhoi); for ( ; nbordimension == 3 Lucy Kernel, 3d - wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; - - // Lucy Kernel, 2d - //wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; - - // function call to LJ EOS - numtyp fcj[2]; - LJEOS2(rhoj, esphj, cvj, fcj); - numtyp fj = fcj[0]; - numtyp cj = fcj[1]; - fj /= (rhoj * rhoj); + if (dimension == 3) { + // Lucy Kernel, 3d + wfd = (numtyp)-25.066903536973515383 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } - // apply long-range correction to model a LJ fluid with cutoff - // this implies that the modelled LJ fluid has cutoff == SPH cutoff - numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); - fi += lrc; - fj += lrc; + // compute pressure of atom j with Tait EOS + numtyp tmp = rhoj / rho0_jtype; + numtyp fj = tmp * tmp * tmp; + fj = B_jtype * (fj * fj * tmp - (numtyp)1.0); + fj /= (rhoj * rhoj); // dot product of velocity delta and distance vector numtyp delvx = iv.x - jv.x; @@ -340,7 +343,8 @@ __kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, numtyp fvisc = (numtyp)0; if (delVdotDelR < (numyp)0) { numtyp mu = h * delVdotDelR / (rsq + (numyp)0.01 * h * h); - fvisc = -coeffx * (ci + cj) * mu / (rhoi + rhoj); // viscosity[itype][jtype] + fvisc = -coeffx * (soundspeed_itype + + soundspeed_jtype) * mu / (rhoi + rhoj); } // total pair force & thermal energy increment @@ -363,7 +367,6 @@ __kernel void k_sph_taitwater_fast(const __global numtyp4 *restrict x_, virial[4] += delx*delz*force; virial[5] += dely*delz*force; } - } } // for nbor } // if ii diff --git a/lib/gpu/lal_sph_taitwater.h b/lib/gpu/lal_sph_taitwater.h index cae5a0b09d4..3b209da3692 100644 --- a/lib/gpu/lal_sph_taitwater.h +++ b/lib/gpu/lal_sph_taitwater.h @@ -40,8 +40,8 @@ class SPHTaitwater : public BaseDPD { int init(const int ntypes, double **host_cutsq, double** host_cut, double **host_viscosity, double* host_rho0, double* host_soundspeed, - double *host_special_lj, const int nlocal, - const int nall, const int max_nbors, + double* host_B, const int dimension, double *host_special_lj, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -62,10 +62,11 @@ class SPHTaitwater : public BaseDPD { // --------------------------- TYPE DATA -------------------------- - /// coeff.x = viscosity, coeff.y = cut, coeff.z = cutsq - UCL_D_Vec coeff; + /// per-pair coeffs: coeff.x = viscosity, coeff.y = cut, coeff.z = cutsq + UCL_D_Vec coeff; - UCL_D_Vec rho0sspeed; + /// per-type coeffs + UCL_D_Vec coeff2; /// Special LJ values UCL_D_Vec sp_lj; @@ -80,6 +81,8 @@ class SPHTaitwater : public BaseDPD { UCL_Vector drhoE; int _max_drhoE_size; + int _dimension; + /// pointer to host data double *rho, *mass; diff --git a/lib/gpu/lal_sph_taitwater_ext.cpp b/lib/gpu/lal_sph_taitwater_ext.cpp index ef4bd54ab4c..fdf84dfe779 100644 --- a/lib/gpu/lal_sph_taitwater_ext.cpp +++ b/lib/gpu/lal_sph_taitwater_ext.cpp @@ -29,7 +29,8 @@ static SPHTaitwater SPHTaitwaterMF; // --------------------------------------------------------------------------- int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, double **host_viscosity, double* host_rho0, - double* host_soundspeed, double *special_lj, + double* host_soundspeed, double* host_B, + const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { @@ -56,9 +57,9 @@ int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, int init_ok=0; if (world_me==0) init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, - host_rho0, host_soundspeed, special_lj, - inum, nall, max_nbors, maxspecial, cell_size, - gpu_split, screen); + host_rho0, host_soundspeed, host_B, dimension, + special_lj, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); SPHTaitwaterMF.device->world_barrier(); if (message) @@ -75,9 +76,9 @@ int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, } if (gpu_rank==i && world_me!=0) init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, - host_rho0, host_soundspeed, special_lj, - inum, nall, max_nbors, maxspecial, cell_size, - gpu_split, screen); + host_rho0, host_soundspeed, host_B, dimension, + special_lj, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); SPHTaitwaterMF.device->serialize_init(); if (message) diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp index 0b6a7ee72d6..8ba90a1abf4 100644 --- a/src/GPU/pair_sph_lj_gpu.cpp +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -35,7 +35,7 @@ using namespace LAMMPS_NS; // External functions from cuda library for atom decomposition int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, double *special_lj, + double **host_viscosity, const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen); @@ -109,16 +109,18 @@ void PairSPHLJGPU::compute(int eflag, int vflag) } inum = atom->nlocal; firstneigh = sph_lj_gpu_compute_n( - neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->nspecial, - atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + neighbor->ago, inum, nall, atom->x, atom->type, + sublo, subhi, atom->nspecial, atom->special, eflag, vflag, + eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, atom->v, domain->boxlo, domain->prd); } else { inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; firstneigh = list->firstneigh; - sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, - eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, + sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, + ilist, numneigh, firstneigh, eflag, vflag, + eflag_atom, vflag_atom, host_start, cpu_time, success, atom->v, atom->nlocal, domain->boxlo, domain->prd); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); @@ -180,7 +182,7 @@ void PairSPHLJGPU::init_style() if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; int mnf = 5e-2 * neighbor->oneatom; int success = - sph_lj_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, + sph_lj_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, domain->dimension, force->special_lj, atom->nlocal, atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, screen); GPU_EXTRA::check_flag(success, error, world); diff --git a/src/GPU/pair_sph_taitwater_gpu.cpp b/src/GPU/pair_sph_taitwater_gpu.cpp new file mode 100644 index 00000000000..1322197b89d --- /dev/null +++ b/src/GPU/pair_sph_taitwater_gpu.cpp @@ -0,0 +1,198 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Trung Dac Nguyen (U Chicago) +------------------------------------------------------------------------- */ + +#include "pair_sph_taitwater_gpu.h" + +#include "atom.h" +#include "domain.h" +#include "error.h" +#include "force.h" +#include "gpu_extra.h" +#include "info.h" +#include "neigh_list.h" +#include "neighbor.h" +#include "suffix.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_viscosity, double* host_rho0, + double* host_soundspeed, double* host_B, const int dimension, + double *special_lj, const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen); +void sph_taitwater_gpu_clear(); +int **sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, int **nspecial, + tagint **special, const bool eflag, const bool vflag, const bool eatom, + const bool vatom, int &host_start, int **ilist, int **jnum, + const double cpu_time, bool &success, double **host_v, + double *boxlo, double *prd); +void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double **host_v, + const int nlocal, double *boxlo, double *prd); +void sph_taitwater_gpu_get_extra_data(double *host_rho, double *host_mass); +void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr); +double sph_taitwater_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairSPHTaitwaterGPU::PairSPHTaitwaterGPU(LAMMPS *lmp) : PairSPHTaitwater(lmp), gpu_mode(GPU_FORCE) +{ + drhoE_pinned = nullptr; + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairSPHTaitwaterGPU::~PairSPHTaitwaterGPU() +{ + sph_taitwater_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHTaitwaterGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + + double *rho = atom->rho; + double *mass = atom->mass; + sph_taitwater_gpu_get_extra_data(rho, mass); + + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = sph_taitwater_gpu_compute_n( + neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->nspecial, + atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + cpu_time, success, atom->v, domain->boxlo, domain->prd); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + sph_taitwater_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, + eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, + atom->v, atom->nlocal, domain->boxlo, domain->prd); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + // get the drho and dE from device + + double *drho = atom->drho; + double *desph = atom->desph; + sph_taitwater_gpu_update_drhoE(&drhoE_pinned); + + int nlocal = atom->nlocal; + if (acc_float) { + auto drhoE_ptr = (float *)drhoE_pinned; + int idx = 0; + for (int i = 0; i < nlocal; i++) { + drho[i] = drhoE_ptr[idx]; + desph[i] = drhoE_ptr[idx+1]; + idx += 2; + } + + } else { + auto drhoE_ptr = (double *)drhoE_pinned; + int idx = 0; + for (int i = 0; i < nlocal; i++) { + drho[i] = drhoE_ptr[idx]; + desph[i] = drhoE_ptr[idx+1]; + idx += 2; + } + } + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairSPHTaitwaterGPU::init_style() +{ + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double mcut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + mcut = init_one(i, j); + mcut *= mcut; + if (mcut > maxcut) maxcut = mcut; + cutsq[i][j] = cutsq[j][i] = mcut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + sph_taitwater_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, + rho0, soundspeed, B, domain->dimension, force->special_lj, + atom->nlocal, atom->nlocal + atom->nghost, + mnf, maxspecial, cell_size, gpu_mode, screen); + GPU_EXTRA::check_flag(success, error, world); + + acc_float = Info::has_accelerator_feature("GPU", "precision", "single"); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHTaitwaterGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + sph_taitwater_gpu_bytes(); +} diff --git a/src/GPU/pair_sph_taitwater_gpu.h b/src/GPU/pair_sph_taitwater_gpu.h new file mode 100644 index 00000000000..df8119a3c00 --- /dev/null +++ b/src/GPU/pair_sph_taitwater_gpu.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(sph/taitwater/gpu,PairSPHTaitwaterGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_SPH_TAITWATER_GPU_H +#define LMP_PAIR_SPH_TAITWATER_GPU_H + +#include "pair_sph_taitwater.h" + +namespace LAMMPS_NS { + +class PairSPHTaitwaterGPU : public PairSPHTaitwater { + public: + PairSPHTaitwaterGPU(LAMMPS *lmp); + ~PairSPHTaitwaterGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + void *drhoE_pinned; + bool acc_float; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From 0f78afc66f4f37411f29620744789409bd87e9b8 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 8 Dec 2023 00:20:53 -0600 Subject: [PATCH 177/300] Added atom tag for dpd to work with tag and v --- lib/gpu/lal_sph_lj_ext.cpp | 8 +++----- lib/gpu/lal_sph_taitwater_ext.cpp | 6 ++---- src/GPU/pair_sph_lj_gpu.cpp | 8 ++++---- src/GPU/pair_sph_taitwater_gpu.cpp | 8 ++++---- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index b23a398db7c..0b8ea0e2633 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -94,15 +94,14 @@ void sph_lj_gpu_clear() { int ** sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, int **nspecial, + double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_v, double *boxlo, double *prd) { double dtinvsqrt = 1.0; int seed = 0; - int timestep = 0; - tagint* tag = nullptr; + int timestep = 0; return SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, @@ -113,12 +112,11 @@ void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, + const double cpu_time, bool &success, tagint *tag, double **host_v, const int nlocal, double *boxlo, double *prd) { double dtinvsqrt = 1.0; int seed = 0; int timestep = 0; - tagint* tag = nullptr; SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); diff --git a/lib/gpu/lal_sph_taitwater_ext.cpp b/lib/gpu/lal_sph_taitwater_ext.cpp index fdf84dfe779..e5b1d439b82 100644 --- a/lib/gpu/lal_sph_taitwater_ext.cpp +++ b/lib/gpu/lal_sph_taitwater_ext.cpp @@ -98,7 +98,7 @@ void sph_taitwater_gpu_clear() { int ** sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, int **nspecial, + double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, @@ -106,7 +106,6 @@ int ** sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int double dtinvsqrt = 1.0; int seed = 0; int timestep = 0; - tagint* tag = nullptr; return SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, @@ -117,12 +116,11 @@ void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nal double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, + const double cpu_time, bool &success, tagint *tag, double **host_v, const int nlocal, double *boxlo, double *prd) { double dtinvsqrt = 1.0; int seed = 0; int timestep = 0; - tagint* tag = nullptr; SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp index 8ba90a1abf4..33366f09a62 100644 --- a/src/GPU/pair_sph_lj_gpu.cpp +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -41,7 +41,7 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, const double cell_size, int &gpu_mode, FILE *screen); void sph_lj_gpu_clear(); int **sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, double *sublo, double *subhi, int **nspecial, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_v, @@ -49,7 +49,7 @@ int **sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, d void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, double **host_v, + const double cpu_time, bool &success, tagint *tag, double **host_v, const int nlocal, double *boxlo, double *prd); void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, double *host_cv, double *host_mass); @@ -110,7 +110,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) inum = atom->nlocal; firstneigh = sph_lj_gpu_compute_n( neighbor->ago, inum, nall, atom->x, atom->type, - sublo, subhi, atom->nspecial, atom->special, eflag, vflag, + sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, atom->v, domain->boxlo, domain->prd); } else { @@ -121,7 +121,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->v, atom->nlocal, domain->boxlo, domain->prd); + atom->tag, atom->v, atom->nlocal, domain->boxlo, domain->prd); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); diff --git a/src/GPU/pair_sph_taitwater_gpu.cpp b/src/GPU/pair_sph_taitwater_gpu.cpp index 1322197b89d..b98a89c3ff3 100644 --- a/src/GPU/pair_sph_taitwater_gpu.cpp +++ b/src/GPU/pair_sph_taitwater_gpu.cpp @@ -42,7 +42,7 @@ int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, const double cell_size, int &gpu_mode, FILE *screen); void sph_taitwater_gpu_clear(); int **sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, double *sublo, double *subhi, int **nspecial, + int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_v, @@ -50,7 +50,7 @@ int **sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, double **host_v, + const double cpu_time, bool &success, tagint *tag, double **host_v, const int nlocal, double *boxlo, double *prd); void sph_taitwater_gpu_get_extra_data(double *host_rho, double *host_mass); void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr); @@ -107,7 +107,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) } inum = atom->nlocal; firstneigh = sph_taitwater_gpu_compute_n( - neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->nspecial, + neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, cpu_time, success, atom->v, domain->boxlo, domain->prd); } else { @@ -117,7 +117,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) firstneigh = list->firstneigh; sph_taitwater_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->v, atom->nlocal, domain->boxlo, domain->prd); + atom->tag, atom->v, atom->nlocal, domain->boxlo, domain->prd); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); From 46a670889dd0f472672f37499c52edd04dcd064c Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 8 Dec 2023 14:09:39 -0600 Subject: [PATCH 178/300] Added BaseSPH for sph pair styles, fixed bugs with per-type arrays --- lib/gpu/lal_base_sph.cpp | 362 +++++++++++++++++++++++++++++ lib/gpu/lal_base_sph.h | 209 +++++++++++++++++ lib/gpu/lal_sph_lj.cpp | 25 +- lib/gpu/lal_sph_lj.cu | 27 ++- lib/gpu/lal_sph_lj.h | 16 +- lib/gpu/lal_sph_lj_ext.cpp | 45 ++-- lib/gpu/lal_sph_taitwater.cpp | 25 +- lib/gpu/lal_sph_taitwater.cu | 74 +++--- lib/gpu/lal_sph_taitwater.h | 20 +- lib/gpu/lal_sph_taitwater_ext.cpp | 34 ++- src/GPU/pair_sph_lj_gpu.cpp | 41 ++-- src/GPU/pair_sph_taitwater_gpu.cpp | 37 +-- 12 files changed, 750 insertions(+), 165 deletions(-) create mode 100644 lib/gpu/lal_base_sph.cpp create mode 100644 lib/gpu/lal_base_sph.h diff --git a/lib/gpu/lal_base_sph.cpp b/lib/gpu/lal_base_sph.cpp new file mode 100644 index 00000000000..c6876a7dcd0 --- /dev/null +++ b/lib/gpu/lal_base_sph.cpp @@ -0,0 +1,362 @@ +/*************************************************************************** + base_sph.cpp + ------------------- + Trung Dac Nguyen (ORNL) + + Base class for SPH pair styles needing per-particle data for position, + velocity, and type. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include "lal_base_sph.h" +namespace LAMMPS_AL { +#define BaseSPHT BaseSPH + +extern Device global_device; + +template +BaseSPHT::BaseSPH() : _compiled(false), _max_bytes(0) { + device=&global_device; + ans=new Answer(); + nbor=new Neighbor(); + pair_program=nullptr; + ucl_device=nullptr; + #if defined(LAL_OCL_EV_JIT) + pair_program_noev=nullptr; + #endif +} + +template +BaseSPHT::~BaseSPH() { + delete ans; + delete nbor; + k_pair_fast.clear(); + k_pair.clear(); + if (pair_program) delete pair_program; + #if defined(LAL_OCL_EV_JIT) + k_pair_noev.clear(); + if (pair_program_noev) delete pair_program_noev; + #endif +} + +template +int BaseSPHT::bytes_per_atom_atomic(const int max_nbors) const { + return device->atom.bytes_per_atom()+ans->bytes_per_atom()+ + nbor->bytes_per_atom(max_nbors); +} + +template +int BaseSPHT::init_atomic(const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, const double gpu_split, + FILE *_screen, const void *pair_program, + const char *k_name, const int onetype, + const int extra_fields) { + screen=_screen; + + int gpu_nbor=0; + if (device->gpu_mode()==Device::GPU_NEIGH) + gpu_nbor=1; + else if (device->gpu_mode()==Device::GPU_HYB_NEIGH) + gpu_nbor=2; + + int _gpu_host=0; + int host_nlocal=hd_balancer.first_host_count(nlocal,gpu_split,gpu_nbor); + if (host_nlocal>0) + _gpu_host=1; + + _threads_per_atom=device->threads_per_atom(); + + bool charge = false; + bool rot = false; + bool vel = true; + _extra_fields = extra_fields; + int success=device->init(*ans,charge,rot,nlocal,nall,maxspecial,vel,_extra_fields/4); + if (success!=0) + return success; + + if (ucl_device!=device->gpu) _compiled=false; + + ucl_device=device->gpu; + atom=&device->atom; + + _block_size=device->pair_block_size(); + compile_kernels(*ucl_device,pair_program,k_name,onetype); + + if (_threads_per_atom>1 && gpu_nbor==0) { + nbor->packing(true); + _nbor_data=&(nbor->dev_packed); + } else + _nbor_data=&(nbor->dev_nbor); + + success = device->init_nbor(nbor,nlocal,host_nlocal,nall,maxspecial,_gpu_host, + max_nbors,cell_size,false,_threads_per_atom); + if (success!=0) + return success; + + // Initialize host-device load balancer + hd_balancer.init(device,gpu_nbor,gpu_split); + + // Initialize timers for the selected GPU + time_pair.init(*ucl_device); + time_pair.zero(); + + pos_tex.bind_float(atom->x,4); + vel_tex.bind_float(atom->v,4); + + _max_an_bytes=ans->gpu_bytes()+nbor->gpu_bytes(); + + return success; +} + +template +void BaseSPHT::estimate_gpu_overhead() { + device->estimate_gpu_overhead(1,_gpu_overhead,_driver_overhead); +} + +template +void BaseSPHT::clear_atomic() { + // Output any timing information + acc_timers(); + double avg_split=hd_balancer.all_avg_split(); + _gpu_overhead*=hd_balancer.timestep(); + _driver_overhead*=hd_balancer.timestep(); + device->output_times(time_pair,*ans,*nbor,avg_split,_max_bytes+_max_an_bytes, + _gpu_overhead,_driver_overhead,_threads_per_atom,screen); + + time_pair.clear(); + hd_balancer.clear(); + + nbor->clear(); + ans->clear(); +} + +// --------------------------------------------------------------------------- +// Copy neighbor list from host +// --------------------------------------------------------------------------- +template +int * BaseSPHT::reset_nbors(const int nall, const int inum, int *ilist, + int *numj, int **firstneigh, bool &success) { + success=true; + + int mn=nbor->max_nbor_loop(inum,numj,ilist); + resize_atom(inum,nall,success); + resize_local(inum,mn,success); + if (!success) + return nullptr; + + nbor->get_host(inum,ilist,numj,firstneigh,block_size()); + + double bytes=ans->gpu_bytes()+nbor->gpu_bytes(); + if (bytes>_max_an_bytes) + _max_an_bytes=bytes; + + return ilist; +} + +// --------------------------------------------------------------------------- +// Build neighbor list on device +// --------------------------------------------------------------------------- +template +inline void BaseSPHT::build_nbor_list(const int inum, const int host_inum, + const int nall, double **host_x, + int *host_type, double *sublo, + double *subhi, tagint *tag, + int **nspecial, tagint **special, + bool &success) { + success=true; + resize_atom(inum,nall,success); + resize_local(inum,host_inum,nbor->max_nbors(),success); + if (!success) + return; + atom->cast_copy_x(host_x,host_type); + + int mn; + nbor->build_nbor_list(host_x, inum, host_inum, nall, *atom, sublo, subhi, + tag, nspecial, special, success, mn, ans->error_flag); + + double bytes=ans->gpu_bytes()+nbor->gpu_bytes(); + if (bytes>_max_an_bytes) + _max_an_bytes=bytes; +} + +// --------------------------------------------------------------------------- +// Copy nbor list from host if necessary and then calculate forces, virials,.. +// --------------------------------------------------------------------------- +template +void BaseSPHT::compute(const int f_ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag_in, const bool vflag_in, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **host_v, const int nlocal) { + acc_timers(); + int eflag, vflag; + if (eatom) eflag=2; + else if (eflag_in) eflag=1; + else eflag=0; + if (vatom) vflag=2; + else if (vflag_in) vflag=1; + else vflag=0; + + #ifdef LAL_NO_BLOCK_REDUCE + if (eflag) eflag=2; + if (vflag) vflag=2; + #endif + + set_kernel(eflag,vflag); + if (inum_full==0) { + host_start=0; + // Make sure textures are correct if realloc by a different hybrid style + resize_atom(0,nall,success); + zero_timers(); + return; + } + + int ago=hd_balancer.ago_first(f_ago); + int inum=hd_balancer.balance(ago,inum_full,cpu_time); + ans->inum(inum); + host_start=inum; + + if (ago==0) { + reset_nbors(nall, inum, ilist, numj, firstneigh, success); + if (!success) + return; + } + + atom->cast_x_data(host_x,host_type); + atom->cast_v_data(host_v,tag); + hd_balancer.start_timer(); + atom->add_x_data(host_x,host_type); + atom->add_v_data(host_v,tag); + + const int red_blocks=loop(eflag,vflag); + ans->copy_answers(eflag_in,vflag_in,eatom,vatom,ilist,red_blocks); + device->add_ans_object(ans); + hd_balancer.stop_timer(); +} + +// --------------------------------------------------------------------------- +// Reneighbor on GPU if necessary and then compute forces, virials, energies +// --------------------------------------------------------------------------- +template +int** BaseSPHT::compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag_in, const bool vflag_in, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v) { + acc_timers(); + int eflag, vflag; + if (eatom) eflag=2; + else if (eflag_in) eflag=1; + else eflag=0; + if (vatom) vflag=2; + else if (vflag_in) vflag=1; + else vflag=0; + + #ifdef LAL_NO_BLOCK_REDUCE + if (eflag) eflag=2; + if (vflag) vflag=2; + #endif + + set_kernel(eflag,vflag); + if (inum_full==0) { + host_start=0; + // Make sure textures are correct if realloc by a different hybrid style + resize_atom(0,nall,success); + zero_timers(); + return nullptr; + } + + hd_balancer.balance(cpu_time); + int inum=hd_balancer.get_gpu_count(ago,inum_full); + ans->inum(inum); + host_start=inum; + + // Build neighbor list on GPU if necessary + if (ago==0) { + build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, + sublo, subhi, tag, nspecial, special, success); + if (!success) + return nullptr; + atom->cast_v_data(host_v,tag); + hd_balancer.start_timer(); + } else { + atom->cast_x_data(host_x,host_type); + atom->cast_v_data(host_v,tag); + hd_balancer.start_timer(); + atom->add_x_data(host_x,host_type); + } + atom->add_v_data(host_v,tag); + *ilist=nbor->host_ilist.begin(); + *jnum=nbor->host_acc.begin(); + + const int red_blocks=loop(eflag,vflag); + ans->copy_answers(eflag_in,vflag_in,eatom,vatom,red_blocks); + device->add_ans_object(ans); + hd_balancer.stop_timer(); + + return nbor->host_jlist.begin()-host_start; +} + +template +double BaseSPHT::host_memory_usage_atomic() const { + return device->atom.host_memory_usage()+nbor->host_memory_usage()+ + 4*sizeof(numtyp)+sizeof(BaseSPH); +} + +template +void BaseSPHT::compile_kernels(UCL_Device &dev, const void *pair_str, + const char *kname, const int onetype) { + if (_compiled && _onetype==onetype) + return; + + _onetype=onetype; + + std::string s_fast=std::string(kname)+"_fast"; + if (pair_program) delete pair_program; + pair_program=new UCL_Program(dev); + std::string oclstring = device->compile_string()+" -DEVFLAG=1"; + if (_onetype) oclstring+=" -DONETYPE="+device->toa(_onetype); + pair_program->load_string(pair_str,oclstring.c_str(),nullptr,screen); + k_pair_fast.set_function(*pair_program,s_fast.c_str()); + k_pair.set_function(*pair_program,kname); + pos_tex.get_texture(*pair_program,"pos_tex"); + vel_tex.get_texture(*pair_program,"vel_tex"); + + #if defined(LAL_OCL_EV_JIT) + oclstring = device->compile_string()+" -DEVFLAG=0"; + if (_onetype) oclstring+=" -DONETYPE="+device->toa(_onetype); + if (pair_program_noev) delete pair_program_noev; + pair_program_noev=new UCL_Program(dev); + pair_program_noev->load_string(pair_str,oclstring.c_str(),nullptr,screen); + k_pair_noev.set_function(*pair_program_noev,s_fast.c_str()); + #else + k_pair_sel = &k_pair_fast; + #endif + + _compiled=true; + + #if defined(USE_OPENCL) && (defined(CL_VERSION_2_1) || defined(CL_VERSION_3_0)) + if (dev.has_subgroup_support()) { + size_t mx_subgroup_sz = k_pair_fast.max_subgroup_size(_block_size); + #if defined(LAL_OCL_EV_JIT) + mx_subgroup_sz = std::min(mx_subgroup_sz, k_pair_noev.max_subgroup_size(_block_size)); + #endif + if (_threads_per_atom > (int)mx_subgroup_sz) _threads_per_atom = mx_subgroup_sz; + device->set_simd_size(mx_subgroup_sz); + } + #endif + +} + +template class BaseSPH; +} diff --git a/lib/gpu/lal_base_sph.h b/lib/gpu/lal_base_sph.h new file mode 100644 index 00000000000..950462e9989 --- /dev/null +++ b/lib/gpu/lal_base_sph.h @@ -0,0 +1,209 @@ +/*************************************************************************** + base_sph.h + ------------------- + Trung Dac Nguyen (U Chicago) + + Base class for SPH pair styles needing per-particle data for position, + velocity, and type. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#ifndef LAL_BASE_SPH_H +#define LAL_BASE_DPD_H + +#include "lal_device.h" +#include "lal_balance.h" +#include "mpi.h" + +#ifdef USE_OPENCL +#include "geryon/ocl_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" +#else +#include "geryon/nvd_texture.h" +#endif + +namespace LAMMPS_AL { + +template +class BaseSPH { + public: + BaseSPH(); + virtual ~BaseSPH(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * \param k_name name for the kernel for force calculation + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init_atomic(const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, + const void *pair_program, const char *k_name, + const int onetype=0, const int extra_fields=0); + + /// Estimate the overhead for GPU context changes and CPU driver + void estimate_gpu_overhead(); + + /// Check if there is enough storage for atom arrays and realloc if not + /** \param success set to false if insufficient memory **/ + inline void resize_atom(const int inum, const int nall, bool &success) { + if (atom->resize(nall, success)) { + pos_tex.bind_float(atom->x,4); + vel_tex.bind_float(atom->v,4); + } + ans->resize(inum,success); + } + + /// Check if there is enough storage for neighbors and realloc if not + /** \param nlocal number of particles whose nbors must be stored on device + * \param host_inum number of particles whose nbors need to copied to host + * \param current maximum number of neighbors + * \note olist_size=total number of local particles **/ + inline void resize_local(const int inum, const int max_nbors, bool &success) { + nbor->resize(inum,max_nbors,success); + } + + /// Check if there is enough storage for neighbors and realloc if not + /** \param nlocal number of particles whose nbors must be stored on device + * \param host_inum number of particles whose nbors need to copied to host + * \param current maximum number of neighbors + * \note host_inum is 0 if the host is performing neighboring + * \note nlocal+host_inum=total number local particles + * \note olist_size=0 **/ + inline void resize_local(const int inum, const int host_inum, + const int max_nbors, bool &success) { + nbor->resize(inum,host_inum,max_nbors,success); + } + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear_atomic(); + + /// Returns memory usage on device per atom + int bytes_per_atom_atomic(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage_atomic() const; + + /// Accumulate timers + inline void acc_timers() { + if (device->time_device()) { + nbor->acc_timers(screen); + time_pair.add_to_total(); + atom->acc_timers(); + ans->acc_timers(); + } + } + + /// Zero timers + inline void zero_timers() { + time_pair.zero(); + atom->zero_timers(); + ans->zero_timers(); + } + + /// Copy neighbor list from host + int * reset_nbors(const int nall, const int inum, int *ilist, int *numj, + int **firstneigh, bool &success); + + /// Build neighbor list on device + void build_nbor_list(const int inum, const int host_inum, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, bool &success); + + /// Pair loop with host neighboring + void compute(const int f_ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **v, const int nlocal); + + /// Pair loop with device neighboring + int** compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **numj, const double cpu_time, bool &success, + double **v); + + // -------------------------- DEVICE DATA ------------------------- + + /// Device Properties and Atom and Neighbor storage + Device *device; + + /// Geryon device + UCL_Device *ucl_device; + + /// Device Timers + UCL_Timer time_pair; + + /// Host device load balancer + Balance hd_balancer; + + /// LAMMPS pointer for screen output + FILE *screen; + + // --------------------------- ATOM DATA -------------------------- + + /// Atom Data + Atom *atom; + + // ------------------------ FORCE/ENERGY DATA ----------------------- + + Answer *ans; + + // --------------------------- NBOR DATA ---------------------------- + + /// Neighbor data + Neighbor *nbor; + + // ------------------------- DEVICE KERNELS ------------------------- + UCL_Program *pair_program, *pair_program_noev; + UCL_Kernel k_pair_fast, k_pair, k_pair_noev, *k_pair_sel; + inline int block_size() { return _block_size; } + inline void set_kernel(const int eflag, const int vflag) { + #if defined(LAL_OCL_EV_JIT) + if (eflag || vflag) k_pair_sel = &k_pair_fast; + else k_pair_sel = &k_pair_noev; + #endif + } + + + // --------------------------- TEXTURES ----------------------------- + UCL_Texture pos_tex; + UCL_Texture vel_tex; + + // ------------------------- COMMON VARS ---------------------------- + + protected: + bool _compiled; + int _block_size, _threads_per_atom, _onetype, _extra_fields; + double _max_bytes, _max_an_bytes; + double _gpu_overhead, _driver_overhead; + UCL_D_Vec *_nbor_data; + + void compile_kernels(UCL_Device &dev, const void *pair_string, + const char *k, const int onetype); + virtual int loop(const int eflag, const int vflag) = 0; +}; + +} + +#endif diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index 85c144e2401..dbe44bf30a9 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -29,7 +29,7 @@ namespace LAMMPS_AL { extern Device device; template -SPHLJT::SPHLJ() : BaseDPD(), _allocated(false) { +SPHLJT::SPHLJ() : BaseSPH(), _allocated(false) { _max_drhoE_size = 0; } @@ -46,8 +46,8 @@ int SPHLJT::bytes_per_atom(const int max_nbors) const { template int SPHLJT::init(const int ntypes, double **host_cutsq, double **host_cut, - double **host_viscosity, const int dimension, - double *host_special_lj, + double **host_viscosity, double* host_mass, + const int dimension, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -70,7 +70,7 @@ int SPHLJT::init(const int ntypes, int success; int extra_fields = 4; // round up to accomodate quadruples of numtyp values - // rho, cv, mass + // rho, cv success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, gpu_split,_screen,sph_lj,"k_sph_lj",onetype,extra_fields); if (success!=0) @@ -96,6 +96,12 @@ int SPHLJT::init(const int ntypes, this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_viscosity, host_cut, host_cutsq); + UCL_H_Vec dview_mass(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + for (int i = 0; i < ntypes; i++) + dview_mass[i] = host_mass[i]; + mass.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); + ucl_copy(mass,dview_mass,false); + UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); dview.view(host_special_lj,4,*(this->ucl_device)); @@ -124,6 +130,7 @@ void SPHLJT::clear() { _allocated=false; coeff.clear(); + mass.clear(); drhoE.clear(); sp_lj.clear(); this->clear_atomic(); @@ -168,7 +175,7 @@ int SPHLJT::loop(const int eflag, const int vflag) { v.x = rho[i]; v.y = esph[i]; v.z = cv[i]; - v.w = mass[i]; + v.w = 0; pextra[idx] = v; } this->atom->add_extra_data(); @@ -184,13 +191,13 @@ int SPHLJT::loop(const int eflag, const int vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_sel->set_size(GX,BX); - this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &sp_lj, + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &mass, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &mass, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &drhoE, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); @@ -205,12 +212,10 @@ int SPHLJT::loop(const int eflag, const int vflag) { // --------------------------------------------------------------------------- template -void SPHLJT::get_extra_data(double *host_rho, double *host_esph, - double *host_cv, double* host_mass) { +void SPHLJT::get_extra_data(double *host_rho, double *host_esph, double *host_cv) { rho = host_rho; esph = host_esph; cv = host_cv; - mass = host_mass; } template class SPHLJ; diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index ab41477d2f0..b105632330e 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -47,7 +47,7 @@ _texture_2d( vel_tex,int4); } \ } \ if (offset==0 && ii -class SPHLJ : public BaseDPD { +class SPHLJ : public BaseSPH { public: SPHLJ(); ~SPHLJ(); @@ -38,7 +38,8 @@ class SPHLJ : public BaseDPD { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double** host_cut, double **host_viscosity, const int dimension, + double** host_cut, double **host_viscosity, double *host_mass, + const int dimension, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -54,7 +55,7 @@ class SPHLJ : public BaseDPD { double host_memory_usage() const; void get_extra_data(double *host_rho, double *host_esph, - double *host_cv, double* host_mass); + double *host_cv); /// copy drho and desph from device to host void update_drhoE(void **drhoE_ptr); @@ -62,7 +63,10 @@ class SPHLJ : public BaseDPD { // --------------------------- TYPE DATA -------------------------- /// coeff.x = viscosity, coeff.y = cut, coeff.z = cutsq - UCL_D_Vec coeff; + UCL_D_Vec coeff; + + /// per-type coeffs + UCL_D_Vec mass; /// Special LJ values UCL_D_Vec sp_lj; @@ -80,7 +84,7 @@ class SPHLJ : public BaseDPD { int _dimension; /// pointer to host data - double *rho, *esph, *cv, *mass; + double *rho, *esph, *cv; private: bool _allocated; diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index 0b8ea0e2633..488f7b12007 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -28,7 +28,7 @@ static SPHLJ SPHLJMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, const int dimension, + double **host_viscosity, double* host_mass, const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { @@ -54,8 +54,8 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, int init_ok=0; if (world_me==0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, dimension, - special_lj, inum, nall, max_nbors, maxspecial, + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, host_mass, + dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); SPHLJMF.device->world_barrier(); @@ -72,8 +72,8 @@ int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, dimension, - special_lj, inum, nall, max_nbors, maxspecial, + init_ok=SPHLJMF.init(ntypes, cutsq, host_cut, host_viscosity, host_mass, + dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); SPHLJMF.device->serialize_init(); @@ -93,38 +93,31 @@ void sph_lj_gpu_clear() { } int ** sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, - double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, - int **ilist, int **jnum, const double cpu_time, bool &success, - double **host_v, double *boxlo, double *prd) { - double dtinvsqrt = 1.0; - int seed = 0; - int timestep = 0; + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *host_tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v) { return SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, sublo, - subhi, tag, nspecial, special, eflag, vflag, eatom, - vatom, host_start, ilist, jnum, cpu_time, success, - host_v, dtinvsqrt, seed, timestep, boxlo, prd); + subhi, host_tag, nspecial, special, eflag, vflag, + eatom, vatom, host_start, ilist, jnum, cpu_time, success, + host_v); } void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, tagint *tag, - double **host_v, const int nlocal, double *boxlo, double *prd) { - double dtinvsqrt = 1.0; - int seed = 0; - int timestep = 0; + const double cpu_time, bool &success, tagint *host_tag, + double **host_v, const int nlocal) { SPHLJMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, - tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); + host_tag, host_v, nlocal); } -void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, - double *host_cv, double *host_mass) { - SPHLJMF.get_extra_data(host_rho, host_esph, host_cv, host_mass); +void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, double *host_cv) { + SPHLJMF.get_extra_data(host_rho, host_esph, host_cv); } void sph_lj_gpu_update_drhoE(void **drhoE_ptr) { diff --git a/lib/gpu/lal_sph_taitwater.cpp b/lib/gpu/lal_sph_taitwater.cpp index 84a25aab5c1..7a584d435ec 100644 --- a/lib/gpu/lal_sph_taitwater.cpp +++ b/lib/gpu/lal_sph_taitwater.cpp @@ -3,7 +3,7 @@ ------------------- Trung Dac Nguyen (U Chicago) - Class for acceleration of the sph_taitwater pair style. + Class for acceleration of the sph/taitwater pair style. __________________________________________________________________________ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) @@ -29,7 +29,7 @@ namespace LAMMPS_AL { extern Device device; template -SPHTaitwaterT::SPHTaitwater() : BaseDPD(), _allocated(false) { +SPHTaitwaterT::SPHTaitwater() : BaseSPH(), _allocated(false) { _max_drhoE_size = 0; } @@ -46,8 +46,8 @@ int SPHTaitwaterT::bytes_per_atom(const int max_nbors) const { template int SPHTaitwaterT::init(const int ntypes, double **host_cutsq, double **host_cut, double **host_viscosity, - double* host_rho0, double* host_soundspeed, - double* host_B, const int dimension, + double* host_mass, double* host_rho0, + double* host_soundspeed, double* host_B, const int dimension, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -70,7 +70,7 @@ int SPHTaitwaterT::init(const int ntypes, double **host_cutsq, int success; int extra_fields = 4; // round up to accomodate quadruples of numtyp values - // rho, mass + // rho success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, gpu_split,_screen,sph_taitwater,"k_sph_taitwater", onetype,extra_fields); @@ -99,10 +99,10 @@ int SPHTaitwaterT::init(const int ntypes, double **host_cutsq, UCL_H_Vec dview_coeff2(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); for (int i = 0; i < ntypes; i++) { - dview_coeff2[i].x = host_rho0[i]; - dview_coeff2[i].y = host_soundspeed[i]; - dview_coeff2[i].z = host_B[i]; - dview_coeff2[i].w = 0; + dview_coeff2[i].x = host_mass[i]; + dview_coeff2[i].y = host_rho0[i]; + dview_coeff2[i].z = host_soundspeed[i]; + dview_coeff2[i].w = host_B[i]; } coeff2.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); ucl_copy(coeff2,dview_coeff2,false); @@ -122,7 +122,7 @@ int SPHTaitwaterT::init(const int ntypes, double **host_cutsq, drhoE.alloc(_max_drhoE_size*2,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); _dimension = dimension; - + _allocated=true; this->_max_bytes=coeff.row_bytes()+coeff2.row_bytes()+drhoE.row_bytes()+sp_lj.row_bytes(); return 0; @@ -178,7 +178,7 @@ int SPHTaitwaterT::loop(const int eflag, const int vflag) { int idx = n+i*nstride; numtyp4 v; v.x = rho[i]; - v.y = mass[i]; + v.y = 0; v.z = 0; v.w = 0; pextra[idx] = v; @@ -217,9 +217,8 @@ int SPHTaitwaterT::loop(const int eflag, const int vflag) { // --------------------------------------------------------------------------- template -void SPHTaitwaterT::get_extra_data(double *host_rho, double* host_mass) { +void SPHTaitwaterT::get_extra_data(double *host_rho) { rho = host_rho; - mass = host_mass; } template class SPHTaitwater; diff --git a/lib/gpu/lal_sph_taitwater.cu b/lib/gpu/lal_sph_taitwater.cu index d07defc42b1..cc32e4a3c92 100644 --- a/lib/gpu/lal_sph_taitwater.cu +++ b/lib/gpu/lal_sph_taitwater.cu @@ -47,7 +47,7 @@ _texture_2d( vel_tex,int4); } \ } \ if (offset==0 && ii -class SPHTaitwater : public BaseDPD { +class SPHTaitwater : public BaseSPH { public: SPHTaitwater(); ~SPHTaitwater(); @@ -38,9 +38,9 @@ class SPHTaitwater : public BaseDPD { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double** host_cut, double **host_viscosity, - double* host_rho0, double* host_soundspeed, - double* host_B, const int dimension, double *host_special_lj, + double** host_cut, double **host_viscosity, double *host_mass, + double* host_rho0, double* host_soundspeed, double* host_B, + const int dimension, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -55,7 +55,7 @@ class SPHTaitwater : public BaseDPD { /// Total host memory used by library for pair style double host_memory_usage() const; - void get_extra_data(double *host_rho, double* host_mass); + void get_extra_data(double *host_rho); /// copy drho and desph from device to host void update_drhoE(void **drhoE_ptr); @@ -84,7 +84,7 @@ class SPHTaitwater : public BaseDPD { int _dimension; /// pointer to host data - double *rho, *mass; + double *rho; private: bool _allocated; diff --git a/lib/gpu/lal_sph_taitwater_ext.cpp b/lib/gpu/lal_sph_taitwater_ext.cpp index e5b1d439b82..9d125a63958 100644 --- a/lib/gpu/lal_sph_taitwater_ext.cpp +++ b/lib/gpu/lal_sph_taitwater_ext.cpp @@ -3,7 +3,7 @@ ------------------- Trung Dac Nguyen (U Chicago) - Functions for LAMMPS access to sph lj acceleration routines. + Functions for LAMMPS access to sph taitwater acceleration routines. __________________________________________________________________________ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) @@ -28,8 +28,8 @@ static SPHTaitwater SPHTaitwaterMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, double* host_rho0, - double* host_soundspeed, double* host_B, + double **host_viscosity, double* host_mass, + double* host_rho0, double* host_soundspeed, double* host_B, const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, @@ -56,7 +56,7 @@ int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, int init_ok=0; if (world_me==0) - init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, + init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, host_mass, host_rho0, host_soundspeed, host_B, dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -75,7 +75,7 @@ int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, + init_ok=SPHTaitwaterMF.init(ntypes, cutsq, host_cut, host_viscosity, host_mass, host_rho0, host_soundspeed, host_B, dimension, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -98,36 +98,30 @@ void sph_taitwater_gpu_clear() { int ** sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, int **nspecial, + double *subhi, tagint *host_tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, - double **host_v, double *boxlo, double *prd) { - double dtinvsqrt = 1.0; - int seed = 0; - int timestep = 0; + double **host_v) { return SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, sublo, - subhi, tag, nspecial, special, eflag, vflag, eatom, + subhi, host_tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, - host_v, dtinvsqrt, seed, timestep, boxlo, prd); + host_v); } void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, tagint *tag, - double **host_v, const int nlocal, double *boxlo, double *prd) { - double dtinvsqrt = 1.0; - int seed = 0; - int timestep = 0; + const double cpu_time, bool &success, tagint *host_tag, + double **host_v, const int nlocal) { SPHTaitwaterMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, - tag, host_v, dtinvsqrt, seed, timestep, nlocal, boxlo, prd); + host_tag, host_v, nlocal); } -void sph_taitwater_gpu_get_extra_data(double *host_rho, double *host_mass) { - SPHTaitwaterMF.get_extra_data(host_rho, host_mass); +void sph_taitwater_gpu_get_extra_data(double *host_rho) { + SPHTaitwaterMF.get_extra_data(host_rho); } void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr) { diff --git a/src/GPU/pair_sph_lj_gpu.cpp b/src/GPU/pair_sph_lj_gpu.cpp index 33366f09a62..942a3c33bd4 100644 --- a/src/GPU/pair_sph_lj_gpu.cpp +++ b/src/GPU/pair_sph_lj_gpu.cpp @@ -35,24 +35,27 @@ using namespace LAMMPS_NS; // External functions from cuda library for atom decomposition int sph_lj_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, const int dimension, double *special_lj, + double **host_viscosity, double* host_mass, + const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen); void sph_lj_gpu_clear(); -int **sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, const bool eatom, - const bool vatom, int &host_start, int **ilist, int **jnum, - const double cpu_time, bool &success, double **host_v, - double *boxlo, double *prd); -void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, - const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, tagint *tag, double **host_v, - const int nlocal, double *boxlo, double *prd); +int **sph_lj_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *host_tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v); +void sph_lj_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *host_tag, + double **host_v, const int nlocal); void sph_lj_gpu_get_extra_data(double *host_rho, double *host_esph, - double *host_cv, double *host_mass); + double *host_cv); void sph_lj_gpu_update_drhoE(void **drhoE_ptr); double sph_lj_gpu_bytes(); @@ -92,8 +95,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) double *rho = atom->rho; double *esph = atom->esph; double *cv = atom->cv; - double *mass = atom->mass; - sph_lj_gpu_get_extra_data(rho, esph, cv, mass); + sph_lj_gpu_get_extra_data(rho, esph, cv); if (gpu_mode != GPU_FORCE) { double sublo[3], subhi[3]; @@ -112,7 +114,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, - cpu_time, success, atom->v, domain->boxlo, domain->prd); + cpu_time, success, atom->v); } else { inum = list->inum; ilist = list->ilist; @@ -121,7 +123,7 @@ void PairSPHLJGPU::compute(int eflag, int vflag) sph_lj_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->tag, atom->v, atom->nlocal, domain->boxlo, domain->prd); + atom->tag, atom->v, atom->nlocal); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); @@ -182,8 +184,9 @@ void PairSPHLJGPU::init_style() if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; int mnf = 5e-2 * neighbor->oneatom; int success = - sph_lj_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, domain->dimension, - force->special_lj, atom->nlocal, atom->nlocal + atom->nghost, + sph_lj_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, atom->mass, + domain->dimension, force->special_lj, atom->nlocal, + atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, screen); GPU_EXTRA::check_flag(success, error, world); diff --git a/src/GPU/pair_sph_taitwater_gpu.cpp b/src/GPU/pair_sph_taitwater_gpu.cpp index b98a89c3ff3..37a1b0feb5b 100644 --- a/src/GPU/pair_sph_taitwater_gpu.cpp +++ b/src/GPU/pair_sph_taitwater_gpu.cpp @@ -35,24 +35,26 @@ using namespace LAMMPS_NS; // External functions from cuda library for atom decomposition int sph_taitwater_gpu_init(const int ntypes, double **cutsq, double** host_cut, - double **host_viscosity, double* host_rho0, + double **host_viscosity, double* host_mass, double* host_rho0, double* host_soundspeed, double* host_B, const int dimension, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen); void sph_taitwater_gpu_clear(); -int **sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, const bool eatom, - const bool vatom, int &host_start, int **ilist, int **jnum, - const double cpu_time, bool &success, double **host_v, - double *boxlo, double *prd); -void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, - int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, - const bool vflag, const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, tagint *tag, double **host_v, - const int nlocal, double *boxlo, double *prd); -void sph_taitwater_gpu_get_extra_data(double *host_rho, double *host_mass); +int **sph_taitwater_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v); +void sph_taitwater_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *tag, + double **host_v, const int nlocal); +void sph_taitwater_gpu_get_extra_data(double *host_rho); void sph_taitwater_gpu_update_drhoE(void **drhoE_ptr); double sph_taitwater_gpu_bytes(); @@ -90,8 +92,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) int *ilist, *numneigh, **firstneigh; double *rho = atom->rho; - double *mass = atom->mass; - sph_taitwater_gpu_get_extra_data(rho, mass); + sph_taitwater_gpu_get_extra_data(rho); if (gpu_mode != GPU_FORCE) { double sublo[3], subhi[3]; @@ -109,7 +110,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) firstneigh = sph_taitwater_gpu_compute_n( neighbor->ago, inum, nall, atom->x, atom->type, sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, eflag_atom, vflag_atom, host_start, &ilist, &numneigh, - cpu_time, success, atom->v, domain->boxlo, domain->prd); + cpu_time, success, atom->v); } else { inum = list->inum; ilist = list->ilist; @@ -117,7 +118,7 @@ void PairSPHTaitwaterGPU::compute(int eflag, int vflag) firstneigh = list->firstneigh; sph_taitwater_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success, - atom->tag, atom->v, atom->nlocal, domain->boxlo, domain->prd); + atom->tag, atom->v, atom->nlocal); } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); @@ -178,7 +179,7 @@ void PairSPHTaitwaterGPU::init_style() if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; int mnf = 5e-2 * neighbor->oneatom; int success = - sph_taitwater_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, + sph_taitwater_gpu_init(atom->ntypes + 1, cutsq, cut, viscosity, atom->mass, rho0, soundspeed, B, domain->dimension, force->special_lj, atom->nlocal, atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, screen); From 54a6143e9e1fad717faf8ac96e3b1bf019770cfb Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 8 Dec 2023 14:27:00 -0600 Subject: [PATCH 179/300] Updated the doc pages for sph/lj/gpu and sph/taitwater/gpu --- doc/src/pair_coul_slater.rst | 2 +- doc/src/pair_sph_lj.rst | 3 +++ doc/src/pair_sph_taitwater.rst | 3 +++ lib/gpu/lal_base_sph.cpp | 2 +- lib/gpu/lal_base_sph.h | 2 +- lib/gpu/lal_coul_slater_long.cpp | 2 +- lib/gpu/lal_coul_slater_long.cu | 2 +- lib/gpu/lal_coul_slater_long_ext.cpp | 2 +- lib/gpu/lal_edpd.h | 2 +- lib/gpu/lal_lj_coul_long_soft.cpp | 2 +- lib/gpu/lal_lj_coul_long_soft.cu | 2 +- lib/gpu/lal_lj_coul_long_soft.h | 2 +- lib/gpu/lal_lj_coul_long_soft_ext.cpp | 4 ++-- lib/gpu/lal_sph_lj.cpp | 2 +- lib/gpu/lal_sph_lj.h | 2 +- lib/gpu/lal_sph_lj_ext.cpp | 2 +- 16 files changed, 21 insertions(+), 15 deletions(-) diff --git a/doc/src/pair_coul_slater.rst b/doc/src/pair_coul_slater.rst index 074f10ba834..bde14276db6 100644 --- a/doc/src/pair_coul_slater.rst +++ b/doc/src/pair_coul_slater.rst @@ -12,7 +12,7 @@ pair_style coul/slater/cut command pair_style coul/slater/long command =================================== -Accelerator Variants: *coul/slater/gpu* +Accelerator Variants: *coul/slater/long/gpu* Syntax """""" diff --git a/doc/src/pair_sph_lj.rst b/doc/src/pair_sph_lj.rst index b5c02c41ff4..5ac7ab9c6b2 100644 --- a/doc/src/pair_sph_lj.rst +++ b/doc/src/pair_sph_lj.rst @@ -1,8 +1,11 @@ .. index:: pair_style sph/lj +.. index:: pair_style sph/lj/gpu pair_style sph/lj command ========================= +Accelerator Variants: *sph/lj/gpu* + Syntax """""" diff --git a/doc/src/pair_sph_taitwater.rst b/doc/src/pair_sph_taitwater.rst index 34eb65f0051..79972660c42 100644 --- a/doc/src/pair_sph_taitwater.rst +++ b/doc/src/pair_sph_taitwater.rst @@ -1,8 +1,11 @@ .. index:: pair_style sph/taitwater +.. index:: pair_style sph/taitwater/gpu pair_style sph/taitwater command ================================ +Accelerator Variants: *sph/taitwater/gpu* + Syntax """""" diff --git a/lib/gpu/lal_base_sph.cpp b/lib/gpu/lal_base_sph.cpp index c6876a7dcd0..f373c0ebb6b 100644 --- a/lib/gpu/lal_base_sph.cpp +++ b/lib/gpu/lal_base_sph.cpp @@ -1,7 +1,7 @@ /*************************************************************************** base_sph.cpp ------------------- - Trung Dac Nguyen (ORNL) + Trung Nguyen (U Chicago) Base class for SPH pair styles needing per-particle data for position, velocity, and type. diff --git a/lib/gpu/lal_base_sph.h b/lib/gpu/lal_base_sph.h index 950462e9989..e1e57315732 100644 --- a/lib/gpu/lal_base_sph.h +++ b/lib/gpu/lal_base_sph.h @@ -1,7 +1,7 @@ /*************************************************************************** base_sph.h ------------------- - Trung Dac Nguyen (U Chicago) + Trung Nguyen (U Chicago) Base class for SPH pair styles needing per-particle data for position, velocity, and type. diff --git a/lib/gpu/lal_coul_slater_long.cpp b/lib/gpu/lal_coul_slater_long.cpp index 98b73ab7535..42eb86e8ffb 100644 --- a/lib/gpu/lal_coul_slater_long.cpp +++ b/lib/gpu/lal_coul_slater_long.cpp @@ -1,6 +1,6 @@ /*************************************************************************** coul_slater_long_ext.cpp - ------------------- + ------------------------ Trung Nguyen (U Chicago) Class for acceleration of the coul/slater/long pair style. diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu index f8902c59d74..eccc5942112 100644 --- a/lib/gpu/lal_coul_slater_long.cu +++ b/lib/gpu/lal_coul_slater_long.cu @@ -1,6 +1,6 @@ // ************************************************************************** // coul_slater_long.cu -// ------------------- +// ------------------- // Trung Nguyen (U Chicago) // // Device code for acceleration of the coul/slater/long pair style diff --git a/lib/gpu/lal_coul_slater_long_ext.cpp b/lib/gpu/lal_coul_slater_long_ext.cpp index fb5d9725c91..8c34cc55529 100644 --- a/lib/gpu/lal_coul_slater_long_ext.cpp +++ b/lib/gpu/lal_coul_slater_long_ext.cpp @@ -1,6 +1,6 @@ /*************************************************************************** coul_slater_long_ext.cpp - ------------------- + ------------------------ Trung Nguyen (U Chicago) Functions for LAMMPS access to coul/slater/long acceleration routines. diff --git a/lib/gpu/lal_edpd.h b/lib/gpu/lal_edpd.h index c293b86ee66..e5f7b0633bf 100644 --- a/lib/gpu/lal_edpd.h +++ b/lib/gpu/lal_edpd.h @@ -3,7 +3,7 @@ ------------------- Trung Dac Nguyen (U Chicago) - Class for acceleration of the dpd pair style. + Class for acceleration of the edpd pair style. __________________________________________________________________________ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) diff --git a/lib/gpu/lal_lj_coul_long_soft.cpp b/lib/gpu/lal_lj_coul_long_soft.cpp index 2b90333bae0..80eaaca94a0 100644 --- a/lib/gpu/lal_lj_coul_long_soft.cpp +++ b/lib/gpu/lal_lj_coul_long_soft.cpp @@ -10,7 +10,7 @@ __________________________________________________________________________ begin : - email : ndtrung@uchicago.edu + email : ndactrung@gmail.com ***************************************************************************/ #if defined(USE_OPENCL) diff --git a/lib/gpu/lal_lj_coul_long_soft.cu b/lib/gpu/lal_lj_coul_long_soft.cu index 7e55f34a45c..e311bb5d3b3 100644 --- a/lib/gpu/lal_lj_coul_long_soft.cu +++ b/lib/gpu/lal_lj_coul_long_soft.cu @@ -10,7 +10,7 @@ // __________________________________________________________________________ // // begin : -// email : ndtrung@uchicago.edu +// email : ndactrung@gmail.com // *************************************************************************** #if defined(NV_KERNEL) || defined(USE_HIP) diff --git a/lib/gpu/lal_lj_coul_long_soft.h b/lib/gpu/lal_lj_coul_long_soft.h index 1ef5f8134da..b3d4bff4a49 100644 --- a/lib/gpu/lal_lj_coul_long_soft.h +++ b/lib/gpu/lal_lj_coul_long_soft.h @@ -10,7 +10,7 @@ __________________________________________________________________________ begin : - email : ndtrung@uchicago.edu + email : ndactrung@gmail.com ***************************************************************************/ #ifndef LAL_LJ_COUL_LONG_SOFT_H diff --git a/lib/gpu/lal_lj_coul_long_soft_ext.cpp b/lib/gpu/lal_lj_coul_long_soft_ext.cpp index efccbd6ab86..cb2657c03bd 100644 --- a/lib/gpu/lal_lj_coul_long_soft_ext.cpp +++ b/lib/gpu/lal_lj_coul_long_soft_ext.cpp @@ -1,6 +1,6 @@ /*************************************************************************** lj_coul_long_soft_ext.cpp - ------------------- + ------------------------- Trung Nguyen (U Chicago) Functions for LAMMPS access to lj/cut/coul/long/soft acceleration routines. @@ -10,7 +10,7 @@ __________________________________________________________________________ begin : - email : ndtrung@uchicago.edu + email : ndactrung@gmail.com ***************************************************************************/ #include diff --git a/lib/gpu/lal_sph_lj.cpp b/lib/gpu/lal_sph_lj.cpp index dbe44bf30a9..66c2a5c3027 100644 --- a/lib/gpu/lal_sph_lj.cpp +++ b/lib/gpu/lal_sph_lj.cpp @@ -1,7 +1,7 @@ /*************************************************************************** sph_lj.cpp ------------------- - Trung Dac Nguyen (U Chicago) + Trung Nguyen (U Chicago) Class for acceleration of the sph_lj pair style. diff --git a/lib/gpu/lal_sph_lj.h b/lib/gpu/lal_sph_lj.h index 245bf872903..e79c2ba265e 100644 --- a/lib/gpu/lal_sph_lj.h +++ b/lib/gpu/lal_sph_lj.h @@ -1,7 +1,7 @@ /*************************************************************************** sph_lj.h ------------------- - Trung Dac Nguyen (U Chicago) + Trung Nguyen (U Chicago) Class for acceleration of the sph lj pair style. diff --git a/lib/gpu/lal_sph_lj_ext.cpp b/lib/gpu/lal_sph_lj_ext.cpp index 488f7b12007..55f85c030e2 100644 --- a/lib/gpu/lal_sph_lj_ext.cpp +++ b/lib/gpu/lal_sph_lj_ext.cpp @@ -3,7 +3,7 @@ ------------------- Trung Dac Nguyen (U Chicago) - Functions for LAMMPS access to sph lj acceleration routines. + Functions for LAMMPS access to sph/lj acceleration routines. __________________________________________________________________________ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) From 010a7a4d441cb8d9c6fcf1de235caca2172e48d3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 8 Dec 2023 21:07:38 -0500 Subject: [PATCH 180/300] check for out-of-range or invalid numbers more thoroughly --- src/utils.cpp | 57 +++++++++++++++++++++++-- unittest/formats/test_input_convert.cpp | 36 ++++++++++++++++ 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 992feb34e82..bde6dffca5f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -395,7 +395,24 @@ double utils::numeric(const char *file, int line, const std::string &str, bool d lmp->error->all(file, line, msg); } - return atof(buf.c_str()); + double rv = 0; + try { + rv = stod(buf); + } catch (std::invalid_argument const &) { + auto msg = fmt::format("Floating point number {} in input script or data file is invalid", buf); + if (do_abort) + lmp->error->one(file, line, msg); + else + lmp->error->all(file, line, msg); + } catch (std::out_of_range const &) { + auto msg = + fmt::format("Floating point number {} in input script or data file is out of range", buf); + if (do_abort) + lmp->error->one(file, line, msg); + else + lmp->error->all(file, line, msg); + } + return rv; } /* ---------------------------------------------------------------------- @@ -439,7 +456,17 @@ int utils::inumeric(const char *file, int line, const std::string &str, bool do_ lmp->error->all(file, line, msg); } - return atoi(buf.c_str()); + int rv = 0; + try { + rv = stoi(buf); + } catch (std::out_of_range const &) { + auto msg = fmt::format("Integer {} in input script or data file is out of range", buf); + if (do_abort) + lmp->error->one(file, line, msg); + else + lmp->error->all(file, line, msg); + } + return rv; } /* ---------------------------------------------------------------------- @@ -484,7 +511,18 @@ bigint utils::bnumeric(const char *file, int line, const std::string &str, bool lmp->error->all(file, line, msg); } - return ATOBIGINT(buf.c_str()); + long long rv = 0; + try { + rv = stoll(buf); + if (rv > MAXBIGINT) throw std::out_of_range("64-bit"); + } catch (std::out_of_range const &) { + auto msg = fmt::format("Integer {} in input script or data file is out of range", buf); + if (do_abort) + lmp->error->one(file, line, msg); + else + lmp->error->all(file, line, msg); + } + return static_cast(rv); } /* ---------------------------------------------------------------------- @@ -529,7 +567,18 @@ tagint utils::tnumeric(const char *file, int line, const std::string &str, bool lmp->error->all(file, line, msg); } - return ATOTAGINT(buf.c_str()); + long long rv = 0; + try { + rv = stoll(buf); + if (rv > MAXTAGINT) throw std::out_of_range("64-bit"); + } catch (std::out_of_range const &) { + auto msg = fmt::format("Integer {} in input script or data file is out of range", buf); + if (do_abort) + lmp->error->one(file, line, msg); + else + lmp->error->all(file, line, msg); + } + return static_cast(rv); } /* ---------------------------------------------------------------------- diff --git a/unittest/formats/test_input_convert.cpp b/unittest/formats/test_input_convert.cpp index 858275a76f6..78a78d08df5 100644 --- a/unittest/formats/test_input_convert.cpp +++ b/unittest/formats/test_input_convert.cpp @@ -117,6 +117,17 @@ TEST_F(InputConvertTest, numeric) TEST_FAILURE(".*ERROR: Expected floating point.*", utils::numeric(FLERR, nullptr, false, lmp);); TEST_FAILURE(".*ERROR: Expected floating point.*", utils::numeric(FLERR, "2.56D+3", false, lmp);); + TEST_FAILURE(".*ERROR: Floating point number.*out of range.*", + utils::numeric(FLERR, "1.0e2000", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating .*", utils::numeric(FLERR, "--546700-", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "546700+", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "--546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "++546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "+-546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating .*", utils::numeric(FLERR, "5.467e--1", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "4.4e++1", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "--5.0460", false, lmp);); + TEST_FAILURE(".*ERROR: Expected floating.*", utils::numeric(FLERR, "++5.4670", false, lmp);); } TEST_F(InputConvertTest, inumeric) @@ -142,6 +153,13 @@ TEST_F(InputConvertTest, inumeric) TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "0x05", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, nullptr, false, lmp);); + TEST_FAILURE(".*ERROR: Integer.*out of range.*", + utils::inumeric(FLERR, "1263012546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "--546700-", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "546700+", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "--546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "++546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::inumeric(FLERR, "+-546700", false, lmp);); } TEST_F(InputConvertTest, bnumeric) @@ -167,6 +185,13 @@ TEST_F(InputConvertTest, bnumeric) TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "0x05", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, nullptr, false, lmp);); + TEST_FAILURE(".*ERROR: Integer.*out of range.*", + utils::bnumeric(FLERR, "18446744073709551616123", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "--546700-", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "546700+", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "--546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "++546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::bnumeric(FLERR, "+-546700", false, lmp);); } TEST_F(InputConvertTest, tnumeric) @@ -192,6 +217,17 @@ TEST_F(InputConvertTest, tnumeric) TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "0x05", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "", false, lmp);); TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, nullptr, false, lmp);); +#if defined(LAMMPS_SMALLBIG) + TEST_FAILURE(".*ERROR: Integer.*out of range.*", + utils::tnumeric(FLERR, "4294967296", false, lmp);); +#endif + TEST_FAILURE(".*ERROR: Integer.*out of range.*", + utils::tnumeric(FLERR, "18446744073709551616123", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "--546700-", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "546700+", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "--546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "++546700", false, lmp);); + TEST_FAILURE(".*ERROR: Expected integer.*", utils::tnumeric(FLERR, "+-546700", false, lmp);); } } // namespace LAMMPS_NS From 3830711decd56c6cf304524c3cc56524ccb68223 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 9 Dec 2023 15:15:13 -0600 Subject: [PATCH 181/300] Added the GPU version of sph/heatconduction --- lib/gpu/lal_sph_heatconduction.cpp | 222 ++++++++++++++++++++ lib/gpu/lal_sph_heatconduction.cu | 265 ++++++++++++++++++++++++ lib/gpu/lal_sph_heatconduction.h | 95 +++++++++ lib/gpu/lal_sph_heatconduction_ext.cpp | 129 ++++++++++++ lib/gpu/lal_sph_lj.cu | 10 +- src/GPU/pair_sph_heatconduction_gpu.cpp | 197 ++++++++++++++++++ src/GPU/pair_sph_heatconduction_gpu.h | 48 +++++ 7 files changed, 961 insertions(+), 5 deletions(-) create mode 100644 lib/gpu/lal_sph_heatconduction.cpp create mode 100644 lib/gpu/lal_sph_heatconduction.cu create mode 100644 lib/gpu/lal_sph_heatconduction.h create mode 100644 lib/gpu/lal_sph_heatconduction_ext.cpp create mode 100644 src/GPU/pair_sph_heatconduction_gpu.cpp create mode 100644 src/GPU/pair_sph_heatconduction_gpu.h diff --git a/lib/gpu/lal_sph_heatconduction.cpp b/lib/gpu/lal_sph_heatconduction.cpp new file mode 100644 index 00000000000..e8e366e93a6 --- /dev/null +++ b/lib/gpu/lal_sph_heatconduction.cpp @@ -0,0 +1,222 @@ +/*************************************************************************** + sph_heatconduction.cpp + ------------------- + Trung Nguyen (U Chicago) + + Class for acceleration of the sph_heatconduction pair style. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : September 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#if defined(USE_OPENCL) +#include "sph_heatconduction_cl.h" +#elif defined(USE_CUDART) +const char *sph_heatconduction=0; +#else +#include "sph_heatconduction_cubin.h" +#endif + +#include "lal_sph_heatconduction.h" +#include +namespace LAMMPS_AL { +#define SPHHeatConductionT SPHHeatConduction + +extern Device device; + +template +SPHHeatConductionT::SPHHeatConduction() : BaseSPH(), _allocated(false) { + _max_dE_size = 0; +} + +template +SPHHeatConductionT::~SPHHeatConduction() { + clear(); +} + +template +int SPHHeatConductionT::bytes_per_atom(const int max_nbors) const { + return this->bytes_per_atom_atomic(max_nbors); +} + +template +int SPHHeatConductionT::init(const int ntypes, + double **host_cutsq, double **host_cut, + double **host_alpha, double* host_mass, + const int dimension, double *host_special_lj, + const int nlocal, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, + const double gpu_split, FILE *_screen) { + const int max_shared_types=this->device->max_shared_types(); + + int onetype=0; + #ifdef USE_OPENCL + if (maxspecial==0) + for (int i=1; i0) { + if (onetype>0) + onetype=-1; + else if (onetype==0) + onetype=i*max_shared_types+j; + } + if (onetype<0) onetype=0; + #endif + + int success; + int extra_fields = 4; // round up to accomodate quadruples of numtyp values + // rho, esph + success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, + gpu_split,_screen,sph_heatconduction,"k_sph_heatconduction", + onetype,extra_fields); + if (success!=0) + return success; + + // If atom type constants fit in shared memory use fast kernel + int lj_types=ntypes; + shared_types=false; + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } + _lj_types=lj_types; + + // Allocate a host write buffer for data initialization + UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), + UCL_WRITE_ONLY); + + for (int i=0; iucl_device),UCL_READ_ONLY); + this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_alpha, + host_cut, host_cutsq); + + UCL_H_Vec dview_mass(ntypes, *(this->ucl_device), UCL_WRITE_ONLY); + for (int i = 0; i < ntypes; i++) + dview_mass[i] = host_mass[i]; + mass.alloc(ntypes,*(this->ucl_device), UCL_READ_ONLY); + ucl_copy(mass,dview_mass,false); + + UCL_H_Vec dview; + sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); + dview.view(host_special_lj,4,*(this->ucl_device)); + ucl_copy(sp_lj,dview,false); + + // allocate per-atom array Q + + int ef_nall=nall; + if (ef_nall==0) + ef_nall=2000; + + _max_dE_size=static_cast(static_cast(ef_nall)*1.10); + dE.alloc(_max_dE_size,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); + + _dimension = dimension; + + _allocated=true; + this->_max_bytes=coeff.row_bytes()+dE.row_bytes()+sp_lj.row_bytes(); + return 0; +} + +template +void SPHHeatConductionT::clear() { + if (!_allocated) + return; + _allocated=false; + + coeff.clear(); + mass.clear(); + dE.clear(); + sp_lj.clear(); + this->clear_atomic(); +} + +template +double SPHHeatConductionT::host_memory_usage() const { + return this->host_memory_usage_atomic()+sizeof(SPHHeatConduction); +} + +template +void SPHHeatConductionT::update_dE(void **dE_ptr) { + *dE_ptr=dE.host.begin(); + dE.update_host(_max_dE_size,false); +} + +// --------------------------------------------------------------------------- +// Calculate energies, forces, and torques +// --------------------------------------------------------------------------- +template +int SPHHeatConductionT::loop(const int eflag, const int vflag) { + + int nall = this->atom->nall(); + + // Resize dE array if necessary + if (nall > _max_dE_size) { + _max_dE_size=static_cast(static_cast(nall)*1.10); + dE.resize(_max_dE_size); + } + + // signal that we need to transfer extra data from the host + + this->atom->extra_data_unavail(); + + numtyp4 *pextra=reinterpret_cast(&(this->atom->extra[0])); + + int n = 0; + int nstride = 1; + for (int i = 0; i < nall; i++) { + int idx = n+i*nstride; + numtyp4 v; + v.x = rho[i]; + v.y = esph[i]; + v.z = 0; + v.w = 0; + pextra[idx] = v; + } + this->atom->add_extra_data(); + + // Compute the block size and grid size to keep all cores busy + const int BX=this->block_size(); + int GX=static_cast(ceil(static_cast(this->ans->inum())/ + (BX/this->_threads_per_atom))); + + + int ainum=this->ans->inum(); + int nbor_pitch=this->nbor->nbor_pitch(); + this->time_pair.start(); + if (shared_types) { + this->k_pair_sel->set_size(GX,BX); + this->k_pair_sel->run(&this->atom->x, &this->atom->extra, &coeff, &mass, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &dE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &this->atom->extra, &coeff, &mass, + &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &dE, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->v, &_dimension, &this->_threads_per_atom); + } + + this->time_pair.stop(); + return GX; +} + +// --------------------------------------------------------------------------- +// Get the extra data pointers from host +// --------------------------------------------------------------------------- + +template +void SPHHeatConductionT::get_extra_data(double *host_rho, double *host_esph) { + rho = host_rho; + esph = host_esph; +} + +template class SPHHeatConduction; +} diff --git a/lib/gpu/lal_sph_heatconduction.cu b/lib/gpu/lal_sph_heatconduction.cu new file mode 100644 index 00000000000..c88853e2cf0 --- /dev/null +++ b/lib/gpu/lal_sph_heatconduction.cu @@ -0,0 +1,265 @@ +// ************************************************************************** +// sph_heatconduction.cu +// --------------------- +// Trung Dac Nguyen (U Chicago) +// +// Device code for acceleration of the sph/heatconduction pair style +// +// __________________________________________________________________________ +// This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) +// __________________________________________________________________________ +// +// begin : September 2023 +// email : ndactrung@gmail.com +// *************************************************************************** + +#if defined(NV_KERNEL) || defined(USE_HIP) +#include "lal_aux_fun1.h" +#ifndef _DOUBLE_DOUBLE +_texture( pos_tex,float4); +_texture( vel_tex,float4); +#else +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); +#endif +#else +#define pos_tex x_ +#define vel_tex v_ +#endif + +#if (SHUFFLE_AVAIL == 0) + +#define store_dE(dEacc, ii, inum, tid, t_per_atom, offset, dE) \ + if (t_per_atom>1) { \ + simdsync(); \ + simd_reduce_add1(t_per_atom, red_acc, offset, tid, dEacc); \ + } \ + if (offset==0 && ii1) { \ + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ + dEacc += shfl_down(dEacc, s, t_per_atom); \ + } \ + } \ + if (offset==0 && ii +class SPHHeatConduction : public BaseSPH { + public: + SPHHeatConduction(); + ~SPHHeatConduction(); + + /// Clear any previous data and set up for a new LAMMPS run + /** \param max_nbors initial number of rows in the neighbor matrix + * \param cell_size cutoff + skin + * \param gpu_split fraction of particles handled by device + * + * Returns: + * - 0 if successful + * - -1 if fix gpu not found + * - -3 if there is an out of memory error + * - -4 if the GPU library was not compiled for GPU + * - -5 Double precision is not supported on card **/ + int init(const int ntypes, double **host_cutsq, + double** host_cut, double **host_alpha, double *host_mass, + const int dimension, double *host_special_lj, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen); + + /// Clear all host and device data + /** \note This is called at the beginning of the init() routine **/ + void clear(); + + /// Returns memory usage on device per atom + int bytes_per_atom(const int max_nbors) const; + + /// Total host memory used by library for pair style + double host_memory_usage() const; + + void get_extra_data(double *host_rho, double *host_esph); + + /// copy desph from device to host + void update_dE(void **dE_ptr); + + // --------------------------- TYPE DATA -------------------------- + + /// coeff.x = alpha, coeff.y = cut, coeff.z = cutsq + UCL_D_Vec coeff; + + /// per-type coeffs + UCL_D_Vec mass; + + /// Special LJ values + UCL_D_Vec sp_lj; + + /// If atom type constants fit in shared memory, use fast kernels + bool shared_types; + + /// Number of atom types + int _lj_types; + + /// Per-atom arrays + UCL_Vector dE; + int _max_dE_size; + + int _dimension; + + /// pointer to host data + double *rho, *esph, *cv; + + private: + bool _allocated; + int loop(const int eflag, const int vflag); +}; + +} + +#endif diff --git a/lib/gpu/lal_sph_heatconduction_ext.cpp b/lib/gpu/lal_sph_heatconduction_ext.cpp new file mode 100644 index 00000000000..1317ecaccc2 --- /dev/null +++ b/lib/gpu/lal_sph_heatconduction_ext.cpp @@ -0,0 +1,129 @@ +/*************************************************************************** + sph_heatconduction_ext.cpp + -------------------------- + Trung Dac Nguyen (U Chicago) + + Functions for LAMMPS access to sph/heatconduction acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : December 2023 + email : ndactrung@gmail.com + ***************************************************************************/ + +#include +#include +#include + +#include "lal_sph_heatconduction.h" + +using namespace std; +using namespace LAMMPS_AL; + +static SPHHeatConduction SPHHeatConductionMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int sph_heatconduction_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_alpha, double* host_mass, const int dimension, + double *special_lj, const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen) { + SPHHeatConductionMF.clear(); + gpu_mode=SPHHeatConductionMF.device->gpu_mode(); + double gpu_split=SPHHeatConductionMF.device->particle_split(); + int first_gpu=SPHHeatConductionMF.device->first_device(); + int last_gpu=SPHHeatConductionMF.device->last_device(); + int world_me=SPHHeatConductionMF.device->world_me(); + int gpu_rank=SPHHeatConductionMF.device->gpu_rank(); + int procs_per_gpu=SPHHeatConductionMF.device->procs_per_gpu(); + + SPHHeatConductionMF.device->init_message(screen,"sph_lj",first_gpu,last_gpu); + + bool message=false; + if (SPHHeatConductionMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=SPHHeatConductionMF.init(ntypes, cutsq, host_cut, host_alpha, host_mass, + dimension, special_lj, inum, nall, max_nbors, maxspecial, + cell_size, gpu_split, screen); + + SPHHeatConductionMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + SPHHeatConductionMF.estimate_gpu_overhead(); + return init_ok; +} + +void sph_heatconduction_gpu_clear() { + SPHHeatConductionMF.clear(); +} + +int ** sph_heatconduction_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *host_tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v) { + return SPHHeatConductionMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, host_tag, nspecial, special, eflag, vflag, + eatom, vatom, host_start, ilist, jnum, cpu_time, success, + host_v); +} + +void sph_heatconduction_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *host_tag, + double **host_v, const int nlocal) { + SPHHeatConductionMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, + firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, + host_tag, host_v, nlocal); +} + +void sph_heatconduction_gpu_get_extra_data(double *host_rho, double *host_esph) { + SPHHeatConductionMF.get_extra_data(host_rho, host_esph); +} + +void sph_heatconduction_gpu_update_dE(void **dE_ptr) { + SPHHeatConductionMF.update_dE(dE_ptr); +} + +double sph_heatconduction_gpu_bytes() { + return SPHHeatConductionMF.host_memory_usage(); +} diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index b105632330e..b9fdc5e433f 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -224,7 +224,7 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, f.z+=delz*force; // and change in density, drho[i] - drhoEacc.x += massj * delVdotDelR * wfd; + drhoEacc.x += mass_jtype * delVdotDelR * wfd; // change in thermal energy, desph[i] drhoEacc.y += deltaE; @@ -313,7 +313,6 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, numtyp rhoi = extrai.x; numtyp esphi = extrai.y; numtyp cvi = extrai.z; - numtyp massi= extrai.w; // compute pressure of particle i with LJ EOS numtyp fci[2]; @@ -331,6 +330,7 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, #endif numtyp4 jx; fetch4(jx,j,pos_tex); //x_[j]; + int jtype = jx.w; #ifndef ONETYPE int mtype=itype+jx.w; const numtyp cutsq_p=cutsq[mtype]; @@ -345,6 +345,7 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, numtyp rsq = delx*delx+dely*dely+delz*delz; if (rsq + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int sph_heatconduction_gpu_init(const int ntypes, double **cutsq, double** host_cut, + double **host_alpha, double* host_mass, + const int dimension, double *special_lj, + const int inum, const int nall, + const int max_nbors, const int maxspecial, + const double cell_size, int &gpu_mode, FILE *screen); +void sph_heatconduction_gpu_clear(); +int **sph_heatconduction_gpu_compute_n(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, double *sublo, + double *subhi, tagint *host_tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, + double **host_v); +void sph_heatconduction_gpu_compute(const int ago, const int inum_full, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, tagint *host_tag, + double **host_v, const int nlocal); +void sph_heatconduction_gpu_get_extra_data(double *host_rho, double *host_esph); +void sph_heatconduction_gpu_update_dE(void **dE_ptr); +double sph_heatconduction_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairSPHHeatConductionGPU::PairSPHHeatConductionGPU(LAMMPS *lmp) : + PairSPHHeatConduction(lmp), gpu_mode(GPU_FORCE) +{ + dE_pinned = nullptr; + respa_enable = 0; + reinitflag = 0; + cpu_time = 0.0; + suffix_flag |= Suffix::GPU; + GPU_EXTRA::gpu_ready(lmp->modify, lmp->error); +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairSPHHeatConductionGPU::~PairSPHHeatConductionGPU() +{ + sph_heatconduction_gpu_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void PairSPHHeatConductionGPU::compute(int eflag, int vflag) +{ + ev_init(eflag, vflag); + + int nall = atom->nlocal + atom->nghost; + int inum, host_start; + + bool success = true; + int *ilist, *numneigh, **firstneigh; + + double *rho = atom->rho; + double *esph = atom->esph; + double *cv = atom->cv; + sph_heatconduction_gpu_get_extra_data(rho, esph); + + if (gpu_mode != GPU_FORCE) { + double sublo[3], subhi[3]; + if (domain->triclinic == 0) { + 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]; + } else { + domain->bbox(domain->sublo_lamda, domain->subhi_lamda, sublo, subhi); + } + inum = atom->nlocal; + firstneigh = sph_heatconduction_gpu_compute_n( + neighbor->ago, inum, nall, atom->x, atom->type, + sublo, subhi, atom->tag, atom->nspecial, atom->special, eflag, vflag, + eflag_atom, vflag_atom, host_start, &ilist, &numneigh, + cpu_time, success, atom->v); + } else { + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + sph_heatconduction_gpu_compute(neighbor->ago, inum, nall, atom->x, atom->type, + ilist, numneigh, firstneigh, eflag, vflag, + eflag_atom, vflag_atom, host_start, cpu_time, success, + atom->tag, atom->v, atom->nlocal); + } + if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + + // get the drho and dE from device + + double *desph = atom->desph; + sph_heatconduction_gpu_update_dE(&dE_pinned); + + int nlocal = atom->nlocal; + if (acc_float) { + auto dE_ptr = (float *)dE_pinned; + for (int i = 0; i < nlocal; i++) { + desph[i] = dE_ptr[i]; + } + + } else { + auto dE_ptr = (float *)dE_pinned; + for (int i = 0; i < nlocal; i++) { + desph[i] = dE_ptr[i]; + } + } + + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairSPHHeatConductionGPU::init_style() +{ + + // Repeat cutsq calculation because done after call to init_style + double maxcut = -1.0; + double mcut; + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + mcut = init_one(i, j); + mcut *= mcut; + if (mcut > maxcut) maxcut = mcut; + cutsq[i][j] = cutsq[j][i] = mcut; + } else + cutsq[i][j] = cutsq[j][i] = 0.0; + } + } + double cell_size = sqrt(maxcut) + neighbor->skin; + + int maxspecial = 0; + if (atom->molecular != Atom::ATOMIC) maxspecial = atom->maxspecial; + int mnf = 5e-2 * neighbor->oneatom; + int success = + sph_heatconduction_gpu_init(atom->ntypes + 1, cutsq, cut, alpha, atom->mass, + domain->dimension, force->special_lj, atom->nlocal, + atom->nlocal + atom->nghost, + mnf, maxspecial, cell_size, gpu_mode, screen); + GPU_EXTRA::check_flag(success, error, world); + + acc_float = Info::has_accelerator_feature("GPU", "precision", "single"); + + if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); +} + +/* ---------------------------------------------------------------------- */ + +double PairSPHHeatConductionGPU::memory_usage() +{ + double bytes = Pair::memory_usage(); + return bytes + sph_heatconduction_gpu_bytes(); +} diff --git a/src/GPU/pair_sph_heatconduction_gpu.h b/src/GPU/pair_sph_heatconduction_gpu.h new file mode 100644 index 00000000000..571334017db --- /dev/null +++ b/src/GPU/pair_sph_heatconduction_gpu.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS +// clang-format off +PairStyle(sph/heatconduction/gpu,PairSPHHeatConductionGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_SPH_HEATCONDUCTION_GPU_H +#define LMP_PAIR_SPH_HEATCONDUCTION_GPU_H + +#include "pair_sph_heatconduction.h" + +namespace LAMMPS_NS { + +class PairSPHHeatConductionGPU : public PairSPHHeatConduction { + public: + PairSPHHeatConductionGPU(LAMMPS *lmp); + ~PairSPHHeatConductionGPU() override; + void cpu_compute(int, int, int, int, int *, int *, int **); + void compute(int, int) override; + void init_style() override; + double memory_usage() override; + + enum { GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH }; + + void *dE_pinned; + bool acc_float; + + private: + int gpu_mode; + double cpu_time; +}; + +} // namespace LAMMPS_NS +#endif +#endif From a365cb15b0c340b7f56fcca76f9ded4d495f5c0e Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sat, 9 Dec 2023 14:18:20 -0700 Subject: [PATCH 182/300] Updating class names in Intel --- src/INTEL/npair_halffull_intel.cpp | 8 ++++---- src/INTEL/npair_halffull_intel.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/INTEL/npair_halffull_intel.cpp b/src/INTEL/npair_halffull_intel.cpp index 5a70edae8b6..134b768cc51 100644 --- a/src/INTEL/npair_halffull_intel.cpp +++ b/src/INTEL/npair_halffull_intel.cpp @@ -257,7 +257,7 @@ void NPairHalffullNewtonIntel::build(NeighList *list) /* ---------------------------------------------------------------------- */ -NPairHalffullNewtonTrimIntel::NPairHalffullNewtonTrimIntel(LAMMPS *lmp) : NPair(lmp) { +NPairHalffullTrimNewtonIntel::NPairHalffullTrimNewtonIntel(LAMMPS *lmp) : NPair(lmp) { _fix = static_cast(modify->get_fix_by_id("package_intel")); if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); } @@ -270,7 +270,7 @@ NPairHalffullNewtonTrimIntel::NPairHalffullNewtonTrimIntel(LAMMPS *lmp) : NPair( ------------------------------------------------------------------------- */ template -void NPairHalffullNewtonTrimIntel::build_t(NeighList *list, +void NPairHalffullTrimNewtonIntel::build_t(NeighList *list, IntelBuffers *buffers) { const int inum_full = list->listfull->inum; @@ -408,7 +408,7 @@ void NPairHalffullNewtonTrimIntel::build_t(NeighList *list, ------------------------------------------------------------------------- */ template -void NPairHalffullNewtonTrimIntel::build_t3(NeighList *list, int *numhalf, +void NPairHalffullTrimNewtonIntel::build_t3(NeighList *list, int *numhalf, IntelBuffers *buffers) { const int inum_full = list->listfull->inum; @@ -498,7 +498,7 @@ void NPairHalffullNewtonTrimIntel::build_t3(NeighList *list, int *numhalf, /* ---------------------------------------------------------------------- */ -void NPairHalffullNewtonTrimIntel::build(NeighList *list) +void NPairHalffullTrimNewtonIntel::build(NeighList *list) { if (_fix->three_body_neighbor() == 0 || domain->triclinic) { if (_fix->precision() == FixIntel::PREC_MODE_MIXED) diff --git a/src/INTEL/npair_halffull_intel.h b/src/INTEL/npair_halffull_intel.h index d8ba031176b..a1f9adbbc4e 100644 --- a/src/INTEL/npair_halffull_intel.h +++ b/src/INTEL/npair_halffull_intel.h @@ -109,9 +109,9 @@ class NPairHalffullNewtonIntel : public NPair { template void build_t3(NeighList *, int *); }; -class NPairHalffullNewtonTrimIntel : public NPair { +class NPairHalffullTrimNewtonIntel : public NPair { public: - NPairHalffullNewtonTrimIntel(class LAMMPS *); + NPairHalffullTrimNewtonIntel(class LAMMPS *); void build(class NeighList *) override; protected: From 267e360bacf64a0ae8e3f2604bbebaea772e294f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 9 Dec 2023 15:39:54 -0600 Subject: [PATCH 183/300] Fixed bugs with acquiring depsh from lib/gpu, updated the doc page --- doc/src/pair_sph_heatconduction.rst | 3 +++ lib/gpu/lal_sph_heatconduction.cu | 18 +++++------------- lib/gpu/lal_sph_heatconduction_ext.cpp | 2 +- src/GPU/pair_sph_heatconduction_gpu.cpp | 3 +-- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/doc/src/pair_sph_heatconduction.rst b/doc/src/pair_sph_heatconduction.rst index 4716ed54fb5..e9004cb5a48 100644 --- a/doc/src/pair_sph_heatconduction.rst +++ b/doc/src/pair_sph_heatconduction.rst @@ -1,8 +1,11 @@ .. index:: pair_style sph/heatconduction +.. index:: pair_style sph/heatconduction/gpu pair_style sph/heatconduction command ===================================== +Accelerator Variants: *sph/heatconduction/gpu* + Syntax """""" diff --git a/lib/gpu/lal_sph_heatconduction.cu b/lib/gpu/lal_sph_heatconduction.cu index c88853e2cf0..4cea1433e35 100644 --- a/lib/gpu/lal_sph_heatconduction.cu +++ b/lib/gpu/lal_sph_heatconduction.cu @@ -82,7 +82,6 @@ __kernel void k_sph_heatconduction(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; numtyp mass_itype = mass[itype]; - numtyp4 iv; fetch4(iv,i,vel_tex); //v_[i]; const numtyp4 extrai = extra[i]; numtyp rhoi = extrai.x; @@ -96,7 +95,6 @@ __kernel void k_sph_heatconduction(const __global numtyp4 *restrict x_, numtyp4 jx; fetch4(jx,j,pos_tex); //x_[j]; int jtype=jx.w; - numtyp4 jv; fetch4(jv,j,vel_tex); //v_[j]; // Compute r12 numtyp delx = ix.x-jx.x; @@ -115,9 +113,8 @@ __kernel void k_sph_heatconduction(const __global numtyp4 *restrict x_, numtyp esphj = extraj.y; numtyp h = coeffy; // cut[itype][jtype] - ih = ucl_recip(h); // (numtyp)1.0 / h; + numtyp ih = ucl_recip(h); // (numtyp)1.0 / h; numtyp ihsq = ih * ih; - numtyp ihcub = ihsq * ih; numtyp wfd = h - ucl_sqrt(rsq); if (dimension == 3) { @@ -141,7 +138,7 @@ __kernel void k_sph_heatconduction(const __global numtyp4 *restrict x_, } // for nbor } // if ii - store_drhoE(dEacc,ii,inum,tid,t_per_atom,offset,drhoE); + store_drhoE(dEacc,ii,inum,tid,t_per_atom,offset,dE); } __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, @@ -172,7 +169,7 @@ __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, } __syncthreads(); #else - const numtyp coeffx=coeff_in[ONETYPE].x; // viscosity[itype][jtype] + const numtyp coeffx=coeff_in[ONETYPE].x; // alpha[itype][jtype] const numtyp coeffy=coeff_in[ONETYPE].y; // cut[itype][jtype] const numtyp cutsq_p=coeff_in[ONETYPE].z; // cutsq[itype][jtype] #endif @@ -193,8 +190,6 @@ __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, #ifndef ONETYPE int itype=fast_mul((int)MAX_SHARED_TYPES,iw); #endif - numtyp4 iv; fetch4(iv,i,vel_tex); //v_[i]; - int itag=iv.w; const numtyp4 extrai = extra[i]; numtyp rhoi = extrai.x; @@ -214,8 +209,6 @@ __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, int mtype=itype+jx.w; const numtyp cutsq_p=cutsq[mtype]; #endif - numtyp4 jv; fetch4(jv,j,vel_tex); //v_[j]; - int jtag=jv.w; // Compute r12 numtyp delx = ix.x-jx.x; @@ -226,7 +219,7 @@ __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, if (rsqgpu_rank(); int procs_per_gpu=SPHHeatConductionMF.device->procs_per_gpu(); - SPHHeatConductionMF.device->init_message(screen,"sph_lj",first_gpu,last_gpu); + SPHHeatConductionMF.device->init_message(screen,"sph_heatconduction",first_gpu,last_gpu); bool message=false; if (SPHHeatConductionMF.device->replica_me()==0 && screen) diff --git a/src/GPU/pair_sph_heatconduction_gpu.cpp b/src/GPU/pair_sph_heatconduction_gpu.cpp index c14a6df9376..0f0aa079c8b 100644 --- a/src/GPU/pair_sph_heatconduction_gpu.cpp +++ b/src/GPU/pair_sph_heatconduction_gpu.cpp @@ -94,7 +94,6 @@ void PairSPHHeatConductionGPU::compute(int eflag, int vflag) double *rho = atom->rho; double *esph = atom->esph; - double *cv = atom->cv; sph_heatconduction_gpu_get_extra_data(rho, esph); if (gpu_mode != GPU_FORCE) { @@ -140,7 +139,7 @@ void PairSPHHeatConductionGPU::compute(int eflag, int vflag) } } else { - auto dE_ptr = (float *)dE_pinned; + auto dE_ptr = (double *)dE_pinned; for (int i = 0; i < nlocal; i++) { desph[i] = dE_ptr[i]; } From e727ec1eace97dfb55bbe2a44c134a5bfbf0ecf1 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 9 Dec 2023 16:46:10 -0600 Subject: [PATCH 184/300] Fixed compiling bugs revealed by CUDA builds, removed unused variables --- lib/gpu/lal_sph_heatconduction.cu | 6 +----- lib/gpu/lal_sph_lj.cu | 24 +++++++++--------------- lib/gpu/lal_sph_taitwater.cu | 10 ---------- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/lib/gpu/lal_sph_heatconduction.cu b/lib/gpu/lal_sph_heatconduction.cu index 4cea1433e35..21c936347a7 100644 --- a/lib/gpu/lal_sph_heatconduction.cu +++ b/lib/gpu/lal_sph_heatconduction.cu @@ -160,10 +160,6 @@ __kernel void k_sph_heatconduction_fast(const __global numtyp4 *restrict x_, #ifndef ONETYPE __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; - __local numtyp sp_lj[4]; - if (tid<4) { - sp_lj[tid]=sp_lj_in[tid]; - } if (tid Date: Sat, 9 Dec 2023 22:00:22 -0700 Subject: [PATCH 185/300] Consolidating some skip npair classes --- src/npair_skip.cpp | 33 +++- src/npair_skip.h | 34 +++- src/npair_skip_respa.cpp | 49 ++++- src/npair_skip_respa.h | 14 +- src/npair_skip_size.cpp | 86 --------- src/npair_skip_size.h | 39 ---- src/npair_skip_size_off2on.cpp | 30 ++- src/npair_skip_size_off2on.h | 13 +- src/npair_skip_size_off2on_oneside.cpp | 44 ++++- src/npair_skip_size_off2on_oneside.h | 13 +- src/npair_skip_trim.cpp | 118 ------------ src/npair_skip_trim.h | 46 ----- src/npair_skip_trim_respa.cpp | 193 -------------------- src/npair_skip_trim_respa.h | 40 ---- src/npair_skip_trim_size.cpp | 102 ----------- src/npair_skip_trim_size.h | 39 ---- src/npair_skip_trim_size_off2on.cpp | 112 ------------ src/npair_skip_trim_size_off2on.h | 40 ---- src/npair_skip_trim_size_off2on_oneside.cpp | 185 ------------------- src/npair_skip_trim_size_off2on_oneside.h | 40 ---- 20 files changed, 214 insertions(+), 1056 deletions(-) delete mode 100644 src/npair_skip_size.cpp delete mode 100644 src/npair_skip_size.h delete mode 100644 src/npair_skip_trim.cpp delete mode 100644 src/npair_skip_trim.h delete mode 100644 src/npair_skip_trim_respa.cpp delete mode 100644 src/npair_skip_trim_respa.h delete mode 100644 src/npair_skip_trim_size.cpp delete mode 100644 src/npair_skip_trim_size.h delete mode 100644 src/npair_skip_trim_size_off2on.cpp delete mode 100644 src/npair_skip_trim_size_off2on.h delete mode 100644 src/npair_skip_trim_size_off2on_oneside.cpp delete mode 100644 src/npair_skip_trim_size_off2on_oneside.h diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp index d9d4fa491f6..fad06d699c3 100644 --- a/src/npair_skip.cpp +++ b/src/npair_skip.cpp @@ -22,7 +22,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} +template +NPairSkipTemp::NPairSkipTemp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- build skip list for subset of types from parent list @@ -32,7 +33,8 @@ NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {} if ghost, also store neighbors of ghost atoms & set inum,gnum correctly ------------------------------------------------------------------------- */ -void NPairSkip::build(NeighList *list) +template +void NPairSkipTemp::build(NeighList *list) { int i, j, ii, jj, n, itype, jnum, joriginal; int *neighptr, *jlist; @@ -57,6 +59,11 @@ void NPairSkip::build(NeighList *list) int inum = 0; ipage->reset(); + double **x = atom->x; + double xtmp, ytmp, ztmp; + double delx, dely, delz, rsq; + double cutsq_custom = cutoff_custom * cutoff_custom; + // loop over atoms in other list // skip I atom entirely if iskip is set for type[I] // skip I,J pair if ijskip is set for type[I],type[J] @@ -66,6 +73,12 @@ void NPairSkip::build(NeighList *list) itype = type[i]; if (iskip[itype]) continue; + if (TRIM) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + } + n = 0; neighptr = ipage->vget(); @@ -78,6 +91,15 @@ void NPairSkip::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; } @@ -100,3 +122,10 @@ void NPairSkip::build(NeighList *list) list->gnum = inum - num; } } + +namespace LAMMPS_NS { +template class NPairSkipTemp<0,0>; +template class NPairSkipTemp<1,0>; +template class NPairSkipTemp<0,1>; +template class NPairSkipTemp<1,1>; +} diff --git a/src/npair_skip.h b/src/npair_skip.h index 4e851747301..06da1be85be 100644 --- a/src/npair_skip.h +++ b/src/npair_skip.h @@ -13,17 +13,46 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairSkipTemp<0, 0> NPairSkip; NPairStyle(skip, NPairSkip, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); +typedef NPairSkipTemp<0, 0> NPairSkip; NPairStyle(skip/ghost, NPairSkip, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); + +typedef NPairSkipTemp<1, 0> NPairSkipSize; +NPairStyle(skip/half/size, + NPairSkipSize, + NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairSkipTemp<0, 1> NPairSkipTrim; +NPairStyle(skip/trim, + NPairSkipTrim, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); + +typedef NPairSkipTemp<0, 1> NPairSkipTrim; +NPairStyle(skip/ghost/trim, + NPairSkipTrim, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM); + +typedef NPairSkipTemp<1, 1> NPairSkipTrimSize; +NPairStyle(skip/trim/half/size, + NPairSkipTrimSize, + NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); + // clang-format on #else @@ -34,9 +63,10 @@ NPairStyle(skip/ghost, namespace LAMMPS_NS { -class NPairSkip : public NPair { +template +class NPairSkipTemp : public NPair { public: - NPairSkip(class LAMMPS *); + NPairSkipTemp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp index 81cfc8a7671..4c3dda91eb3 100644 --- a/src/npair_skip_respa.cpp +++ b/src/npair_skip_respa.cpp @@ -23,7 +23,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} +template +NPairSkipRespaTemp::NPairSkipRespaTemp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- build skip list for subset of types from parent list @@ -31,7 +32,8 @@ NPairSkipRespa::NPairSkipRespa(LAMMPS *lmp) : NPair(lmp) {} this is for respa lists, copy the inner/middle values from parent ------------------------------------------------------------------------- */ -void NPairSkipRespa::build(NeighList *list) +template +void NPairSkipRespaTemp::build(NeighList *list) { int i, j, ii, jj, n, itype, jnum, joriginal, n_inner, n_middle; int *neighptr, *jlist, *neighptr_inner, *neighptr_middle; @@ -76,6 +78,11 @@ void NPairSkipRespa::build(NeighList *list) ipage_inner->reset(); if (respamiddle) ipage_middle->reset(); + double **x = atom->x; + double xtmp, ytmp, ztmp; + double delx, dely, delz, rsq; + double cutsq_custom = cutoff_custom * cutoff_custom; + // loop over atoms in other list // skip I atom entirely if iskip is set for type[I] // skip I,J pair if ijskip is set for type[I],type[J] @@ -85,6 +92,12 @@ void NPairSkipRespa::build(NeighList *list) itype = type[i]; if (iskip[itype]) continue; + if (TRIM) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + } + n = n_inner = 0; neighptr = ipage->vget(); neighptr_inner = ipage_inner->vget(); @@ -102,6 +115,15 @@ void NPairSkipRespa::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; } @@ -114,6 +136,15 @@ void NPairSkipRespa::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + + if (TRIM) { + 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_custom) continue; + } + neighptr_inner[n_inner++] = joriginal; } @@ -127,6 +158,15 @@ void NPairSkipRespa::build(NeighList *list) joriginal = jlist[jj]; j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + + if (TRIM) { + 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_custom) continue; + } + neighptr_middle[n_middle++] = joriginal; } } @@ -158,3 +198,8 @@ void NPairSkipRespa::build(NeighList *list) list->inum_inner = inum; if (respamiddle) list->inum_middle = inum; } + +namespace LAMMPS_NS { +template class NPairSkipRespaTemp<0>; +template class NPairSkipRespaTemp<1>; +} diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h index 822fcc290b8..0fa4ece699f 100644 --- a/src/npair_skip_respa.h +++ b/src/npair_skip_respa.h @@ -13,11 +13,20 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairSkipRespaTemp<0> NPairSkipRespa; NPairStyle(skip/half/respa, NPairSkipRespa, NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairSkipRespaTemp<0> NPairSkipTrimRespa; +NPairStyle(skip/trim/half/respa, + NPairSkipTrimRespa, + NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); + // clang-format on #else @@ -28,9 +37,10 @@ NPairStyle(skip/half/respa, namespace LAMMPS_NS { -class NPairSkipRespa : public NPair { +template +class NPairSkipRespaTemp : public NPair { public: - NPairSkipRespa(class LAMMPS *); + NPairSkipRespaTemp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_skip_size.cpp b/src/npair_skip_size.cpp deleted file mode 100644 index 22883b4e601..00000000000 --- a/src/npair_skip_size.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_size.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipSize::NPairSkipSize(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip -------------------------------------------------------------------------- */ - -void NPairSkipSize::build(NeighList *list) -{ - int i, j, ii, jj, n, itype, jnum, joriginal; - int *neighptr, *jlist; - - int *type = atom->type; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_size.h b/src/npair_skip_size.h deleted file mode 100644 index 9c2f23447b8..00000000000 --- a/src/npair_skip_size.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/half/size, - NPairSkipSize, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_SIZE_H -#define LMP_NPAIR_SKIP_SIZE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipSize : public NPair { - public: - NPairSkipSize(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp index f1b6d2f4fbe..89e633b238e 100644 --- a/src/npair_skip_size_off2on.cpp +++ b/src/npair_skip_size_off2on.cpp @@ -22,7 +22,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} +template +NPairSkipSizeOff2onTemp::NPairSkipSizeOff2onTemp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- build skip list for subset of types from parent list @@ -30,7 +31,8 @@ NPairSkipSizeOff2on::NPairSkipSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} parent non-skip list used newton off, this skip list is newton on ------------------------------------------------------------------------- */ -void NPairSkipSizeOff2on::build(NeighList *list) +template +void NPairSkipSizeOff2onTemp::build(NeighList *list) { int i, j, ii, jj, n, itype, jnum, joriginal; tagint itag, jtag; @@ -56,6 +58,11 @@ void NPairSkipSizeOff2on::build(NeighList *list) int inum = 0; ipage->reset(); + double **x = atom->x; + double xtmp, ytmp, ztmp; + double delx, dely, delz, rsq; + double cutsq_custom = cutoff_custom * cutoff_custom; + // loop over atoms in other list // skip I atom entirely if iskip is set for type[I] // skip I,J pair if ijskip is set for type[I],type[J] @@ -66,6 +73,12 @@ void NPairSkipSizeOff2on::build(NeighList *list) if (iskip[itype]) continue; itag = tag[i]; + if (TRIM) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + } + n = 0; neighptr = ipage->vget(); @@ -84,6 +97,14 @@ void NPairSkipSizeOff2on::build(NeighList *list) jtag = tag[j]; if (j >= nlocal && jtag < itag) continue; + if (TRIM) { + 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_custom) continue; + } + neighptr[n++] = joriginal; } @@ -95,3 +116,8 @@ void NPairSkipSizeOff2on::build(NeighList *list) } list->inum = inum; } + +namespace LAMMPS_NS { +template class NPairSkipSizeOff2onTemp<0>; +template class NPairSkipSizeOff2onTemp<1>; +} diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h index faed76f6c35..e26d2cdd87b 100644 --- a/src/npair_skip_size_off2on.h +++ b/src/npair_skip_size_off2on.h @@ -13,11 +13,19 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairSkipSizeOff2onTemp<0> NPairSkipSizeOff2on; NPairStyle(skip/size/off2on, NPairSkipSizeOff2on, NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairSkipSizeOff2onTemp<0> NPairSkipTrimSizeOff2on; +NPairStyle(skip/trim/size/off2on, + NPairSkipTrimSizeOff2on, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); // clang-format on #else @@ -28,9 +36,10 @@ NPairStyle(skip/size/off2on, namespace LAMMPS_NS { -class NPairSkipSizeOff2on : public NPair { +template +class NPairSkipSizeOff2onTemp : public NPair { public: - NPairSkipSizeOff2on(class LAMMPS *); + NPairSkipSizeOff2onTemp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp index 8974da35b2b..7682b90d951 100644 --- a/src/npair_skip_size_off2on_oneside.cpp +++ b/src/npair_skip_size_off2on_oneside.cpp @@ -24,7 +24,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : +template +NPairSkipSizeOff2onOnesideTemp::NPairSkipSizeOff2onOnesideTemp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- @@ -34,7 +35,8 @@ NPairSkipSizeOff2onOneside::NPairSkipSizeOff2onOneside(LAMMPS *lmp) : this skip list is newton on and onesided ------------------------------------------------------------------------- */ -void NPairSkipSizeOff2onOneside::build(NeighList *list) +template +void NPairSkipSizeOff2onOnesideTemp::build(NeighList *list) { int i, j, ii, jj, itype, jnum, joriginal, flip, tmp; int *surf, *jlist; @@ -61,6 +63,11 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) int inum = 0; ipage->reset(); + double **x = atom->x; + double xtmp, ytmp, ztmp; + double delx, dely, delz, rsq; + double cutsq_custom = cutoff_custom * cutoff_custom; + // two loops over parent list required, one to count, one to store // because onesided constraint means pair I,J may be stored with I or J // so don't know in advance how much space to alloc for each atom's neighs @@ -76,6 +83,12 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) itype = type[i]; if (iskip[itype]) continue; + if (TRIM) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + } + // loop over parent non-skip size list jlist = firstneigh_skip[i]; @@ -86,6 +99,14 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + if (TRIM) { + 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_custom) continue; + } + // flip I,J if necessary to satisfy onesided constraint // do not keep if I is now ghost @@ -121,6 +142,12 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) itype = type[i]; if (iskip[itype]) continue; + if (TRIM) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + } + // loop over parent non-skip size list and optionally its history info jlist = firstneigh_skip[i]; @@ -131,6 +158,14 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) j = joriginal & NEIGHMASK; if (ijskip[itype][type[j]]) continue; + if (TRIM) { + 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_custom) continue; + } + // flip I,J if necessary to satisfy onesided constraint // do not keep if I is now ghost @@ -157,3 +192,8 @@ void NPairSkipSizeOff2onOneside::build(NeighList *list) list->inum = inum; } + +namespace LAMMPS_NS { +template class NPairSkipSizeOff2onOnesideTemp<0>; +template class NPairSkipSizeOff2onOnesideTemp<1>; +} diff --git a/src/npair_skip_size_off2on_oneside.h b/src/npair_skip_size_off2on_oneside.h index 48eccf7fafc..a5259ef04b8 100644 --- a/src/npair_skip_size_off2on_oneside.h +++ b/src/npair_skip_size_off2on_oneside.h @@ -13,11 +13,19 @@ #ifdef NPAIR_CLASS // clang-format off +typedef NPairSkipSizeOff2onOnesideTemp<0> NPairSkipSizeOff2onOneside; NPairStyle(skip/size/off2on/oneside, NPairSkipSizeOff2onOneside, NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); + +typedef NPairSkipSizeOff2onOnesideTemp<1> NPairSkipTrimSizeOff2onOneside; +NPairStyle(skip/trim/size/off2on/oneside, + NPairSkipTrimSizeOff2onOneside, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | + NP_ORTHO | NP_TRI | NP_TRIM); // clang-format on #else @@ -28,9 +36,10 @@ NPairStyle(skip/size/off2on/oneside, namespace LAMMPS_NS { -class NPairSkipSizeOff2onOneside : public NPair { +template +class NPairSkipSizeOff2onOnesideTemp : public NPair { public: - NPairSkipSizeOff2onOneside(class LAMMPS *); + NPairSkipSizeOff2onOnesideTemp(class LAMMPS *); void build(class NeighList *) override; }; diff --git a/src/npair_skip_trim.cpp b/src/npair_skip_trim.cpp deleted file mode 100644 index a286a7e19e1..00000000000 --- a/src/npair_skip_trim.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_trim.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrim::NPairSkipTrim(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - works for half and full lists - works for owned (non-ghost) list, also for ghost list - iskip and ijskip flag which atom types and type pairs to skip - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -void NPairSkipTrim::build(NeighList *list) -{ - int i, j, ii, jj, n, itype, jnum, joriginal; - int *neighptr, *jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int num_skip = list->listskip->inum; - if (list->ghost) num_skip += list->listskip->gnum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - double **x = atom->x; - double xtmp, ytmp, ztmp; - double delx, dely, delz, rsq; - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < num_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - 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"); - } - - list->inum = inum; - if (list->ghost) { - int num = 0; - for (i = 0; i < inum; i++) - if (ilist[i] < nlocal) - num++; - else - break; - list->inum = num; - list->gnum = inum - num; - } -} diff --git a/src/npair_skip_trim.h b/src/npair_skip_trim.h deleted file mode 100644 index f2a26d654ef..00000000000 --- a/src/npair_skip_trim.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim, - NPairSkipTrim, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); - -NPairStyle(skip/ghost/trim, - NPairSkipTrim, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_H -#define LMP_NPAIR_SKIP_TRIM_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipTrim : public NPair { - public: - NPairSkipTrim(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_skip_trim_respa.cpp b/src/npair_skip_trim_respa.cpp deleted file mode 100644 index 7dd040ca0a8..00000000000 --- a/src/npair_skip_trim_respa.cpp +++ /dev/null @@ -1,193 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_trim_respa.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimRespa::NPairSkipTrimRespa(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - this is for respa lists, copy the inner/middle values from parent -------------------------------------------------------------------------- */ - -void NPairSkipTrimRespa::build(NeighList *list) -{ - int i,j,ii,jj,n,itype,jnum,joriginal,n_inner,n_middle; - int *neighptr,*jlist,*neighptr_inner,*neighptr_middle; - - int *type = atom->type; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int *ilist_inner = list->ilist_inner; - int *numneigh_inner = list->numneigh_inner; - int **firstneigh_inner = list->firstneigh_inner; - MyPage *ipage_inner = list->ipage_inner; - int *numneigh_inner_skip = list->listskip->numneigh_inner; - int **firstneigh_inner_skip = list->listskip->firstneigh_inner; - - int *ilist_middle,*numneigh_middle,**firstneigh_middle; - MyPage *ipage_middle; - int *numneigh_middle_skip,**firstneigh_middle_skip; - int respamiddle = list->respamiddle; - if (respamiddle) { - ilist_middle = list->ilist_middle; - numneigh_middle = list->numneigh_middle; - firstneigh_middle = list->firstneigh_middle; - ipage_middle = list->ipage_middle; - numneigh_middle_skip = list->listskip->numneigh_middle; - firstneigh_middle_skip = list->listskip->firstneigh_middle; - } - - int inum = 0; - ipage->reset(); - ipage_inner->reset(); - if (respamiddle) ipage_middle->reset(); - - double **x = atom->x; - double xtmp, ytmp, ztmp; - double delx, dely, delz, rsq; - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - n = n_inner = 0; - neighptr = ipage->vget(); - neighptr_inner = ipage_inner->vget(); - if (respamiddle) { - n_middle = 0; - neighptr_middle = ipage_middle->vget(); - } - - // loop over parent outer rRESPA list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - neighptr[n++] = joriginal; - } - - // loop over parent inner rRESPA list - - jlist = firstneigh_inner_skip[i]; - jnum = numneigh_inner_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - neighptr_inner[n_inner++] = joriginal; - } - - // loop over parent middle rRESPA list - - if (respamiddle) { - jlist = firstneigh_middle_skip[i]; - jnum = numneigh_middle_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - neighptr_middle[n_middle++] = 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"); - - ilist_inner[inum] = i; - firstneigh_inner[i] = neighptr_inner; - numneigh_inner[i] = n_inner; - ipage_inner->vgot(n); - if (ipage_inner->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - if (respamiddle) { - ilist_middle[inum] = i; - firstneigh_middle[i] = neighptr_middle; - numneigh_middle[i] = n_middle; - ipage_middle->vgot(n); - if (ipage_middle->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - inum++; - } - - list->inum = inum; - list->inum_inner = inum; - if (respamiddle) list->inum_middle = inum; -} diff --git a/src/npair_skip_trim_respa.h b/src/npair_skip_trim_respa.h deleted file mode 100644 index dcfe71c28d0..00000000000 --- a/src/npair_skip_trim_respa.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/half/respa, - NPairSkipTrimRespa, - NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_RESPA_H -#define LMP_NPAIR_SKIP_TRIM_RESPA_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipTrimRespa : public NPair { - public: - NPairSkipTrimRespa(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_skip_trim_size.cpp b/src/npair_skip_trim_size.cpp deleted file mode 100644 index fab70a78b51..00000000000 --- a/src/npair_skip_trim_size.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_trim_size.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimSize::NPairSkipTrimSize(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip -------------------------------------------------------------------------- */ - -void NPairSkipTrimSize::build(NeighList *list) -{ - int i, j, ii, jj, n, itype, jnum, joriginal; - int *neighptr, *jlist; - - int *type = atom->type; - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - double **x = atom->x; - double xtmp, ytmp, ztmp; - double delx, dely, delz, rsq; - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - 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"); - } - - list->inum = inum; -} diff --git a/src/npair_skip_trim_size.h b/src/npair_skip_trim_size.h deleted file mode 100644 index 3b536860caf..00000000000 --- a/src/npair_skip_trim_size.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/half/size, - NPairSkipTrimSize, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_SIZE_H -#define LMP_NPAIR_SKIP_TRIM_SIZE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipTrimSize : public NPair { - public: - NPairSkipTrimSize(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_skip_trim_size_off2on.cpp b/src/npair_skip_trim_size_off2on.cpp deleted file mode 100644 index 3e9a1e5f633..00000000000 --- a/src/npair_skip_trim_size_off2on.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_trim_size_off2on.h" - -#include "atom.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimSizeOff2on::NPairSkipTrimSizeOff2on(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off, this skip list is newton on -------------------------------------------------------------------------- */ - -void NPairSkipTrimSizeOff2on::build(NeighList *list) -{ - int i, j, ii, jj, n, itype, jnum, joriginal; - tagint itag, jtag; - int *neighptr, *jlist; - - tagint *tag = atom->tag; - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - int inum = 0; - ipage->reset(); - - double **x = atom->x; - double xtmp, ytmp, ztmp; - double delx, dely, delz, rsq; - double cutsq_custom = cutoff_custom * cutoff_custom; - - // loop over atoms in other list - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - itag = tag[i]; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - n = 0; - neighptr = ipage->vget(); - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) continue; - - // only keep I,J when J = ghost if Itag < Jtag - - jtag = tag[j]; - if (j >= nlocal && jtag < itag) 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 > cutsq_custom) continue; - - 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"); - } - list->inum = inum; -} diff --git a/src/npair_skip_trim_size_off2on.h b/src/npair_skip_trim_size_off2on.h deleted file mode 100644 index 6e520823296..00000000000 --- a/src/npair_skip_trim_size_off2on.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/size/off2on, - NPairSkipTrimSizeOff2on, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_SIZE_OFF2ON_H -#define LMP_NPAIR_SKIP_TRIM_SIZE_OFF2ON_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipTrimSizeOff2on : public NPair { - public: - NPairSkipTrimSizeOff2on(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif diff --git a/src/npair_skip_trim_size_off2on_oneside.cpp b/src/npair_skip_trim_size_off2on_oneside.cpp deleted file mode 100644 index 9d43ac80872..00000000000 --- a/src/npair_skip_trim_size_off2on_oneside.cpp +++ /dev/null @@ -1,185 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#include "npair_skip_trim_size_off2on_oneside.h" - -#include "atom.h" -#include "domain.h" -#include "error.h" -#include "my_page.h" -#include "neigh_list.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimSizeOff2onOneside::NPairSkipTrimSizeOff2onOneside(LAMMPS *lmp) : - NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - iskip and ijskip flag which atom types and type pairs to skip - parent non-skip list used newton off and was not onesided, - this skip list is newton on and onesided -------------------------------------------------------------------------- */ - -void NPairSkipTrimSizeOff2onOneside::build(NeighList *list) -{ - int i,j,ii,jj,itype,jnum,joriginal,flip,tmp; - int *surf,*jlist; - - int *type = atom->type; - int nlocal = atom->nlocal; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_skip = list->listskip->ilist; - int *numneigh_skip = list->listskip->numneigh; - int **firstneigh_skip = list->listskip->firstneigh; - int inum_skip = list->listskip->inum; - - int *iskip = list->iskip; - int **ijskip = list->ijskip; - - if (domain->dimension == 2) surf = atom->line; - else surf = atom->tri; - - int inum = 0; - ipage->reset(); - - double **x = atom->x; - double xtmp, ytmp, ztmp; - double delx, dely, delz, rsq; - double cutsq_custom = cutoff_custom * cutoff_custom; - - // two loops over parent list required, one to count, one to store - // because onesided constraint means pair I,J may be stored with I or J - // so don't know in advance how much space to alloc for each atom's neighs - - // first loop over atoms in other list to count neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over parent non-skip size list - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - numneigh[i]++; - if (flip) i = j; - } - } - - // allocate all per-atom neigh list chunks - - for (i = 0; i < nlocal; i++) { - if (numneigh[i] == 0) continue; - firstneigh[i] = ipage->get(numneigh[i]); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - // second loop over atoms in other list to store neighbors - // skip I atom entirely if iskip is set for type[I] - // skip I,J pair if ijskip is set for type[I],type[J] - - for (i = 0; i < nlocal; i++) numneigh[i] = 0; - - for (ii = 0; ii < inum_skip; ii++) { - i = ilist_skip[ii]; - itype = type[i]; - if (iskip[itype]) continue; - - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - - // loop over parent non-skip size list and optionally its history info - - jlist = firstneigh_skip[i]; - jnum = numneigh_skip[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (ijskip[itype][type[j]]) 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 > cutsq_custom) continue; - - // flip I,J if necessary to satisfy onesided constraint - // do not keep if I is now ghost - - if (surf[i] >= 0) { - if (j >= nlocal) continue; - tmp = i; - i = j; - j = tmp; - flip = 1; - } else flip = 0; - - // store j in neigh list, not joriginal, like other neigh methods - // OK, b/c there is no special list flagging for surfs - - firstneigh[i][numneigh[i]] = j; - numneigh[i]++; - if (flip) i = j; - } - - // only add atom I to ilist if it has neighbors - - if (numneigh[i]) ilist[inum++] = i; - } - - list->inum = inum; -} diff --git a/src/npair_skip_trim_size_off2on_oneside.h b/src/npair_skip_trim_size_off2on_oneside.h deleted file mode 100644 index 27861123ddb..00000000000 --- a/src/npair_skip_trim_size_off2on_oneside.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/size/off2on/oneside, - NPairSkipTrimSizeOff2onOneside, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI | NP_TRIM); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_SIZE_OFF2ON_ONESIDE_H -#define LMP_NPAIR_SKIP_TRIM_SIZE_OFF2ON_ONESIDE_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairSkipTrimSizeOff2onOneside : public NPair { - public: - NPairSkipTrimSizeOff2onOneside(class LAMMPS *); - void build(class NeighList *) override; -}; - -} // namespace LAMMPS_NS - -#endif -#endif From 9a625b715aa822af3ec96a9928089e425e74d582 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 10 Dec 2023 09:43:39 -0500 Subject: [PATCH 186/300] use Langevin thermostat with fix rigid/small instead of fix rigid/nvt/small also intra-molecular non-bonded interactions are excluded now --- doc/src/Howto_tip4p.rst | 21 ++++++++++++--------- doc/src/Howto_tip5p.rst | 14 ++++++++------ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/doc/src/Howto_tip4p.rst b/doc/src/Howto_tip4p.rst index 4d9b514e0d6..bc6e91b6b05 100644 --- a/doc/src/Howto_tip4p.rst +++ b/doc/src/Howto_tip4p.rst @@ -193,11 +193,14 @@ file changed): write_data tip4p-implicit.data nocoeff Below is the code for a LAMMPS input file using the explicit method and -a TIP4P molecule file. Because of using :doc:`fix rigid/nvt/small +a TIP4P molecule file. Because of using :doc:`fix rigid/small ` no bonds need to be defined and thus no extra storage needs -to be reserved for them, but we need to switch to atom style full or use -:doc:`fix property/atom mol ` so that fix -rigid/nvt/small can identify rigid bodies by their molecule ID: +to be reserved for them, but we need to either switch to atom style full +or use :doc:`fix property/atom mol ` so that fix +rigid/small can identify rigid bodies by their molecule ID. Also a +:doc:`neigh_modify exclude ` command is added to exclude +computing intramolecular non-bonded interactions, since those are +removed by the rigid fix anyway: .. code-block:: LAMMPS @@ -216,17 +219,17 @@ rigid/nvt/small can identify rigid bodies by their molecule ID: pair_coeff 2 2 0.0 1.0 pair_coeff 3 3 0.0 1.0 - fix mol all property/atom mol + fix mol all property/atom mol ghost yes molecule water tip4p.mol create_atoms 0 random 33 34564 NULL mol water 25367 overlap 1.33 + neigh_modify exclude molecule/intra all timestep 0.5 - fix integrate all rigid/nvt/small molecule temp 300.0 300.0 100.0 - velocity all create 300.0 5463576 + fix integrate all rigid/small molecule langevin 300.0 300.0 100.0 2345634 thermo_style custom step temp press etotal density pe ke - thermo 1000 - run 20000 + thermo 2000 + run 40000 write_data tip4p-explicit.data nocoeff .. _tip4p_molecule: diff --git a/doc/src/Howto_tip5p.rst b/doc/src/Howto_tip5p.rst index 10674a04b63..4bb97548752 100644 --- a/doc/src/Howto_tip5p.rst +++ b/doc/src/Howto_tip5p.rst @@ -81,11 +81,13 @@ long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS). Below is the code for a LAMMPS input file for setting up a simulation of TIP5P water with a molecule file. Because of using :doc:`fix -rigid/nvt/small ` no bonds need to be defined and thus no -extra storage needs to be reserved for them, but we need to switch to +rigid/small ` no bonds need to be defined and thus no extra +storage needs to be reserved for them, but we need to either switch to atom style full or use :doc:`fix property/atom mol ` -so that fix rigid/nvt/small can identify rigid bodies by their molecule -ID: +so that fix rigid/small can identify rigid bodies by their molecule ID. +Also a :doc:`neigh_modify exclude ` command is added to +exclude computing intramolecular non-bonded interactions, since those +are removed by the rigid fix anyway: .. code-block:: LAMMPS @@ -107,11 +109,11 @@ ID: fix mol all property/atom mol molecule water tip5p.mol create_atoms 0 random 33 34564 NULL mol water 25367 overlap 1.33 + neigh_modify exclude molecule/intra all timestep 0.5 - fix integrate all rigid/nvt/small molecule temp 300.0 300.0 100.0 + fix integrate all rigid/small molecule langevin 300.0 300.0 50.0 235664 reset_timestep 0 - velocity all create 300.0 5463576 thermo_style custom step temp press etotal density pe ke thermo 1000 From 37535267daae2cc162ac9262c1c3dcea762f38ef Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 10 Dec 2023 15:27:50 -0500 Subject: [PATCH 187/300] clarify docs about fix phonon dependency on KSPACE --- doc/src/Packages_details.rst | 2 +- doc/src/fix_phonon.rst | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 12aa8eeb52f..a3d65d9d650 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -2226,7 +2226,7 @@ and third order tensor from finite differences. **Install:** -The PHONON package requires that also the :ref:`KSPACE ` +The fix phonon command also requires that the :ref:`KSPACE ` package is installed. diff --git a/doc/src/fix_phonon.rst b/doc/src/fix_phonon.rst index e99d2b68913..6c336dc0910 100644 --- a/doc/src/fix_phonon.rst +++ b/doc/src/fix_phonon.rst @@ -181,10 +181,10 @@ This fix assumes a crystalline system with periodical lattice. The temperature of the system should not exceed the melting temperature to keep the system in its solid state. -This fix is part of the PHONON package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. - -This fix requires LAMMPS be built with an FFT library. See the :doc:`Build settings ` page for details. +This fix is part of the PHONON package. It is only enabled if LAMMPS +was built with that package. This fix also requires LAMMPS to be built +with 3d-FFT support which is included in the KSPACE package. See the +:doc:`Build package ` page for more info. Related commands """""""""""""""" From 76bf35fa4ddb14d62fdc1fd877b6baa0e2c2f9a0 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 10 Dec 2023 14:42:27 -0600 Subject: [PATCH 188/300] Added -allow-unsupported-compiler to nvcc for both CMake and traditional CUDA builds --- cmake/Modules/Packages/GPU.cmake | 4 ++-- lib/gpu/Makefile.linux_multi | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 47be8b85388..4c3288df842 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -151,10 +151,10 @@ if(GPU_API STREQUAL "CUDA") endif() cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC} - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES}) + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -allow-unsupported-compiler -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES}) cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES}) + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -allow-unsupported-compiler -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES}) foreach(CU_OBJ ${GPU_GEN_OBJS}) get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) diff --git a/lib/gpu/Makefile.linux_multi b/lib/gpu/Makefile.linux_multi index 3299bbec3a4..005f6590794 100644 --- a/lib/gpu/Makefile.linux_multi +++ b/lib/gpu/Makefile.linux_multi @@ -65,7 +65,7 @@ CUDA_PRECISION = -D_SINGLE_DOUBLE CUDA_INCLUDE = -I$(CUDA_HOME)/include CUDA_LIB = -L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib64/stubs -CUDA_OPTS = -DUNIX -O3 --use_fast_math $(LMP_INC) -Xcompiler -fPIC +CUDA_OPTS = -DUNIX -O3 --use_fast_math $(LMP_INC) -Xcompiler -fPIC -allow-unsupported-compiler CUDR_CPP = mpicxx -DMPI_GERYON -DUCL_NO_EXIT -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1 -fPIC -std=c++11 CUDR_OPTS = -O2 $(LMP_INC) # -xHost -no-prec-div -ansi-alias From 7c4017018233fc7f851889656b974651f4f0dc21 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Sun, 10 Dec 2023 21:37:13 -0700 Subject: [PATCH 189/300] Fixing errors in headers --- src/OPENMP/npair_skip_omp.h | 36 +++++++++++++++++++++ src/OPENMP/npair_skip_trim_omp.h | 55 -------------------------------- src/npair_skip_respa.h | 2 +- src/npair_skip_size_off2on.h | 2 +- 4 files changed, 38 insertions(+), 57 deletions(-) delete mode 100644 src/OPENMP/npair_skip_trim_omp.h diff --git a/src/OPENMP/npair_skip_omp.h b/src/OPENMP/npair_skip_omp.h index ce61968c175..937304ad3fd 100644 --- a/src/OPENMP/npair_skip_omp.h +++ b/src/OPENMP/npair_skip_omp.h @@ -16,6 +16,7 @@ #ifdef NPAIR_CLASS // clang-format off + NPairStyle(skip/omp, NPairSkip, NP_SKIP | NP_HALF | NP_FULL | @@ -50,6 +51,41 @@ NPairStyle(skip/ghost/omp, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_OMP | NP_GHOST); + +NPairStyle(skip/trim/omp, + NPairSkipTrim, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +NPairStyle(skip/trim/half/respa/omp, + NPairSkipTrimRespa, + NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +NPairStyle(skip/trim/half/size/omp, + NPairSkipTrimSize, + NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +NPairStyle(skip/trim/size/off2on/omp, + NPairSkipTrimSizeOff2on, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +NPairStyle(skip/trim/size/off2on/oneside/omp, + NPairSkipTrimSizeOff2onOneside, + NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | + NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); + +NPairStyle(skip/trim/ghost/omp, + NPairSkipTrim, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP | NP_GHOST); // clang-format off #endif diff --git a/src/OPENMP/npair_skip_trim_omp.h b/src/OPENMP/npair_skip_trim_omp.h deleted file mode 100644 index aba6f50e17c..00000000000 --- a/src/OPENMP/npair_skip_trim_omp.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -// There is no benefit from multi-threading for skip lists, so we -// just forward the requests to the corresponding non-omp versions. - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/omp, - NPairSkipTrim, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(skip/trim/half/respa/omp, - NPairSkipTrimRespa, - NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(skip/trim/half/size/omp, - NPairSkipTrimSize, - NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(skip/trim/size/off2on/omp, - NPairSkipTrimSizeOff2on, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(skip/trim/size/off2on/oneside/omp, - NPairSkipTrimSizeOff2onOneside, - NP_SKIP | NP_SIZE | NP_OFF2ON | NP_ONESIDE | NP_HALF | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | - NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP); - -NPairStyle(skip/trim/ghost/omp, - NPairSkipTrim, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_OMP | NP_GHOST); -// clang-format off -#endif - diff --git a/src/npair_skip_respa.h b/src/npair_skip_respa.h index 0fa4ece699f..af25e84faf3 100644 --- a/src/npair_skip_respa.h +++ b/src/npair_skip_respa.h @@ -20,7 +20,7 @@ NPairStyle(skip/half/respa, NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairSkipRespaTemp<0> NPairSkipTrimRespa; +typedef NPairSkipRespaTemp<1> NPairSkipTrimRespa; NPairStyle(skip/trim/half/respa, NPairSkipTrimRespa, NP_SKIP | NP_RESPA | NP_HALF | NP_FULL | diff --git a/src/npair_skip_size_off2on.h b/src/npair_skip_size_off2on.h index e26d2cdd87b..b86100ae20a 100644 --- a/src/npair_skip_size_off2on.h +++ b/src/npair_skip_size_off2on.h @@ -20,7 +20,7 @@ NPairStyle(skip/size/off2on, NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairSkipSizeOff2onTemp<0> NPairSkipTrimSizeOff2on; +typedef NPairSkipSizeOff2onTemp<1> NPairSkipTrimSizeOff2on; NPairStyle(skip/trim/size/off2on, NPairSkipTrimSizeOff2on, NP_SKIP | NP_SIZE | NP_OFF2ON | NP_HALF | From 25bb1633c36cb58414f0a617294e3a1f4ad54b18 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 09:48:07 -0500 Subject: [PATCH 190/300] fix typo and be more precise in describing what "Loop" time means --- doc/src/Run_output.rst | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/src/Run_output.rst b/doc/src/Run_output.rst index b1458f056d1..2025bf5321d 100644 --- a/doc/src/Run_output.rst +++ b/doc/src/Run_output.rst @@ -49,14 +49,17 @@ simulation. An example set of statistics is shown here: ---------- The first section provides a global loop timing summary. The *loop time* -is the total wall-clock time for the simulation to run. The -*Performance* line is provided for convenience to help predict how long -it will take to run a desired physical simulation and to have numbers -useful for performance comparison between different simulation settings -or system sizes. The *CPU use* line provides the CPU utilization per -MPI task; it should be close to 100% times the number of OpenMP threads -(or 1 of not using OpenMP). Lower numbers correspond to delays due to -file I/O or insufficient thread utilization. +is the total wall-clock time for the MD steps of the simulation run, +excluding the time for initialization and setup (i.e. the parts that may +be skipped with :doc:`run N pre no `). The *Performance* line is +provided for convenience to help predict how long it will take to run a +desired physical simulation and to have numbers useful for performance +comparison between different simulation settings or system sizes. The +*CPU use* line provides the CPU utilization per MPI task; it should be +close to 100% times the number of OpenMP threads (or 1 if not using +OpenMP). Lower numbers correspond to delays due to file I/O or +insufficient thread utilization from parts of the code that have not +been multi-threaded. ---------- From af74afdf629a08110f0793e3c0b0e7088a71c508 Mon Sep 17 00:00:00 2001 From: jtclemm Date: Mon, 11 Dec 2023 09:02:55 -0700 Subject: [PATCH 191/300] Editing intel files (to be templated) --- src/INTEL/npair_skip_intel.cpp | 243 ++++++++++++++++++++++++- src/INTEL/npair_skip_intel.h | 28 +++ src/INTEL/npair_skip_trim_intel.cpp | 271 ---------------------------- src/INTEL/npair_skip_trim_intel.h | 62 ------- 4 files changed, 270 insertions(+), 334 deletions(-) delete mode 100644 src/INTEL/npair_skip_trim_intel.cpp delete mode 100644 src/INTEL/npair_skip_trim_intel.h diff --git a/src/INTEL/npair_skip_intel.cpp b/src/INTEL/npair_skip_intel.cpp index b023955dd90..8840f7ee431 100644 --- a/src/INTEL/npair_skip_intel.cpp +++ b/src/INTEL/npair_skip_intel.cpp @@ -13,7 +13,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: W. Michael Brown (Intel) + Contributing author: W. Michael Brown (Intel), Stan Moore (SNL) ------------------------------------------------------------------------- */ #include "npair_skip_intel.h" @@ -224,3 +224,244 @@ void NPairSkipIntel::build(NeighList *list) } } } + +/* ---------------------------------------------------------------------- */ + +NPairSkipTrimIntel::NPairSkipTrimIntel(LAMMPS *lmp) : NPair(lmp) { + _fix = static_cast(modify->get_fix_by_id("package_intel")); + if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); + _inum_starts = new int[comm->nthreads]; + _inum_counts = new int[comm->nthreads]; + _full_props = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +NPairSkipTrimIntel::~NPairSkipTrimIntel() { + delete []_inum_starts; + delete []_inum_counts; + delete[] _full_props; +} + +/* ---------------------------------------------------------------------- */ + +void NPairSkipTrimIntel::copy_neighbor_info() +{ + NPair::copy_neighbor_info(); + // Only need to set _full_props once; npair object deleted for changes + if (_full_props) return; + _full_props = new int[neighbor->nrequest]; + for (int i = 0; i < neighbor->nrequest; i++) + _full_props[i] = neighbor->requests[i]->full; +} + +/* ---------------------------------------------------------------------- + build skip list for subset of types from parent list + works for half and full lists + works for owned (non-ghost) list, also for ghost list + iskip and ijskip flag which atom types and type pairs to skip + if ghost, also store neighbors of ghost atoms & set inum,gnum correctly +------------------------------------------------------------------------- */ + +template +void NPairSkipTrimIntel::build_t(NeighList *list, int *numhalf, int *cnumneigh, + int *numhalf_skip, IntelBuffers *buffers) +{ + const int nlocal = atom->nlocal; + const int e_nall = nlocal + atom->nghost; + const ATOM_T * _noalias const x = buffers->get_x(); + const int * _noalias const type = atom->type; + int * _noalias const ilist = list->ilist; + int * _noalias const numneigh = list->numneigh; + int ** _noalias const firstneigh = (int ** const)list->firstneigh; // NOLINT + const int * _noalias const ilist_skip = list->listskip->ilist; + const int * _noalias const numneigh_skip = list->listskip->numneigh; + const int ** _noalias const firstneigh_skip = (const int ** const)list->listskip->firstneigh; // NOLINT + const int * _noalias const iskip = list->iskip; + const int ** _noalias const ijskip = (const int ** const)list->ijskip; // NOLINT + + const flt_t cutsq_custom = cutoff_custom * cutoff_custom; + int num_skip = list->listskip->inum; + if (list->ghost) num_skip += list->listskip->gnum; + + int packthreads; + if (comm->nthreads > INTEL_HTHREADS && THREE==0) + packthreads = comm->nthreads; + else + packthreads = 1; + + #if defined(_OPENMP) + #pragma omp parallel if (packthreads > 1) + #endif + { + int tid, ifrom, ito; + IP_PRE_omp_range_id(ifrom, ito, tid, num_skip, packthreads); + + // each thread has its own page allocator + MyPage &ipage = list->ipage[tid]; + ipage.reset(); + + int my_inum = ifrom; + _inum_starts[tid] = ifrom; + + // loop over parent full list + for (int ii = ifrom; ii < ito; ii++) { + const int i = ilist_skip[ii]; + const int itype = type[i]; + if (iskip[itype]) continue; + + const flt_t xtmp = x[i].x; + const flt_t ytmp = x[i].y; + const flt_t ztmp = x[i].z; + + int n = 0; + int *neighptr = ipage.vget(); + + // loop over parent non-skip list + + const int * _noalias const jlist = firstneigh_skip[i]; + const int jnum = numneigh_skip[i]; + + if (THREE) { + const int jnumhalf = numhalf_skip[ii]; + for (int jj = 0; jj < jnumhalf; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + + int addme = 1; + if (ijskip[itype][type[j]]) addme = 0; + + // trim to shorter cutoff + + const flt_t delx = xtmp - x[j].x; + const flt_t dely = ytmp - x[j].y; + const flt_t delz = ztmp - x[j].z; + const flt_t rsq = delx * delx + dely * dely + delz * delz; + if (rsq > cutsq_custom) addme = 0; + + if (addme) + neighptr[n++] = joriginal; + } + numhalf[my_inum] = n; + + for (int jj = jnumhalf; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + + int addme = 1; + if (ijskip[itype][type[j]]) addme = 0; + + // trim to shorter cutoff + + const flt_t delx = xtmp - x[j].x; + const flt_t dely = ytmp - x[j].y; + const flt_t delz = ztmp - x[j].z; + const flt_t rsq = delx * delx + dely * dely + delz * delz; + if (rsq > cutsq_custom) addme = 0; + + if (addme) + neighptr[n++] = joriginal; + } + } else { + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma ivdep + #endif + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = jlist[jj]; + const int j = joriginal & NEIGHMASK; + + int addme = 1; + if (ijskip[itype][type[j]]) addme = 0; + + // trim to shorter cutoff + + const flt_t delx = xtmp - x[j].x; + const flt_t dely = ytmp - x[j].y; + const flt_t delz = ztmp - x[j].z; + const flt_t rsq = delx * delx + dely * dely + delz * delz; + if (rsq > cutsq_custom) addme = 0; + + if (addme) + neighptr[n++] = joriginal; + } + } + + ilist[my_inum++] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + + int pad_end = n; + IP_PRE_neighbor_pad(pad_end, 0); + #if defined(LMP_SIMD_COMPILER) + #pragma vector aligned + #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ + avg=INTEL_COMPILE_WIDTH/2 + #endif + for ( ; n < pad_end; n++) + neighptr[n] = e_nall; + + ipage.vgot(n); + if (ipage.status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } + + int last_inum = 0, loop_end; + _inum_counts[tid] = my_inum; + } + int inum = _inum_counts[0]; + for (int tid = 1; tid < packthreads; tid++) { + for (int i = _inum_starts[tid]; i < _inum_counts[tid]; i++) { + if (THREE) numhalf[inum] = numhalf[i]; + ilist[inum++] = ilist[i]; + } + } + list->inum = inum; + + if (THREE && num_skip > 0) { + int * const list_start = firstneigh[ilist[0]]; + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + cnumneigh[ii] = static_cast(firstneigh[i] - list_start); + } + } + if (list->ghost) { + int num = 0; + int my_inum = list->inum; + for (int i = 0; i < my_inum; i++) + if (ilist[i] < nlocal) num++; + else break; + list->inum = num; + list->gnum = my_inum - num; + } +} + +/* ---------------------------------------------------------------------- */ + +void NPairSkipTrimIntel::build(NeighList *list) +{ + if (_fix->three_body_neighbor()==0 || + _full_props[list->listskip->index] == 0) { + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) + build_t(list, nullptr, nullptr, nullptr, _fix->get_mixed_buffers()); + else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) + build_t(list, nullptr, nullptr, nullptr, _fix->get_double_buffers()); + else + build_t(list, nullptr, nullptr, nullptr, _fix->get_single_buffers()); + } else { + int *nhalf, *cnumneigh, *nhalf_skip, *u; + if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { + _fix->get_mixed_buffers()->get_list_data3(list->listskip,nhalf_skip,u); + _fix->get_mixed_buffers()->grow_data3(list, nhalf, cnumneigh); + build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_mixed_buffers()); + } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { + _fix->get_double_buffers()->get_list_data3(list->listskip,nhalf_skip,u); + _fix->get_double_buffers()->grow_data3(list, nhalf, cnumneigh); + build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_double_buffers()); + } else { + _fix->get_single_buffers()->get_list_data3(list->listskip,nhalf_skip,u); + _fix->get_single_buffers()->grow_data3(list,nhalf,cnumneigh); + build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_single_buffers()); + } + } +} diff --git a/src/INTEL/npair_skip_intel.h b/src/INTEL/npair_skip_intel.h index d38173895af..993f64bf962 100644 --- a/src/INTEL/npair_skip_intel.h +++ b/src/INTEL/npair_skip_intel.h @@ -25,6 +25,18 @@ NPairStyle(skip/ghost/intel, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST | NP_INTEL); + +NPairStyle(skip/trim/intel, + NPairSkipTrimIntel, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); + +NPairStyle(skip/trim/ghost/intel, + NPairSkipTrimIntel, + NP_SKIP | NP_HALF | NP_FULL | + NP_NSQ | NP_BIN | NP_MULTI | + NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_GHOST | NP_INTEL); // clang-format on #else @@ -55,6 +67,22 @@ class NPairSkipIntel : public NPair { void build_t(NeighList *, int *numhalf, int *cnumneigh, int *numhalf_skip); }; +class NPairSkipTrimIntel : public NPair { + public: + NPairSkipTrimIntel(class LAMMPS *); + ~NPairSkipTrimIntel() override; + void copy_neighbor_info() override; + void build(class NeighList *) override; + + protected: + FixIntel *_fix; + int *_inum_starts, *_inum_counts, *_full_props; + + template + void build_t(NeighList *, int *numhalf, int *cnumneigh, int *numhalf_skip, + IntelBuffers *); +}; + } // namespace LAMMPS_NS #endif diff --git a/src/INTEL/npair_skip_trim_intel.cpp b/src/INTEL/npair_skip_trim_intel.cpp deleted file mode 100644 index e16e1bc4132..00000000000 --- a/src/INTEL/npair_skip_trim_intel.cpp +++ /dev/null @@ -1,271 +0,0 @@ -// clang-format off -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) -------------------------------------------------------------------------- */ - -#include "npair_skip_trim_intel.h" - -#include "atom.h" -#include "comm.h" -#include "error.h" -#include "modify.h" -#include "my_page.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "neighbor.h" - -using namespace LAMMPS_NS; - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimIntel::NPairSkipTrimIntel(LAMMPS *lmp) : NPair(lmp) { - _fix = static_cast(modify->get_fix_by_id("package_intel")); - if (!_fix) error->all(FLERR, "The 'package intel' command is required for /intel styles"); - _inum_starts = new int[comm->nthreads]; - _inum_counts = new int[comm->nthreads]; - _full_props = nullptr; -} - -/* ---------------------------------------------------------------------- */ - -NPairSkipTrimIntel::~NPairSkipTrimIntel() { - delete []_inum_starts; - delete []_inum_counts; - delete[] _full_props; -} - -/* ---------------------------------------------------------------------- */ - -void NPairSkipTrimIntel::copy_neighbor_info() -{ - NPair::copy_neighbor_info(); - // Only need to set _full_props once; npair object deleted for changes - if (_full_props) return; - _full_props = new int[neighbor->nrequest]; - for (int i = 0; i < neighbor->nrequest; i++) - _full_props[i] = neighbor->requests[i]->full; -} - -/* ---------------------------------------------------------------------- - build skip list for subset of types from parent list - works for half and full lists - works for owned (non-ghost) list, also for ghost list - iskip and ijskip flag which atom types and type pairs to skip - if ghost, also store neighbors of ghost atoms & set inum,gnum correctly -------------------------------------------------------------------------- */ - -template -void NPairSkipTrimIntel::build_t(NeighList *list, int *numhalf, int *cnumneigh, - int *numhalf_skip, IntelBuffers *buffers) -{ - const int nlocal = atom->nlocal; - const int e_nall = nlocal + atom->nghost; - const ATOM_T * _noalias const x = buffers->get_x(); - const int * _noalias const type = atom->type; - int * _noalias const ilist = list->ilist; - int * _noalias const numneigh = list->numneigh; - int ** _noalias const firstneigh = (int ** const)list->firstneigh; // NOLINT - const int * _noalias const ilist_skip = list->listskip->ilist; - const int * _noalias const numneigh_skip = list->listskip->numneigh; - const int ** _noalias const firstneigh_skip = (const int ** const)list->listskip->firstneigh; // NOLINT - const int * _noalias const iskip = list->iskip; - const int ** _noalias const ijskip = (const int ** const)list->ijskip; // NOLINT - - const flt_t cutsq_custom = cutoff_custom * cutoff_custom; - int num_skip = list->listskip->inum; - if (list->ghost) num_skip += list->listskip->gnum; - - int packthreads; - if (comm->nthreads > INTEL_HTHREADS && THREE==0) - packthreads = comm->nthreads; - else - packthreads = 1; - - #if defined(_OPENMP) - #pragma omp parallel if (packthreads > 1) - #endif - { - int tid, ifrom, ito; - IP_PRE_omp_range_id(ifrom, ito, tid, num_skip, packthreads); - - // each thread has its own page allocator - MyPage &ipage = list->ipage[tid]; - ipage.reset(); - - int my_inum = ifrom; - _inum_starts[tid] = ifrom; - - // loop over parent full list - for (int ii = ifrom; ii < ito; ii++) { - const int i = ilist_skip[ii]; - const int itype = type[i]; - if (iskip[itype]) continue; - - const flt_t xtmp = x[i].x; - const flt_t ytmp = x[i].y; - const flt_t ztmp = x[i].z; - - int n = 0; - int *neighptr = ipage.vget(); - - // loop over parent non-skip list - - const int * _noalias const jlist = firstneigh_skip[i]; - const int jnum = numneigh_skip[i]; - - if (THREE) { - const int jnumhalf = numhalf_skip[ii]; - for (int jj = 0; jj < jnumhalf; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - - int addme = 1; - if (ijskip[itype][type[j]]) addme = 0; - - // trim to shorter cutoff - - const flt_t delx = xtmp - x[j].x; - const flt_t dely = ytmp - x[j].y; - const flt_t delz = ztmp - x[j].z; - const flt_t rsq = delx * delx + dely * dely + delz * delz; - if (rsq > cutsq_custom) addme = 0; - - if (addme) - neighptr[n++] = joriginal; - } - numhalf[my_inum] = n; - - for (int jj = jnumhalf; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - - int addme = 1; - if (ijskip[itype][type[j]]) addme = 0; - - // trim to shorter cutoff - - const flt_t delx = xtmp - x[j].x; - const flt_t dely = ytmp - x[j].y; - const flt_t delz = ztmp - x[j].z; - const flt_t rsq = delx * delx + dely * dely + delz * delz; - if (rsq > cutsq_custom) addme = 0; - - if (addme) - neighptr[n++] = joriginal; - } - } else { - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma ivdep - #endif - for (int jj = 0; jj < jnum; jj++) { - const int joriginal = jlist[jj]; - const int j = joriginal & NEIGHMASK; - - int addme = 1; - if (ijskip[itype][type[j]]) addme = 0; - - // trim to shorter cutoff - - const flt_t delx = xtmp - x[j].x; - const flt_t dely = ytmp - x[j].y; - const flt_t delz = ztmp - x[j].z; - const flt_t rsq = delx * delx + dely * dely + delz * delz; - if (rsq > cutsq_custom) addme = 0; - - if (addme) - neighptr[n++] = joriginal; - } - } - - ilist[my_inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - - int pad_end = n; - IP_PRE_neighbor_pad(pad_end, 0); - #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned - #pragma loop_count min=1, max=INTEL_COMPILE_WIDTH-1, \ - avg=INTEL_COMPILE_WIDTH/2 - #endif - for ( ; n < pad_end; n++) - neighptr[n] = e_nall; - - ipage.vgot(n); - if (ipage.status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - } - - int last_inum = 0, loop_end; - _inum_counts[tid] = my_inum; - } - int inum = _inum_counts[0]; - for (int tid = 1; tid < packthreads; tid++) { - for (int i = _inum_starts[tid]; i < _inum_counts[tid]; i++) { - if (THREE) numhalf[inum] = numhalf[i]; - ilist[inum++] = ilist[i]; - } - } - list->inum = inum; - - if (THREE && num_skip > 0) { - int * const list_start = firstneigh[ilist[0]]; - for (int ii = 0; ii < inum; ii++) { - int i = ilist[ii]; - cnumneigh[ii] = static_cast(firstneigh[i] - list_start); - } - } - if (list->ghost) { - int num = 0; - int my_inum = list->inum; - for (int i = 0; i < my_inum; i++) - if (ilist[i] < nlocal) num++; - else break; - list->inum = num; - list->gnum = my_inum - num; - } -} - -/* ---------------------------------------------------------------------- */ - -void NPairSkipTrimIntel::build(NeighList *list) -{ - if (_fix->three_body_neighbor()==0 || - _full_props[list->listskip->index] == 0) { - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) - build_t(list, nullptr, nullptr, nullptr, _fix->get_mixed_buffers()); - else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) - build_t(list, nullptr, nullptr, nullptr, _fix->get_double_buffers()); - else - build_t(list, nullptr, nullptr, nullptr, _fix->get_single_buffers()); - } else { - int *nhalf, *cnumneigh, *nhalf_skip, *u; - if (_fix->precision() == FixIntel::PREC_MODE_MIXED) { - _fix->get_mixed_buffers()->get_list_data3(list->listskip,nhalf_skip,u); - _fix->get_mixed_buffers()->grow_data3(list, nhalf, cnumneigh); - build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_mixed_buffers()); - } else if (_fix->precision() == FixIntel::PREC_MODE_DOUBLE) { - _fix->get_double_buffers()->get_list_data3(list->listskip,nhalf_skip,u); - _fix->get_double_buffers()->grow_data3(list, nhalf, cnumneigh); - build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_double_buffers()); - } else { - _fix->get_single_buffers()->get_list_data3(list->listskip,nhalf_skip,u); - _fix->get_single_buffers()->grow_data3(list,nhalf,cnumneigh); - build_t(list, nhalf, cnumneigh, nhalf_skip, _fix->get_single_buffers()); - } - } -} diff --git a/src/INTEL/npair_skip_trim_intel.h b/src/INTEL/npair_skip_trim_intel.h deleted file mode 100644 index f0018e5df45..00000000000 --- a/src/INTEL/npair_skip_trim_intel.h +++ /dev/null @@ -1,62 +0,0 @@ -// clang-format off -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - https://www.lammps.org/, Sandia National Laboratories - LAMMPS development team: developers@lammps.org - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef NPAIR_CLASS -// clang-format off -NPairStyle(skip/trim/intel, - NPairSkipTrimIntel, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_INTEL); - -NPairStyle(skip/trim/ghost/intel, - NPairSkipTrimIntel, - NP_SKIP | NP_HALF | NP_FULL | - NP_NSQ | NP_BIN | NP_MULTI | - NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM | NP_GHOST | NP_INTEL); -// clang-format on -#else - -#ifndef LMP_NPAIR_SKIP_TRIM_INTEL_H -#define LMP_NPAIR_SKIP_TRIM_INTEL_H - -#include "fix_intel.h" -#include "npair.h" - -#if defined(_OPENMP) -#include -#endif - -namespace LAMMPS_NS { - -class NPairSkipTrimIntel : public NPair { - public: - NPairSkipTrimIntel(class LAMMPS *); - ~NPairSkipTrimIntel() override; - void copy_neighbor_info() override; - void build(class NeighList *) override; - - protected: - FixIntel *_fix; - int *_inum_starts, *_inum_counts, *_full_props; - - template - void build_t(NeighList *, int *numhalf, int *cnumneigh, int *numhalf_skip, - IntelBuffers *); -}; - -} // namespace LAMMPS_NS - -#endif -#endif From 15f8488fc44bb259b67a55e148a9a3564ba59eeb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 13:43:13 -0500 Subject: [PATCH 192/300] update developer contact email --- src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp | 2 +- src/GPU/pair_lj_cut_coul_cut_soft_gpu.h | 2 +- src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp | 2 +- src/GPU/pair_lj_cut_coul_long_soft_gpu.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp index 7b0d115d96f..20cbafd6c1e 100644 --- a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h index fcd5439f7a3..8298d778275 100644 --- a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp index 45d26f5155c..4846b66a300 100644 --- a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.h b/src/GPU/pair_lj_cut_coul_long_soft_gpu.h index d4ff0e375fd..cb6790d3332 100644 --- a/src/GPU/pair_lj_cut_coul_long_soft_gpu.h +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.h @@ -1,7 +1,7 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov + LAMMPS Development team: developers@lammps.org Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains From 1a3d36fdbfbfc274c1d26b0e8e85c5e08fcb3cb6 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 8 Dec 2023 23:59:41 -0700 Subject: [PATCH 193/300] Use PyConfig to initialize Python --- src/PYTHON/python_impl.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index 57f8ea1cf0c..6dd5175621e 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -61,16 +61,19 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) nfunc = 0; pfuncs = nullptr; -#if PY_MAJOR_VERSION >= 3 -#ifndef Py_LIMITED_API +#if PY_MAJOR_VERSION >= 3 && !defined(Py_LIMITED_API) // check for PYTHONUNBUFFERED environment variable const char *PYTHONUNBUFFERED = getenv("PYTHONUNBUFFERED"); - - if (PYTHONUNBUFFERED != nullptr && strcmp(PYTHONUNBUFFERED, "1") == 0) { - // Python Global configuration variable - // Force the stdout and stderr streams to be unbuffered. - Py_UnbufferedStdioFlag = 1; - } + // Force the stdout and stderr streams to be unbuffered. + bool unbuffered = PYTHONUNBUFFERED != nullptr && strcmp(PYTHONUNBUFFERED, "1") == 0; + +#if PY_VERSION_HEX >= 0x030800f0 + PyConfig config; + PyConfig_InitPythonConfig(&config); + config.buffered_stdio = !unbuffered; +#else + // Python Global configuration variable + Py_UnbufferedStdioFlag = unbuffered; #endif #endif @@ -94,12 +97,17 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) #endif #endif +#if PY_VERSION_HEX >= 0x030800f0 && !defined(Py_LIMITED_API) + Py_InitializeFromConfig(&config); + PyConfig_Clear(&config); +#else Py_Initialize(); +#endif // only needed for Python 2.x and Python 3 < 3.7 // With Python 3.7 this function is now called by Py_Initialize() // Deprecated since version 3.9, will be removed in version 3.11 -#if PY_MAJOR_VERSION < 3 || PY_MINOR_VERSION < 7 +#if PY_VERSION_HEX < 0x030700f0 if (!PyEval_ThreadsInitialized()) { PyEval_InitThreads(); } #endif From 48c85f77189513ebf306c132400168c37054e8f5 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Mon, 11 Dec 2023 12:42:45 -0700 Subject: [PATCH 194/300] Port Fix temp berendsen and rescale to use Kokkos --- src/KOKKOS/Install.sh | 4 + src/KOKKOS/fix_temp_berendsen_kokkos.cpp | 132 ++++++++++++++++++++++ src/KOKKOS/fix_temp_berendsen_kokkos.h | 44 ++++++++ src/KOKKOS/fix_temp_rescale_kokkos.cpp | 138 +++++++++++++++++++++++ src/KOKKOS/fix_temp_rescale_kokkos.h | 44 ++++++++ src/fix_temp_berendsen.h | 2 +- 6 files changed, 363 insertions(+), 1 deletion(-) create mode 100644 src/KOKKOS/fix_temp_berendsen_kokkos.cpp create mode 100644 src/KOKKOS/fix_temp_berendsen_kokkos.h create mode 100644 src/KOKKOS/fix_temp_rescale_kokkos.cpp create mode 100644 src/KOKKOS/fix_temp_rescale_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 489efc55a04..4be74334c97 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -177,6 +177,10 @@ action fix_shardlow_kokkos.cpp fix_shardlow.cpp action fix_shardlow_kokkos.h fix_shardlow.h action fix_spring_self_kokkos.cpp action fix_spring_self_kokkos.h +action fix_temp_berendsen_kokkos.cpp +action fix_temp_berendsen_kokkos.h +action fix_temp_rescale_kokkos.cpp +action fix_temp_rescale_kokkos.h action fix_viscous_kokkos.cpp action fix_viscous_kokkos.h action fix_wall_gran_kokkos.cpp fix_wall_gran.cpp diff --git a/src/KOKKOS/fix_temp_berendsen_kokkos.cpp b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp new file mode 100644 index 00000000000..cf4be489af3 --- /dev/null +++ b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp @@ -0,0 +1,132 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_temp_berendsen_kokkos.h" + +#include "atom_kokkos.h" +#include "comm.h" +#include "compute.h" +#include "error.h" +#include "force.h" +#include "group.h" +#include "input.h" +#include "modify.h" +#include "update.h" +#include "variable.h" +#include "atom_masks.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{NOBIAS,BIAS}; +enum{CONSTANT,EQUAL}; + +/* ---------------------------------------------------------------------- */ + +template +FixTempBerendsenKokkos::FixTempBerendsenKokkos(LAMMPS *lmp, int narg, char **arg) : + FixTempBerendsen(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *)atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixTempBerendsenKokkos::end_of_step() +{ + double t_current = temperature->compute_scalar(); + double tdof = temperature->dof; + + // there is nothing to do, if there are no degrees of freedom + + if (tdof < 1) return; + + if (t_current == 0.0) + error->all(FLERR, "Computed current temperature for fix temp/berendsen must not be 0.0"); + + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + // set current t_target + // if variable temp, evaluate variable, wrap with clear/add + + if (tstyle == CONSTANT) + t_target = t_start + delta * (t_stop-t_start); + else { + modify->clearstep_compute(); + t_target = input->variable->compute_equal(tvar); + if (t_target < 0.0) + error->one(FLERR, "Fix temp/berendsen variable {} returned negative temperature", + input->variable->names[tvar]); + modify->addstep_compute(update->ntimestep + nevery); + } + + // rescale velocities by lamda + // for BIAS: + // temperature is current, so do not need to re-compute + // OK to not test returned v = 0, since lamda is multiplied by v + + double lamda = sqrt(1.0 + update->dt/t_period*(t_target/t_current - 1.0)); + double efactor = 0.5 * force->boltz * tdof; + energy += t_current * (1.0-lamda*lamda) * efactor; + + auto v = atomKK->k_v.view(); + auto mask = atomKK->k_mask.view(); + int nlocal = atom->nlocal; + auto groupbit = this->groupbit; + + if (which == NOBIAS) { + atomKK->sync(temperature->execution_space,temperature->datamask_read); + temperature->compute_scalar(); // is this needed? + temperature->remove_bias_all(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); + } + + atomKK->sync(execution_space,V_MASK|MASK_MASK); + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal), LAMMPS_LAMBDA(int i) { + if (mask[i] & groupbit) { + v(i,0) *= lamda; + v(i,1) *= lamda; + v(i,2) *= lamda; + } + }); + + atomKK->modified(execution_space,V_MASK); + + if (which == NOBIAS) { + atomKK->sync(temperature->execution_space,temperature->datamask_read); + temperature->restore_bias_all(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); + } +} +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixTempBerendsenKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixTempBerendsenKokkos; +#endif +} diff --git a/src/KOKKOS/fix_temp_berendsen_kokkos.h b/src/KOKKOS/fix_temp_berendsen_kokkos.h new file mode 100644 index 00000000000..6a0aa5ce981 --- /dev/null +++ b/src/KOKKOS/fix_temp_berendsen_kokkos.h @@ -0,0 +1,44 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(temp/berendsen/kk,FixTempBerendsenKokkos); +FixStyle(temp/berendsen/kk/device,FixTempBerendsenKokkos); +FixStyle(temp/berendsen/kk/host,FixTempBerendsenKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_FIX_TEMP_BERENDSEN_KOKKOS_H +#define LMP_FIX_TEMP_BERENDSEN_KOKKOS_H + +#include "fix_temp_berendsen.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixTempBerendsenKokkos : public FixTempBerendsen { + public: + typedef DeviceType device_type; + + FixTempBerendsenKokkos(class LAMMPS *, int, char **); + ~FixTempBerendsenKokkos() override {} + void end_of_step() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/KOKKOS/fix_temp_rescale_kokkos.cpp b/src/KOKKOS/fix_temp_rescale_kokkos.cpp new file mode 100644 index 00000000000..0f17eb1be12 --- /dev/null +++ b/src/KOKKOS/fix_temp_rescale_kokkos.cpp @@ -0,0 +1,138 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_temp_rescale_kokkos.h" + +#include "atom_kokkos.h" +#include "comm.h" +#include "compute.h" +#include "error.h" +#include "force.h" +#include "group.h" +#include "input.h" +#include "modify.h" +#include "update.h" +#include "variable.h" +#include "atom_masks.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{NOBIAS,BIAS}; +enum{CONSTANT,EQUAL}; + +/* ---------------------------------------------------------------------- */ + +template +FixTempRescaleKokkos::FixTempRescaleKokkos(LAMMPS *lmp, int narg, char **arg) : + FixTempRescale(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *)atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixTempRescaleKokkos::end_of_step() +{ + double t_current = temperature->compute_scalar(); + + // there is nothing to do, if there are no degrees of freedom + + if (temperature->dof < 1) return; + + // protect against division by zero + + if (t_current == 0.0) + error->all(FLERR,"Computed temperature for fix temp/rescale cannot be 0.0"); + + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + // set current t_target + // if variable temp, evaluate variable, wrap with clear/add + + if (tstyle == CONSTANT) + t_target = t_start + delta * (t_stop-t_start); + else { + modify->clearstep_compute(); + t_target = input->variable->compute_equal(tvar); + if (t_target < 0.0) + error->one(FLERR, "Fix temp/rescale variable returned negative temperature"); + modify->addstep_compute(update->ntimestep + nevery); + } + + // rescale velocity of appropriate atoms if outside window + // for BIAS: + // temperature is current, so do not need to re-compute + // OK to not test returned v = 0, since factor is multiplied by v + + if (fabs(t_current-t_target) > t_window) { + t_target = t_current - fraction*(t_current-t_target); + double factor = sqrt(t_target/t_current); + double efactor = 0.5 * force->boltz * temperature->dof; + + energy += (t_current-t_target) * efactor; + + auto v = atomKK->k_v.view(); + auto mask = atomKK->k_mask.view(); + int nlocal = atom->nlocal; + auto groupbit = this->groupbit; + + if (which == NOBIAS) { + atomKK->sync(temperature->execution_space,temperature->datamask_read); + temperature->compute_scalar(); // is this needed? + temperature->remove_bias_all(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); + } + + atomKK->sync(execution_space,V_MASK|MASK_MASK); + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal), LAMMPS_LAMBDA(int i) { + if (mask[i] & groupbit) { + v(i,0) *= factor; + v(i,1) *= factor; + v(i,2) *= factor; + } + }); + + atomKK->modified(execution_space,V_MASK); + + if (which == NOBIAS) { + atomKK->sync(temperature->execution_space,temperature->datamask_read); + temperature->restore_bias_all(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); + + } + } +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixTempRescaleKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixTempRescaleKokkos; +#endif +} diff --git a/src/KOKKOS/fix_temp_rescale_kokkos.h b/src/KOKKOS/fix_temp_rescale_kokkos.h new file mode 100644 index 00000000000..7dd3111325d --- /dev/null +++ b/src/KOKKOS/fix_temp_rescale_kokkos.h @@ -0,0 +1,44 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(temp/rescale/kk,FixTempRescaleKokkos); +FixStyle(temp/rescale/kk/device,FixTempRescaleKokkos); +FixStyle(temp/rescale/kk/host,FixTempRescaleKokkos); +// clang-format on +#else + +// clang-format off +#ifndef LMP_FIX_TEMP_RESCALE_KOKKOS_H +#define LMP_FIX_TEMP_RESCALE_KOKKOS_H + +#include "fix_temp_rescale.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixTempRescaleKokkos : public FixTempRescale { + public: + typedef DeviceType device_type; + + FixTempRescaleKokkos(class LAMMPS *, int, char **); + ~FixTempRescaleKokkos() override {} + void end_of_step() override; +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/fix_temp_berendsen.h b/src/fix_temp_berendsen.h index 78ece2af224..f137830508e 100644 --- a/src/fix_temp_berendsen.h +++ b/src/fix_temp_berendsen.h @@ -38,7 +38,7 @@ class FixTempBerendsen : public Fix { void restart(char *buf) override; void *extract(const char *, int &) override; - private: + protected: int which; double t_start, t_stop, t_period, t_target; double energy; From 9d51d9c0e9d9519b0faa7bc8d8537698cbc4606b Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Mon, 11 Dec 2023 12:55:06 -0700 Subject: [PATCH 195/300] Update docs --- doc/src/Commands_fix.rst | 4 ++-- doc/src/fix_temp_berendsen.rst | 7 +++++++ doc/src/fix_temp_rescale.rst | 7 +++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 3283561c41c..e89e302673a 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -239,10 +239,10 @@ OPT. * :doc:`store/force ` * :doc:`store/state ` * :doc:`tdpd/source ` - * :doc:`temp/berendsen ` + * :doc:`temp/berendsen (k) ` * :doc:`temp/csld ` * :doc:`temp/csvr ` - * :doc:`temp/rescale ` + * :doc:`temp/rescale (k) ` * :doc:`temp/rescale/eff ` * :doc:`tfmc ` * :doc:`tgnpt/drude ` diff --git a/doc/src/fix_temp_berendsen.rst b/doc/src/fix_temp_berendsen.rst index 67e496e6c56..541f3191d5a 100644 --- a/doc/src/fix_temp_berendsen.rst +++ b/doc/src/fix_temp_berendsen.rst @@ -1,8 +1,11 @@ .. index:: fix temp/berendsen +.. index:: fix temp/berendsen/kk fix temp/berendsen command ========================== +Accelerator Variants: *temp/berendsen/kk* + Syntax """""" @@ -118,6 +121,10 @@ remaining thermal degrees of freedom, and the bias is added back in. ---------- +.. include:: accel_styles.rst + +---------- + Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/doc/src/fix_temp_rescale.rst b/doc/src/fix_temp_rescale.rst index bfdcaa90f8b..2dd21783468 100644 --- a/doc/src/fix_temp_rescale.rst +++ b/doc/src/fix_temp_rescale.rst @@ -1,8 +1,11 @@ .. index:: fix temp/rescale +.. index:: fix temp/rescale/kk fix temp/rescale command ======================== +Accelerator Variants: *temp/rescale/kk* + Syntax """""" @@ -125,6 +128,10 @@ remaining thermal degrees of freedom, and the bias is added back in. ---------- +.. include:: accel_styles.rst + +---------- + Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" From e147d131fb4bb7b89f4c75ac5edb3c3dd5b3aa0b Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Mon, 11 Dec 2023 12:58:15 -0700 Subject: [PATCH 196/300] Fix issue with temp compute --- src/KOKKOS/fix_temp_berendsen_kokkos.cpp | 5 ++++- src/KOKKOS/fix_temp_rescale_kokkos.cpp | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_temp_berendsen_kokkos.cpp b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp index cf4be489af3..b986b3189af 100644 --- a/src/KOKKOS/fix_temp_berendsen_kokkos.cpp +++ b/src/KOKKOS/fix_temp_berendsen_kokkos.cpp @@ -54,7 +54,11 @@ FixTempBerendsenKokkos::FixTempBerendsenKokkos(LAMMPS *lmp, int narg template void FixTempBerendsenKokkos::end_of_step() { + atomKK->sync(temperature->execution_space,temperature->datamask_read); double t_current = temperature->compute_scalar(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); + double tdof = temperature->dof; // there is nothing to do, if there are no degrees of freedom @@ -97,7 +101,6 @@ void FixTempBerendsenKokkos::end_of_step() if (which == NOBIAS) { atomKK->sync(temperature->execution_space,temperature->datamask_read); - temperature->compute_scalar(); // is this needed? temperature->remove_bias_all(); atomKK->modified(temperature->execution_space,temperature->datamask_modify); atomKK->sync(execution_space,temperature->datamask_modify); diff --git a/src/KOKKOS/fix_temp_rescale_kokkos.cpp b/src/KOKKOS/fix_temp_rescale_kokkos.cpp index 0f17eb1be12..3a1c6ddd261 100644 --- a/src/KOKKOS/fix_temp_rescale_kokkos.cpp +++ b/src/KOKKOS/fix_temp_rescale_kokkos.cpp @@ -54,7 +54,10 @@ FixTempRescaleKokkos::FixTempRescaleKokkos(LAMMPS *lmp, int narg, ch template void FixTempRescaleKokkos::end_of_step() { + atomKK->sync(temperature->execution_space,temperature->datamask_read); double t_current = temperature->compute_scalar(); + atomKK->modified(temperature->execution_space,temperature->datamask_modify); + atomKK->sync(execution_space,temperature->datamask_modify); // there is nothing to do, if there are no degrees of freedom @@ -100,7 +103,6 @@ void FixTempRescaleKokkos::end_of_step() if (which == NOBIAS) { atomKK->sync(temperature->execution_space,temperature->datamask_read); - temperature->compute_scalar(); // is this needed? temperature->remove_bias_all(); atomKK->modified(temperature->execution_space,temperature->datamask_modify); atomKK->sync(execution_space,temperature->datamask_modify); From e241f08cfe3c24a49d46cf9e7515b4db335406e4 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 11 Dec 2023 14:05:42 -0700 Subject: [PATCH 197/300] Finish first version of compute reaxff/atom docs --- doc/src/compute.rst | 1 + doc/src/compute_reaxff_atom.rst | 38 ++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 67372036183..6ef093c16dc 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -280,6 +280,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`property/local ` - convert local attributes to local vectors/arrays * :doc:`ptm/atom ` - determines the local lattice structure based on the Polyhedral Template Matching method * :doc:`rdf ` - radial distribution function :math:`g(r)` histogram of group of atoms +* :doc:`reaxff/atom ` - extract ReaxFF bond information * :doc:`reduce ` - combine per-atom quantities into a single global value * :doc:`reduce/chunk ` - reduce per-atom quantities within each chunk * :doc:`reduce/region ` - same as compute reduce, within a region diff --git a/doc/src/compute_reaxff_atom.rst b/doc/src/compute_reaxff_atom.rst index 4906f3fe5c2..9f690d19c34 100644 --- a/doc/src/compute_reaxff_atom.rst +++ b/doc/src/compute_reaxff_atom.rst @@ -1,8 +1,8 @@ -.. index:: fix reaxff/atom -.. index:: fix reaxff/atom/kk +.. index:: compute reaxff/atom +.. index:: compute reaxff/atom/kk -fix reaxff/atom command -======================= +compute reaxff/atom command +=========================== Accelerator Variants: *reaxff/atom/kk* @@ -40,7 +40,35 @@ Examples Description """"""""""" -TODO +Define a computation that extracts bond information computed by the ReaxFF +potential specified by :doc:`pair_style reaxff `. + +By default, it produces per-atom data that includes the following columns: + +* abo = atom bond order (sum of all bonds) +* nlp = number of lone pairs +* nb = number of bonds + +Bonds will only be included if its atoms are in the group. + +In addition, if ``bonds`` is set to ``yes``, the compute will also produce a +local array of all bonds on the current processor whose atoms are in the group. +The columns of each entry of this local array are: + +* id_i = atom i id of bond +* id_j = atom j id of bond +* bo = bond order of bond + +Output info +""""""""""" + +This compute calculates a per-atom array and local array depending on the +number of keywords. The number of rows in the local array is the number of +bonds as described above. Both per-atom and local array have 3 columns. + +The arrays can be accessed by any command that uses local and per-atom values +from a compute as input. See the :doc:`Howto output ` page for +an overview of LAMMPS output options. ---------- From 930fbe8c5df277cb0aa1195a5a7ad031a2585a5c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 11 Dec 2023 14:07:48 -0700 Subject: [PATCH 198/300] reaxff/atom: First attempt of filtering by group --- src/KOKKOS/compute_reaxff_atom_kokkos.cpp | 4 +-- src/KOKKOS/pair_reaxff_kokkos.cpp | 39 +++++++++++++---------- src/KOKKOS/pair_reaxff_kokkos.h | 10 +++--- src/REAXFF/compute_reaxff_atom.cpp | 35 +++++++++++--------- 4 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp index c703bc35520..c3e9367ff4c 100644 --- a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -82,9 +82,9 @@ void ComputeReaxFFAtomKokkos::compute_bonds() int maxnumbonds = 0; if (reaxff->execution_space == Device) - device_pair()->FindBond(maxnumbonds); + device_pair()->FindBond(maxnumbonds, groupbit); else - host_pair()->FindBond(maxnumbonds); + host_pair()->FindBond(maxnumbonds, groupbit); nbuf = ((store_bonds ? maxnumbonds*2 : 0) + 3)*nlocal; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 914962f0e61..29ac3981281 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4162,22 +4162,23 @@ double PairReaxFFKokkos::memory_usage() /* ---------------------------------------------------------------------- */ template -void PairReaxFFKokkos::FindBond(int &numbonds) +void PairReaxFFKokkos::FindBond(int &numbonds, int groupbit) { copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,nmax),*this); bo_cut_bond = api->control->bg_cut; - atomKK->sync(execution_space,TAG_MASK); + atomKK->sync(execution_space,TAG_MASK|MASK_MASK); tag = atomKK->k_tag.view(); + mask = atomKK->k_mask.view(); const int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); d_ilist = k_list->d_ilist; numbonds = 0; - PairReaxKokkosFindBondFunctor find_bond_functor(this); + PairReaxKokkosFindBondFunctor find_bond_functor(this, groupbit); Kokkos::parallel_reduce(inum,find_bond_functor,numbonds); copymode = 0; } @@ -4194,24 +4195,28 @@ void PairReaxFFKokkos::operator()(TagPairReaxFindBondZero, const int template KOKKOS_INLINE_FUNCTION -void PairReaxFFKokkos::calculate_find_bond_item(int ii, int &numbonds) const +void PairReaxFFKokkos::calculate_find_bond_item(int ii, int &numbonds, int groupbit) const { const int i = d_ilist[ii]; int nj = 0; - const int j_start = d_bo_first[i]; - const int j_end = j_start + d_bo_num[i]; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; - j &= NEIGHMASK; - const tagint jtag = tag[j]; - const int j_index = jj - j_start; - double bo_tmp = d_BO(i,j_index); - - if (bo_tmp > bo_cut_bond) { - d_neighid(i,nj) = jtag; - d_abo(i,nj) = bo_tmp; - nj++; + if(mask[i] & groupbit) { + const int j_start = d_bo_first[i]; + const int j_end = j_start + d_bo_num[i]; + for (int jj = j_start; jj < j_end; jj++) { + int j = d_bo_list[jj]; + j &= NEIGHMASK; + if(mask[j] & groupbit) { + const tagint jtag = tag[j]; + const int j_index = jj - j_start; + double bo_tmp = d_BO(i,j_index); + + if (bo_tmp > bo_cut_bond) { + d_neighid(i,nj) = jtag; + d_abo(i,nj) = bo_tmp; + nj++; + } + } } } d_numneigh_bonds[i] = nj; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index f246afcc866..f54350b04bc 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -133,7 +133,7 @@ class PairReaxFFKokkos : public PairReaxFF { void compute(int, int); void init_style(); double memory_usage(); - void FindBond(int &); + void FindBond(int &, int groupbit = 1); void PackBondBuffer(DAT::tdual_ffloat_1d, int &); void PackReducedBondBuffer(DAT::tdual_ffloat_1d, int &, bool); void FindBondSpecies(); @@ -288,7 +288,7 @@ class PairReaxFFKokkos : public PairReaxFF { void operator()(TagPairReaxFindBondZero, const int&) const; KOKKOS_INLINE_FUNCTION - void calculate_find_bond_item(int, int&) const; + void calculate_find_bond_item(int, int&, int) const; KOKKOS_INLINE_FUNCTION void pack_bond_buffer_item(int, int&, const bool&) const; @@ -417,6 +417,7 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_f_array f; typename AT::t_int_1d_randomread type; typename AT::t_tagint_1d_randomread tag; + typename AT::t_int_1d_randomread mask; typename AT::t_float_1d_randomread q; typename AT::t_tagint_1d_randomread molecule; @@ -526,8 +527,9 @@ template struct PairReaxKokkosFindBondFunctor { typedef DeviceType device_type; typedef int value_type; + int groupbit; PairReaxFFKokkos c; - PairReaxKokkosFindBondFunctor(PairReaxFFKokkos* c_ptr):c(*c_ptr) {}; + PairReaxKokkosFindBondFunctor(PairReaxFFKokkos* c_ptr, int groupbit):c(*c_ptr),groupbit(groupbit) {}; KOKKOS_INLINE_FUNCTION void join(int &dst, @@ -537,7 +539,7 @@ struct PairReaxKokkosFindBondFunctor { KOKKOS_INLINE_FUNCTION void operator()(const int ii, int &numbonds) const { - c.calculate_find_bond_item(ii,numbonds); + c.calculate_find_bond_item(ii,numbonds,groupbit); } }; diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index 2e5d4058b80..fba67ecacf3 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -126,28 +126,33 @@ int ComputeReaxFFAtom::FindBond() bo_cut = reaxff->api->control->bg_cut; tagint *tag = atom->tag; + int * mask = atom->mask; int numbonds = 0; for (ii = 0; ii < inum; ii++) { i = ilist[ii]; - nj = 0; - - for (pj = Start_Index(i, reaxff->api->lists); pj < End_Index(i, reaxff->api->lists); ++pj) { - bo_ij = &(reaxff->api->lists->select.bond_list[pj]); - j = bo_ij->nbr; - jtag = tag[j]; - bo_tmp = bo_ij->bo_data.BO; - - if (bo_tmp > bo_cut) { - if(store_bonds) { - neighid[i][nj] = jtag; - abo[i][nj] = bo_tmp; + if (mask[i] & groupbit) { + nj = 0; + + for (pj = Start_Index(i, reaxff->api->lists); pj < End_Index(i, reaxff->api->lists); ++pj) { + bo_ij = &(reaxff->api->lists->select.bond_list[pj]); + j = bo_ij->nbr; + if (mask[j] & groupbit) { + jtag = tag[j]; + bo_tmp = bo_ij->bo_data.BO; + + if (bo_tmp > bo_cut) { + if(store_bonds) { + neighid[i][nj] = jtag; + abo[i][nj] = bo_tmp; + } + nj++; + } } - nj++; } + bondcount[i] = nj; + numbonds += nj; } - bondcount[i] = nj; - numbonds += nj; } return numbonds; } From 354db72a103f2646c858496fd204c068b10910d8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 17:42:06 -0500 Subject: [PATCH 199/300] update github action script for setting up python --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/compile-msvc.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 58b001be247..00c0e8642dd 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -30,7 +30,7 @@ jobs: fetch-depth: 2 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 5c6ceeefb4b..1a0f1ea62f4 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -24,7 +24,7 @@ jobs: fetch-depth: 2 - name: Select Python version - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.11' From 6e0e1dc44fba098782269b2150ccc990f0f8c022 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 11 Dec 2023 17:10:43 -0600 Subject: [PATCH 200/300] Fixed atom force issues with the coul/long/slater kernels --- lib/gpu/lal_coul_slater_long.cu | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu index eccc5942112..678c9703e55 100644 --- a/lib/gpu/lal_coul_slater_long.cu +++ b/lib/gpu/lal_coul_slater_long.cu @@ -72,6 +72,7 @@ __kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; numtyp qtmp; fetch(qtmp,i,q_tex); + numtyp lamdainv = ucl_recip(lamda); for ( ; nbor (numtyp)0) force -= factor_coul*prefactor*((numtyp)1.0-slater_term); + force *= r2inv; f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (EVFLAG && eflag) { - numtyp e_slater = (1 + r/lamda)*ucl_exp(-2*r/lamda); - e_coul += prefactor*(_erfc-e_slater - factor_coul); + numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); + e_coul += prefactor*(_erfc-e_slater-factor_coul); } if (EVFLAG && vflag) { virial[0] += delx*delx*force; @@ -177,6 +180,7 @@ __kernel void k_coul_slater_long_fast(const __global numtyp4 *restrict x_, numtyp qtmp; fetch(qtmp,i,q_tex); int iw=ix.w; int itype=fast_mul((int)MAX_SHARED_TYPES,iw); + numtyp lamdainv = ucl_recip(lamda); for ( ; nbor (numtyp)0) force -= factor_coul*prefactor*((numtyp)1.0-slater_term); + force *= r2inv; f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (EVFLAG && eflag) { - numtyp e_slater = (1 + r/lamda)*ucl_exp(-2*r/lamda); + numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); e_coul += prefactor*(_erfc-e_slater-factor_coul); } if (EVFLAG && vflag) { From 1651a7741afe2de30ab895f46722bcb7b7c2cdc8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 18:51:09 -0500 Subject: [PATCH 201/300] relax epsilon for coul/slater long test a little for GPU forces --- unittest/force-styles/tests/mol-pair-coul_slater_long.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/force-styles/tests/mol-pair-coul_slater_long.yaml b/unittest/force-styles/tests/mol-pair-coul_slater_long.yaml index ba11503a2cd..51b04f301c4 100644 --- a/unittest/force-styles/tests/mol-pair-coul_slater_long.yaml +++ b/unittest/force-styles/tests/mol-pair-coul_slater_long.yaml @@ -1,7 +1,7 @@ --- lammps_version: 23 Jun 2022 date_generated: Thu Jul 7 09:00:39 2022 -epsilon: 2e-13 +epsilon: 1e-12 skip_tests: prerequisites: ! | atom full From 93f8ada8dc2053b6188d5aba27a6b6c28d302acd Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 11 Dec 2023 21:21:31 -0600 Subject: [PATCH 202/300] Fixed ecoul issue with the coul/slater/long kernels --- lib/gpu/lal_coul_slater_long.cu | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu index 678c9703e55..1817faf2a33 100644 --- a/lib/gpu/lal_coul_slater_long.cu +++ b/lib/gpu/lal_coul_slater_long.cu @@ -114,7 +114,9 @@ __kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, if (EVFLAG && eflag) { numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); - e_coul += prefactor*(_erfc-e_slater-factor_coul); + numtyp e = prefactor*(_erfc-e_slater); + if (factor_coul > (numtyp)0) e -= factor_coul*prefactor*((numtyp)1.0 - e_slater); + e_coul += e; } if (EVFLAG && vflag) { virial[0] += delx*delx*force; @@ -222,7 +224,9 @@ __kernel void k_coul_slater_long_fast(const __global numtyp4 *restrict x_, if (EVFLAG && eflag) { numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); - e_coul += prefactor*(_erfc-e_slater-factor_coul); + numtyp e = prefactor*(_erfc-e_slater); + if (factor_coul > (numtyp)0) e -= factor_coul*prefactor*((numtyp)1.0 - e_slater); + e_coul += e; } if (EVFLAG && vflag) { virial[0] += delx*delx*force; From 669782cd5fe1f85698bba33ece6d382944ec91f8 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 11 Dec 2023 21:26:12 -0600 Subject: [PATCH 203/300] Saved some exp operations --- lib/gpu/lal_coul_slater_long.cu | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/gpu/lal_coul_slater_long.cu b/lib/gpu/lal_coul_slater_long.cu index 1817faf2a33..1fc8ab8be4e 100644 --- a/lib/gpu/lal_coul_slater_long.cu +++ b/lib/gpu/lal_coul_slater_long.cu @@ -103,7 +103,8 @@ __kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; fetch(prefactor,j,q_tex); numtyp rlamdainv = r * lamdainv; - numtyp slater_term = ucl_exp(-(numtyp)2.0*rlamdainv)*((numtyp)1.0 + ((numtyp)2.0*rlamdainv*((numtyp)1.0+rlamdainv))); + numtyp exprlmdainv = ucl_exp((numtyp)-2.0*rlamdainv); + numtyp slater_term = exprlmdainv*((numtyp)1.0 + ((numtyp)2.0*rlamdainv*((numtyp)1.0+rlamdainv))); force = prefactor*(_erfc + EWALD_F*grij*expm2-slater_term); if (factor_coul > (numtyp)0) force -= factor_coul*prefactor*((numtyp)1.0-slater_term); force *= r2inv; @@ -113,7 +114,7 @@ __kernel void k_coul_slater_long(const __global numtyp4 *restrict x_, f.z+=delz*force; if (EVFLAG && eflag) { - numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); + numtyp e_slater = ((numtyp)1.0 + rlamdainv)*exprlmdainv; numtyp e = prefactor*(_erfc-e_slater); if (factor_coul > (numtyp)0) e -= factor_coul*prefactor*((numtyp)1.0 - e_slater); e_coul += e; @@ -213,7 +214,8 @@ __kernel void k_coul_slater_long_fast(const __global numtyp4 *restrict x_, fetch(prefactor,j,q_tex); prefactor *= qqrd2e * scale[mtype] * qtmp/r; numtyp rlamdainv = r * lamdainv; - numtyp slater_term = ucl_exp((numtyp)-2.0*rlamdainv)*((numtyp)1.0 + ((numtyp)2.0*rlamdainv*((numtyp)1.0+rlamdainv))); + numtyp exprlmdainv = ucl_exp((numtyp)-2.0*rlamdainv); + numtyp slater_term = exprlmdainv*((numtyp)1.0 + ((numtyp)2.0*rlamdainv*((numtyp)1.0+rlamdainv))); force = prefactor*(_erfc + EWALD_F*grij*expm2-slater_term); if (factor_coul > (numtyp)0) force -= factor_coul*prefactor*((numtyp)1.0-slater_term); force *= r2inv; @@ -223,7 +225,7 @@ __kernel void k_coul_slater_long_fast(const __global numtyp4 *restrict x_, f.z+=delz*force; if (EVFLAG && eflag) { - numtyp e_slater = ((numtyp)1.0 + rlamdainv)*ucl_exp((numtyp)-2.0*rlamdainv); + numtyp e_slater = ((numtyp)1.0 + rlamdainv)*exprlmdainv; numtyp e = prefactor*(_erfc-e_slater); if (factor_coul > (numtyp)0) e -= factor_coul*prefactor*((numtyp)1.0 - e_slater); e_coul += e; From 7881eeaa1c42b6adad32c2abeb5be193556a8df7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 23:15:13 -0500 Subject: [PATCH 204/300] silence warnings about unused variables --- src/GPU/pair_coul_slater_long_gpu.cpp | 3 +-- src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp | 4 ++-- src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/GPU/pair_coul_slater_long_gpu.cpp b/src/GPU/pair_coul_slater_long_gpu.cpp index d812ebe2004..4ace8bd7619 100644 --- a/src/GPU/pair_coul_slater_long_gpu.cpp +++ b/src/GPU/pair_coul_slater_long_gpu.cpp @@ -183,9 +183,8 @@ double PairCoulSlaterLongGPU::memory_usage() void PairCoulSlaterLongGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, int *numneigh, int **firstneigh) { - int i, j, ii, jj, jnum, itable; + int i, j, ii, jj, jnum; double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, ecoul, fpair; - double fraction, table; double r, r2inv, forcecoul, factor_coul; double grij, expm2, prefactor, t, erfc; int *jlist; diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp index 20cbafd6c1e..d65e3bd4cf8 100644 --- a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp @@ -166,9 +166,9 @@ double PairLJCutCoulCutSoftGPU::memory_usage() void PairLJCutCoulCutSoftGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, int *numneigh, int **firstneigh) { - int i, j, ii, jj, jnum, itype, jtype, itable; + int i, j, ii, jj, jnum, itype, jtype; double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; - double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double forcecoul, forcelj, factor_coul, factor_lj; double denc, denlj, r4sig6; int *jlist; double rsq; diff --git a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp index 4846b66a300..e8342b65308 100644 --- a/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_soft_gpu.cpp @@ -201,9 +201,9 @@ double PairLJCutCoulLongSoftGPU::memory_usage() void PairLJCutCoulLongSoftGPU::cpu_compute(int start, int inum, int eflag, int /* vflag */, int *ilist, int *numneigh, int **firstneigh) { - int i, j, ii, jj, jnum, itype, jtype, itable; + int i, j, ii, jj, jnum, itype, jtype; double qtmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; - double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double r, r2inv, forcecoul, forcelj, factor_coul, factor_lj; double denc, denlj, r4sig6; double grij, expm2, prefactor, t, erfc; int *jlist; From 7ed8779d2849ca479edcf3cea8eb2a823ca4d962 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 11 Dec 2023 23:18:08 -0500 Subject: [PATCH 205/300] tweak another epsilon for new GPU pair style --- unittest/force-styles/tests/mol-pair-lj_cut_coul_long_soft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/force-styles/tests/mol-pair-lj_cut_coul_long_soft.yaml b/unittest/force-styles/tests/mol-pair-lj_cut_coul_long_soft.yaml index 8eca0650920..a1e89e54c0e 100644 --- a/unittest/force-styles/tests/mol-pair-lj_cut_coul_long_soft.yaml +++ b/unittest/force-styles/tests/mol-pair-lj_cut_coul_long_soft.yaml @@ -1,7 +1,7 @@ --- lammps_version: 17 Feb 2022 date_generated: Fri Mar 18 22:17:31 2022 -epsilon: 5e-12 +epsilon: 7.5e-12 skip_tests: prerequisites: ! | atom full From d3eed120716daac76e3232b935d94a3cb0d344a3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 13:43:10 -0500 Subject: [PATCH 206/300] include documentation integration checks into "make check" in the src folder --- doc/src/Build_development.rst | 2 ++ src/Makefile | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index c75c7a6a41c..d30a433d624 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -518,6 +518,8 @@ The following options are available. make fix-errordocs # remove error docs in header files make check-permissions # search for files with permissions issues make fix-permissions # correct permissions issues in files + make check-docs # search for several issues in the manual + make check-version # list files with pending release version tags make check # run all check targets from above These should help to make source and documentation files conforming diff --git a/src/Makefile b/src/Makefile index 196641d67d5..b9f1bcbdef9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -474,7 +474,7 @@ tar: @cd STUBS; $(MAKE) @echo "Created $(ROOT)_src.tar.gz" -check: check-whitespace check-permissions check-homepage check-errordocs check-version +check: check-whitespace check-permissions check-homepage check-errordocs check-docs check-version check-whitespace: $(PYTHON) ../tools/coding_standard/whitespace.py .. @@ -500,8 +500,12 @@ check-errordocs: fix-errordocs: $(PYTHON) ../tools/coding_standard/errordocs.py .. -f +check-docs: + $(MAKE) $(MFLAGS) -C ../doc anchor_check style_check package_check role_check + check-version: - $(PYTHON) ../tools/coding_standard/versiontags.py .. + $(PYTHON) ../tools/coding_standard/versiontags.py .. || echo + format-src: clang-format -i --verbose --style=file *.cpp *.h */*.cpp */*.h From 9100f486cb182651020d142a63cb4b30fbc4fa9d Mon Sep 17 00:00:00 2001 From: jtclemm Date: Tue, 12 Dec 2023 15:51:02 -0700 Subject: [PATCH 207/300] Clarify and fix logic in multi, simplify skip --- src/OPENMP/npair_multi_omp.cpp | 48 +++++++++++++++++----------------- src/npair_multi.cpp | 46 ++++++++++++++++---------------- src/npair_skip.cpp | 14 +++++----- src/npair_skip.h | 14 +++++----- 4 files changed, 60 insertions(+), 62 deletions(-) diff --git a/src/OPENMP/npair_multi_omp.cpp b/src/OPENMP/npair_multi_omp.cpp index 818470254c0..3f8604572c0 100644 --- a/src/OPENMP/npair_multi_omp.cpp +++ b/src/OPENMP/npair_multi_omp.cpp @@ -118,8 +118,7 @@ void NPairMultiOmp::build(NeighList *list) for (jcollection = 0; jcollection < ncollections; jcollection++) { - // if same collection use own bin - + // Use own bin for same collection if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); @@ -129,34 +128,34 @@ void NPairMultiOmp::build(NeighList *list) for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; - // own-bin for half stencil - if (HALF && !TRI) - if (k == 0 && flag_half_multi[icollection][jcollection]) js = bins[i]; + // For half-newton-ortho, first check self bin (k == 0, always half) + // if checking its own binlist, skip all before i in linked list + if (HALF && NEWTON && !TRI) + if ((k == 0) && (icollection == jcollection)) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { if (!HALF) { - // Full neighbor list + // Full neighbor list, only uses full stencils // only skip i = j if (i == j) continue; } else if (!NEWTON) { - // Half neighbor list, newton off + // Half neighbor list, newton off, only uses full stencils // only store pair if i < j // stores own/own pairs only once // stores own/ghost pairs on both procs if (j <= i) continue; } else if (TRI) { - // Half neighbor list, newton on, triclinic - // if same size (same collection), use half stencil - // Always have full stencil - // if same size (same collection), exclude half of interactions - // stencil is empty if i larger than j - // stencil is full if i smaller than j - // stencil is full if i same size as j - // for i smaller than j: - // must use itag/jtag to eliminate half the I/J interactions - // cannot use I/J exact coord comparision - // b/c transforming orthog -> lambda -> orthog for ghost atoms - // with an added PBC offset can shift all 3 coords by epsilon + // Half neighbor list, newton on, triclinic, only uses full stencils + // If different sizes -> full stencil (accept all, one-way search) + // If same size -> half stencil, exclude half of interactions + // stencil is empty if i larger than j + // stencil is full if i smaller than j + // stencil is full if i same size as j + // for i smaller than j: + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon if (flag_same_multi[icollection][jcollection]) { if (j <= i) continue; @@ -178,9 +177,10 @@ void NPairMultiOmp::build(NeighList *list) } } } else { - // Half neighbor list, newton on, orthonormal - // if same size: uses half stencil so includes a check of the central bin - if (k == 0 && flag_half_multi[icollection][jcollection]) { + // Half neighbor list, newton on, orthonormal, uses a mix of stencils + // If different sizes -> full stencil (accept all, one-way search) + // If same size -> half stencil (first includes a self bin search) + if (k == 0 && flag_same_multi[icollection][jcollection]) { // if same collection, // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the right" of i @@ -217,14 +217,14 @@ void NPairMultiOmp::build(NeighList *list) if (ATOMONLY) { if (rsq <= cutsq) { jh = j; - if (history && rsq < radsum * radsum) + if (history && rsq < (radsum * radsum)) jh = jh ^ mask_history; neighptr[n++] = jh; } } else { if (rsq <= cutsq) { jh = j; - if (history && rsq < radsum * radsum) + if (history && rsq < (radsum * radsum)) jh = jh ^ mask_history; if (molecular != Atom::ATOMIC) { diff --git a/src/npair_multi.cpp b/src/npair_multi.cpp index ec5a67fa824..b5f813c0a80 100644 --- a/src/npair_multi.cpp +++ b/src/npair_multi.cpp @@ -115,8 +115,7 @@ void NPairMulti::build(NeighList *list) for (jcollection = 0; jcollection < ncollections; jcollection++) { - // if same collection use own bin - + // Use own bin for same collection if (icollection == jcollection) jbin = ibin; else jbin = coord2bin(x[i], jcollection); @@ -126,34 +125,34 @@ void NPairMulti::build(NeighList *list) for (k = 0; k < ns; k++) { js = binhead_multi[jcollection][jbin + s[k]]; - // own-bin for half stencil - if (HALF && !TRI) - if (k == 0 && flag_half_multi[icollection][jcollection]) js = bins[i]; + // For half-newton-ortho, first check self bin (k == 0, always half) + // if checking its own binlist, skip all before i in linked list + if (HALF && NEWTON && !TRI) + if ((k == 0) && (icollection == jcollection)) js = bins[i]; for (j = js; j >= 0; j = bins[j]) { if (!HALF) { - // Full neighbor list + // Full neighbor list, only uses full stencils // only skip i = j if (i == j) continue; } else if (!NEWTON) { - // Half neighbor list, newton off + // Half neighbor list, newton off, only uses full stencils // only store pair if i < j // stores own/own pairs only once // stores own/ghost pairs on both procs if (j <= i) continue; } else if (TRI) { - // Half neighbor list, newton on, triclinic - // if same size (same collection), use half stencil - // Always have full stencil - // if same size (same collection), exclude half of interactions - // stencil is empty if i larger than j - // stencil is full if i smaller than j - // stencil is full if i same size as j - // for i smaller than j: - // must use itag/jtag to eliminate half the I/J interactions - // cannot use I/J exact coord comparision - // b/c transforming orthog -> lambda -> orthog for ghost atoms - // with an added PBC offset can shift all 3 coords by epsilon + // Half neighbor list, newton on, triclinic, only uses full stencils + // If different sizes -> full stencil (accept all, one-way search) + // If same size -> half stencil, exclude half of interactions + // stencil is empty if i larger than j + // stencil is full if i smaller than j + // stencil is full if i same size as j + // for i smaller than j: + // must use itag/jtag to eliminate half the I/J interactions + // cannot use I/J exact coord comparision + // b/c transforming orthog -> lambda -> orthog for ghost atoms + // with an added PBC offset can shift all 3 coords by epsilon if (flag_same_multi[icollection][jcollection]) { if (j <= i) continue; @@ -175,9 +174,10 @@ void NPairMulti::build(NeighList *list) } } } else { - // Half neighbor list, newton on, orthonormal - // if same size: uses half stencil so includes a check of the central bin - if (k == 0 && flag_half_multi[icollection][jcollection]) { + // Half neighbor list, newton on, orthonormal, uses a mix of stencils + // If different sizes -> full stencil (accept all, one-way search) + // If same size -> half stencil (first includes a self bin search) + if (k == 0 && flag_same_multi[icollection][jcollection]) { // if same collection, // if j is owned atom, store it, since j is beyond i in linked list // if j is ghost, only store if j coords are "above and to the right" of i @@ -221,7 +221,7 @@ void NPairMulti::build(NeighList *list) } else { if (rsq <= cutsq) { jh = j; - if (history && rsq < radsum * radsum) + if (history && rsq < (radsum * radsum)) jh = jh ^ mask_history; if (molecular != Atom::ATOMIC) { diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp index fad06d699c3..6afb43bc168 100644 --- a/src/npair_skip.cpp +++ b/src/npair_skip.cpp @@ -22,8 +22,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NPairSkipTemp::NPairSkipTemp(LAMMPS *lmp) : NPair(lmp) {} +template +NPairSkipTemp::NPairSkipTemp(LAMMPS *lmp) : NPair(lmp) {} /* ---------------------------------------------------------------------- build skip list for subset of types from parent list @@ -33,8 +33,8 @@ NPairSkipTemp::NPairSkipTemp(LAMMPS *lmp) : NPair(lmp) {} if ghost, also store neighbors of ghost atoms & set inum,gnum correctly ------------------------------------------------------------------------- */ -template -void NPairSkipTemp::build(NeighList *list) +template +void NPairSkipTemp::build(NeighList *list) { int i, j, ii, jj, n, itype, jnum, joriginal; int *neighptr, *jlist; @@ -124,8 +124,6 @@ void NPairSkipTemp::build(NeighList *list) } namespace LAMMPS_NS { -template class NPairSkipTemp<0,0>; -template class NPairSkipTemp<1,0>; -template class NPairSkipTemp<0,1>; -template class NPairSkipTemp<1,1>; +template class NPairSkipTemp<0>; +template class NPairSkipTemp<1>; } diff --git a/src/npair_skip.h b/src/npair_skip.h index 06da1be85be..cb0d2015555 100644 --- a/src/npair_skip.h +++ b/src/npair_skip.h @@ -13,41 +13,41 @@ #ifdef NPAIR_CLASS // clang-format off -typedef NPairSkipTemp<0, 0> NPairSkip; +typedef NPairSkipTemp<0> NPairSkip; NPairStyle(skip, NPairSkip, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairSkipTemp<0, 0> NPairSkip; +typedef NPairSkipTemp<0> NPairSkip; NPairStyle(skip/ghost, NPairSkip, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST); -typedef NPairSkipTemp<1, 0> NPairSkipSize; +typedef NPairSkipTemp<0> NPairSkipSize; NPairStyle(skip/half/size, NPairSkipSize, NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI); -typedef NPairSkipTemp<0, 1> NPairSkipTrim; +typedef NPairSkipTemp<1> NPairSkipTrim; NPairStyle(skip/trim, NPairSkipTrim, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_TRIM); -typedef NPairSkipTemp<0, 1> NPairSkipTrim; +typedef NPairSkipTemp<1> NPairSkipTrim; NPairStyle(skip/ghost/trim, NPairSkipTrim, NP_SKIP | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | NP_NEWTON | NP_NEWTOFF | NP_ORTHO | NP_TRI | NP_GHOST | NP_TRIM); -typedef NPairSkipTemp<1, 1> NPairSkipTrimSize; +typedef NPairSkipTemp<1> NPairSkipTrimSize; NPairStyle(skip/trim/half/size, NPairSkipTrimSize, NP_SKIP | NP_SIZE | NP_HALF | NP_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_MULTI_OLD | @@ -63,7 +63,7 @@ NPairStyle(skip/trim/half/size, namespace LAMMPS_NS { -template +template class NPairSkipTemp : public NPair { public: NPairSkipTemp(class LAMMPS *); From ecc460b3588d63d794eb798e4399476ab4d3afe3 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 12 Dec 2023 17:17:32 -0600 Subject: [PATCH 208/300] Added the new pair styles to Command_pairs.rst and pair_style.rst --- doc/src/Commands_pair.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index 828f0b10d94..e7761e7bee7 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -87,7 +87,7 @@ OPT. * :doc:`coul/long/soft (o) ` * :doc:`coul/msm (o) ` * :doc:`coul/slater/cut ` - * :doc:`coul/slater/long ` + * :doc:`coul/slater/long (g) ` * :doc:`coul/shield ` * :doc:`coul/streitz ` * :doc:`coul/tt ` @@ -110,7 +110,7 @@ OPT. * :doc:`eam/he ` * :doc:`edip (o) ` * :doc:`edip/multi ` - * :doc:`edpd ` + * :doc:`edpd (g) ` * :doc:`eff/cut ` * :doc:`eim (o) ` * :doc:`exp6/rx (k) ` @@ -158,14 +158,14 @@ OPT. * :doc:`lj/cut (gikot) ` * :doc:`lj/cut/coul/cut (gko) ` * :doc:`lj/cut/coul/cut/dielectric (o) ` - * :doc:`lj/cut/coul/cut/soft (o) ` + * :doc:`lj/cut/coul/cut/soft (go) ` * :doc:`lj/cut/coul/debye (gko) ` * :doc:`lj/cut/coul/debye/dielectric (o) ` * :doc:`lj/cut/coul/dsf (gko) ` * :doc:`lj/cut/coul/long (gikot) ` * :doc:`lj/cut/coul/long/cs ` * :doc:`lj/cut/coul/long/dielectric (o) ` - * :doc:`lj/cut/coul/long/soft (o) ` + * :doc:`lj/cut/coul/long/soft (go) ` * :doc:`lj/cut/coul/msm (go) ` * :doc:`lj/cut/coul/msm/dielectric ` * :doc:`lj/cut/coul/wolf (o) ` @@ -202,7 +202,7 @@ OPT. * :doc:`lubricate/poly (o) ` * :doc:`lubricateU ` * :doc:`lubricateU/poly ` - * :doc:`mdpd ` + * :doc:`mdpd (g) ` * :doc:`mdpd/rhosum ` * :doc:`meam (k) ` * :doc:`meam/ms (k) ` @@ -268,11 +268,11 @@ OPT. * :doc:`smtbq ` * :doc:`snap (ik) ` * :doc:`soft (go) ` - * :doc:`sph/heatconduction ` + * :doc:`sph/heatconduction (g) ` * :doc:`sph/idealgas ` - * :doc:`sph/lj ` + * :doc:`sph/lj (g) ` * :doc:`sph/rhosum ` - * :doc:`sph/taitwater ` + * :doc:`sph/taitwater (g) ` * :doc:`sph/taitwater/morris ` * :doc:`spin/dipole/cut ` * :doc:`spin/dipole/long ` From 6923c04e47f89718e2611acde187103fe70cdbce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 20:59:26 -0500 Subject: [PATCH 209/300] spelling and formatting fixes. small clarifications --- doc/src/Build_settings.rst | 45 ++++++++++---------- doc/src/compute_pace.rst | 46 +++++++++++---------- doc/utils/sphinx-config/false_positives.txt | 2 + 3 files changed, 50 insertions(+), 43 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 39608a5c32f..7fb75395066 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -43,12 +43,14 @@ When the KSPACE package is included in a LAMMPS build, the require use of an FFT library to compute 1d FFTs. The KISS FFT library is included with LAMMPS, but other libraries can be faster. LAMMPS can use them if they are available on your system. -Alternatively, LAMMPS can use the -`heFFTe `_ -library for the MPI communication algorithms, -which comes with many optimizations for special cases, -e.g., leveraging 2D and 3D backend transforms and -better pipelining for packing and communication. + +.. versionadded:: TBD + +Alternatively, LAMMPS can use the `heFFTe +`_ library for the MPI +communication algorithms, which comes with many optimizations for +special cases, e.g. leveraging available 2D and 3D FFTs in the back end +libraries and better pipelining for packing and communication. .. tabs:: @@ -83,14 +85,15 @@ better pipelining for packing and communication. -D MKL_INCLUDE_DIR=path # ditto for Intel MKL library -D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries -D MKL_LIBRARY=path # path to MKL libraries - -D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock backend + -D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock heFFTe back end -D Heffte_ROOT=path # path to an existing heFFTe installation .. note:: - heFFTe comes with a builtin stock backend for FFTs; however, the backend - is intended for testing purposes and is not performance optimized - for large scale production runs. + heFFTe comes with a builtin (= stock) back end for FFTs, i.e. a + default internal FFT implementation; however, this stock back + end is intended for testing purposes only and is not optimized + for production runs. .. tab:: Traditional make @@ -140,9 +143,9 @@ better pipelining for packing and communication. which will define the `heffte_` include variables needed to link to heFFTe from an external project using traditional make. The `-DFFT_HEFFTE` is required to switch to using heFFTe, while the optional `-DFFT_HEFFTE_FFTW` - selects the desired heFFTe backend, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`, - omitting the variable will default to the `stock` backend. - The heFFTe `stock` backend is intended to be used for testing and debugging, + selects the desired heFFTe back end, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`, + omitting the variable will default to the `stock` back end. + The heFFTe `stock` back end is intended to be used for testing and debugging, but is not performance optimized for large scale production runs. The `KISS FFT library `_ is @@ -204,14 +207,14 @@ Depending on the machine, the size of the FFT grid, the number of processors used, one option may be slightly faster. The default is ARRAY mode. -When using ``-DFFT_HEFFTE`` CMake will first look for an existing install -with hints provided by ``-DHeffte_ROOT``, as recommended by the CMake -standard and note that the name is case sensitive. If CMake cannot find -a heFFTe installation with the correct backend (e.g., FFTW or MKL), -it will attempt to download and build the library automatically. -In this case, LAMMPS CMake will also accept all heFFTe specific variables -listed in the -`heFFTe documentation `_ +When using ``-DFFT_HEFFTE`` CMake will first look for an existing +install with hints provided by ``-DHeffte_ROOT``, as recommended by the +CMake standard and note that the name is case sensitive. If CMake cannot +find a heFFTe installation with the correct back end (e.g., FFTW or +MKL), it will attempt to download and build the library automatically. +In this case, LAMMPS CMake will also accept all heFFTe specific +variables listed in the `heFFTe documentation +`_ and those variables will be passed into the heFFTe build. ---------- diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index 0c4a295f1b2..c510319dfca 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -12,7 +12,7 @@ Syntax * ID, group-ID are documented in :doc:`compute ` command * pace = style name of this compute command -* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style `) including ACE hyperparameters, bonds, and generalized coupling coefficients +* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style `) including ACE hyper-parameters, bonds, and generalized coupling coefficients * keyword = *bikflag* or *dgradflag* .. parsed-literal:: @@ -38,28 +38,30 @@ Description .. versionadded:: TBD -This compute calculates a set of quantities related to the atomic cluster -expansion (ACE) descriptors of the atoms in a group. ACE descriptors are -a highly generalizable atomic descriptor, encoding the radial and angular -distribution of neighbor atoms, up to arbitrary bond order (rank). The -detailed mathematical definition is given in the paper by -:ref:`(Drautz) `. These descriptors are used in the -:doc:`pace pair_style `. Quantities obtained from `compute pace` -are related to those used in :doc:`pace pair_style ` to +This compute calculates a set of quantities related to the atomic +cluster expansion (ACE) descriptors of the atoms in a group. ACE +descriptors are highly general atomic descriptors, encoding the radial +and angular distribution of neighbor atoms, up to arbitrary bond order +(rank). The detailed mathematical definition is given in the paper by +:ref:`(Drautz) `. These descriptors are used in the +:doc:`pace pair_style `. Quantities obtained from `compute +pace` are related to those used in :doc:`pace pair_style ` to evaluate atomic energies, forces, and stresses for linear ACE models. + For example, the energy for a linear ACE model is calculated as: -:math:`E=\sum_i^{N\_atoms} \sum_{\boldsymbol{\nu}} c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\boldsymbol{\nu}}}`. -The ACE descriptors for atom `i` :math:`B_{i,\boldsymbol{\nu}}`, and -:math:`c_{\nu}` are linear model parameters. The detailed definition -and indexing convention for ACE descriptors is given in :ref:`(Drautz) `. -In short, body order :math:`N`, angular character, radial character, -and chemical elements in the *N-body* descriptor are encoded by :math:`\nu`. -In the :doc:`pace pair_style `, the linear model parameters -and the ACE descriptors are combined for efficient evaluation of energies -and forces. The details and benefits of this efficient implementation are -given in :ref:`(Lysogorskiy) `. et. al, but the combined -descriptors and linear model parameters for the purposes of `compute pace` -may be expressed in terms of the ACE descriptors mentioned above. +:math:`E=\sum_i^{N\_atoms} \sum_{\boldsymbol{\nu}} c_{\boldsymbol{\nu}} +B_{i,\boldsymbol{\boldsymbol{\nu}}}`. The ACE descriptors for atom `i` +:math:`B_{i,\boldsymbol{\nu}}`, and :math:`c_{\nu}` are linear model +parameters. The detailed definition and indexing convention for ACE +descriptors is given in :ref:`(Drautz) `. In short, body +order :math:`N`, angular character, radial character, and chemical +elements in the *N-body* descriptor are encoded by :math:`\nu`. In the +:doc:`pace pair_style `, the linear model parameters and the +ACE descriptors are combined for efficient evaluation of energies and +forces. The details and benefits of this efficient implementation are +given in :ref:`(Lysogorskiy) `, but the combined +descriptors and linear model parameters for the purposes of `compute +pace` may be expressed in terms of the ACE descriptors mentioned above. :math:`c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\nu}}= \sum_{\boldsymbol{\nu}' \in \boldsymbol{\nu} } \big[ c_{\boldsymbol{\nu}} C(\boldsymbol{\nu}') \big] A_{i,\boldsymbol{\nu}'}` @@ -90,7 +92,7 @@ The coefficient file, `.yace`, ultimately defines the number of ACE descriptors to be computed, their maximum body-order, the degree of angular character they have, the degree of radial character they have, the chemical character (which element-element interactions are encoded by descriptors), -and other hyperparameters defined in :ref:`(Drautz) `. These may +and other hyper-parameters defined in :ref:`(Drautz) `. These may be modeled after the potential files in :doc:`pace pair_style `, and have the same format. Details on how to generate the coefficient files to train ACE models may be found in `FitSNAP `_. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 7256272142e..c884071d300 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1391,6 +1391,7 @@ Hebbeker Hebenstreit Hecht Heenen +heFFTe Hendrik Henin Henkelman @@ -2800,6 +2801,7 @@ pIm pimd Piola pIp +pipelining Pisarev Pishevar Pitera From 8f7d7f9178ec9146977942004cf52d11d3796039 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 12 Dec 2023 20:15:05 -0600 Subject: [PATCH 210/300] Fixed typo in the pair style lj/cut/coul/cut/soft/gpu header --- src/GPU/pair_lj_cut_coul_cut_soft_gpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h index 8298d778275..0776695ba3d 100644 --- a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.h @@ -13,7 +13,7 @@ #ifdef PAIR_CLASS // clang-format off -PairStyle(lj/cut/coul/soft/soft/gpu,PairLJCutCoulCutSoftGPU); +PairStyle(lj/cut/coul/cut/soft/gpu,PairLJCutCoulCutSoftGPU); // clang-format on #else From 3a89af446928e35a987043d95e37a048ccfc9564 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 21:52:45 -0500 Subject: [PATCH 211/300] silence preprocessor warning from leaking internal define in cython generated code --- src/PYTHON/python_impl.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index 6dd5175621e..c1c26c7bb34 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -29,19 +29,31 @@ #ifdef MLIAP_PYTHON #include "mliap_model_python.h" +#if defined(__PYX_EXTERN_C) && !defined(CYTHON_EXTERN_C) +#undef __PYX_EXTERN_C +#endif #include "mliap_unified.h" // The above should somehow really be included in the next file. // We could get around this with cython --capi-reexport-cincludes // However, that exposes -too many- headers. #include "mliap_model_python_couple.h" +#if defined(__PYX_EXTERN_C) && !defined(CYTHON_EXTERN_C) +#undef __PYX_EXTERN_C +#endif #include "mliap_unified_couple.h" #ifdef LMP_KOKKOS #include "mliap_model_python_kokkos.h" +#if defined(__PYX_EXTERN_C) && !defined(CYTHON_EXTERN_C) +#undef __PYX_EXTERN_C +#endif #include "mliap_unified_kokkos.h" // The above should somehow really be included in the next file. // We could get around this with cython --capi-reexport-cincludes // However, that exposes -too many- headers. #include "mliap_model_python_couple_kokkos.h" +#if defined(__PYX_EXTERN_C) && !defined(CYTHON_EXTERN_C) +#undef __PYX_EXTERN_C +#endif #include "mliap_unified_couple_kokkos.h" From 26d067133797d7472d20ed255f58f203c81cacb1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 22:30:15 -0500 Subject: [PATCH 212/300] update compute slcsa example to better align with LAMMPS conventions and move to more appropriate folder --- .../sna_nnn_slcsa}/Zr_2.eam.fs | 0 .../sna_nnn_slcsa/data.zr_cell} | 0 .../sna_nnn_slcsa/dir.inputs/Zr.potential | 0 .../sna_nnn_slcsa/dir.slcsa/lda_scalings.dat | 0 .../sna_nnn_slcsa/dir.slcsa/lr_bias.dat | 0 .../sna_nnn_slcsa/dir.slcsa/lr_decision.dat | 0 .../dir.slcsa/mahalanobis_file.dat | 0 .../dir.slcsa/mean_descriptor.dat | 0 examples/PACKAGES/sna_nnn_slcsa/in.slcsa | 57 ++++++++ .../sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 | 137 ++++++++++++++++++ .../sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 | 137 ++++++++++++++++++ .../sna_nnn_slcsa/dir.inputs/in_lammps_npt | 61 -------- 12 files changed, 331 insertions(+), 61 deletions(-) rename examples/{sna_nnn_slcsa/dir.inputs => PACKAGES/sna_nnn_slcsa}/Zr_2.eam.fs (100%) rename examples/{sna_nnn_slcsa/dir.inputs/Zr_cell.lmp => PACKAGES/sna_nnn_slcsa/data.zr_cell} (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.inputs/Zr.potential (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.slcsa/lr_bias.dat (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.slcsa/lr_decision.dat (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat (100%) rename examples/{ => PACKAGES}/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat (100%) create mode 100644 examples/PACKAGES/sna_nnn_slcsa/in.slcsa create mode 100644 examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 create mode 100644 examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 delete mode 100644 examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs b/examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs similarity index 100% rename from examples/sna_nnn_slcsa/dir.inputs/Zr_2.eam.fs rename to examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp b/examples/PACKAGES/sna_nnn_slcsa/data.zr_cell similarity index 100% rename from examples/sna_nnn_slcsa/dir.inputs/Zr_cell.lmp rename to examples/PACKAGES/sna_nnn_slcsa/data.zr_cell diff --git a/examples/sna_nnn_slcsa/dir.inputs/Zr.potential b/examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential similarity index 100% rename from examples/sna_nnn_slcsa/dir.inputs/Zr.potential rename to examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat similarity index 100% rename from examples/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat rename to examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat similarity index 100% rename from examples/sna_nnn_slcsa/dir.slcsa/lr_bias.dat rename to examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat diff --git a/examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_decision.dat similarity index 100% rename from examples/sna_nnn_slcsa/dir.slcsa/lr_decision.dat rename to examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_decision.dat diff --git a/examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat similarity index 100% rename from examples/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat rename to examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/mahalanobis_file.dat diff --git a/examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat similarity index 100% rename from examples/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat rename to examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/mean_descriptor.dat diff --git a/examples/PACKAGES/sna_nnn_slcsa/in.slcsa b/examples/PACKAGES/sna_nnn_slcsa/in.slcsa new file mode 100644 index 00000000000..9e65afefda3 --- /dev/null +++ b/examples/PACKAGES/sna_nnn_slcsa/in.slcsa @@ -0,0 +1,57 @@ +variable trequis equal 750.0 +variable prequis_low equal 0.0 +variable prequis_high equal 25.0e4 +variable equilSteps equal 200 +variable runSteps equal 2000 +variable freqdump equal 200 +variable pstime equal step*dt +variable sxx equal 1.e-4*pxx +variable syy equal 1.e-4*pyy +variable szz equal 1.e-4*pzz +variable sxy equal 1.e-4*pxy +variable sxz equal 1.e-4*pxz +variable syz equal 1.e-4*pyz +variable TK equal temp +variable PE equal pe +variable KE equal ke +variable V equal vol + +dimension 3 +boundary p p p +units metal +atom_style atomic +read_data data.zr_cell +replicate 1 5 5 + +change_box all triclinic + +pair_style hybrid/overlay zero 9.0 eam/fs +pair_coeff * * zero +pair_coeff * * eam/fs Zr_2.eam.fs Zr + +timestep 0.002 + +thermo 50 +thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz + +# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat + +velocity all create ${trequis} 42345 dist gaussian + +# 1st step : compute the bispectrum on 24 nearest neighbors +compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25 + +# 2nd step : perform dimension reduction + logistic regression +compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] + +#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*] + +# for testing only. in production use dump as shown above +compute max_slcsa all reduce max c_slcsa[*] +compute min_slcsa all reduce min c_slcsa[*] +thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*] + +#fix 1 all nvt temp ${trequis} ${trequis} 0.100 +fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 + +run ${equilSteps} diff --git a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 new file mode 100644 index 00000000000..38b1f112514 --- /dev/null +++ b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 @@ -0,0 +1,137 @@ +LAMMPS (21 Nov 2023) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +variable trequis equal 750.0 +variable prequis_low equal 0.0 +variable prequis_high equal 25.0e4 +variable equilSteps equal 200 +variable runSteps equal 2000 +variable freqdump equal 200 +variable pstime equal step*dt +variable sxx equal 1.e-4*pxx +variable syy equal 1.e-4*pyy +variable szz equal 1.e-4*pzz +variable sxy equal 1.e-4*pxy +variable sxz equal 1.e-4*pxz +variable syz equal 1.e-4*pyz +variable TK equal temp +variable PE equal pe +variable KE equal ke +variable V equal vol + +dimension 3 +boundary p p p +units metal +atom_style atomic +read_data data.zr_cell +Reading data file ... + orthogonal box = (0 0 0) to (19.374 33.556752 30.846) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 864 atoms + read_data CPU = 0.002 seconds +replicate 1 5 5 +Replication is creating a 1x5x5 = 25 times larger system... + orthogonal box = (0 0 0) to (19.374 167.78376 154.23) + 1 by 1 by 1 MPI processor grid + 21600 atoms + replicate CPU = 0.001 seconds + +change_box all triclinic +Changing box ... + triclinic box = (0 0 0) to (19.374 167.78376 154.23) with tilt (0 0 0) + +pair_style hybrid/overlay zero 9.0 eam/fs +pair_coeff * * zero +pair_coeff * * eam/fs Zr_2.eam.fs Zr + +timestep 0.002 + +thermo 50 +thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz + +# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat + +velocity all create ${trequis} 42345 dist gaussian +velocity all create 750 42345 dist gaussian + +# 1st step : compute the bispectrum on 24 nearest neighbors +compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25 + +# 2nd step : perform dimension reduction + logistic regression +compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] + +#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*] + +# for testing only. in production use dump as shown above +compute max_slcsa all reduce max c_slcsa[*] +compute min_slcsa all reduce min c_slcsa[*] +thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*] + +#fix 1 all nvt temp ${trequis} ${trequis} 0.100 +fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri 0 ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri 0 0 1.0 + +run ${equilSteps} +run 200 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 11 + ghost atom cutoff = 11 + binsize = 5.5, bins = 4 31 29 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/newton/tri + stencil: half/bin/3d/tri + bin: standard + (2) pair eam/fs, perpetual, trim from (1) + attributes: half, newton on, cut 9.6 + pair build: trim + stencil: none + bin: none + (3) compute sna/atom, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 31.9 | 31.9 | 31.9 Mbytes + Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5] + 0 -139689.93 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 + 50 -138733.53 1165.0291 417.29048 8.2778907 18.221432 3.019507 113.65218 2 5.2735872 10.834132 0.042702874 108.2674 2 + 100 -138821.33 1442.648 516.7281 8.3357676 17.470311 2.7073063 113.39999 2 6.145345 12.307441 0.034372881 108.61824 2 + 150 -138607.9 1435.9634 514.33383 8.3817341 17.984657 2.892662 113.40287 2 5.3635301 10.064171 0.030283213 107.5829 2 + 200 -138494.56 1560.9093 559.08699 8.5615388 18.429835 2.8130845 114.31517 2 5.4711815 11.113891 0.074490923 107.87418 2 +Loop time of 36.3263 on 1 procs for 200 steps with 21600 atoms + +Performance: 0.951 ns/day, 25.227 hours/ns, 5.506 timesteps/s, 118.922 katom-step/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 9.012 | 9.012 | 9.012 | 0.0 | 24.81 +Neigh | 0.67881 | 0.67881 | 0.67881 | 0.0 | 1.87 +Comm | 0.045066 | 0.045066 | 0.045066 | 0.0 | 0.12 +Output | 26.422 | 26.422 | 26.422 | 0.0 | 72.74 +Modify | 0.14726 | 0.14726 | 0.14726 | 0.0 | 0.41 +Other | | 0.02121 | | | 0.06 + +Nlocal: 21600 ave 21600 max 21600 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 36652 ave 36652 max 36652 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 2.5961e+06 ave 2.5961e+06 max 2.5961e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 5.19109e+06 ave 5.19109e+06 max 5.19109e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 5191091 +Ave neighs/atom = 240.32829 +Neighbor list builds = 5 +Dangerous builds = 0 +Total wall time: 0:00:43 diff --git a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 new file mode 100644 index 00000000000..bda7ee0f39d --- /dev/null +++ b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 @@ -0,0 +1,137 @@ +LAMMPS (21 Nov 2023) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) + using 1 OpenMP thread(s) per MPI task +variable trequis equal 750.0 +variable prequis_low equal 0.0 +variable prequis_high equal 25.0e4 +variable equilSteps equal 200 +variable runSteps equal 2000 +variable freqdump equal 200 +variable pstime equal step*dt +variable sxx equal 1.e-4*pxx +variable syy equal 1.e-4*pyy +variable szz equal 1.e-4*pzz +variable sxy equal 1.e-4*pxy +variable sxz equal 1.e-4*pxz +variable syz equal 1.e-4*pyz +variable TK equal temp +variable PE equal pe +variable KE equal ke +variable V equal vol + +dimension 3 +boundary p p p +units metal +atom_style atomic +read_data data.zr_cell +Reading data file ... + orthogonal box = (0 0 0) to (19.374 33.556752 30.846) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 864 atoms + read_data CPU = 0.002 seconds +replicate 1 5 5 +Replication is creating a 1x5x5 = 25 times larger system... + orthogonal box = (0 0 0) to (19.374 167.78376 154.23) + 1 by 2 by 2 MPI processor grid + 21600 atoms + replicate CPU = 0.001 seconds + +change_box all triclinic +Changing box ... + triclinic box = (0 0 0) to (19.374 167.78376 154.23) with tilt (0 0 0) + +pair_style hybrid/overlay zero 9.0 eam/fs +pair_coeff * * zero +pair_coeff * * eam/fs Zr_2.eam.fs Zr + +timestep 0.002 + +thermo 50 +thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz + +# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat + +velocity all create ${trequis} 42345 dist gaussian +velocity all create 750 42345 dist gaussian + +# 1st step : compute the bispectrum on 24 nearest neighbors +compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25 + +# 2nd step : perform dimension reduction + logistic regression +compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] + +#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*] + +# for testing only. in production use dump as shown above +compute max_slcsa all reduce max c_slcsa[*] +compute min_slcsa all reduce min c_slcsa[*] +thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*] + +#fix 1 all nvt temp ${trequis} ${trequis} 0.100 +fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri ${prequis_low} ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri 0 ${prequis_low} 1.0 +fix 1 all npt temp 750 750 0.100 tri 0 0 1.0 + +run ${equilSteps} +run 200 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 11 + ghost atom cutoff = 11 + binsize = 5.5, bins = 4 31 29 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) pair zero, perpetual + attributes: half, newton on + pair build: half/bin/newton/tri + stencil: half/bin/3d/tri + bin: standard + (2) pair eam/fs, perpetual, trim from (1) + attributes: half, newton on, cut 9.6 + pair build: trim + stencil: none + bin: none + (3) compute sna/atom, occasional + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.26 | 11.45 | 11.64 Mbytes + Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5] + 0 -139689.93 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 + 50 -138733.53 1165.0291 417.29048 8.2778907 18.221432 3.019507 113.65218 2 5.2735872 10.834132 0.042702874 108.2674 2 + 100 -138821.33 1442.648 516.7281 8.3357676 17.470311 2.7073063 113.39999 2 6.145345 12.307441 0.034372881 108.61824 2 + 150 -138607.9 1435.9634 514.33383 8.3817341 17.984657 2.892662 113.40287 2 5.3635301 10.064171 0.030283213 107.5829 2 + 200 -138494.56 1560.9093 559.08699 8.5615388 18.429835 2.8130845 114.31517 2 5.4711815 11.113891 0.074490923 107.87418 2 +Loop time of 9.89929 on 4 procs for 200 steps with 21600 atoms + +Performance: 3.491 ns/day, 6.875 hours/ns, 20.203 timesteps/s, 436.395 katom-step/s +99.8% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.61 | 2.618 | 2.622 | 0.3 | 26.45 +Neigh | 0.19338 | 0.19618 | 0.19967 | 0.5 | 1.98 +Comm | 0.051086 | 0.055818 | 0.065206 | 2.4 | 0.56 +Output | 6.9725 | 6.9725 | 6.9725 | 0.0 | 70.43 +Modify | 0.04635 | 0.046617 | 0.046825 | 0.1 | 0.47 +Other | | 0.01018 | | | 0.10 + +Nlocal: 5400 ave 5431 max 5376 min +Histogram: 1 1 0 0 0 0 1 0 0 1 +Nghost: 12889.2 ave 12909 max 12847 min +Histogram: 1 0 0 0 0 0 0 0 1 2 +Neighs: 649026 ave 652559 max 642783 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +FullNghs: 1.29777e+06 ave 1.30656e+06 max 1.29086e+06 min +Histogram: 1 1 0 0 0 0 1 0 0 1 + +Total # of neighbors = 5191084 +Ave neighs/atom = 240.32796 +Neighbor list builds = 5 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt b/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt deleted file mode 100644 index c325e0572fa..00000000000 --- a/examples/sna_nnn_slcsa/dir.inputs/in_lammps_npt +++ /dev/null @@ -1,61 +0,0 @@ -variable trequis equal 750.0 -variable prequis_low equal 0.0 -variable prequis_high equal 25.0e4 -variable equilSteps equal 2000 -variable runSteps equal 20000 -variable freqdump equal 200 -variable pstime equal step*dt -variable sxx equal 1.e-4*pxx -variable syy equal 1.e-4*pyy -variable szz equal 1.e-4*pzz -variable sxy equal 1.e-4*pxy -variable sxz equal 1.e-4*pxz -variable syz equal 1.e-4*pyz -variable TK equal temp -variable PE equal pe -variable KE equal ke -variable V equal vol - -dimension 3 -boundary p p p -units metal -atom_style atomic -read_data dir.inputs/Zr_cell.lmp -replicate 1 10 10 - -#neighbor 0.0 bin -# neigh_modify delay 0 every 1 check no - -change_box all triclinic - -include dir.inputs/Zr.potential - -timestep 2.0e-3 - -thermo 1000 -thermo_style custom step pe ke temp pxx pyy pzz pxy pyz pxz - -fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat - -velocity all create ${trequis} 42345 dist gaussian - -# 1st step : compute the bispectrum on 24 nearest neighbors -compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25 - -# 2nd step : perform dimension reduction + logistic regression -compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] - -dump d1 all custom ${freqdump} dir.dumps/slcsa_demo.*.dump id x y z c_slcsa[*] - -#fix 1 all nvt temp ${trequis} ${trequis} 0.100 -fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0 - -run ${equilSteps} - -unfix 1 -#fix 1 all nvt temp ${trequis} ${trequis} 0.100 -fix 1 all npt temp ${trequis} ${trequis} 0.100 aniso ${prequis_high} ${prequis_high} 1.0 - -run ${runSteps} - -unfix 1 \ No newline at end of file From 29cf0120618e0dde7fd1ca8d42844fb5c6b524d2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 23:28:09 -0500 Subject: [PATCH 213/300] re-use existing potential file, fix screen/log output, plug memory leaks --- examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs | 6006 ----------------- examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs | 1 + .../sna_nnn_slcsa/dir.inputs/Zr.potential | 3 - examples/PACKAGES/sna_nnn_slcsa/in.slcsa | 2 +- .../sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 | 85 +- .../sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 | 99 +- src/EXTRA-COMPUTE/compute_slcsa_atom.cpp | 290 +- src/EXTRA-COMPUTE/compute_slcsa_atom.h | 2 +- 8 files changed, 287 insertions(+), 6201 deletions(-) delete mode 100644 examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs create mode 120000 examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs delete mode 100644 examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential diff --git a/examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs b/examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs deleted file mode 100644 index 47d50eea902..00000000000 --- a/examples/PACKAGES/sna_nnn_slcsa/Zr_2.eam.fs +++ /dev/null @@ -1,6006 +0,0 @@ -Sourse: Potential #2 from [M.I. Mendelev and G.J. Ackland, Phil. Mag. Letters 87, 349-359 (2007).] -Contact information: mikhail.mendelev@gmail.com -Tuesday, Feb 24, 2009 The potential was taken from v3_5_hcp (in C:\SIMULATION.MD\Zr\Results\v3_5) -1 Zr -10000 5.00000000000000E-0002 10000 7.60000000000000E-0004 7.60000000000000E+0000 -40 9.12240000000000E+0001 3.22029900000000E+0000 hcp -0 -2.23606797749979E-0001 -3.16227766016838E-0001 -3.87298334620742E-0001 -4.47213595499958E-0001 --5.00000000000000E-0001 -5.47722557505166E-0001 -5.91607978309962E-0001 -6.32455532033676E-0001 -6.70820393249937E-0001 --7.07106781186548E-0001 -7.41619848709566E-0001 -7.74596669241483E-0001 -8.06225774829855E-0001 -8.36660026534076E-0001 --8.66025403784439E-0001 -8.94427190999916E-0001 -9.21954445729289E-0001 -9.48683298050514E-0001 -9.74679434480896E-0001 --1.00000000000000E+0000 -1.02469507659596E+0000 -1.04880884817015E+0000 -1.07238052947636E+0000 -1.09544511501033E+0000 --1.11803398874989E+0000 -1.14017542509914E+0000 -1.16189500386223E+0000 -1.18321595661992E+0000 -1.20415945787923E+0000 --1.22474487139159E+0000 -1.24498995979887E+0000 -1.26491106406735E+0000 -1.28452325786651E+0000 -1.30384048104053E+0000 --1.32287565553230E+0000 -1.34164078649987E+0000 -1.36014705087354E+0000 -1.37840487520902E+0000 -1.39642400437689E+0000 --1.41421356237310E+0000 -1.43178210632764E+0000 -1.44913767461894E+0000 -1.46628782986152E+0000 -1.48323969741913E+0000 --1.50000000000000E+0000 -1.51657508881031E+0000 -1.53297097167559E+0000 -1.54919333848297E+0000 -1.56524758424985E+0000 --1.58113883008419E+0000 -1.59687194226713E+0000 -1.61245154965971E+0000 -1.62788205960997E+0000 -1.64316767251550E+0000 --1.65831239517770E+0000 -1.67332005306815E+0000 -1.68819430161341E+0000 -1.70293863659264E+0000 -1.71755640373177E+0000 --1.73205080756888E+0000 -1.74642491965730E+0000 -1.76068168616590E+0000 -1.77482393492988E+0000 -1.78885438199983E+0000 --1.80277563773199E+0000 -1.81659021245849E+0000 -1.83030052177231E+0000 -1.84390889145858E+0000 -1.85741756210067E+0000 --1.87082869338697E+0000 -1.88414436814168E+0000 -1.89736659610103E+0000 -1.91049731745428E+0000 -1.92353840616713E+0000 --1.93649167310371E+0000 -1.94935886896179E+0000 -1.96214168703486E+0000 -1.97484176581315E+0000 -1.98746069143518E+0000 --2.00000000000000E+0000 -2.01246117974981E+0000 -2.02484567313166E+0000 -2.03715487874634E+0000 -2.04939015319192E+0000 --2.06155281280883E+0000 -2.07364413533277E+0000 -2.08566536146142E+0000 -2.09761769634030E+0000 -2.10950231097290E+0000 --2.12132034355964E+0000 -2.13307290077015E+0000 -2.14476105895272E+0000 -2.15638586528478E+0000 -2.16794833886788E+0000 --2.17944947177034E+0000 -2.19089023002066E+0000 -2.20227155455452E+0000 -2.21359436211787E+0000 -2.22485954612870E+0000 --2.23606797749979E+0000 -2.24722050542442E+0000 -2.25831795812724E+0000 -2.26936114358204E+0000 -2.28035085019828E+0000 --2.29128784747792E+0000 -2.30217288664427E+0000 -2.31300670124408E+0000 -2.32379000772445E+0000 -2.33452350598575E+0000 --2.34520787991171E+0000 -2.35584379787795E+0000 -2.36643191323985E+0000 -2.37697286480094E+0000 -2.38746727726266E+0000 --2.39791576165636E+0000 -2.40831891575846E+0000 -2.41867732448956E+0000 -2.42899156029822E+0000 -2.43926218353009E+0000 --2.44948974278318E+0000 -2.45967477524977E+0000 -2.46981780704569E+0000 -2.47991935352745E+0000 -2.48997991959775E+0000 --2.50000000000000E+0000 -2.50998007960223E+0000 -2.51992063367083E+0000 -2.52982212813470E+0000 -2.53968501984006E+0000 --2.54950975679639E+0000 -2.55929677841395E+0000 -2.56904651573303E+0000 -2.57875939164553E+0000 -2.58843582110896E+0000 --2.59807621135332E+0000 -2.60768096208106E+0000 -2.61725046566048E+0000 -2.62678510731274E+0000 -2.63628526529281E+0000 --2.64575131106459E+0000 -2.65518360947035E+0000 -2.66458251889485E+0000 -2.67394839142419E+0000 -2.68328157299975E+0000 --2.69258240356725E+0000 -2.70185121722126E+0000 -2.71108834234519E+0000 -2.72029410174709E+0000 -2.72946881279124E+0000 --2.73861278752583E+0000 -2.74772633280682E+0000 -2.75680975041804E+0000 -2.76586333718787E+0000 -2.77488738510232E+0000 --2.78388218141501E+0000 -2.79284800875379E+0000 -2.80178514522438E+0000 -2.81069386451104E+0000 -2.81957443597434E+0000 --2.82842712474619E+0000 -2.83725219182222E+0000 -2.84604989415154E+0000 -2.85482048472404E+0000 -2.86356421265527E+0000 --2.87228132326901E+0000 -2.88097205817759E+0000 -2.88963665535998E+0000 -2.89827534923789E+0000 -2.90688837074973E+0000 --2.91547594742265E+0000 -2.92403830344269E+0000 -2.93257565972304E+0000 -2.94108823397055E+0000 -2.94957624075052E+0000 --2.95803989154981E+0000 -2.96647939483827E+0000 -2.97489495612870E+0000 -2.98328677803526E+0000 -2.99165506033032E+0000 --3.00000000000000E+0000 -3.00832179129826E+0000 -3.01662062579967E+0000 -3.02489669245083E+0000 -3.03315017762062E+0000 --3.04138126514911E+0000 -3.04959013639538E+0000 -3.05777697028413E+0000 -3.06594194335118E+0000 -3.07408522978788E+0000 --3.08220700148449E+0000 -3.09030742807249E+0000 -3.09838667696593E+0000 -3.10644491340181E+0000 -3.11448230047949E+0000 --3.12249899919920E+0000 -3.13049516849971E+0000 -3.13847096529504E+0000 -3.14642654451045E+0000 -3.15436205911750E+0000 --3.16227766016838E+0000 -3.17017349682947E+0000 -3.17804971641414E+0000 -3.18590646441480E+0000 -3.19374388453426E+0000 --3.20156211871642E+0000 -3.20936130717624E+0000 -3.21714158842908E+0000 -3.22490309931942E+0000 -3.23264597504892E+0000 --3.24037034920393E+0000 -3.24807635378234E+0000 -3.25576411921994E+0000 -3.26343377441614E+0000 -3.27108544675922E+0000 --3.27871926215100E+0000 -3.28633534503100E+0000 -3.29393381840012E+0000 -3.30151480384384E+0000 -3.30907842155486E+0000 --3.31662479035540E+0000 -3.32415402771893E+0000 -3.33166624979154E+0000 -3.33916157141280E+0000 -3.34664010613630E+0000 --3.35410196624968E+0000 -3.36154726279432E+0000 -3.36897610558460E+0000 -3.37638860322683E+0000 -3.38378486313773E+0000 --3.39116499156263E+0000 -3.39852909359329E+0000 -3.40587727318528E+0000 -3.41320963317520E+0000 -3.42052627529741E+0000 --3.42782730020052E+0000 -3.43511280746353E+0000 -3.44238289561170E+0000 -3.44963766213207E+0000 -3.45687720348872E+0000 --3.46410161513775E+0000 -3.47131099154196E+0000 -3.47850542618522E+0000 -3.48568501158668E+0000 -3.49284983931460E+0000 --3.50000000000000E+0000 -3.50713558335004E+0000 -3.51425667816112E+0000 -3.52136337233180E+0000 -3.52845575287547E+0000 --3.53553390593274E+0000 -3.54259791678367E+0000 -3.54964786985977E+0000 -3.55668384875575E+0000 -3.56370593624109E+0000 --3.57071421427143E+0000 -3.57770876399966E+0000 -3.58468966578698E+0000 -3.59165699921359E+0000 -3.59861084308932E+0000 --3.60555127546399E+0000 -3.61247837363769E+0000 -3.61939221417077E+0000 -3.62629287289375E+0000 -3.63318042491699E+0000 --3.64005494464026E+0000 -3.64691650576209E+0000 -3.65376518128902E+0000 -3.66060104354463E+0000 -3.66742416417845E+0000 --3.67423461417477E+0000 -3.68103246386119E+0000 -3.68781778291716E+0000 -3.69459064038223E+0000 -3.70135110466435E+0000 --3.70809924354783E+0000 -3.71483512420134E+0000 -3.72155881318568E+0000 -3.72827037646145E+0000 -3.73496987939662E+0000 --3.74165738677394E+0000 -3.74833296279826E+0000 -3.75499667110372E+0000 -3.76164857476081E+0000 -3.76828873628335E+0000 --3.77491721763537E+0000 -3.78153408023781E+0000 -3.78813938497516E+0000 -3.79473319220206E+0000 -3.80131556174964E+0000 --3.80788655293195E+0000 -3.81444622455213E+0000 -3.82099463490856E+0000 -3.82753184180093E+0000 -3.83405790253616E+0000 --3.84057287393430E+0000 -3.84707681233427E+0000 -3.85356977359954E+0000 -3.86005181312376E+0000 -3.86652298583624E+0000 --3.87298334620742E+0000 -3.87943294825416E+0000 -3.88587184554509E+0000 -3.89230009120571E+0000 -3.89871773792359E+0000 --3.90512483795333E+0000 -3.91152144312159E+0000 -3.91790760483195E+0000 -3.92428337406972E+0000 -3.93064880140671E+0000 --3.93700393700591E+0000 -3.94334883062607E+0000 -3.94968353162630E+0000 -3.95600808897050E+0000 -3.96232255123179E+0000 --3.96862696659689E+0000 -3.97492138287036E+0000 -3.98120584747888E+0000 -3.98748040747538E+0000 -3.99374510954317E+0000 --4.00000000000000E+0000 -4.00624512480203E+0000 -4.01248052954778E+0000 -4.01870625948202E+0000 -4.02492235949962E+0000 --4.03112887414927E+0000 -4.03732584763727E+0000 -4.04351332383115E+0000 -4.04969134626332E+0000 -4.05585995813465E+0000 --4.06201920231798E+0000 -4.06816912136160E+0000 -4.07430975749267E+0000 -4.08044115262063E+0000 -4.08656334834051E+0000 --4.09267638593623E+0000 -4.09878030638384E+0000 -4.10487515035476E+0000 -4.11096095821889E+0000 -4.11703777004778E+0000 --4.12310562561766E+0000 -4.12916456441252E+0000 -4.13521462562707E+0000 -4.14125584816973E+0000 -4.14728827066554E+0000 --4.15331193145904E+0000 -4.15932686861708E+0000 -4.16533311993171E+0000 -4.17133072292284E+0000 -4.17731971484108E+0000 --4.18330013267038E+0000 -4.18927201313068E+0000 -4.19523539268061E+0000 -4.20119030752000E+0000 -4.20713679359253E+0000 --4.21307488658818E+0000 -4.21900462194580E+0000 -4.22492603485552E+0000 -4.23083916026124E+0000 -4.23674403286297E+0000 --4.24264068711928E+0000 -4.24852915724960E+0000 -4.25440947723653E+0000 -4.26028168082816E+0000 -4.26614580154031E+0000 --4.27200187265877E+0000 -4.27784992724149E+0000 -4.28368999812078E+0000 -4.28952211790544E+0000 -4.29534631898291E+0000 --4.30116263352131E+0000 -4.30697109347161E+0000 -4.31277173056957E+0000 -4.31856457633784E+0000 -4.32434966208793E+0000 --4.33012701892219E+0000 -4.33589667773576E+0000 -4.34165866921848E+0000 -4.34741302385683E+0000 -4.35315977193578E+0000 --4.35889894354067E+0000 -4.36463056855904E+0000 -4.37035467668243E+0000 -4.37607129740821E+0000 -4.38178046004133E+0000 --4.38748219369606E+0000 -4.39317652729776E+0000 -4.39886348958455E+0000 -4.40454310910905E+0000 -4.41021541423999E+0000 --4.41588043316392E+0000 -4.42153819388683E+0000 -4.42718872423573E+0000 -4.43283205186030E+0000 -4.43846820423443E+0000 --4.44409720865779E+0000 -4.44971909225740E+0000 -4.45533388198909E+0000 -4.46094160463909E+0000 -4.46654228682546E+0000 --4.47213595499958E+0000 -4.47772263544762E+0000 -4.48330235429198E+0000 -4.48887513749269E+0000 -4.49444101084885E+0000 --4.50000000000000E+0000 -4.50555213042752E+0000 -4.51109742745598E+0000 -4.51663591625449E+0000 -4.52216762183801E+0000 --4.52769256906871E+0000 -4.53321078265725E+0000 -4.53872228716409E+0000 -4.54422710700071E+0000 -4.54972526643093E+0000 --4.55521678957215E+0000 -4.56070170039655E+0000 -4.56618002273235E+0000 -4.57165178026498E+0000 -4.57711699653832E+0000 --4.58257569495584E+0000 -4.58802789878179E+0000 -4.59347363114234E+0000 -4.59891291502677E+0000 -4.60434577328853E+0000 --4.60977222864644E+0000 -4.61519230368573E+0000 -4.62060602085917E+0000 -4.62601340248815E+0000 -4.63141447076376E+0000 --4.63680924774785E+0000 -4.64219775537406E+0000 -4.64758001544890E+0000 -4.65295604965274E+0000 -4.65832587954085E+0000 --4.66368952654441E+0000 -4.66904701197150E+0000 -4.67439835700810E+0000 -4.67974358271904E+0000 -4.68508271004899E+0000 --4.69041575982343E+0000 -4.69574275274956E+0000 -4.70106370941726E+0000 -4.70637865030004E+0000 -4.71168759575590E+0000 --4.71699056602830E+0000 -4.72228758124704E+0000 -4.72757866142913E+0000 -4.73286382647969E+0000 -4.73814309619285E+0000 --4.74341649025257E+0000 -4.74868402823351E+0000 -4.75394572960189E+0000 -4.75920161371632E+0000 -4.76445169982864E+0000 --4.76969600708473E+0000 -4.77493455452533E+0000 -4.78016736108685E+0000 -4.78539444560216E+0000 -4.79061582680139E+0000 --4.79583152331272E+0000 -4.80104155366312E+0000 -4.80624593627917E+0000 -4.81144468948776E+0000 -4.81663783151692E+0000 --4.82182538049648E+0000 -4.82700735445887E+0000 -4.83218377133983E+0000 -4.83735464897913E+0000 -4.84252000512130E+0000 --4.84767985741633E+0000 -4.85283422342037E+0000 -4.85798312059645E+0000 -4.86312656631513E+0000 -4.86826457785523E+0000 --4.87339717240448E+0000 -4.87852436706019E+0000 -4.88364617882991E+0000 -4.88876262463213E+0000 -4.89387372129686E+0000 --4.89897948556636E+0000 -4.90407993409569E+0000 -4.90917508345343E+0000 -4.91426495012225E+0000 -4.91934955049954E+0000 --4.92442890089805E+0000 -4.92950301754650E+0000 -4.93457191659013E+0000 -4.93963561409139E+0000 -4.94469412603045E+0000 --4.94974746830583E+0000 -4.95479565673500E+0000 -4.95983870705490E+0000 -4.96487663492256E+0000 -4.96990945591567E+0000 --4.97493718553310E+0000 -4.97995983919549E+0000 -4.98497743224581E+0000 -4.98998997994986E+0000 -4.99499749749687E+0000 --5.00000000000000E+0000 -5.00499750249688E+0000 -5.00999001995014E+0000 -5.01497756724793E+0000 -5.01996015920445E+0000 --5.02493781056044E+0000 -5.02991053598372E+0000 -5.03487835006964E+0000 -5.03984126734166E+0000 -5.04479930225177E+0000 --5.04975246918104E+0000 -5.05470078244004E+0000 -5.05964425626941E+0000 -5.06458290484024E+0000 -5.06951674225463E+0000 --5.07444578254611E+0000 -5.07937003968012E+0000 -5.08428952755447E+0000 -5.08920425999979E+0000 -5.09411425078001E+0000 --5.09901951359278E+0000 -5.10392006206994E+0000 -5.10881590977792E+0000 -5.11370707021824E+0000 -5.11859355682789E+0000 --5.12347538297980E+0000 -5.12835256198323E+0000 -5.13322510708424E+0000 -5.13809303146605E+0000 -5.14295634824952E+0000 --5.14781507049350E+0000 -5.15266921119530E+0000 -5.15751878329105E+0000 -5.16236379965612E+0000 -5.16720427310553E+0000 --5.17204021639430E+0000 -5.17687164221791E+0000 -5.18169856321265E+0000 -5.18652099195598E+0000 -5.19133894096696E+0000 --5.19615242270663E+0000 -5.20096144957834E+0000 -5.20576603392815E+0000 -5.21056618804521E+0000 -5.21536192416212E+0000 --5.22015325445528E+0000 -5.22494019104525E+0000 -5.22972274599715E+0000 -5.23450093132096E+0000 -5.23927475897189E+0000 --5.24404424085076E+0000 -5.24880938880428E+0000 -5.25357021462548E+0000 -5.25832673005396E+0000 -5.26307894677631E+0000 --5.26782687642637E+0000 -5.27257053058563E+0000 -5.27730992078350E+0000 -5.28204505849770E+0000 -5.28677595515452E+0000 --5.29150262212918E+0000 -5.29622507074614E+0000 -5.30094331227943E+0000 -5.30565735795292E+0000 -5.31036721894070E+0000 --5.31507290636732E+0000 -5.31977443130815E+0000 -5.32447180478965E+0000 -5.32916503778969E+0000 -5.33385414123783E+0000 --5.33853912601566E+0000 -5.34322000295702E+0000 -5.34789678284838E+0000 -5.35256947642905E+0000 -5.35723809439155E+0000 --5.36190264738180E+0000 -5.36656314599950E+0000 -5.37121960079831E+0000 -5.37587202228625E+0000 -5.38052042092584E+0000 --5.38516480713450E+0000 -5.38980519128475E+0000 -5.39444158370447E+0000 -5.39907399467724E+0000 -5.40370243444252E+0000 --5.40832691319598E+0000 -5.41294744108974E+0000 -5.41756402823261E+0000 -5.42217668469038E+0000 -5.42678542048605E+0000 --5.43139024560011E+0000 -5.43599116997075E+0000 -5.44058820349418E+0000 -5.44518135602479E+0000 -5.44977063737548E+0000 --5.45435605731786E+0000 -5.45893762558247E+0000 -5.46351535185909E+0000 -5.46808924579693E+0000 -5.47265931700485E+0000 --5.47722557505166E+0000 -5.48178802946630E+0000 -5.48634668973808E+0000 -5.49090156531694E+0000 -5.49545266561363E+0000 --5.50000000000000E+0000 -5.50454357780915E+0000 -5.50908340833573E+0000 -5.51361950083609E+0000 -5.51815186452856E+0000 --5.52268050859363E+0000 -5.52720544217419E+0000 -5.53172667437573E+0000 -5.53624421426656E+0000 -5.54075807087803E+0000 --5.54526825320471E+0000 -5.54977477020464E+0000 -5.55427763079953E+0000 -5.55877684387492E+0000 -5.56327241828045E+0000 --5.56776436283002E+0000 -5.57225268630201E+0000 -5.57673739743947E+0000 -5.58121850495033E+0000 -5.58569601750758E+0000 --5.59016994374947E+0000 -5.59464029227975E+0000 -5.59910707166777E+0000 -5.60357029044876E+0000 -5.60802995712398E+0000 --5.61248608016091E+0000 -5.61693866799345E+0000 -5.62138772902208E+0000 -5.62583327161408E+0000 -5.63027530410370E+0000 --5.63471383479232E+0000 -5.63914887194867E+0000 -5.64358042380899E+0000 -5.64800849857718E+0000 -5.65243310442503E+0000 --5.65685424949238E+0000 -5.66127194188726E+0000 -5.66568618968612E+0000 -5.67009700093393E+0000 -5.67450438364444E+0000 --5.67890834580027E+0000 -5.68330889535313E+0000 -5.68770604022395E+0000 -5.69209978830308E+0000 -5.69649014745045E+0000 --5.70087712549569E+0000 -5.70526073023836E+0000 -5.70964096944808E+0000 -5.71401785086466E+0000 -5.71839138219832E+0000 --5.72276157112980E+0000 -5.72712842531054E+0000 -5.73149195236284E+0000 -5.73585215987999E+0000 -5.74020905542647E+0000 --5.74456264653803E+0000 -5.74891294072192E+0000 -5.75325994545701E+0000 -5.75760366819391E+0000 -5.76194411635517E+0000 --5.76628129733540E+0000 -5.77061521850140E+0000 -5.77494588719236E+0000 -5.77927331071996E+0000 -5.78359749636850E+0000 --5.78791845139511E+0000 -5.79223618302983E+0000 -5.79655069847578E+0000 -5.80086200490927E+0000 -5.80517010948000E+0000 --5.80947501931113E+0000 -5.81377674149945E+0000 -5.81807528311554E+0000 -5.82237065120385E+0000 -5.82666285278289E+0000 --5.83095189484530E+0000 -5.83523778435806E+0000 -5.83952052826257E+0000 -5.84380013347479E+0000 -5.84807660688538E+0000 --5.85234995535981E+0000 -5.85662018573853E+0000 -5.86088730483704E+0000 -5.86515131944607E+0000 -5.86941223633168E+0000 --5.87367006223537E+0000 -5.87792480387424E+0000 -5.88217646794110E+0000 -5.88642506110457E+0000 -5.89067059000926E+0000 --5.89491306127580E+0000 -5.89915248150105E+0000 -5.90338885725818E+0000 -5.90762219509677E+0000 -5.91185250154298E+0000 --5.91607978309962E+0000 -5.92030404624627E+0000 -5.92452529743945E+0000 -5.92874354311266E+0000 -5.93295878967653E+0000 --5.93717104351896E+0000 -5.94138031100518E+0000 -5.94558659847790E+0000 -5.94978991225741E+0000 -5.95399025864168E+0000 --5.95818764390649E+0000 -5.96238207430554E+0000 -5.96657355607052E+0000 -5.97076209541127E+0000 -5.97494769851586E+0000 --5.97913037155070E+0000 -5.98331012066064E+0000 -5.98748695196908E+0000 -5.99166087157810E+0000 -5.99583188556851E+0000 --6.00000000000000E+0000 -6.00416522091123E+0000 -6.00832755431992E+0000 -6.01248700622297E+0000 -6.01664358259653E+0000 --6.02079728939615E+0000 -6.02494813255683E+0000 -6.02909611799314E+0000 -6.03324125159934E+0000 -6.03738353924943E+0000 --6.04152298679729E+0000 -6.04565960007674E+0000 -6.04979338490167E+0000 -6.05392434706612E+0000 -6.05805249234438E+0000 --6.06217782649107E+0000 -6.06630035524124E+0000 -6.07042008431048E+0000 -6.07453701939498E+0000 -6.07865116617165E+0000 --6.08276253029822E+0000 -6.08687111741328E+0000 -6.09097693313642E+0000 -6.09507998306831E+0000 -6.09918027279076E+0000 --6.10327780786685E+0000 -6.10737259384099E+0000 -6.11146463623901E+0000 -6.11555394056826E+0000 -6.11964051231770E+0000 --6.12372435695795E+0000 -6.12780547994141E+0000 -6.13188388670236E+0000 -6.13595958265698E+0000 -6.14003257320350E+0000 --6.14410286372225E+0000 -6.14817045957576E+0000 -6.15223536610881E+0000 -6.15629758864855E+0000 -6.16035713250458E+0000 --6.16441400296898E+0000 -6.16846820531645E+0000 -6.17251974480439E+0000 -6.17656862667290E+0000 -6.18061485614498E+0000 --6.18465843842649E+0000 -6.18869937870632E+0000 -6.19273768215641E+0000 -6.19677335393187E+0000 -6.20080639917100E+0000 --6.20483682299543E+0000 -6.20886463051015E+0000 -6.21288982680363E+0000 -6.21691241694782E+0000 -6.22093240599832E+0000 --6.22494979899437E+0000 -6.22896460095897E+0000 -6.23297681689897E+0000 -6.23698645180507E+0000 -6.24099351065197E+0000 --6.24499799839840E+0000 -6.24899991998720E+0000 -6.25299928034539E+0000 -6.25699608438426E+0000 -6.26099033699941E+0000 --6.26498204307083E+0000 -6.26897120746299E+0000 -6.27295783502488E+0000 -6.27694193059009E+0000 -6.28092349897688E+0000 --6.28490254498827E+0000 -6.28887907341205E+0000 -6.29285308902091E+0000 -6.29682459657247E+0000 -6.30079360080935E+0000 --6.30476010645925E+0000 -6.30872411823500E+0000 -6.31268564083465E+0000 -6.31664467894150E+0000 -6.32060123722419E+0000 --6.32455532033676E+0000 -6.32850693291870E+0000 -6.33245607959503E+0000 -6.33640276497635E+0000 -6.34034699365894E+0000 --6.34428877022476E+0000 -6.34822809924155E+0000 -6.35216498526290E+0000 -6.35609943282828E+0000 -6.36003144646314E+0000 --6.36396103067893E+0000 -6.36788818997319E+0000 -6.37181292882960E+0000 -6.37573525171803E+0000 -6.37965516309463E+0000 --6.38357266740185E+0000 -6.38748776906852E+0000 -6.39140047250992E+0000 -6.39531078212779E+0000 -6.39921870231046E+0000 --6.40312423743285E+0000 -6.40702739185654E+0000 -6.41092816992984E+0000 -6.41482657598785E+0000 -6.41872261435249E+0000 --6.42261628933256E+0000 -6.42650760522385E+0000 -6.43039656630911E+0000 -6.43428317685817E+0000 -6.43816744112795E+0000 --6.44204936336256E+0000 -6.44592894779333E+0000 -6.44980619863884E+0000 -6.45368112010502E+0000 -6.45755371638518E+0000 --6.46142399166004E+0000 -6.46529195009785E+0000 -6.46915759585435E+0000 -6.47302093307290E+0000 -6.47688196588451E+0000 --6.48074069840786E+0000 -6.48459713474939E+0000 -6.48845127900333E+0000 -6.49230313525177E+0000 -6.49615270756469E+0000 --6.50000000000000E+0000 -6.50384501660364E+0000 -6.50768776140958E+0000 -6.51152823843988E+0000 -6.51536645170477E+0000 --6.51920240520265E+0000 -6.52303610292017E+0000 -6.52686754883229E+0000 -6.53069674690228E+0000 -6.53452370108182E+0000 --6.53834841531101E+0000 -6.54217089351845E+0000 -6.54599113962126E+0000 -6.54980915752513E+0000 -6.55362495112438E+0000 --6.55743852430200E+0000 -6.56124988092970E+0000 -6.56505902486794E+0000 -6.56886595996600E+0000 -6.57267069006199E+0000 --6.57647321898295E+0000 -6.58027355054484E+0000 -6.58407168855261E+0000 -6.58786763680024E+0000 -6.59166139907080E+0000 --6.59545297913646E+0000 -6.59924238075857E+0000 -6.60302960768767E+0000 -6.60681466366357E+0000 -6.61059755241536E+0000 --6.61437827766148E+0000 -6.61815684310972E+0000 -6.62193325245732E+0000 -6.62570750939098E+0000 -6.62947961758689E+0000 --6.63324958071080E+0000 -6.63701740241805E+0000 -6.64078308635360E+0000 -6.64454663615209E+0000 -6.64830805543787E+0000 --6.65206734782504E+0000 -6.65582451691749E+0000 -6.65957956630897E+0000 -6.66333249958307E+0000 -6.66708332031331E+0000 --6.67083203206317E+0000 -6.67457863838610E+0000 -6.67832314282560E+0000 -6.68206554891525E+0000 -6.68580586017871E+0000 --6.68954408012983E+0000 -6.69328021227260E+0000 -6.69701426010129E+0000 -6.70074622710038E+0000 -6.70447611674469E+0000 --6.70820393249937E+0000 -6.71192967781993E+0000 -6.71565335615233E+0000 -6.71937497093294E+0000 -6.72309452558864E+0000 --6.72681202353685E+0000 -6.73052746818554E+0000 -6.73424086293325E+0000 -6.73795221116921E+0000 -6.74166151627327E+0000 --6.74536878161602E+0000 -6.74907401055878E+0000 -6.75277720645365E+0000 -6.75647837264355E+0000 -6.76017751246223E+0000 --6.76387462923434E+0000 -6.76756972627545E+0000 -6.77126280689208E+0000 -6.77495387438173E+0000 -6.77864293203293E+0000 --6.78232998312527E+0000 -6.78601503092942E+0000 -6.78969807870718E+0000 -6.79337912971152E+0000 -6.79705818718657E+0000 --6.80073525436772E+0000 -6.80441033448160E+0000 -6.80808343074613E+0000 -6.81175454637056E+0000 -6.81542368455549E+0000 --6.81909084849293E+0000 -6.82275604136627E+0000 -6.82641926635041E+0000 -6.83008052661167E+0000 -6.83373982530795E+0000 --6.83739716558867E+0000 -6.84105255059483E+0000 -6.84470598345904E+0000 -6.84835746730557E+0000 -6.85200700525036E+0000 --6.85565460040104E+0000 -6.85930025585701E+0000 -6.86294397470940E+0000 -6.86658576004116E+0000 -6.87022561492707E+0000 --6.87386354243376E+0000 -6.87749954561976E+0000 -6.88113362753551E+0000 -6.88476579122340E+0000 -6.88839603971781E+0000 --6.89202437604511E+0000 -6.89565080322372E+0000 -6.89927532426414E+0000 -6.90289794216893E+0000 -6.90651865993280E+0000 --6.91013748054263E+0000 -6.91375440697744E+0000 -6.91736944220851E+0000 -6.92098258919931E+0000 -6.92459385090563E+0000 --6.92820323027551E+0000 -6.93181073024935E+0000 -6.93541635375988E+0000 -6.93902010373223E+0000 -6.94262198308391E+0000 --6.94622199472490E+0000 -6.94982014155762E+0000 -6.95341642647699E+0000 -6.95701085237043E+0000 -6.96060342211794E+0000 --6.96419413859206E+0000 -6.96778300465794E+0000 -6.97137002317335E+0000 -6.97495519698872E+0000 -6.97853852894716E+0000 --6.98212002188447E+0000 -6.98569967862919E+0000 -6.98927750200262E+0000 -6.99285349481884E+0000 -6.99642765988472E+0000 --7.00000000000000E+0000 -7.00357051795725E+0000 -7.00713921654194E+0000 -7.01070609853244E+0000 -7.01427116670007E+0000 --7.01783442380910E+0000 -7.02139587261678E+0000 -7.02495551587339E+0000 -7.02851335632223E+0000 -7.03206939669967E+0000 --7.03562363973514E+0000 -7.03917608815123E+0000 -7.04272674466360E+0000 -7.04627561198113E+0000 -7.04982269280583E+0000 --7.05336798983294E+0000 -7.05691150575094E+0000 -7.06045324324154E+0000 -7.06399320497974E+0000 -7.06753139363385E+0000 --7.07106781186548E+0000 -7.07460246232960E+0000 -7.07813534767456E+0000 -7.08166647054209E+0000 -7.08519583356734E+0000 --7.08872343937891E+0000 -7.09224929059886E+0000 -7.09577338984272E+0000 -7.09929573971954E+0000 -7.10281634283191E+0000 --7.10633520177595E+0000 -7.10985231914138E+0000 -7.11336769751150E+0000 -7.11688133946323E+0000 -7.12039324756716E+0000 --7.12390342438750E+0000 -7.12741187248218E+0000 -7.13091859440283E+0000 -7.13442359269479E+0000 -7.13792686989717E+0000 --7.14142842854285E+0000 -7.14492827115850E+0000 -7.14842640026461E+0000 -7.15192281837549E+0000 -7.15541752799933E+0000 --7.15891053163818E+0000 -7.16240183178799E+0000 -7.16589143093865E+0000 -7.16937933157397E+0000 -7.17286553617172E+0000 --7.17635004720366E+0000 -7.17983286713556E+0000 -7.18331399842719E+0000 -7.18679344353238E+0000 -7.19027120489902E+0000 --7.19374728496908E+0000 -7.19722168617863E+0000 -7.20069441095788E+0000 -7.20416546173115E+0000 -7.20763484091696E+0000 --7.21110255092798E+0000 -7.21456859417110E+0000 -7.21803297304744E+0000 -7.22149568995232E+0000 -7.22495674727538E+0000 --7.22841614740048E+0000 -7.23187389270582E+0000 -7.23532998556389E+0000 -7.23878442834154E+0000 -7.24223722339996E+0000 --7.24568837309472E+0000 -7.24913787977577E+0000 -7.25258574578750E+0000 -7.25603197346869E+0000 -7.25947656515261E+0000 --7.26291952316697E+0000 -7.26636084983398E+0000 -7.26980054747034E+0000 -7.27323861838727E+0000 -7.27667506489056E+0000 --7.28010988928052E+0000 -7.28354309385206E+0000 -7.28697468089467E+0000 -7.29040465269247E+0000 -7.29383301152419E+0000 --7.29725975966321E+0000 -7.30068489937759E+0000 -7.30410843293006E+0000 -7.30753036257804E+0000 -7.31095069057370E+0000 --7.31436941916390E+0000 -7.31778655059028E+0000 -7.32120208708925E+0000 -7.32461603089199E+0000 -7.32802838422450E+0000 --7.33143914930759E+0000 -7.33484832835690E+0000 -7.33825592358293E+0000 -7.34166193719106E+0000 -7.34506637138154E+0000 --7.34846922834953E+0000 -7.35187051028512E+0000 -7.35527021937332E+0000 -7.35866835779409E+0000 -7.36206492772238E+0000 --7.36545993132812E+0000 -7.36885337077622E+0000 -7.37224524822662E+0000 -7.37563556583431E+0000 -7.37902432574931E+0000 --7.38241153011670E+0000 -7.38579718107666E+0000 -7.38918128076447E+0000 -7.39256383131049E+0000 -7.39594483484024E+0000 --7.39932429347437E+0000 -7.40270220932870E+0000 -7.40607858451421E+0000 -7.40945342113708E+0000 -7.41282672129870E+0000 --7.41619848709566E+0000 -7.41956872061982E+0000 -7.42293742395825E+0000 -7.42630459919333E+0000 -7.42967024840268E+0000 --7.43303437365925E+0000 -7.43639697703128E+0000 -7.43975806058235E+0000 -7.44311762637136E+0000 -7.44647567645259E+0000 --7.44983221287567E+0000 -7.45318723768563E+0000 -7.45654075292290E+0000 -7.45989276062331E+0000 -7.46324326281812E+0000 --7.46659226153404E+0000 -7.46993975879324E+0000 -7.47328575661335E+0000 -7.47663025700750E+0000 -7.47997326198430E+0000 --7.48331477354788E+0000 -7.48665479369792E+0000 -7.48999332442960E+0000 -7.49333036773370E+0000 -7.49666592559652E+0000 --7.50000000000000E+0000 -7.50333259292163E+0000 -7.50666370633453E+0000 -7.50999334220743E+0000 -7.51332150250473E+0000 --7.51664818918645E+0000 -7.51997340420829E+0000 -7.52329714952161E+0000 -7.52661942707349E+0000 -7.52994023880668E+0000 --7.53325958665968E+0000 -7.53657747256671E+0000 -7.53989389845772E+0000 -7.54320886625844E+0000 -7.54652237789036E+0000 --7.54983443527075E+0000 -7.55314504031268E+0000 -7.55645419492503E+0000 -7.55976190101249E+0000 -7.56306816047562E+0000 --7.56637297521078E+0000 -7.56967634711022E+0000 -7.57297827806207E+0000 -7.57627876995032E+0000 -7.57957782465488E+0000 --7.58287544405155E+0000 -7.58617163001207E+0000 -7.58946638440411E+0000 -7.59275970909129E+0000 -7.59605160593318E+0000 --7.59934207678533E+0000 -7.60263112349929E+0000 -7.60591874792257E+0000 -7.60920495189872E+0000 -7.61248973726730E+0000 --7.61577310586391E+0000 -7.61905505952018E+0000 -7.62233560006380E+0000 -7.62561472931855E+0000 -7.62889244910426E+0000 --7.63216876123687E+0000 -7.63544366752843E+0000 -7.63871716978708E+0000 -7.64198926981712E+0000 -7.64525996941896E+0000 --7.64852927038918E+0000 -7.65179717452051E+0000 -7.65506368360186E+0000 -7.65832879941832E+0000 -7.66159252375118E+0000 --7.66485485837795E+0000 -7.66811580507233E+0000 -7.67137536560427E+0000 -7.67463354173996E+0000 -7.67789033524184E+0000 --7.68114574786861E+0000 -7.68439978137525E+0000 -7.68765243751303E+0000 -7.69090371802950E+0000 -7.69415362466854E+0000 --7.69740215917033E+0000 -7.70064932327138E+0000 -7.70389511870456E+0000 -7.70713954719908E+0000 -7.71038261048049E+0000 --7.71362431027076E+0000 -7.71686464828819E+0000 -7.72010362624751E+0000 -7.72334124585985E+0000 -7.72657750883274E+0000 --7.72981241687015E+0000 -7.73304597167248E+0000 -7.73627817493658E+0000 -7.73950902835574E+0000 -7.74273853361974E+0000 --7.74596669241483E+0000 -7.74919350642495E+0000 -7.75241897734488E+0000 -7.75564310689351E+0000 -7.75886589681493E+0000 --7.76208734887855E+0000 -7.76530746487903E+0000 -7.76852624663635E+0000 -7.77174369599577E+0000 -7.77495981482787E+0000 --7.77817460502856E+0000 -7.78138806851907E+0000 -7.78460020724598E+0000 -7.78781102318121E+0000 -7.79102051832205E+0000 --7.79422869469118E+0000 -7.79743555433662E+0000 -7.80064109933181E+0000 -7.80384533177558E+0000 -7.80704825379218E+0000 --7.81024986753128E+0000 -7.81345017516795E+0000 -7.81664917890273E+0000 -7.81984688096160E+0000 -7.82304328359599E+0000 --7.82623838908281E+0000 -7.82943219972443E+0000 -7.83262471784872E+0000 -7.83581594580904E+0000 -7.83900588598424E+0000 --7.84219454077871E+0000 -7.84538191262233E+0000 -7.84856800397055E+0000 -7.85175281730433E+0000 -7.85493635513019E+0000 --7.85811861998021E+0000 -7.86129961441204E+0000 -7.86447934100890E+0000 -7.86765780237960E+0000 -7.87083500115855E+0000 --7.87401094000575E+0000 -7.87718562160683E+0000 -7.88035904867302E+0000 -7.88353122394119E+0000 -7.88670215017387E+0000 --7.88987183015920E+0000 -7.89304026671101E+0000 -7.89620746266877E+0000 -7.89937342089763E+0000 -7.90253814428844E+0000 --7.90570163575772E+0000 -7.90886389824769E+0000 -7.91202493472629E+0000 -7.91518474818716E+0000 -7.91834334164970E+0000 --7.92150071815899E+0000 -7.92465688078590E+0000 -7.92781183262702E+0000 -7.93096557680472E+0000 -7.93411811646711E+0000 --7.93726945478809E+0000 -7.94041959496736E+0000 -7.94356854023038E+0000 -7.94671629382844E+0000 -7.94986285903860E+0000 --7.95300823916378E+0000 -7.95615243753268E+0000 -7.95929545749987E+0000 -7.96243730244574E+0000 -7.96557797577653E+0000 --7.96871748092434E+0000 -7.97185582134713E+0000 -7.97499300052874E+0000 -7.97812902197888E+0000 -7.98126388923315E+0000 --7.98439760585304E+0000 -7.98753017542597E+0000 -7.99066160156524E+0000 -7.99379188791008E+0000 -7.99692103812565E+0000 --8.00004905590304E+0000 -8.00317594495929E+0000 -8.00630170903738E+0000 -8.00942635190625E+0000 -8.01254987736080E+0000 --8.01567228922192E+0000 -8.01879359133646E+0000 -8.02191378757727E+0000 -8.02503288184320E+0000 -8.02815087805908E+0000 --8.03126778017576E+0000 -8.03438359217013E+0000 -8.03749831804507E+0000 -8.04061196182952E+0000 -8.04372452757843E+0000 --8.04683601937284E+0000 -8.04994644131979E+0000 -8.05305579755244E+0000 -8.05616409222996E+0000 -8.05927132953764E+0000 --8.06237751368684E+0000 -8.06548264891500E+0000 -8.06858673948566E+0000 -8.07168978968848E+0000 -8.07479180383922E+0000 --8.07789278627975E+0000 -8.08099274137809E+0000 -8.08409167352836E+0000 -8.08718958715085E+0000 -8.09028648669197E+0000 --8.09338237662432E+0000 -8.09647726144661E+0000 -8.09957114568376E+0000 -8.10266403388686E+0000 -8.10575593063314E+0000 --8.10884684052608E+0000 -8.11193676819530E+0000 -8.11502571829666E+0000 -8.11811369551219E+0000 -8.12120070455019E+0000 --8.12428675014512E+0000 -8.12737183705771E+0000 -8.13045597007491E+0000 -8.13353915400991E+0000 -8.13662139370216E+0000 --8.13970269401736E+0000 -8.14278305984745E+0000 -8.14586249611068E+0000 -8.14894100775153E+0000 -8.15201859974079E+0000 --8.15509527707554E+0000 -8.15817104477913E+0000 -8.16124590790122E+0000 -8.16431987151780E+0000 -8.16739294073113E+0000 --8.17046512066983E+0000 -8.17353641648883E+0000 -8.17660683336938E+0000 -8.17967637651909E+0000 -8.18274505117190E+0000 --8.18581286258810E+0000 -8.18887981605436E+0000 -8.19194591688368E+0000 -8.19501117041547E+0000 -8.19807558201546E+0000 --8.20113915707583E+0000 -8.20420190101509E+0000 -8.20726381927817E+0000 -8.21032491733641E+0000 -8.21338520068754E+0000 --8.21644467485570E+0000 -8.21950334539147E+0000 -8.22256121787184E+0000 -8.22561829790022E+0000 -8.22867459110647E+0000 --8.23173010314690E+0000 -8.23478483970426E+0000 -8.23783880648775E+0000 -8.24089200923304E+0000 -8.24394445370226E+0000 --8.24699614568401E+0000 -8.25004709099338E+0000 -8.25309729547192E+0000 -8.25614676498771E+0000 -8.25919550543528E+0000 --8.26224352273568E+0000 -8.26529082283649E+0000 -8.26833741171177E+0000 -8.27138329536211E+0000 -8.27442847981462E+0000 --8.27747297112295E+0000 -8.28051677536728E+0000 -8.28355989865434E+0000 -8.28660234711738E+0000 -8.28964412691622E+0000 --8.29268524423726E+0000 -8.29572570529342E+0000 -8.29876551632421E+0000 -8.30180468359573E+0000 -8.30484321340064E+0000 --8.30788111205818E+0000 -8.31091838591420E+0000 -8.31395504134113E+0000 -8.31699108473803E+0000 -8.32002652253052E+0000 --8.32306136117088E+0000 -8.32609560713797E+0000 -8.32912926693731E+0000 -8.33216234710102E+0000 -8.33519485418787E+0000 --8.33822679478325E+0000 -8.34125817549923E+0000 -8.34428900297449E+0000 -8.34731928387439E+0000 -8.35034902489095E+0000 --8.35337823274284E+0000 -8.35640691417541E+0000 -8.35943507596070E+0000 -8.36246272489742E+0000 -8.36548986781095E+0000 --8.36851651155338E+0000 -8.37154266300060E+0000 -8.37456832902038E+0000 -8.37759351644046E+0000 -8.38061823204569E+0000 --8.38364248257798E+0000 -8.38666627473635E+0000 -8.38968961517693E+0000 -8.39271251051292E+0000 -8.39573496731467E+0000 --8.39875699210961E+0000 -8.40177859138231E+0000 -8.40479977157445E+0000 -8.40782053908486E+0000 -8.41084090026948E+0000 --8.41386086144140E+0000 -8.41688042887086E+0000 -8.41989960878523E+0000 -8.42291840736906E+0000 -8.42593683076402E+0000 --8.42895488506899E+0000 -8.43197257633998E+0000 -8.43498991059020E+0000 -8.43800689379000E+0000 -8.44102353186696E+0000 --8.44403983070582E+0000 -8.44705579614850E+0000 -8.45007143399415E+0000 -8.45308674999910E+0000 -8.45610174987688E+0000 --8.45911643929824E+0000 -8.46213082389116E+0000 -8.46514490924080E+0000 -8.46815870088959E+0000 -8.47117220433717E+0000 --8.47418542504039E+0000 -8.47719836841337E+0000 -8.48021103982747E+0000 -8.48322344461129E+0000 -8.48623558805068E+0000 --8.48924747538874E+0000 -8.49225911182585E+0000 -8.49527050251965E+0000 -8.49828165258502E+0000 -8.50129256709417E+0000 --8.50430325107655E+0000 -8.50731370951890E+0000 -8.51032394736524E+0000 -8.51333396951691E+0000 -8.51634378083252E+0000 --8.51935338612799E+0000 -8.52236279017655E+0000 -8.52537199770873E+0000 -8.52838101341238E+0000 -8.53138984193268E+0000 --8.53439848787210E+0000 -8.53740695579047E+0000 -8.54041525020494E+0000 -8.54342337559000E+0000 -8.54643133637746E+0000 --8.54943913695651E+0000 -8.55244678167365E+0000 -8.55545427483275E+0000 -8.55846162069506E+0000 -8.56146882347914E+0000 --8.56447588736096E+0000 -8.56748281647385E+0000 -8.57048961490849E+0000 -8.57349628671296E+0000 -8.57650283589273E+0000 --8.57950926641064E+0000 -8.58251558218690E+0000 -8.58552178709917E+0000 -8.58852788498246E+0000 -8.59153387962919E+0000 --8.59453977478921E+0000 -8.59754557416977E+0000 -8.60055128143552E+0000 -8.60355690020854E+0000 -8.60656243406833E+0000 --8.60956788655183E+0000 -8.61257326115339E+0000 -8.61557856132481E+0000 -8.61858379047532E+0000 -8.62158895197160E+0000 --8.62459404913776E+0000 -8.62759908525538E+0000 -8.63060406356349E+0000 -8.63360898725858E+0000 -8.63661385949459E+0000 --8.63961868338293E+0000 -8.64262346199249E+0000 -8.64562819834962E+0000 -8.64863289543817E+0000 -8.65163755619945E+0000 --8.65464218353226E+0000 -8.65764678029290E+0000 -8.66065134929513E+0000 -8.66365589331027E+0000 -8.66666041506707E+0000 --8.66966491725183E+0000 -8.67266940250833E+0000 -8.67567387343790E+0000 -8.67867833259935E+0000 -8.68168278250901E+0000 --8.68468722564076E+0000 -8.68769166442599E+0000 -8.69069610125361E+0000 -8.69370053847009E+0000 -8.69670497837941E+0000 --8.69970942324311E+0000 -8.70271387528027E+0000 -8.70571833666752E+0000 -8.70872280953904E+0000 -8.71172729598656E+0000 --8.71473179805939E+0000 -8.71773631776437E+0000 -8.72074085706594E+0000 -8.72374541788610E+0000 -8.72675000210441E+0000 --8.72975461155802E+0000 -8.73275924804167E+0000 -8.73576391330765E+0000 -8.73876860906588E+0000 -8.74177333698385E+0000 --8.74477809868665E+0000 -8.74778289575696E+0000 -8.75078772973506E+0000 -8.75379260211887E+0000 -8.75679751436387E+0000 --8.75980246788317E+0000 -8.76280746404753E+0000 -8.76581250418528E+0000 -8.76881758958239E+0000 -8.77182272148247E+0000 --8.77482790108673E+0000 -8.77783312955406E+0000 -8.78083840800094E+0000 -8.78384373750150E+0000 -8.78684911908753E+0000 --8.78985455374846E+0000 -8.79286004243136E+0000 -8.79586558604096E+0000 -8.79887118543965E+0000 -8.80187684144746E+0000 --8.80488255484212E+0000 -8.80788832635898E+0000 -8.81089415669109E+0000 -8.81390004648919E+0000 -8.81690599636164E+0000 --8.81991200687452E+0000 -8.82291807855160E+0000 -8.82592421187430E+0000 -8.82893040728176E+0000 -8.83193666517080E+0000 --8.83494298589593E+0000 -8.83794936976937E+0000 -8.84095581706103E+0000 -8.84396232799854E+0000 -8.84696890276723E+0000 --8.84997554151013E+0000 -8.85298224432800E+0000 -8.85598901127932E+0000 -8.85899584238027E+0000 -8.86200273760478E+0000 --8.86500969688449E+0000 -8.86801672010877E+0000 -8.87102380712474E+0000 -8.87403095773722E+0000 -8.87703817170882E+0000 --8.88004544875985E+0000 -8.88305278856838E+0000 -8.88606019077023E+0000 -8.88906765495898E+0000 -8.89207518068594E+0000 --8.89508276746020E+0000 -8.89809041474861E+0000 -8.90109812197577E+0000 -8.90410588852406E+0000 -8.90711371373361E+0000 --8.91012159690235E+0000 -8.91312953728596E+0000 -8.91613753409792E+0000 -8.91914558650948E+0000 -8.92215369364967E+0000 --8.92516185460531E+0000 -8.92817006842102E+0000 -8.93117833409921E+0000 -8.93418665060008E+0000 -8.93719501684163E+0000 --8.94020343169966E+0000 -8.94321189400778E+0000 -8.94622040255742E+0000 -8.94922895609779E+0000 -8.95223755333594E+0000 --8.95524619293672E+0000 -8.95825487352281E+0000 -8.96126359367471E+0000 -8.96427235193074E+0000 -8.96728114678706E+0000 --8.97028997669763E+0000 -8.97329884007013E+0000 -8.97630773522021E+0000 -8.97931666032586E+0000 -8.98232561342323E+0000 --8.98533459240663E+0000 -8.98834359502857E+0000 -8.99135261889971E+0000 -8.99436166148892E+0000 -8.99737072012323E+0000 --9.00037979198787E+0000 -9.00338887412624E+0000 -9.00639796343995E+0000 -9.00940705668880E+0000 -9.01241615049078E+0000 --9.01542524132209E+0000 -9.01843432551712E+0000 -9.02144339926847E+0000 -9.02445245862695E+0000 -9.02746149950158E+0000 --9.03047051765958E+0000 -9.03347950872641E+0000 -9.03648846818573E+0000 -9.03949739137942E+0000 -9.04250627350759E+0000 --9.04551510962858E+0000 -9.04852389465895E+0000 -9.05153262337349E+0000 -9.05454129040524E+0000 -9.05754989024545E+0000 --9.06055841724364E+0000 -9.06356686560753E+0000 -9.06657522940314E+0000 -9.06958350255469E+0000 -9.07259167884467E+0000 --9.07559975191381E+0000 -9.07860771526111E+0000 -9.08161556224382E+0000 -9.08462328607744E+0000 -9.08763087983575E+0000 --9.09063833645078E+0000 -9.09364564871284E+0000 -9.09665280927049E+0000 -9.09965981063058E+0000 -9.10266664515823E+0000 --9.10567330507683E+0000 -9.10867978246807E+0000 -9.11168606927189E+0000 -9.11469215728654E+0000 -9.11769803816855E+0000 --9.12070370343273E+0000 -9.12370914445220E+0000 -9.12671435245837E+0000 -9.12971931854092E+0000 -9.13272403364787E+0000 --9.13572848858552E+0000 -9.13873267401846E+0000 -9.14173658046962E+0000 -9.14474019832021E+0000 -9.14774351780977E+0000 --9.15074652903614E+0000 -9.15374922195548E+0000 -9.15675158638228E+0000 -9.15975361198935E+0000 -9.16275528830779E+0000 --9.16575660472706E+0000 -9.16875755049493E+0000 -9.17175811471753E+0000 -9.17475828635928E+0000 -9.17775805424296E+0000 --9.18075740704968E+0000 -9.18375633331889E+0000 -9.18675482144839E+0000 -9.18975285969432E+0000 -9.19275043617115E+0000 --9.19574753885172E+0000 -9.19874415556722E+0000 -9.20174027400717E+0000 -9.20473588171948E+0000 -9.20773096611038E+0000 --9.21072551444450E+0000 -9.21371951384480E+0000 -9.21671295129261E+0000 -9.21970581362765E+0000 -9.22269808754798E+0000 --9.22568975961005E+0000 -9.22868081622867E+0000 -9.23167124367704E+0000 -9.23466102808673E+0000 -9.23765015544768E+0000 --9.24063861160823E+0000 -9.24362638227511E+0000 -9.24661345301340E+0000 -9.24959980924661E+0000 -9.25258543625662E+0000 --9.25557031918371E+0000 -9.25855444302655E+0000 -9.26153779264220E+0000 -9.26452035274615E+0000 -9.26750210791226E+0000 --9.27048304257280E+0000 -9.27346314103139E+0000 -9.27644238760514E+0000 -9.27942076676686E+0000 -9.28239826315797E+0000 --9.28537486158852E+0000 -9.28835054703715E+0000 -9.29132530465117E+0000 -9.29429911974648E+0000 -9.29727197780761E+0000 --9.30024386448773E+0000 -9.30321476560863E+0000 -9.30618466716076E+0000 -9.30915355530315E+0000 -9.31212141636354E+0000 --9.31508823683824E+0000 -9.31805400339224E+0000 -9.32101870285918E+0000 -9.32398232224132E+0000 -9.32694484870958E+0000 --9.32990626960352E+0000 -9.33286657243138E+0000 -9.33582574487002E+0000 -9.33878377476496E+0000 -9.34174065013041E+0000 --9.34469635914919E+0000 -9.34765089017283E+0000 -9.35060423172150E+0000 -9.35355637248402E+0000 -9.35650730131791E+0000 --9.35945700724934E+0000 -9.36240547947316E+0000 -9.36535270735288E+0000 -9.36829868042070E+0000 -9.37124338837749E+0000 --9.37418682109281E+0000 -9.37712896860489E+0000 -9.38006982112064E+0000 -9.38300936901567E+0000 -9.38594760283427E+0000 --9.38888451328941E+0000 -9.39182009126276E+0000 -9.39475432780470E+0000 -9.39768721413426E+0000 -9.40061874163921E+0000 --9.40354890187601E+0000 -9.40647768656979E+0000 -9.40940508761443E+0000 -9.41233109707248E+0000 -9.41525570717520E+0000 --9.41817891032258E+0000 -9.42110069908329E+0000 -9.42402106619474E+0000 -9.42694000456303E+0000 -9.42985750726299E+0000 --9.43277356753816E+0000 -9.43568817880082E+0000 -9.43860133463193E+0000 -9.44151302878122E+0000 -9.44442325516710E+0000 --9.44733200787675E+0000 -9.45023928116604E+0000 -9.45314506945960E+0000 -9.45604936735078E+0000 -9.45895216960166E+0000 --9.46185347114306E+0000 -9.46475326707454E+0000 -9.46765155266440E+0000 -9.47054832334966E+0000 -9.47344357473613E+0000 --9.47633730259832E+0000 -9.47922950287951E+0000 -9.48212017169171E+0000 -9.48500930531570E+0000 -9.48789690020100E+0000 --9.49078295296589E+0000 -9.49366746039740E+0000 -9.49655041945133E+0000 -9.49943182725221E+0000 -9.50231168109337E+0000 --9.50518997843686E+0000 -9.50806671691354E+0000 -9.51094189432299E+0000 -9.51381550863359E+0000 -9.51668755798249E+0000 --9.51955804067558E+0000 -9.52242695518755E+0000 -9.52529430016187E+0000 -9.52816007441076E+0000 -9.53102427691523E+0000 --9.53388690682508E+0000 -9.53674796345888E+0000 -9.53960744630399E+0000 -9.54246535501654E+0000 -9.54532168942147E+0000 --9.54817644951249E+0000 -9.55102963545210E+0000 -9.55388124757159E+0000 -9.55673128637107E+0000 -9.55957975251942E+0000 --9.56242664685430E+0000 -9.56527197037509E+0000 -9.56811572416455E+0000 -9.57095790931054E+0000 -9.57379852689892E+0000 --9.57663757801357E+0000 -9.57947506373634E+0000 -9.58231098514710E+0000 -9.58514534332371E+0000 -9.58797813934205E+0000 --9.59080937427598E+0000 -9.59363904919740E+0000 -9.59646716517619E+0000 -9.59929372328025E+0000 -9.60211872457551E+0000 --9.60494217012589E+0000 -9.60776406099333E+0000 -9.61058439823780E+0000 -9.61340318291728E+0000 -9.61622041608776E+0000 --9.61903609880327E+0000 -9.62185023211585E+0000 -9.62466281707558E+0000 -9.62747385473055E+0000 -9.63028334612688E+0000 --9.63309129230873E+0000 -9.63589769431829E+0000 -9.63870255319576E+0000 -9.64150586997942E+0000 -9.64430764570553E+0000 --9.64710788140843E+0000 -9.64990657812048E+0000 -9.65270373687209E+0000 -9.65549935869170E+0000 -9.65829344460579E+0000 --9.66108599563892E+0000 -9.66387701281365E+0000 -9.66666649715062E+0000 -9.66945444966851E+0000 -9.67224087138404E+0000 --9.67502576331200E+0000 -9.67780912646522E+0000 -9.68059096185460E+0000 -9.68337127048908E+0000 -9.68615005337567E+0000 --9.68892731151943E+0000 -9.69170304592350E+0000 -9.69447725758907E+0000 -9.69724994751540E+0000 -9.70002111669979E+0000 --9.70279076613765E+0000 -9.70555889682243E+0000 -9.70832550974565E+0000 -9.71109060589693E+0000 -9.71385418626392E+0000 --9.71661625183238E+0000 -9.71937680358613E+0000 -9.72213584250708E+0000 -9.72489336957519E+0000 -9.72764938576853E+0000 --9.73040389206325E+0000 -9.73315688943356E+0000 -9.73590837885178E+0000 -9.73865836128830E+0000 -9.74140683771161E+0000 --9.74415380908827E+0000 -9.74689927638295E+0000 -9.74964324055840E+0000 -9.75238570257547E+0000 -9.75512666339310E+0000 --9.75786612396833E+0000 -9.76060408525628E+0000 -9.76334054821021E+0000 -9.76607551378143E+0000 -9.76880898291938E+0000 --9.77154095657161E+0000 -9.77427143568374E+0000 -9.77700042119953E+0000 -9.77972791406084E+0000 -9.78245391520762E+0000 --9.78517842557794E+0000 -9.78790144610800E+0000 -9.79062297773207E+0000 -9.79334302138258E+0000 -9.79606157799006E+0000 --9.79877864848312E+0000 -9.80149423378854E+0000 -9.80420833483120E+0000 -9.80692095253409E+0000 -9.80963208781833E+0000 --9.81234174160316E+0000 -9.81504991480595E+0000 -9.81775660834220E+0000 -9.82046182312552E+0000 -9.82316556006765E+0000 --9.82586782007849E+0000 -9.82856860406604E+0000 -9.83126791293644E+0000 -9.83396574759396E+0000 -9.83666210894101E+0000 --9.83935699787815E+0000 -9.84205041530405E+0000 -9.84474236211554E+0000 -9.84743283920757E+0000 -9.85012184747326E+0000 --9.85280938780385E+0000 -9.85549546108872E+0000 -9.85818006821543E+0000 -9.86086321006964E+0000 -9.86354488753519E+0000 --9.86622510149406E+0000 -9.86890385282638E+0000 -9.87158114241042E+0000 -9.87425697112263E+0000 -9.87693133983759E+0000 --9.87960424942804E+0000 -9.88227570076488E+0000 -9.88494569471718E+0000 -9.88761423215214E+0000 -9.89028131393516E+0000 --9.89294694092975E+0000 -9.89561111399763E+0000 -9.89827383399867E+0000 -9.90093510179089E+0000 -9.90359491823049E+0000 --9.90625328417183E+0000 -9.90891020046746E+0000 -9.91156566796807E+0000 -9.91421968752254E+0000 -9.91687225997792E+0000 --9.91952338617943E+0000 -9.92217306697047E+0000 -9.92482130319262E+0000 -9.92746809568562E+0000 -9.93011344528739E+0000 --9.93275735283406E+0000 -9.93539981915992E+0000 -9.93804084509743E+0000 -9.94068043147725E+0000 -9.94331857912822E+0000 --9.94595528887738E+0000 -9.94859056154992E+0000 -9.95122439796925E+0000 -9.95385679895698E+0000 -9.95648776533286E+0000 --9.95911729791488E+0000 -9.96174539751921E+0000 -9.96437206496021E+0000 -9.96699730105042E+0000 -9.96962110660060E+0000 --9.97224348241969E+0000 -9.97486442931486E+0000 -9.97748394809144E+0000 -9.98010203955297E+0000 -9.98271870450122E+0000 --9.98533394373613E+0000 -9.98794775805586E+0000 -9.99056014825678E+0000 -9.99317111513344E+0000 -9.99578065947864E+0000 --9.99838878208336E+0000 -1.00009954837367E+0001 -1.00036007652263E+0001 -1.00062046273376E+0001 -1.00088070708544E+0001 --1.00114080965589E+0001 -1.00140077052313E+0001 -1.00166058976500E+0001 -1.00192026745918E+0001 -1.00217980368315E+0001 --1.00243919851424E+0001 -1.00269845202957E+0001 -1.00295756430611E+0001 -1.00321653542063E+0001 -1.00347536544974E+0001 --1.00373405446987E+0001 -1.00399260255725E+0001 -1.00425100978797E+0001 -1.00450927623791E+0001 -1.00476740198280E+0001 --1.00502538709816E+0001 -1.00528323165938E+0001 -1.00554093574162E+0001 -1.00579849941990E+0001 -1.00605592276905E+0001 --1.00631320586374E+0001 -1.00657034877843E+0001 -1.00682735158744E+0001 -1.00708421436490E+0001 -1.00734093718475E+0001 --1.00759752012077E+0001 -1.00785396324656E+0001 -1.00811026663555E+0001 -1.00836643036099E+0001 -1.00862245449595E+0001 --1.00887833911332E+0001 -1.00913408428585E+0001 -1.00938969008606E+0001 -1.00964515658634E+0001 -1.00990048385889E+0001 --1.01015567197572E+0001 -1.01041072100869E+0001 -1.01066563102947E+0001 -1.01092040210957E+0001 -1.01117503432030E+0001 --1.01142952773282E+0001 -1.01168388241810E+0001 -1.01193809844696E+0001 -1.01219217589001E+0001 -1.01244611481771E+0001 --1.01269991530035E+0001 -1.01295357740803E+0001 -1.01320710121069E+0001 -1.01346048677808E+0001 -1.01371373417980E+0001 --1.01396684348526E+0001 -1.01421981476369E+0001 -1.01447264808417E+0001 -1.01472534351560E+0001 -1.01497790112668E+0001 --1.01523032098598E+0001 -1.01548260316187E+0001 -1.01573474772255E+0001 -1.01598675473605E+0001 -1.01623862427024E+0001 --1.01649035639279E+0001 -1.01674195117123E+0001 -1.01699340867289E+0001 -1.01724472896495E+0001 -1.01749591211441E+0001 --1.01774695818808E+0001 -1.01799786725264E+0001 -1.01824863937455E+0001 -1.01849927462013E+0001 -1.01874977305552E+0001 --1.01900013474670E+0001 -1.01925035975945E+0001 -1.01950044815940E+0001 -1.01975040001202E+0001 -1.02000021538258E+0001 --1.02024989433620E+0001 -1.02049943693782E+0001 -1.02074884325221E+0001 -1.02099811334398E+0001 -1.02124724727755E+0001 --1.02149624511720E+0001 -1.02174510692700E+0001 -1.02199383277087E+0001 -1.02224242271258E+0001 -1.02249087681569E+0001 --1.02273919514362E+0001 -1.02298737775962E+0001 -1.02323542472674E+0001 -1.02348333610789E+0001 -1.02373111196580E+0001 --1.02397875236304E+0001 -1.02422625736200E+0001 -1.02447362702489E+0001 -1.02472086141378E+0001 -1.02496796059055E+0001 --1.02521492461691E+0001 -1.02546175355442E+0001 -1.02570844746444E+0001 -1.02595500640820E+0001 -1.02620143044673E+0001 --1.02644771964090E+0001 -1.02669387405141E+0001 -1.02693989373881E+0001 -1.02718577876346E+0001 -1.02743152918556E+0001 --1.02767714506513E+0001 -1.02792262646205E+0001 -1.02816797343600E+0001 -1.02841318604652E+0001 -1.02865826435296E+0001 --1.02890320841451E+0001 -1.02914801829020E+0001 -1.02939269403889E+0001 -1.02963723571926E+0001 -1.02988164338983E+0001 --1.03012591710896E+0001 -1.03037005693484E+0001 -1.03061406292548E+0001 -1.03085793513874E+0001 -1.03110167363231E+0001 --1.03134527846371E+0001 -1.03158874969028E+0001 -1.03183208736921E+0001 -1.03207529155753E+0001 -1.03231836231208E+0001 --1.03256129968955E+0001 -1.03280410374647E+0001 -1.03304677453918E+0001 -1.03328931212388E+0001 -1.03353171655658E+0001 --1.03377398789315E+0001 -1.03401612618926E+0001 -1.03425813150046E+0001 -1.03450000388208E+0001 -1.03474174338933E+0001 --1.03498335007724E+0001 -1.03522482400066E+0001 -1.03546616521430E+0001 -1.03570737377267E+0001 -1.03594844973016E+0001 --1.03618939314095E+0001 -1.03643020405909E+0001 -1.03667088253844E+0001 -1.03691142863272E+0001 -1.03715184239545E+0001 --1.03739212388003E+0001 -1.03763227313965E+0001 -1.03787229022737E+0001 -1.03811217519606E+0001 -1.03835192809845E+0001 --1.03859154898709E+0001 -1.03883103791437E+0001 -1.03907039493251E+0001 -1.03930962009358E+0001 -1.03954871344947E+0001 --1.03978767505191E+0001 -1.04002650495248E+0001 -1.04026520320258E+0001 -1.04050376985344E+0001 -1.04074220495616E+0001 --1.04098050856164E+0001 -1.04121868072063E+0001 -1.04145672148372E+0001 -1.04169463090134E+0001 -1.04193240902375E+0001 --1.04217005590104E+0001 -1.04240757158316E+0001 -1.04264495611986E+0001 -1.04288220956077E+0001 -1.04311933195532E+0001 --1.04335632335280E+0001 -1.04359318380233E+0001 -1.04382991335287E+0001 -1.04406651205322E+0001 -1.04430297995200E+0001 --1.04453931709768E+0001 -1.04477552353859E+0001 -1.04501159932285E+0001 -1.04524754449846E+0001 -1.04548335911324E+0001 --1.04571904321484E+0001 -1.04595459685077E+0001 -1.04619002006836E+0001 -1.04642531291478E+0001 -1.04666047543705E+0001 --1.04689550768202E+0001 -1.04713040969638E+0001 -1.04736518152664E+0001 -1.04759982321919E+0001 -1.04783433482023E+0001 --1.04806871637579E+0001 -1.04830296793177E+0001 -1.04853708953388E+0001 -1.04877108122769E+0001 -1.04900494305858E+0001 --1.04923867507181E+0001 -1.04947227731245E+0001 -1.04970574982541E+0001 -1.04993909265545E+0001 -1.05017230584717E+0001 --1.05040538944501E+0001 -1.05063834349323E+0001 -1.05087116803595E+0001 -1.05110386311713E+0001 -1.05133642878055E+0001 --1.05156886506986E+0001 -1.05180117202852E+0001 -1.05203334969985E+0001 -1.05226539812700E+0001 -1.05249731735296E+0001 --1.05272910742057E+0001 -1.05296076837251E+0001 -1.05319230025128E+0001 -1.05342370309924E+0001 -1.05365497695858E+0001 --1.05388612187135E+0001 -1.05411713787941E+0001 -1.05434802502449E+0001 -1.05457878334813E+0001 -1.05480941289175E+0001 --1.05503991369657E+0001 -1.05527028580368E+0001 -1.05550052925400E+0001 -1.05573064408829E+0001 -1.05596063034715E+0001 --1.05619048807103E+0001 -1.05642021730022E+0001 -1.05664981807484E+0001 -1.05687929043485E+0001 -1.05710863442008E+0001 --1.05733785007017E+0001 -1.05756693742461E+0001 -1.05779589652274E+0001 -1.05802472740374E+0001 -1.05825343010662E+0001 --1.05848200467025E+0001 -1.05871045113332E+0001 -1.05893876953439E+0001 -1.05916695991183E+0001 -1.05939502230387E+0001 --1.05962295674860E+0001 -1.05985076328391E+0001 -1.06007844194757E+0001 -1.06030599277717E+0001 -1.06053341581016E+0001 --1.06076071108381E+0001 -1.06098787863525E+0001 -1.06121491850146E+0001 -1.06144183071923E+0001 -1.06166861532523E+0001 --1.06189527235595E+0001 -1.06212180184773E+0001 -1.06234820383675E+0001 -1.06257447835904E+0001 -1.06280062545047E+0001 --1.06302664514675E+0001 -1.06325253748344E+0001 -1.06347830249593E+0001 -1.06370394021946E+0001 -1.06392945068913E+0001 --1.06415483393985E+0001 -1.06438009000641E+0001 -1.06460521892342E+0001 -1.06483022072533E+0001 -1.06505509544646E+0001 --1.06527984312095E+0001 -1.06550446378279E+0001 -1.06572895746582E+0001 -1.06595332420371E+0001 -1.06617756403000E+0001 --1.06640167697804E+0001 -1.06662566308105E+0001 -1.06684952237209E+0001 -1.06707325488406E+0001 -1.06729686064969E+0001 --1.06752033970159E+0001 -1.06774369207218E+0001 -1.06796691779375E+0001 -1.06819001689841E+0001 -1.06841298941814E+0001 --1.06863583538475E+0001 -1.06885855482989E+0001 -1.06908114778506E+0001 -1.06930361428162E+0001 -1.06952595435076E+0001 --1.06974816802352E+0001 -1.06997025533077E+0001 -1.07019221630324E+0001 -1.07041405097152E+0001 -1.07063575936601E+0001 --1.07085734151698E+0001 -1.07107879745454E+0001 -1.07130012720864E+0001 -1.07152133080909E+0001 -1.07174240828553E+0001 --1.07196335966745E+0001 -1.07218418498419E+0001 -1.07240488426493E+0001 -1.07262545753871E+0001 -1.07284590483439E+0001 --1.07306622618070E+0001 -1.07328642160620E+0001 -1.07350649113931E+0001 -1.07372643480828E+0001 -1.07394625264123E+0001 --1.07416594466609E+0001 -1.07438551091068E+0001 -1.07460495140264E+0001 -1.07482426616945E+0001 -1.07504345523846E+0001 --1.07526251863684E+0001 -1.07548145639163E+0001 -1.07570026852970E+0001 -1.07591895507778E+0001 -1.07613751606244E+0001 --1.07635595151010E+0001 -1.07657426144702E+0001 -1.07679244589931E+0001 -1.07701050489293E+0001 -1.07722843845369E+0001 --1.07744624660723E+0001 -1.07766392937907E+0001 -1.07788148679453E+0001 -1.07809891887883E+0001 -1.07831622565700E+0001 --1.07853340715393E+0001 -1.07875046339435E+0001 -1.07896739440286E+0001 -1.07918420020388E+0001 -1.07940088082168E+0001 --1.07961743628041E+0001 -1.07983386660403E+0001 -1.08005017181636E+0001 -1.08026635194108E+0001 -1.08048240700171E+0001 --1.08069833702160E+0001 -1.08091414202398E+0001 -1.08112982203190E+0001 -1.08134537706828E+0001 -1.08156080715587E+0001 --1.08177611231729E+0001 -1.08199129257498E+0001 -1.08220634795125E+0001 -1.08242127846826E+0001 -1.08263608414799E+0001 --1.08285076501231E+0001 -1.08306532108291E+0001 -1.08327975238133E+0001 -1.08349405892897E+0001 -1.08370824074707E+0001 --1.08392229785673E+0001 -1.08413623027888E+0001 -1.08435003803431E+0001 -1.08456372114368E+0001 -1.08477727962745E+0001 --1.08499071350597E+0001 -1.08520402279942E+0001 -1.08541720752785E+0001 -1.08563026771113E+0001 -1.08584320336899E+0001 --1.08605601452103E+0001 -1.08626870118666E+0001 -1.08648126338519E+0001 -1.08669370113572E+0001 -1.08690601445725E+0001 --1.08711820336860E+0001 -1.08733026788846E+0001 -1.08754220803536E+0001 -1.08775402382766E+0001 -1.08796571528361E+0001 --1.08817728242128E+0001 -1.08838872525859E+0001 -1.08860004381334E+0001 -1.08881123810314E+0001 -1.08902230814547E+0001 --1.08923325395767E+0001 -1.08944407555691E+0001 -1.08965477296022E+0001 -1.08986534618447E+0001 -1.09007579524641E+0001 --1.09028612016260E+0001 -1.09049632094949E+0001 -1.09070639762334E+0001 -1.09091635020029E+0001 -1.09112617869632E+0001 --1.09133588312726E+0001 -1.09154546350880E+0001 -1.09175491985647E+0001 -1.09196425218565E+0001 -1.09217346051158E+0001 --1.09238254484934E+0001 -1.09259150521388E+0001 -1.09280034161997E+0001 -1.09300905408225E+0001 -1.09321764261523E+0001 --1.09342610723322E+0001 -1.09363444795044E+0001 -1.09384266478091E+0001 -1.09405075773854E+0001 -1.09425872683707E+0001 --1.09446657209010E+0001 -1.09467429351107E+0001 -1.09488189111328E+0001 -1.09508936490989E+0001 -1.09529671491389E+0001 --1.09550394113815E+0001 -1.09571104359536E+0001 -1.09591802229809E+0001 -1.09612487725874E+0001 -1.09633160848957E+0001 --1.09653821600269E+0001 -1.09674469981008E+0001 -1.09695105992354E+0001 -1.09715729635474E+0001 -1.09736340911521E+0001 --1.09756939821632E+0001 -1.09777526366928E+0001 -1.09798100548518E+0001 -1.09818662367495E+0001 -1.09839211824936E+0001 --1.09859748921905E+0001 -1.09880273659450E+0001 -1.09900786038605E+0001 -1.09921286060390E+0001 -1.09941773725808E+0001 --1.09962249035849E+0001 -1.09982711991487E+0001 -1.10003162593683E+0001 -1.10023600843382E+0001 -1.10044026741514E+0001 --1.10064440288996E+0001 -1.10084841486728E+0001 -1.10105230335597E+0001 -1.10125606836474E+0001 -1.10145970990216E+0001 --1.10166322797666E+0001 -1.10186662259651E+0001 -1.10206989376984E+0001 -1.10227304150463E+0001 -1.10247606580872E+0001 --1.10267896668979E+0001 -1.10288174415539E+0001 -1.10308439821290E+0001 -1.10328692886958E+0001 -1.10348933613253E+0001 --1.10369162000871E+0001 -1.10389378050491E+0001 -1.10409581762780E+0001 -1.10429773138391E+0001 -1.10449952177958E+0001 --1.10470118882106E+0001 -1.10490273251440E+0001 -1.10510415286555E+0001 -1.10530544988029E+0001 -1.10550662356425E+0001 --1.10570767392292E+0001 -1.10590860096165E+0001 -1.10610940468564E+0001 -1.10631008509994E+0001 -1.10651064220946E+0001 --1.10671107601895E+0001 -1.10691138653304E+0001 -1.10711157375619E+0001 -1.10731163769272E+0001 -1.10751157834682E+0001 --1.10771139572251E+0001 -1.10791108982368E+0001 -1.10811066065407E+0001 -1.10831010821727E+0001 -1.10850943251675E+0001 --1.10870863355578E+0001 -1.10890771133755E+0001 -1.10910666586505E+0001 -1.10930549714117E+0001 -1.10950420516861E+0001 --1.10970278994996E+0001 -1.10990125148764E+0001 -1.11009958978395E+0001 -1.11029780484102E+0001 -1.11049589666086E+0001 --1.11069386524531E+0001 -1.11089171059607E+0001 -1.11108943271472E+0001 -1.11128703160265E+0001 -1.11148450726116E+0001 --1.11168185969136E+0001 -1.11187908889423E+0001 -1.11207619487061E+0001 -1.11227317762119E+0001 -1.11247003714652E+0001 --1.11266677344700E+0001 -1.11286338652289E+0001 -1.11305987637430E+0001 -1.11325624300121E+0001 -1.11345248640342E+0001 --1.11364860658064E+0001 -1.11384460353238E+0001 -1.11404047725803E+0001 -1.11423622775686E+0001 -1.11443185502795E+0001 --1.11462735907027E+0001 -1.11482273988263E+0001 -1.11501799746370E+0001 -1.11521313181201E+0001 -1.11540814292592E+0001 --1.11560303080369E+0001 -1.11579779544341E+0001 -1.11599243684302E+0001 -1.11618695500033E+0001 -1.11638134991300E+0001 --1.11657562157855E+0001 -1.11676976999435E+0001 -1.11696379515763E+0001 -1.11715769706548E+0001 -1.11735147571484E+0001 --1.11754513110250E+0001 -1.11773866322513E+0001 -1.11793207207923E+0001 -1.11812535766117E+0001 -1.11831851996718E+0001 --1.11851155899333E+0001 -1.11870447473557E+0001 -1.11889726718968E+0001 -1.11908993635133E+0001 -1.11928248221600E+0001 --1.11947490477908E+0001 -1.11966720403578E+0001 -1.11985937998117E+0001 -1.12005143261019E+0001 -1.12024336191764E+0001 --1.12043516789815E+0001 -1.12062685054625E+0001 -1.12081840985627E+0001 -1.12100984582246E+0001 -1.12120115843887E+0001 --1.12139234769945E+0001 -1.12158341359799E+0001 -1.12177435612813E+0001 -1.12196517528337E+0001 -1.12215587105709E+0001 --1.12234644344249E+0001 -1.12253689243265E+0001 -1.12272721802052E+0001 -1.12291742019887E+0001 -1.12310749896036E+0001 --1.12329745429750E+0001 -1.12348728620264E+0001 -1.12367699466801E+0001 -1.12386657968568E+0001 -1.12405604124760E+0001 --1.12424537934556E+0001 -1.12443459397120E+0001 -1.12462368511605E+0001 -1.12481265277145E+0001 -1.12500149692865E+0001 --1.12519021757872E+0001 -1.12537881471261E+0001 -1.12556728832110E+0001 -1.12575563839486E+0001 -1.12594386492441E+0001 --1.12613196790011E+0001 -1.12631994731219E+0001 -1.12650780315075E+0001 -1.12669553540573E+0001 -1.12688314406693E+0001 --1.12707062912402E+0001 -1.12725799056652E+0001 -1.12744522838381E+0001 -1.12763234256513E+0001 -1.12781933309956E+0001 --1.12800619997608E+0001 -1.12819294318348E+0001 -1.12837956271045E+0001 -1.12856605854550E+0001 -1.12875243067704E+0001 --1.12893867909330E+0001 -1.12912480378239E+0001 -1.12931080473228E+0001 -1.12949668193079E+0001 -1.12968243536560E+0001 --1.12986806502424E+0001 -1.13005357089413E+0001 -1.13023895296251E+0001 -1.13042421121650E+0001 -1.13060934564309E+0001 --1.13079435622909E+0001 -1.13097924296121E+0001 -1.13116400582600E+0001 -1.13134864480986E+0001 -1.13153315989908E+0001 --1.13171755107977E+0001 -1.13190181833793E+0001 -1.13208596165940E+0001 -1.13226998102989E+0001 -1.13245387643497E+0001 --1.13263764786006E+0001 -1.13282129529045E+0001 -1.13300481871127E+0001 -1.13318821810754E+0001 -1.13337149346411E+0001 --1.13355464476570E+0001 -1.13373767199691E+0001 -1.13392057514216E+0001 -1.13410335418576E+0001 -1.13428600911187E+0001 --1.13446853990450E+0001 -1.13465094654754E+0001 -1.13483322902473E+0001 -1.13501538731965E+0001 -1.13519742141578E+0001 --1.13537933129642E+0001 -1.13556111694476E+0001 -1.13574277834383E+0001 -1.13592431547654E+0001 -1.13610572832562E+0001 --1.13628701687372E+0001 -1.13646818110329E+0001 -1.13664922099667E+0001 -1.13683013653607E+0001 -1.13701092770354E+0001 --1.13719159448100E+0001 -1.13737213685022E+0001 -1.13755255479284E+0001 -1.13773284829036E+0001 -1.13791301732413E+0001 --1.13809306187538E+0001 -1.13827298192517E+0001 -1.13845277745446E+0001 -1.13863244844403E+0001 -1.13881199487455E+0001 --1.13899141672653E+0001 -1.13917071398035E+0001 -1.13934988661626E+0001 -1.13952893461436E+0001 -1.13970785795460E+0001 --1.13988665661681E+0001 -1.14006533058067E+0001 -1.14024387982573E+0001 -1.14042230433137E+0001 -1.14060060407688E+0001 --1.14077877904138E+0001 -1.14095682920384E+0001 -1.14113475454312E+0001 -1.14131255503793E+0001 -1.14149023066682E+0001 --1.14166778140824E+0001 -1.14184520724047E+0001 -1.14202250814166E+0001 -1.14219968408982E+0001 -1.14237673506282E+0001 --1.14255366103840E+0001 -1.14273046199416E+0001 -1.14290713790754E+0001 -1.14308368875587E+0001 -1.14326011451633E+0001 --1.14343641516594E+0001 -1.14361259068162E+0001 -1.14378864104012E+0001 -1.14396456621806E+0001 -1.14414036619194E+0001 --1.14431604093809E+0001 -1.14449159043273E+0001 -1.14466701465192E+0001 -1.14484231357158E+0001 -1.14501748716752E+0001 --1.14519253541538E+0001 -1.14536745829067E+0001 -1.14554225576878E+0001 -1.14571692782494E+0001 -1.14589147443425E+0001 --1.14606589557166E+0001 -1.14624019121200E+0001 -1.14641436132996E+0001 -1.14658840590008E+0001 -1.14676232489676E+0001 --1.14693611829427E+0001 -1.14710978606675E+0001 -1.14728332818819E+0001 -1.14745674463243E+0001 -1.14763003537321E+0001 --1.14780320038409E+0001 -1.14797623963851E+0001 -1.14814915310978E+0001 -1.14832194077106E+0001 -1.14849460259538E+0001 --1.14866713855562E+0001 -1.14883954862453E+0001 -1.14901183277474E+0001 -1.14918399097870E+0001 -1.14935602320876E+0001 --1.14952792943711E+0001 -1.14969970963583E+0001 -1.14987136377682E+0001 -1.15004289183188E+0001 -1.15021429377265E+0001 --1.15038556957064E+0001 -1.15055671919723E+0001 -1.15072774262365E+0001 -1.15089863982100E+0001 -1.15106941076024E+0001 --1.15124005541218E+0001 -1.15141057374752E+0001 -1.15158096573681E+0001 -1.15175123135044E+0001 -1.15192137055870E+0001 --1.15209138333172E+0001 -1.15226126963950E+0001 -1.15243102945189E+0001 -1.15260066273863E+0001 -1.15277016946929E+0001 --1.15293954961333E+0001 -1.15310880314006E+0001 -1.15327793001864E+0001 -1.15344693021813E+0001 -1.15361580370741E+0001 --1.15378455045526E+0001 -1.15395317043029E+0001 -1.15412166360100E+0001 -1.15429002993574E+0001 -1.15445826940271E+0001 --1.15462638197002E+0001 -1.15479436760558E+0001 -1.15496222627721E+0001 -1.15512995795257E+0001 -1.15529756259919E+0001 --1.15546504018447E+0001 -1.15563239067567E+0001 -1.15579961403990E+0001 -1.15596671024414E+0001 -1.15613367925525E+0001 --1.15630052103993E+0001 -1.15646723556476E+0001 -1.15663382279617E+0001 -1.15680028270046E+0001 -1.15696661524380E+0001 --1.15713282039221E+0001 -1.15729889811159E+0001 -1.15746484836768E+0001 -1.15763067112610E+0001 -1.15779636635234E+0001 --1.15796193401174E+0001 -1.15812737406951E+0001 -1.15829268649071E+0001 -1.15845787124029E+0001 -1.15862292828305E+0001 --1.15878785758364E+0001 -1.15895265910659E+0001 -1.15911733281629E+0001 -1.15928187867701E+0001 -1.15944629665284E+0001 --1.15961058670779E+0001 -1.15977474880568E+0001 -1.15993878291024E+0001 -1.16010268898503E+0001 -1.16026646699349E+0001 --1.16043011689893E+0001 -1.16059363866450E+0001 -1.16075703225324E+0001 -1.16092029762805E+0001 -1.16108343475167E+0001 --1.16124644358673E+0001 -1.16140932409572E+0001 -1.16157207624099E+0001 -1.16173469998474E+0001 -1.16189719528907E+0001 --1.16205956211590E+0001 -1.16222180042705E+0001 -1.16238391018419E+0001 -1.16254589134885E+0001 -1.16270774388243E+0001 --1.16286946774621E+0001 -1.16303106290129E+0001 -1.16319252930869E+0001 -1.16335386692925E+0001 -1.16351507572370E+0001 --1.16367615565262E+0001 -1.16383710667646E+0001 -1.16399792875554E+0001 -1.16415862185004E+0001 -1.16431918592000E+0001 --1.16447962092534E+0001 -1.16463992682582E+0001 -1.16480010358108E+0001 -1.16496015115063E+0001 -1.16512006949383E+0001 --1.16527985856992E+0001 -1.16543951833799E+0001 -1.16559904875700E+0001 -1.16575844978579E+0001 -1.16591772138304E+0001 --1.16607686350731E+0001 -1.16623587611701E+0001 -1.16639475917045E+0001 -1.16655351262576E+0001 -1.16671213644096E+0001 --1.16687063057394E+0001 -1.16702899498244E+0001 -1.16718722962407E+0001 -1.16734533445630E+0001 -1.16750330943649E+0001 --1.16766115452182E+0001 -1.16781886966938E+0001 -1.16797645483611E+0001 -1.16813390997879E+0001 -1.16829123505411E+0001 --1.16844843001859E+0001 -1.16860549482862E+0001 -1.16876242944048E+0001 -1.16891923381028E+0001 -1.16907590789403E+0001 --1.16923245164758E+0001 -1.16938886502665E+0001 -1.16954514798683E+0001 -1.16970130048358E+0001 -1.16985732247222E+0001 --1.17001321390793E+0001 -1.17016897474577E+0001 -1.17032460494064E+0001 -1.17048010444734E+0001 -1.17063547322050E+0001 --1.17079071121464E+0001 -1.17094581838415E+0001 -1.17110079468326E+0001 -1.17125564006608E+0001 -1.17141035448660E+0001 --1.17156493789864E+0001 -1.17171939025592E+0001 -1.17187371151201E+0001 -1.17202790162035E+0001 -1.17218196053424E+0001 --1.17233588820685E+0001 -1.17248968459122E+0001 -1.17264334964025E+0001 -1.17279688330670E+0001 -1.17295028554321E+0001 --1.17310355630229E+0001 -1.17325669553628E+0001 -1.17340970319743E+0001 -1.17356257923783E+0001 -1.17371532360945E+0001 --1.17386793626411E+0001 -1.17402041715350E+0001 -1.17417276622920E+0001 -1.17432498344262E+0001 -1.17447706874507E+0001 --1.17462902208769E+0001 -1.17478084342152E+0001 -1.17493253269744E+0001 -1.17508408986622E+0001 -1.17523551487847E+0001 --1.17538680768470E+0001 -1.17553796823525E+0001 -1.17568899648035E+0001 -1.17583989237009E+0001 -1.17599065585442E+0001 --1.17614128688317E+0001 -1.17629178540602E+0001 -1.17644215137253E+0001 -1.17659238473212E+0001 -1.17674248543407E+0001 --1.17689245342755E+0001 -1.17704228866157E+0001 -1.17719199108501E+0001 -1.17734156064664E+0001 -1.17749099729507E+0001 --1.17764030097879E+0001 -1.17778947164616E+0001 -1.17793850924538E+0001 -1.17808741372455E+0001 -1.17823618503163E+0001 --1.17838482311442E+0001 -1.17853332792063E+0001 -1.17868169939779E+0001 -1.17882993749334E+0001 -1.17897804215455E+0001 --1.17912601332859E+0001 -1.17927385096246E+0001 -1.17942155500307E+0001 -1.17956912539716E+0001 -1.17971656209135E+0001 --1.17986386503213E+0001 -1.18001103416586E+0001 -1.18015806943876E+0001 -1.18030497079691E+0001 -1.18045173818628E+0001 --1.18059837155268E+0001 -1.18074487084180E+0001 -1.18089123599920E+0001 -1.18103746697031E+0001 -1.18118356370041E+0001 --1.18132952613467E+0001 -1.18147535421810E+0001 -1.18162104789560E+0001 -1.18176660711193E+0001 -1.18191203181172E+0001 --1.18205732193945E+0001 -1.18220247743949E+0001 -1.18234749825607E+0001 -1.18249238433329E+0001 -1.18263713561510E+0001 --1.18278175204533E+0001 -1.18292623356769E+0001 -1.18307058012573E+0001 -1.18321479166289E+0001 -1.18335886812247E+0001 --1.18350280944764E+0001 -1.18364661558142E+0001 -1.18379028646673E+0001 -1.18393382204633E+0001 -1.18407722226285E+0001 --1.18422048705880E+0001 -1.18436361637656E+0001 -1.18450661015836E+0001 -1.18464946834630E+0001 -1.18479219088236E+0001 --1.18493477770840E+0001 -1.18507722876610E+0001 -1.18521954399705E+0001 -1.18536172334271E+0001 -1.18550376674436E+0001 --1.18564567414321E+0001 -1.18578744548029E+0001 -1.18592908069653E+0001 -1.18607057973270E+0001 -1.18621194252946E+0001 --1.18635316902732E+0001 -1.18649425916667E+0001 -1.18663521288778E+0001 -1.18677603013075E+0001 -1.18691671083558E+0001 --1.18705725494213E+0001 -1.18719766239013E+0001 -1.18733793311916E+0001 -1.18747806706870E+0001 -1.18761806417807E+0001 --1.18775792438646E+0001 -1.18789764763296E+0001 -1.18803723385648E+0001 -1.18817668299583E+0001 -1.18831599498969E+0001 --1.18845516977659E+0001 -1.18859420729494E+0001 -1.18873310748301E+0001 -1.18887187027894E+0001 -1.18901049562075E+0001 --1.18914898344631E+0001 -1.18928733369338E+0001 -1.18942554629957E+0001 -1.18956362120235E+0001 -1.18970155833909E+0001 --1.18983935764701E+0001 -1.18997701906319E+0001 -1.19011454252459E+0001 -1.19025192796804E+0001 -1.19038917533022E+0001 --1.19052628454771E+0001 -1.19066325555693E+0001 -1.19080008829419E+0001 -1.19093678269564E+0001 -1.19107333869732E+0001 --1.19120975623514E+0001 -1.19134603524488E+0001 -1.19148217566217E+0001 -1.19161817742252E+0001 -1.19175404046131E+0001 --1.19188976471379E+0001 -1.19202535011508E+0001 -1.19216079660015E+0001 -1.19229610410386E+0001 -1.19243127256094E+0001 --1.19256630190596E+0001 -1.19270119207340E+0001 -1.19283594299758E+0001 -1.19297055461269E+0001 -1.19310502685280E+0001 --1.19323935965184E+0001 -1.19337355294362E+0001 -1.19350760666180E+0001 -1.19364152073993E+0001 -1.19377529511142E+0001 --1.19390892970954E+0001 -1.19404242446744E+0001 -1.19417577931813E+0001 -1.19430899419450E+0001 -1.19444206902930E+0001 --1.19457500375516E+0001 -1.19470779830456E+0001 -1.19484045260987E+0001 -1.19497296660331E+0001 -1.19510534021699E+0001 --1.19523757338286E+0001 -1.19536966603277E+0001 -1.19550161809842E+0001 -1.19563342951138E+0001 -1.19576510020311E+0001 --1.19589663010490E+0001 -1.19602801914794E+0001 -1.19615926726329E+0001 -1.19629037438185E+0001 -1.19642134043443E+0001 --1.19655216535168E+0001 -1.19668284906412E+0001 -1.19681339150216E+0001 -1.19694379259605E+0001 -1.19707405227594E+0001 --1.19720417047183E+0001 -1.19733414711359E+0001 -1.19746398213097E+0001 -1.19759367545357E+0001 -1.19772322701088E+0001 --1.19785263673225E+0001 -1.19798190454690E+0001 -1.19811103038392E+0001 -1.19824001417227E+0001 -1.19836885584078E+0001 --1.19849755531815E+0001 -1.19862611253294E+0001 -1.19875452741359E+0001 -1.19888279988841E+0001 -1.19901092988557E+0001 --1.19913891733313E+0001 -1.19926676215898E+0001 -1.19939446429093E+0001 -1.19952202365662E+0001 -1.19964944018358E+0001 --1.19977671379920E+0001 -1.19990384443074E+0001 -1.20003083200534E+0001 -1.20015767645000E+0001 -1.20028437769160E+0001 --1.20041093565687E+0001 -1.20053735027242E+0001 -1.20066362146475E+0001 -1.20078974916019E+0001 -1.20091573328497E+0001 --1.20104157376518E+0001 -1.20116727052678E+0001 -1.20129282349561E+0001 -1.20141823259735E+0001 -1.20154349775759E+0001 --1.20166861890176E+0001 -1.20179359595517E+0001 -1.20191842884300E+0001 -1.20204311749030E+0001 -1.20216766182199E+0001 --1.20229206176287E+0001 -1.20241631723758E+0001 -1.20254042817066E+0001 -1.20266439448651E+0001 -1.20278821610940E+0001 --1.20291189296347E+0001 -1.20303542497272E+0001 -1.20315881206104E+0001 -1.20328205415218E+0001 -1.20340515116975E+0001 --1.20352810303726E+0001 -1.20365090967804E+0001 -1.20377357101535E+0001 -1.20389608697227E+0001 -1.20401845747178E+0001 --1.20414068243672E+0001 -1.20426276178981E+0001 -1.20438469545361E+0001 -1.20450648335058E+0001 -1.20462812540305E+0001 --1.20474962153321E+0001 -1.20487097166311E+0001 -1.20499217571470E+0001 -1.20511323360977E+0001 -1.20523414527001E+0001 --1.20535491061694E+0001 -1.20547552957198E+0001 -1.20559600205643E+0001 -1.20571632799144E+0001 -1.20583650729802E+0001 --1.20595653989708E+0001 -1.20607642570938E+0001 -1.20619616465556E+0001 -1.20631575665613E+0001 -1.20643520163145E+0001 --1.20655449950180E+0001 -1.20667365018727E+0001 -1.20679265360786E+0001 -1.20691150968342E+0001 -1.20703021833370E+0001 --1.20714877947829E+0001 -1.20726719303666E+0001 -1.20738545892815E+0001 -1.20750357707198E+0001 -1.20762154738723E+0001 --1.20773936979286E+0001 -1.20785704420768E+0001 -1.20797457055040E+0001 -1.20809194873957E+0001 -1.20820917869364E+0001 --1.20832626033092E+0001 -1.20844319356958E+0001 -1.20855997832768E+0001 -1.20867661452312E+0001 -1.20879310207371E+0001 --1.20890944089710E+0001 -1.20902563091083E+0001 -1.20914167203230E+0001 -1.20925756417879E+0001 -1.20937330726743E+0001 --1.20948890121525E+0001 -1.20960434593913E+0001 -1.20971964135582E+0001 -1.20983478738197E+0001 -1.20994978393407E+0001 --1.21006463092848E+0001 -1.21017932828145E+0001 -1.21029387590909E+0001 -1.21040827372739E+0001 -1.21052252165221E+0001 --1.21063661959925E+0001 -1.21075056748413E+0001 -1.21086436522231E+0001 -1.21097801272913E+0001 -1.21109150991980E+0001 --1.21120485670939E+0001 -1.21131805301287E+0001 -1.21143109874506E+0001 -1.21154399382065E+0001 -1.21165673815420E+0001 --1.21176933166015E+0001 -1.21188177425282E+0001 -1.21199406584637E+0001 -1.21210620635486E+0001 -1.21221819569222E+0001 --1.21233003377223E+0001 -1.21244172050856E+0001 -1.21255325581474E+0001 -1.21266463960419E+0001 -1.21277587179018E+0001 --1.21288695228585E+0001 -1.21299788100424E+0001 -1.21310865785823E+0001 -1.21321928276058E+0001 -1.21332975562394E+0001 --1.21344007636080E+0001 -1.21355024488355E+0001 -1.21366026110443E+0001 -1.21377012493556E+0001 -1.21387983628894E+0001 --1.21398939507644E+0001 -1.21409880120978E+0001 -1.21420805460057E+0001 -1.21431715516029E+0001 -1.21442610280029E+0001 --1.21453489743179E+0001 -1.21464353896589E+0001 -1.21475202731354E+0001 -1.21486036238559E+0001 -1.21496854409274E+0001 --1.21507657234557E+0001 -1.21518444705453E+0001 -1.21529216812994E+0001 -1.21539973548200E+0001 -1.21550714902078E+0001 --1.21561440865620E+0001 -1.21572151429809E+0001 -1.21582846585612E+0001 -1.21593526323984E+0001 -1.21604190635867E+0001 --1.21614839512192E+0001 -1.21625472943876E+0001 -1.21636090921821E+0001 -1.21646693436919E+0001 -1.21657280480049E+0001 --1.21667852042076E+0001 -1.21678408113852E+0001 -1.21688948686218E+0001 -1.21699473750001E+0001 -1.21709983296014E+0001 --1.21720477315060E+0001 -1.21730955797927E+0001 -1.21741418735390E+0001 -1.21751866118213E+0001 -1.21762297937146E+0001 --1.21772714182926E+0001 -1.21783114846278E+0001 -1.21793499917913E+0001 -1.21803869388531E+0001 -1.21814223248818E+0001 --1.21824561489447E+0001 -1.21834884101079E+0001 -1.21845191074362E+0001 -1.21855482399930E+0001 -1.21865758068406E+0001 --1.21876018070399E+0001 -1.21886262396506E+0001 -1.21896491037310E+0001 -1.21906703983383E+0001 -1.21916901225284E+0001 --1.21927082753557E+0001 -1.21937248558734E+0001 -1.21947398631337E+0001 -1.21957532961873E+0001 -1.21967651540834E+0001 --1.21977754358704E+0001 -1.21987841405951E+0001 -1.21997912673031E+0001 -1.22007968150387E+0001 -1.22018007828450E+0001 --1.22028031697637E+0001 -1.22038039748354E+0001 -1.22048031970992E+0001 -1.22058008355931E+0001 -1.22067968893538E+0001 --1.22077913574166E+0001 -1.22087842388157E+0001 -1.22097755325838E+0001 -1.22107652377526E+0001 -1.22117533533523E+0001 --1.22127398784120E+0001 -1.22137248119593E+0001 -1.22147081530208E+0001 -1.22156899006215E+0001 -1.22166700537855E+0001 --1.22176486115352E+0001 -1.22186255728922E+0001 -1.22196009368765E+0001 -1.22205747025068E+0001 -1.22215468688007E+0001 --1.22225174347744E+0001 -1.22234863994430E+0001 -1.22244537618201E+0001 -1.22254195209182E+0001 -1.22263836757484E+0001 --1.22273462253207E+0001 -1.22283071686435E+0001 -1.22292665047243E+0001 -1.22302242325691E+0001 -1.22311803511828E+0001 --1.22321348595687E+0001 -1.22330877567292E+0001 -1.22340390416653E+0001 -1.22349887133766E+0001 -1.22359367708615E+0001 --1.22368832131172E+0001 -1.22378280391397E+0001 -1.22387712479234E+0001 -1.22397128384617E+0001 -1.22406528097467E+0001 --1.22415911607691E+0001 -1.22425278905186E+0001 -1.22434629979833E+0001 -1.22443964821502E+0001 -1.22453283420050E+0001 --1.22462585765321E+0001 -1.22471871847147E+0001 -1.22481141655347E+0001 -1.22490395179727E+0001 -1.22499632410080E+0001 --1.22508853336188E+0001 -1.22518057947817E+0001 -1.22527246234724E+0001 -1.22536418186652E+0001 -1.22545573793329E+0001 --1.22554713044474E+0001 -1.22563835929790E+0001 -1.22572942438970E+0001 -1.22582032561692E+0001 -1.22591106287624E+0001 --1.22600163606419E+0001 -1.22609204507717E+0001 -1.22618228981147E+0001 -1.22627237016326E+0001 -1.22636228602855E+0001 --1.22645203730325E+0001 -1.22654162388313E+0001 -1.22663104566385E+0001 -1.22672030254093E+0001 -1.22680939440975E+0001 --1.22689832116560E+0001 -1.22698708270360E+0001 -1.22707567891878E+0001 -1.22716410970602E+0001 -1.22725237496009E+0001 --1.22734047457561E+0001 -1.22742840844709E+0001 -1.22751617646892E+0001 -1.22760377853535E+0001 -1.22769121454051E+0001 --1.22777848437839E+0001 -1.22786558794286E+0001 -1.22795252512769E+0001 -1.22803929582648E+0001 -1.22812589993273E+0001 --1.22821233733980E+0001 -1.22829860794094E+0001 -1.22838471162926E+0001 -1.22847064829775E+0001 -1.22855641783926E+0001 --1.22864202014653E+0001 -1.22872745511217E+0001 -1.22881272262865E+0001 -1.22889782258834E+0001 -1.22898275488345E+0001 --1.22906751940609E+0001 -1.22915211604823E+0001 -1.22923654470173E+0001 -1.22932080525829E+0001 -1.22940489760952E+0001 --1.22948882164688E+0001 -1.22957257726171E+0001 -1.22965616434523E+0001 -1.22973958278853E+0001 -1.22982283248257E+0001 --1.22990591331818E+0001 -1.22998882518608E+0001 -1.23007156797685E+0001 -1.23015414158093E+0001 -1.23023654588867E+0001 --1.23031878079027E+0001 -1.23040084617579E+0001 -1.23048274193521E+0001 -1.23056446795833E+0001 -1.23064602413485E+0001 --1.23072741035435E+0001 -1.23080862650628E+0001 -1.23088967247995E+0001 -1.23097054816455E+0001 -1.23105125344915E+0001 --1.23113178822269E+0001 -1.23121215237399E+0001 -1.23129234579173E+0001 -1.23137236836447E+0001 -1.23145221998065E+0001 --1.23153190052858E+0001 -1.23161140989643E+0001 -1.23169074797228E+0001 -1.23176991464404E+0001 -1.23184890979952E+0001 --1.23192773332639E+0001 -1.23200638511222E+0001 -1.23208486504442E+0001 -1.23216317301030E+0001 -1.23224130889702E+0001 --1.23231927259163E+0001 -1.23239706398107E+0001 -1.23247468295211E+0001 -1.23255212939143E+0001 -1.23262940318557E+0001 --1.23270650422096E+0001 -1.23278343238387E+0001 -1.23286018756047E+0001 -1.23293676963681E+0001 -1.23301317849879E+0001 --1.23308941403220E+0001 -1.23316547612270E+0001 -1.23324136465583E+0001 -1.23331707951699E+0001 -1.23339262059147E+0001 --1.23346798776442E+0001 -1.23354318092087E+0001 -1.23361819994573E+0001 -1.23369304472378E+0001 -1.23376771513967E+0001 --1.23384221107792E+0001 -1.23391653242294E+0001 -1.23399067905901E+0001 -1.23406465087026E+0001 -1.23413844774073E+0001 --1.23421206955431E+0001 -1.23428551619477E+0001 -1.23435878754577E+0001 -1.23443188349081E+0001 -1.23450480391329E+0001 --1.23457754869649E+0001 -1.23465011772354E+0001 -1.23472251087746E+0001 -1.23479472804114E+0001 -1.23486676909735E+0001 --1.23493863392872E+0001 -1.23501032241778E+0001 -1.23508183444690E+0001 -1.23515316989835E+0001 -1.23522432865427E+0001 --1.23529531059666E+0001 -1.23536611560742E+0001 -1.23543674356829E+0001 -1.23550719436093E+0001 -1.23557746786682E+0001 --1.23564756396736E+0001 -1.23571748254380E+0001 -1.23578722347728E+0001 -1.23585678664879E+0001 -1.23592617193923E+0001 --1.23599537922933E+0001 -1.23606440839974E+0001 -1.23613325933095E+0001 -1.23620193190334E+0001 -1.23627042599717E+0001 --1.23633874149255E+0001 -1.23640687826950E+0001 -1.23647483620788E+0001 -1.23654261518745E+0001 -1.23661021508783E+0001 --1.23667763578852E+0001 -1.23674487716889E+0001 -1.23681193910819E+0001 -1.23687882148554E+0001 -1.23694552417995E+0001 --1.23701204707027E+0001 -1.23707839003526E+0001 -1.23714455295353E+0001 -1.23721053570359E+0001 -1.23727633816380E+0001 --1.23734196021240E+0001 -1.23740740172752E+0001 -1.23747266258714E+0001 -1.23753774266914E+0001 -1.23760264185127E+0001 --1.23766736001112E+0001 -1.23773189702621E+0001 -1.23779625277388E+0001 -1.23786042713140E+0001 -1.23792441997586E+0001 --1.23798823118427E+0001 -1.23805186063349E+0001 -1.23811530820025E+0001 -1.23817857376118E+0001 -1.23824165719276E+0001 --1.23830455837136E+0001 -1.23836727717321E+0001 -1.23842981347443E+0001 -1.23849216715101E+0001 -1.23855433807881E+0001 --1.23861632613356E+0001 -1.23867813119090E+0001 -1.23873975312629E+0001 -1.23880119181510E+0001 -1.23886244713257E+0001 --1.23892351895382E+0001 -1.23898440715382E+0001 -1.23904511160744E+0001 -1.23910563218943E+0001 -1.23916596877438E+0001 --1.23922612123678E+0001 -1.23928608945101E+0001 -1.23934587329128E+0001 -1.23940547263172E+0001 -1.23946488734631E+0001 --1.23952411730892E+0001 -1.23958316239326E+0001 -1.23964202247297E+0001 -1.23970069742152E+0001 -1.23975918711228E+0001 --1.23981749141848E+0001 -1.23987561021322E+0001 -1.23993354336951E+0001 -1.23999129076019E+0001 -1.24004885225801E+0001 --1.24010622773557E+0001 -1.24016341706536E+0001 -1.24022042011975E+0001 -1.24027723677095E+0001 -1.24033386689110E+0001 --1.24039031035217E+0001 -1.24044656702603E+0001 -1.24050263678441E+0001 -1.24055851949892E+0001 -1.24061421504105E+0001 --1.24066972328215E+0001 -1.24072504409348E+0001 -1.24078017734613E+0001 -1.24083512291110E+0001 -1.24088988065925E+0001 --1.24094445046131E+0001 -1.24099883218790E+0001 -1.24105302570950E+0001 -1.24110703089648E+0001 -1.24116084761908E+0001 --1.24121447574740E+0001 -1.24126791515144E+0001 -1.24132116570106E+0001 -1.24137422726600E+0001 -1.24142709971586E+0001 --1.24147978292016E+0001 -1.24153227674823E+0001 -1.24158458106933E+0001 -1.24163669575258E+0001 -1.24168862066695E+0001 --1.24174035568133E+0001 -1.24179190066444E+0001 -1.24184325548490E+0001 -1.24189442001121E+0001 -1.24194539411173E+0001 --1.24199617765470E+0001 -1.24204677050825E+0001 -1.24209717254036E+0001 -1.24214738361890E+0001 -1.24219740361162E+0001 --1.24224723238613E+0001 -1.24229686980994E+0001 -1.24234631575040E+0001 -1.24239557007477E+0001 -1.24244463265016E+0001 --1.24249350334357E+0001 -1.24254218202188E+0001 -1.24259066855182E+0001 -1.24263896280003E+0001 -1.24268706463299E+0001 --1.24273497391709E+0001 -1.24278269051857E+0001 -1.24283021430355E+0001 -1.24287754513803E+0001 -1.24292468288790E+0001 --1.24297162741890E+0001 -1.24301837859665E+0001 -1.24306493628666E+0001 -1.24311130035431E+0001 -1.24315747066485E+0001 --1.24320344708340E+0001 -1.24324922947497E+0001 -1.24329481770445E+0001 -1.24334021163657E+0001 -1.24338541113599E+0001 --1.24343041606719E+0001 -1.24347522629456E+0001 -1.24351984168237E+0001 -1.24356426209474E+0001 -1.24360848739569E+0001 --1.24365251744909E+0001 -1.24369635211871E+0001 -1.24373999126818E+0001 -1.24378343476101E+0001 -1.24382668246059E+0001 --1.24386973423019E+0001 -1.24391258993293E+0001 -1.24395524943184E+0001 -1.24399771258981E+0001 -1.24403997926959E+0001 --1.24408204933384E+0001 -1.24412392264506E+0001 -1.24416559906566E+0001 -1.24420707845789E+0001 -1.24424836068390E+0001 --1.24428944560572E+0001 -1.24433033308523E+0001 -1.24437102298422E+0001 -1.24441151516431E+0001 -1.24445180948705E+0001 --1.24449190581383E+0001 -1.24453180400592E+0001 -1.24457150392447E+0001 -1.24461100543051E+0001 -1.24465030838494E+0001 --1.24468941264854E+0001 -1.24472831808196E+0001 -1.24476702454573E+0001 -1.24480553190026E+0001 -1.24484384000582E+0001 --1.24488194872259E+0001 -1.24491985791058E+0001 -1.24495756742970E+0001 -1.24499507713975E+0001 -1.24503238690039E+0001 --1.24506949657114E+0001 -1.24510640601142E+0001 -1.24514311508053E+0001 -1.24517962363762E+0001 -1.24521593154173E+0001 --1.24525203865179E+0001 -1.24528794482658E+0001 -1.24532364992477E+0001 -1.24535915380492E+0001 -1.24539445632542E+0001 --1.24542955734459E+0001 -1.24546445672060E+0001 -1.24549915431149E+0001 -1.24553364997519E+0001 -1.24556794356950E+0001 --1.24560203495209E+0001 -1.24563592398052E+0001 -1.24566961051222E+0001 -1.24570309440448E+0001 -1.24573637551451E+0001 --1.24576945369933E+0001 -1.24580232881590E+0001 -1.24583500072102E+0001 -1.24586746927137E+0001 -1.24589973432352E+0001 --1.24593179573391E+0001 -1.24596365335883E+0001 -1.24599530705450E+0001 -1.24602675667697E+0001 -1.24605800208218E+0001 --1.24608904312595E+0001 -1.24611987966398E+0001 -1.24615051155183E+0001 -1.24618093864497E+0001 -1.24621116079869E+0001 --1.24624117786821E+0001 -1.24627098970860E+0001 -1.24630059617480E+0001 -1.24632999712166E+0001 -1.24635919240387E+0001 --1.24638818187601E+0001 -1.24641696539253E+0001 -1.24644554280778E+0001 -1.24647391397596E+0001 -1.24650207875115E+0001 --1.24653003698732E+0001 -1.24655778853830E+0001 -1.24658533325781E+0001 -1.24661267099943E+0001 -1.24663980161664E+0001 --1.24666672496277E+0001 -1.24669344089105E+0001 -1.24671994925457E+0001 -1.24674624990630E+0001 -1.24677234269909E+0001 --1.24679822748566E+0001 -1.24682390411862E+0001 -1.24684937245045E+0001 -1.24687463233349E+0001 -1.24689968361997E+0001 --1.24692452616201E+0001 -1.24694915981158E+0001 -1.24697358442054E+0001 -1.24699779984064E+0001 -1.24702180592348E+0001 --1.24704560252054E+0001 -1.24706918948320E+0001 -1.24709256666269E+0001 -1.24711573391014E+0001 -1.24713869107653E+0001 --1.24716143801274E+0001 -1.24718397456952E+0001 -1.24720630059747E+0001 -1.24722841594713E+0001 -1.24725032046884E+0001 --1.24727201401287E+0001 -1.24729349642934E+0001 -1.24731476756827E+0001 -1.24733582727953E+0001 -1.24735667541289E+0001 --1.24737731181797E+0001 -1.24739773634430E+0001 -1.24741794884126E+0001 -1.24743794915811E+0001 -1.24745773714399E+0001 --1.24747731264793E+0001 -1.24749667551882E+0001 -1.24751582560543E+0001 -1.24753476275641E+0001 -1.24755348682028E+0001 --1.24757199764545E+0001 -1.24759029508019E+0001 -1.24760837897266E+0001 -1.24762624917088E+0001 -1.24764390552277E+0001 --1.24766134787611E+0001 -1.24767857607856E+0001 -1.24769558997766E+0001 -1.24771238942082E+0001 -1.24772897425534E+0001 --1.24774534432837E+0001 -1.24776149948697E+0001 -1.24777743957806E+0001 -1.24779316444843E+0001 -1.24780867394476E+0001 --1.24782396791360E+0001 -1.24783904620138E+0001 -1.24785390865440E+0001 -1.24786855511884E+0001 -1.24788298544077E+0001 --1.24789719946611E+0001 -1.24791119704068E+0001 -1.24792497801017E+0001 -1.24793854222013E+0001 -1.24795188951602E+0001 --1.24796501974315E+0001 -1.24797793274671E+0001 -1.24799062837179E+0001 -1.24800310646332E+0001 -1.24801536686614E+0001 --1.24802740942494E+0001 -1.24803923398431E+0001 -1.24805084038870E+0001 -1.24806222848245E+0001 -1.24807339810976E+0001 --1.24808434911472E+0001 -1.24809508134130E+0001 -1.24810559463333E+0001 -1.24811588883454E+0001 -1.24812596378851E+0001 --1.24813581933872E+0001 -1.24814545532852E+0001 -1.24815487160113E+0001 -1.24816406799965E+0001 -1.24817304436707E+0001 --1.24818180054623E+0001 -1.24819033637987E+0001 -1.24819865171061E+0001 -1.24820674638092E+0001 -1.24821462023317E+0001 --1.24822227310959E+0001 -1.24822970485232E+0001 -1.24823691530333E+0001 -1.24824390430451E+0001 -1.24825067169760E+0001 --1.24825721732423E+0001 -1.24826354102589E+0001 -1.24826964264397E+0001 -1.24827552201972E+0001 -1.24828117899428E+0001 --1.24828661340866E+0001 -1.24829182510374E+0001 -1.24829681392029E+0001 -1.24830157969895E+0001 -1.24830612228024E+0001 --1.24831044150455E+0001 -1.24831453721215E+0001 -1.24831840924320E+0001 -1.24832205743773E+0001 -1.24832548163563E+0001 --1.24832868167668E+0001 -1.24833165740055E+0001 -1.24833440864677E+0001 -1.24833693525475E+0001 -1.24833923706377E+0001 --1.24834131391302E+0001 -1.24834316564152E+0001 -1.24834479208821E+0001 -1.24834619309187E+0001 -1.24834736849119E+0001 --1.24834831812471E+0001 -1.24834904183086E+0001 -1.24834953944796E+0001 -1.24834981081418E+0001 -1.24834985576758E+0001 --1.24834967414610E+0001 -1.24834926578757E+0001 -1.24834863052966E+0001 -1.24834776820995E+0001 -1.24834667866588E+0001 --1.24834536173478E+0001 -1.24834381725385E+0001 -1.24834204506017E+0001 -1.24834004499070E+0001 -1.24833781688227E+0001 --1.24833536057157E+0001 -1.24833267589521E+0001 -1.24832976268965E+0001 -1.24832662079123E+0001 -1.24832325003616E+0001 --1.24831965026056E+0001 -1.24831582130038E+0001 -1.24831176299147E+0001 -1.24830747516958E+0001 -1.24830295767030E+0001 --1.24829821032911E+0001 -1.24829323298139E+0001 -1.24828802546236E+0001 -1.24828258760713E+0001 -1.24827691925070E+0001 --1.24827102022795E+0001 -1.24826489037361E+0001 -1.24825852952230E+0001 -1.24825193750855E+0001 -1.24824511416670E+0001 --1.24823805933105E+0001 -1.24823077283570E+0001 -1.24822325451467E+0001 -1.24821550420184E+0001 -1.24820752173100E+0001 --1.24819930693578E+0001 -1.24819085964968E+0001 -1.24818217970614E+0001 -1.24817326693840E+0001 -1.24816412117963E+0001 --1.24815474226285E+0001 -1.24814513002098E+0001 -1.24813528428680E+0001 -1.24812520489296E+0001 -1.24811489167203E+0001 --1.24810434445639E+0001 -1.24809356307836E+0001 -1.24808254737011E+0001 -1.24807129716368E+0001 -1.24805981229101E+0001 --1.24804809258390E+0001 -1.24803613787402E+0001 -1.24802394799295E+0001 -1.24801152277212E+0001 -1.24799886204284E+0001 --1.24798596563630E+0001 -1.24797283338358E+0001 -1.24795946511562E+0001 -1.24794586066326E+0001 -1.24793201985718E+0001 --1.24791794252797E+0001 -1.24790362850610E+0001 -1.24788907762188E+0001 -1.24787428970555E+0001 -1.24785926458719E+0001 --1.24784400209676E+0001 -1.24782850206411E+0001 -1.24781276431897E+0001 -1.24779678869093E+0001 -1.24778057500948E+0001 --1.24776412310396E+0001 -1.24774743280362E+0001 -1.24773050393758E+0001 -1.24771333633479E+0001 -1.24769592982416E+0001 --1.24767828423440E+0001 -1.24766039939416E+0001 -1.24764227513192E+0001 -1.24762391127606E+0001 -1.24760530765485E+0001 --1.24758646409641E+0001 -1.24756738042875E+0001 -1.24754805647975E+0001 -1.24752849207719E+0001 -1.24750868704872E+0001 --1.24748864122184E+0001 -1.24746835442396E+0001 -1.24744782648235E+0001 -1.24742705722417E+0001 -1.24740604647646E+0001 --1.24738479406611E+0001 -1.24736329981992E+0001 -1.24734156356456E+0001 -1.24731958512656E+0001 -1.24729736433234E+0001 --1.24727490100822E+0001 -1.24725219498035E+0001 -1.24722924607480E+0001 -1.24720605411749E+0001 -1.24718261893424E+0001 --1.24715894035073E+0001 -1.24713501819253E+0001 -1.24711085228509E+0001 -1.24708644245371E+0001 -1.24706178852361E+0001 --1.24703689031985E+0001 -1.24701174766739E+0001 -1.24698636039107E+0001 -1.24696072831558E+0001 -1.24693485126553E+0001 --1.24690872906537E+0001 -1.24688236153946E+0001 -1.24685574851199E+0001 -1.24682888980709E+0001 -1.24680178524873E+0001 --1.24677443466076E+0001 -1.24674683786691E+0001 -1.24671899469079E+0001 -1.24669090495590E+0001 -1.24666256848560E+0001 --1.24663398510312E+0001 -1.24660515463160E+0001 -1.24657607689405E+0001 -1.24654675171332E+0001 -1.24651717891218E+0001 --1.24648735831326E+0001 -1.24645728973908E+0001 -1.24642697301202E+0001 -1.24639640795436E+0001 -1.24636559438823E+0001 --1.24633453213567E+0001 -1.24630322101856E+0001 -1.24627166085870E+0001 -1.24623985147774E+0001 -1.24620779269721E+0001 --1.24617548433854E+0001 -1.24614292622300E+0001 -1.24611011817178E+0001 -1.24607706000590E+0001 -1.24604375154631E+0001 --1.24601019261381E+0001 -1.24597638302908E+0001 -1.24594232261267E+0001 -1.24590801118502E+0001 -1.24587344856646E+0001 --1.24583863457717E+0001 -1.24580356903723E+0001 -1.24576825176657E+0001 -1.24573268258505E+0001 -1.24569686131235E+0001 --1.24566078776807E+0001 -1.24562446177165E+0001 -1.24558788314246E+0001 -1.24555105169969E+0001 -1.24551396726246E+0001 --1.24547662964972E+0001 -1.24543903868034E+0001 -1.24540119417305E+0001 -1.24536309594645E+0001 -1.24532474381904E+0001 --1.24528613760917E+0001 -1.24524727713509E+0001 -1.24520816221492E+0001 -1.24516879266666E+0001 -1.24512916830818E+0001 --1.24508928895725E+0001 -1.24504915443149E+0001 -1.24500876454843E+0001 -1.24496811912544E+0001 -1.24492721797979E+0001 --1.24488606092864E+0001 -1.24484464778901E+0001 -1.24480297837779E+0001 -1.24476105251178E+0001 -1.24471887000763E+0001 --1.24467643068187E+0001 -1.24463373435093E+0001 -1.24459078083108E+0001 -1.24454756993853E+0001 -1.24450410148929E+0001 --1.24446037529932E+0001 -1.24441639118441E+0001 -1.24437214896025E+0001 -1.24432764844239E+0001 -1.24428288944630E+0001 --1.24423787178727E+0001 -1.24419259528052E+0001 -1.24414705974110E+0001 -1.24410126498399E+0001 -1.24405521082402E+0001 --1.24400889707589E+0001 -1.24396232355419E+0001 -1.24391549007339E+0001 -1.24386839644784E+0001 -1.24382104249176E+0001 --1.24377342801925E+0001 -1.24372555284429E+0001 -1.24367741678076E+0001 -1.24362901964237E+0001 -1.24358036124274E+0001 --1.24353144139538E+0001 -1.24348225991365E+0001 -1.24343281661081E+0001 -1.24338311129996E+0001 -1.24333314379415E+0001 --1.24328291390624E+0001 -1.24323242144899E+0001 -1.24318166623506E+0001 -1.24313064807697E+0001 -1.24307936678710E+0001 --1.24302782217774E+0001 -1.24297601406105E+0001 -1.24292394224905E+0001 -1.24287160655367E+0001 -1.24281900678669E+0001 --1.24276614275979E+0001 -1.24271301428450E+0001 -1.24265962117227E+0001 -1.24260596323438E+0001 -1.24255204028203E+0001 --1.24249785212628E+0001 -1.24244339857806E+0001 -1.24238867944820E+0001 -1.24233369454739E+0001 -1.24227844368621E+0001 --1.24222292667511E+0001 -1.24216714332443E+0001 -1.24211109344437E+0001 -1.24205477684502E+0001 -1.24199819333636E+0001 --1.24194134272822E+0001 -1.24188422483034E+0001 -1.24182683945231E+0001 -1.24176918640362E+0001 -1.24171126549363E+0001 --1.24165307653157E+0001 -1.24159461932657E+0001 -1.24153589368762E+0001 -1.24147689942359E+0001 -1.24141763634324E+0001 --1.24135810425519E+0001 -1.24129830296797E+0001 -1.24123823228995E+0001 -1.24117789202940E+0001 -1.24111728199447E+0001 --1.24105640199318E+0001 -1.24099525183343E+0001 -1.24093383132301E+0001 -1.24087214026957E+0001 -1.24081017848067E+0001 --1.24074794576370E+0001 -1.24068544192597E+0001 -1.24062266677464E+0001 -1.24055962011679E+0001 -1.24049630175932E+0001 --1.24043271150905E+0001 -1.24036884917269E+0001 -1.24030471455676E+0001 -1.24024030746776E+0001 -1.24017562771198E+0001 --1.24011067509563E+0001 -1.24004544942480E+0001 -1.23997995050544E+0001 -1.23991417814339E+0001 -1.23984813214437E+0001 --1.23978181231397E+0001 -1.23971521845767E+0001 -1.23964835038083E+0001 -1.23958120788868E+0001 -1.23951379078632E+0001 --1.23944609887875E+0001 -1.23937813197082E+0001 -1.23930988986730E+0001 -1.23924137237281E+0001 -1.23917257929184E+0001 --1.23910351042879E+0001 -1.23903416558791E+0001 -1.23896454457335E+0001 -1.23889464718912E+0001 -1.23882447323912E+0001 --1.23875402252712E+0001 -1.23868329485679E+0001 -1.23861229003166E+0001 -1.23854100785513E+0001 -1.23846944813051E+0001 --1.23839761066095E+0001 -1.23832549524952E+0001 -1.23825310169912E+0001 -1.23818042981258E+0001 -1.23810747939258E+0001 --1.23803425024168E+0001 -1.23796074216232E+0001 -1.23788695495683E+0001 -1.23781288842739E+0001 -1.23773854237611E+0001 --1.23766391660493E+0001 -1.23758901091569E+0001 -1.23751382511009E+0001 -1.23743835898975E+0001 -1.23736261235613E+0001 --1.23728658501058E+0001 -1.23721027675432E+0001 -1.23713368738849E+0001 -1.23705681671406E+0001 -1.23697966453188E+0001 --1.23690223064272E+0001 -1.23682451484720E+0001 -1.23674651694582E+0001 -1.23666823673896E+0001 -1.23658967402689E+0001 --1.23651082860974E+0001 -1.23643170028754E+0001 -1.23635228886016E+0001 -1.23627259412741E+0001 -1.23619261588895E+0001 --1.23611235394427E+0001 -1.23603180809282E+0001 -1.23595097813389E+0001 -1.23586986386664E+0001 -1.23578846509012E+0001 --1.23570678160326E+0001 -1.23562481320488E+0001 -1.23554255969366E+0001 -1.23546002086815E+0001 -1.23537719652681E+0001 --1.23529408646797E+0001 -1.23521069048980E+0001 -1.23512700839042E+0001 -1.23504303996778E+0001 -1.23495878501970E+0001 --1.23487424334391E+0001 -1.23478941473802E+0001 -1.23470429899948E+0001 -1.23461889592567E+0001 -1.23453320531382E+0001 --1.23444722696102E+0001 -1.23436096066429E+0001 -1.23427440622048E+0001 -1.23418756342635E+0001 -1.23410043207853E+0001 --1.23401301197352E+0001 -1.23392530290771E+0001 -1.23383730467738E+0001 -1.23374901707865E+0001 -1.23366043990755E+0001 --1.23357157296000E+0001 -1.23348241603178E+0001 -1.23339296891853E+0001 -1.23330323141580E+0001 -1.23321320331900E+0001 --1.23312288442345E+0001 -1.23303227452431E+0001 -1.23294137341664E+0001 -1.23285018089538E+0001 -1.23275869675534E+0001 --1.23266692079121E+0001 -1.23257485279756E+0001 -1.23248249256886E+0001 -1.23238983989942E+0001 -1.23229689458345E+0001 --1.23220365641504E+0001 -1.23211012518817E+0001 -1.23201630069668E+0001 -1.23192218273429E+0001 -1.23182777109460E+0001 --1.23173306557112E+0001 -1.23163806595718E+0001 -1.23154277204604E+0001 -1.23144718363083E+0001 -1.23135130050453E+0001 --1.23125512246003E+0001 -1.23115864929008E+0001 -1.23106188078733E+0001 -1.23096481674429E+0001 -1.23086745695336E+0001 --1.23076980120680E+0001 -1.23067184929680E+0001 -1.23057360101535E+0001 -1.23047505615439E+0001 -1.23037621450570E+0001 --1.23027707586095E+0001 -1.23017764001170E+0001 -1.23007790674937E+0001 -1.22997787586529E+0001 -1.22987754715060E+0001 --1.22977692039641E+0001 -1.22967599539365E+0001 -1.22957477193315E+0001 -1.22947324980561E+0001 -1.22937142880161E+0001 --1.22926930871162E+0001 -1.22916688932598E+0001 -1.22906417043490E+0001 -1.22896115182850E+0001 -1.22885783329675E+0001 --1.22875421462950E+0001 -1.22865029561650E+0001 -1.22854607604737E+0001 -1.22844155571158E+0001 -1.22833673439853E+0001 --1.22823161189748E+0001 -1.22812618799755E+0001 -1.22802046248776E+0001 -1.22791443515700E+0001 -1.22780810579403E+0001 --1.22770147418752E+0001 -1.22759454012599E+0001 -1.22748730339785E+0001 -1.22737976379139E+0001 -1.22727192109479E+0001 --1.22716377509608E+0001 -1.22705532558318E+0001 -1.22694657234394E+0001 -1.22683751516600E+0001 -1.22672815383693E+0001 --1.22661848814419E+0001 -1.22650851787510E+0001 -1.22639824281685E+0001 -1.22628766275653E+0001 -1.22617677748111E+0001 --1.22606558677742E+0001 -1.22595409043218E+0001 -1.22584228823199E+0001 -1.22573017996333E+0001 -1.22561776541256E+0001 --1.22550504436591E+0001 -1.22539201660950E+0001 -1.22527868192933E+0001 -1.22516504011127E+0001 -1.22505109094108E+0001 --1.22493683420439E+0001 -1.22482226968671E+0001 -1.22470739717344E+0001 -1.22459221644984E+0001 -1.22447672730108E+0001 --1.22436092951217E+0001 -1.22424482286804E+0001 -1.22412840715346E+0001 -1.22401168215312E+0001 -1.22389464765154E+0001 --1.22377730343317E+0001 -1.22365964928232E+0001 -1.22354168498317E+0001 -1.22342341031977E+0001 -1.22330482507609E+0001 --1.22318592903594E+0001 -1.22306672198303E+0001 -1.22294720370095E+0001 -1.22282737397314E+0001 -1.22270723258297E+0001 --1.22258677931364E+0001 -1.22246601394826E+0001 -1.22234493626982E+0001 -1.22222354606116E+0001 -1.22210184310504E+0001 --1.22197982718407E+0001 -1.22185749808075E+0001 -1.22173485557745E+0001 -1.22161189945644E+0001 -1.22148862949985E+0001 --1.22136504548969E+0001 -1.22124114720788E+0001 -1.22111693443617E+0001 -1.22099240695622E+0001 -1.22086756454959E+0001 --1.22074240699765E+0001 -1.22061693408172E+0001 -1.22049114558297E+0001 -1.22036504128246E+0001 -1.22023862096110E+0001 --1.22011188439973E+0001 -1.21998483137901E+0001 -1.21985746167954E+0001 -1.21972977508176E+0001 -1.21960177136597E+0001 --1.21947345031243E+0001 -1.21934481170119E+0001 -1.21921585531225E+0001 -1.21908658092541E+0001 -1.21895698832045E+0001 --1.21882707727695E+0001 -1.21869684757439E+0001 -1.21856629899215E+0001 -1.21843543130948E+0001 -1.21830424430549E+0001 --1.21817273775919E+0001 -1.21804091144947E+0001 -1.21790876515508E+0001 -1.21777629865467E+0001 -1.21764351172677E+0001 --1.21751040414978E+0001 -1.21737697570198E+0001 -1.21724322616154E+0001 -1.21710915530648E+0001 -1.21697476291473E+0001 --1.21684004876410E+0001 -1.21670501263226E+0001 -1.21656965429678E+0001 -1.21643397353510E+0001 -1.21629797012451E+0001 --1.21616164384225E+0001 -1.21602499446538E+0001 -1.21588802177085E+0001 -1.21575072553550E+0001 -1.21561310553606E+0001 --1.21547516154911E+0001 -1.21533689335114E+0001 -1.21519830071850E+0001 -1.21505938342744E+0001 -1.21492014125404E+0001 --1.21478057397432E+0001 -1.21464068136417E+0001 -1.21450046319931E+0001 -1.21435991925539E+0001 -1.21421904930793E+0001 --1.21407785313232E+0001 -1.21393633050383E+0001 -1.21379448119760E+0001 -1.21365230498868E+0001 -1.21350980165199E+0001 --1.21336697096230E+0001 -1.21322381269430E+0001 -1.21308032662251E+0001 -1.21293651252142E+0001 -1.21279237016527E+0001 --1.21264789932830E+0001 -1.21250309978456E+0001 -1.21235797130801E+0001 -1.21221251367248E+0001 -1.21206672665166E+0001 --1.21192061001916E+0001 -1.21177416354842E+0001 -1.21162738701284E+0001 -1.21148028018560E+0001 -1.21133284283984E+0001 --1.21118507474853E+0001 -1.21103697568452E+0001 -1.21088854542061E+0001 -1.21073978372938E+0001 -1.21059069038335E+0001 --1.21044126515492E+0001 -1.21029150781633E+0001 -1.21014141813974E+0001 -1.20999099589719E+0001 -1.20984024086057E+0001 --1.20968915280166E+0001 -1.20953773149214E+0001 -1.20938597670355E+0001 -1.20923388820731E+0001 -1.20908146577474E+0001 --1.20892870917700E+0001 -1.20877561818516E+0001 -1.20862219257018E+0001 -1.20846843210287E+0001 -1.20831433655395E+0001 --1.20815990569398E+0001 -1.20800513929343E+0001 -1.20785003712266E+0001 -1.20769459895187E+0001 -1.20753882455118E+0001 --1.20738271369057E+0001 -1.20722626613990E+0001 -1.20706948166890E+0001 -1.20691236004722E+0001 -1.20675490104433E+0001 --1.20659710442962E+0001 -1.20643896997238E+0001 -1.20628049744173E+0001 -1.20612168660669E+0001 -1.20596253723613E+0001 --1.20580304909891E+0001 -1.20564322196361E+0001 -1.20548305559883E+0001 -1.20532254977296E+0001 -1.20516170425432E+0001 --1.20500051881106E+0001 -1.20483899321127E+0001 -1.20467712722286E+0001 -1.20451492061370E+0001 -1.20435237315144E+0001 --1.20418948460369E+0001 -1.20402625473790E+0001 -1.20386268332140E+0001 -1.20369877012142E+0001 -1.20353451490507E+0001 --1.20336991743931E+0001 -1.20320497749100E+0001 -1.20303969482693E+0001 -1.20287406921364E+0001 -1.20270810041767E+0001 --1.20254178820541E+0001 -1.20237513234311E+0001 -1.20220813259688E+0001 -1.20204078873278E+0001 -1.20187310051669E+0001 --1.20170506771440E+0001 -1.20153669009155E+0001 -1.20136796741371E+0001 -1.20119889944625E+0001 -1.20102948595450E+0001 --1.20085972670366E+0001 -1.20068962145876E+0001 -1.20051916998473E+0001 -1.20034837204640E+0001 -1.20017722740850E+0001 --1.20000573583556E+0001 -1.19983389709208E+0001 -1.19966171094235E+0001 -1.19948917715063E+0001 -1.19931629548101E+0001 --1.19914306569746E+0001 -1.19896948756385E+0001 -1.19879556084391E+0001 -1.19862128530127E+0001 -1.19844666069941E+0001 --1.19827168680170E+0001 -1.19809636337145E+0001 -1.19792069017173E+0001 -1.19774466696565E+0001 -1.19756829351601E+0001 --1.19739156958564E+0001 -1.19721449493720E+0001 -1.19703706933323E+0001 -1.19685929253612E+0001 -1.19668116430821E+0001 --1.19650268441165E+0001 -1.19632385260850E+0001 -1.19614466866072E+0001 -1.19596513233012E+0001 -1.19578524337839E+0001 --1.19560500156711E+0001 -1.19542440665775E+0001 -1.19524345841165E+0001 -1.19506215659002E+0001 -1.19488050095396E+0001 --1.19469849126446E+0001 -1.19451612728239E+0001 -1.19433340876846E+0001 -1.19415033548329E+0001 -1.19396690718741E+0001 --1.19378312364119E+0001 -1.19359898460488E+0001 -1.19341448983863E+0001 -1.19322963910247E+0001 -1.19304443215626E+0001 --1.19285886875982E+0001 -1.19267294867281E+0001 -1.19248667165475E+0001 -1.19230003746508E+0001 -1.19211304586310E+0001 --1.19192569660797E+0001 -1.19173798945877E+0001 -1.19154992417445E+0001 -1.19136150051380E+0001 -1.19117271823558E+0001 --1.19098357709831E+0001 -1.19079407686047E+0001 -1.19060421728042E+0001 -1.19041399811637E+0001 -1.19022341912644E+0001 --1.19003248006857E+0001 -1.18984118070067E+0001 -1.18964952078047E+0001 -1.18945750006558E+0001 -1.18926511831351E+0001 --1.18907237528166E+0001 -1.18887927072728E+0001 -1.18868580440749E+0001 -1.18849197607936E+0001 -1.18829778549979E+0001 --1.18810323242551E+0001 -1.18790831661324E+0001 -1.18771303781951E+0001 -1.18751739580075E+0001 -1.18732139031326E+0001 --1.18712502111321E+0001 -1.18692828795669E+0001 -1.18673119059964E+0001 -1.18653372879788E+0001 -1.18633590230712E+0001 --1.18613771088296E+0001 -1.18593915428084E+0001 -1.18574023225613E+0001 -1.18554094456404E+0001 -1.18534129095969E+0001 --1.18514127119809E+0001 -1.18494088503407E+0001 -1.18474013222237E+0001 -1.18453901251767E+0001 -1.18433752567444E+0001 --1.18413567144707E+0001 -1.18393344958984E+0001 -1.18373085985692E+0001 -1.18352790200232E+0001 -1.18332457577991E+0001 --1.18312088094355E+0001 -1.18291681724686E+0001 -1.18271238444343E+0001 -1.18250758228669E+0001 -1.18230241052991E+0001 --1.18209686892630E+0001 -1.18189095722896E+0001 -1.18168467519080E+0001 -1.18147802256471E+0001 -1.18127099910334E+0001 --1.18106360455932E+0001 -1.18085583868511E+0001 -1.18064770123307E+0001 -1.18043919195544E+0001 -1.18023031060431E+0001 --1.18002105693170E+0001 -1.17981143068949E+0001 -1.17960143162942E+0001 -1.17939105950312E+0001 -1.17918031406212E+0001 --1.17896919505782E+0001 -1.17875770224149E+0001 -1.17854583536428E+0001 -1.17833359417723E+0001 -1.17812097843127E+0001 --1.17790798787719E+0001 -1.17769462226567E+0001 -1.17748088134725E+0001 -1.17726676487241E+0001 -1.17705227259143E+0001 --1.17683740425454E+0001 -1.17662215961181E+0001 -1.17640653841318E+0001 -1.17619054040852E+0001 -1.17597416534753E+0001 --1.17575741297985E+0001 -1.17554028305492E+0001 -1.17532277532209E+0001 -1.17510488953067E+0001 -1.17488662542973E+0001 --1.17466798276827E+0001 -1.17444896129520E+0001 -1.17422956075929E+0001 -1.17400978090916E+0001 -1.17378962149336E+0001 --1.17356908226025E+0001 -1.17334816295817E+0001 -1.17312686333526E+0001 -1.17290518313955E+0001 -1.17268312211902E+0001 --1.17246068002143E+0001 -1.17223785659448E+0001 -1.17201465158576E+0001 -1.17179106474268E+0001 -1.17156709581259E+0001 --1.17134274454272E+0001 -1.17111801068013E+0001 -1.17089289397181E+0001 -1.17066739416459E+0001 -1.17044151100522E+0001 --1.17021524424030E+0001 -1.16998859361633E+0001 -1.16976155887970E+0001 -1.16953413977663E+0001 -1.16930633605326E+0001 --1.16907814745562E+0001 -1.16884957372960E+0001 -1.16862061462096E+0001 -1.16839126987538E+0001 -1.16816153923839E+0001 --1.16793142245539E+0001 -1.16770091927169E+0001 -1.16747002943246E+0001 -1.16723875268278E+0001 -1.16700708876755E+0001 --1.16677503743163E+0001 -1.16654259841969E+0001 -1.16630977147632E+0001 -1.16607655634597E+0001 -1.16584295277300E+0001 --1.16560896050164E+0001 -1.16537457927596E+0001 -1.16513980883996E+0001 -1.16490464893748E+0001 -1.16466909931231E+0001 --1.16443315970803E+0001 -1.16419682986816E+0001 -1.16396010953611E+0001 -1.16372299845510E+0001 -1.16348549636830E+0001 --1.16324760301873E+0001 -1.16300931814931E+0001 -1.16277064150282E+0001 -1.16253157282193E+0001 -1.16229211184916E+0001 --1.16205225832698E+0001 -1.16181201199770E+0001 -1.16157137260348E+0001 -1.16133033988641E+0001 -1.16108891358843E+0001 --1.16084709345138E+0001 -1.16060487921697E+0001 -1.16036227062679E+0001 -1.16011926742233E+0001 -1.15987586934493E+0001 --1.15963207613581E+0001 -1.15938788753611E+0001 -1.15914330328683E+0001 -1.15889832312882E+0001 -1.15865294680285E+0001 --1.15840717404957E+0001 -1.15816100460945E+0001 -1.15791443822296E+0001 -1.15766747463034E+0001 -1.15742011357177E+0001 --1.15717235478724E+0001 -1.15692419801672E+0001 -1.15667564300000E+0001 -1.15642668947676E+0001 -1.15617733718655E+0001 --1.15592758586884E+0001 -1.15567743526293E+0001 -1.15542688510803E+0001 -1.15517593514324E+0001 -1.15492458510751E+0001 --1.15467283473970E+0001 -1.15442068377851E+0001 -1.15416813196259E+0001 -1.15391517903038E+0001 -1.15366182472029E+0001 --1.15340806877056E+0001 -1.15315391091929E+0001 -1.15289935090455E+0001 -1.15264438846416E+0001 -1.15238902333596E+0001 --1.15213325525755E+0001 -1.15187708396649E+0001 -1.15162050920019E+0001 -1.15136353069593E+0001 -1.15110614819092E+0001 --1.15084836142218E+0001 -1.15059017012667E+0001 -1.15033157404120E+0001 -1.15007257290246E+0001 -1.14981316644704E+0001 --1.14955335441139E+0001 -1.14929313653187E+0001 -1.14903251254468E+0001 -1.14877148218593E+0001 -1.14851004519158E+0001 --1.14824820129752E+0001 -1.14798595023949E+0001 -1.14772329175311E+0001 -1.14746022557388E+0001 -1.14719675143720E+0001 --1.14693286907833E+0001 -1.14666857823240E+0001 -1.14640387863444E+0001 -1.14613877001940E+0001 -1.14587325212200E+0001 --1.14560732467698E+0001 -1.14534098741885E+0001 -1.14507424008203E+0001 -1.14480708240088E+0001 -1.14453951410956E+0001 --1.14427153494212E+0001 -1.14400314463256E+0001 -1.14373434291470E+0001 -1.14346512952225E+0001 -1.14319550418879E+0001 --1.14292546664784E+0001 -1.14265501663271E+0001 -1.14238415387668E+0001 -1.14211287811282E+0001 -1.14184118907418E+0001 --1.14156908649362E+0001 -1.14129657010389E+0001 -1.14102363963767E+0001 -1.14075029482743E+0001 -1.14047653540560E+0001 --1.14020236110446E+0001 -1.13992777165620E+0001 -1.13965276679283E+0001 -1.13937734624630E+0001 -1.13910150974840E+0001 --1.13882525703084E+0001 -1.13854858782516E+0001 -1.13827150186284E+0001 -1.13799399887520E+0001 -1.13771607859342E+0001 --1.13743774074864E+0001 -1.13715898507182E+0001 -1.13687981129379E+0001 -1.13660021914532E+0001 -1.13632020835699E+0001 --1.13603977865932E+0001 -1.13575892978267E+0001 -1.13547766145731E+0001 -1.13519597341337E+0001 -1.13491386538089E+0001 --1.13463133708974E+0001 -1.13434838826973E+0001 -1.13406501865049E+0001 -1.13378122796159E+0001 -1.13349701593243E+0001 --1.13321238229233E+0001 -1.13292732677047E+0001 -1.13264184909593E+0001 -1.13235594899763E+0001 -1.13206962620441E+0001 --1.13178288044499E+0001 -1.13149571144795E+0001 -1.13120811894176E+0001 -1.13092010265476E+0001 -1.13063166231518E+0001 --1.13034279765115E+0001 -1.13005350839066E+0001 -1.12976379426158E+0001 -1.12947365499167E+0001 -1.12918309030855E+0001 --1.12889209993975E+0001 -1.12860068361268E+0001 -1.12830884105461E+0001 -1.12801657199266E+0001 -1.12772387615391E+0001 --1.12743075326528E+0001 -1.12713720305357E+0001 -1.12684322524545E+0001 -1.12654881956750E+0001 -1.12625398574616E+0001 --1.12595872350773E+0001 -1.12566303257844E+0001 -1.12536691268439E+0001 -1.12507036355154E+0001 -1.12477338490571E+0001 --1.12447597647266E+0001 -1.12417813797799E+0001 -1.12387986914719E+0001 -1.12358116970565E+0001 -1.12328203937860E+0001 --1.12298247789119E+0001 -1.12268248496841E+0001 -1.12238206033520E+0001 -1.12208120371629E+0001 -1.12177991483638E+0001 --1.12147819341998E+0001 -1.12117603919150E+0001 -1.12087345187528E+0001 -1.12057043119547E+0001 -1.12026697687615E+0001 --1.11996308864125E+0001 -1.11965876621459E+0001 -1.11935400931992E+0001 -1.11904881768077E+0001 -1.11874319102061E+0001 --1.11843712906282E+0001 -1.11813063153063E+0001 -1.11782369814711E+0001 -1.11751632863529E+0001 -1.11720852271805E+0001 --1.11690028011809E+0001 -1.11659160055808E+0001 -1.11628248376053E+0001 -1.11597292944783E+0001 -1.11566293734229E+0001 --1.11535250716600E+0001 -1.11504163864107E+0001 -1.11473033148937E+0001 -1.11441858543271E+0001 -1.11410640019279E+0001 --1.11379377549116E+0001 -1.11348071104926E+0001 -1.11316720658842E+0001 -1.11285326182985E+0001 -1.11253887649461E+0001 --1.11222405030372E+0001 -1.11190878297798E+0001 -1.11159307423812E+0001 -1.11127692380477E+0001 -1.11096033139845E+0001 --1.11064329673947E+0001 -1.11032581954811E+0001 -1.11000789954450E+0001 -1.10968953644869E+0001 -1.10937072998050E+0001 --1.10905147985979E+0001 -1.10873178580617E+0001 -1.10841164753920E+0001 -1.10809106477827E+0001 -1.10777003724273E+0001 --1.10744856465173E+0001 -1.10712664672433E+0001 -1.10680428317948E+0001 -1.10648147373602E+0001 -1.10615821811262E+0001 --1.10583451602792E+0001 -1.10551036720036E+0001 -1.10518577134826E+0001 -1.10486072818992E+0001 -1.10453523744338E+0001 --1.10420929882667E+0001 -1.10388291205764E+0001 -1.10355607685410E+0001 -1.10322879293363E+0001 -1.10290106001375E+0001 --1.10257287781191E+0001 -1.10224424604531E+0001 -1.10191516443118E+0001 -1.10158563268650E+0001 -1.10125565052828E+0001 --1.10092521767320E+0001 -1.10059433383805E+0001 -1.10026299873933E+0001 -1.09993121209353E+0001 -1.09959897361696E+0001 --1.09926628302582E+0001 -1.09893314003622E+0001 -1.09859954436410E+0001 -1.09826549572534E+0001 -1.09793099383567E+0001 --1.09759603841066E+0001 -1.09726062916586E+0001 -1.09692476581665E+0001 -1.09658844807823E+0001 -1.09625167566579E+0001 --1.09591444829433E+0001 -1.09557676567874E+0001 -1.09523862753382E+0001 -1.09490003357422E+0001 -1.09456098351446E+0001 --1.09422147706903E+0001 -1.09388151395220E+0001 -1.09354109387813E+0001 -1.09320021656094E+0001 -1.09285888171455E+0001 --1.09251708905277E+0001 -1.09217483828936E+0001 -1.09183212913785E+0001 -1.09148896131179E+0001 -1.09114533452446E+0001 --1.09080124848916E+0001 -1.09045670291897E+0001 -1.09011169752689E+0001 -1.08976623202579E+0001 -1.08942030612846E+0001 --1.08907391954751E+0001 -1.08872707199551E+0001 -1.08837976318481E+0001 -1.08803199282771E+0001 -1.08768376063640E+0001 --1.08733506632290E+0001 -1.08698590959915E+0001 -1.08663629017696E+0001 -1.08628620776803E+0001 -1.08593566208392E+0001 --1.08558465283607E+0001 -1.08523317973586E+0001 -1.08488124249443E+0001 -1.08452884082295E+0001 -1.08417597443232E+0001 --1.08382264303351E+0001 -1.08346884633716E+0001 -1.08311458405393E+0001 -1.08275985589433E+0001 -1.08240466156871E+0001 --1.08204900078739E+0001 -1.08169287326046E+0001 -1.08133627869797E+0001 -1.08097921680986E+0001 -1.08062168730582E+0001 --1.08026368989563E+0001 -1.07990522428882E+0001 -1.07954629019478E+0001 -1.07918688732284E+0001 -1.07882701538222E+0001 --1.07846667408194E+0001 -1.07810586313102E+0001 -1.07774458223831E+0001 -1.07738283111243E+0001 -1.07702060946209E+0001 --1.07665791699571E+0001 -1.07629475342167E+0001 -1.07593111844822E+0001 -1.07556701178350E+0001 -1.07520243313550E+0001 --1.07483738221208E+0001 -1.07447185872106E+0001 -1.07410586237006E+0001 -1.07373939286665E+0001 -1.07337244991820E+0001 --1.07300503323202E+0001 -1.07263714251528E+0001 -1.07226877747506E+0001 -1.07189993781826E+0001 -1.07153062325173E+0001 --1.07116083348217E+0001 -1.07079056821614E+0001 -1.07041982716011E+0001 -1.07004861002047E+0001 -1.06967691650337E+0001 --1.06930474631500E+0001 -1.06893209916130E+0001 -1.06855897474810E+0001 -1.06818537278122E+0001 -1.06781129296624E+0001 --1.06743673500875E+0001 -1.06706169861404E+0001 -1.06668618348746E+0001 -1.06631018933417E+0001 -1.06593371585917E+0001 --1.06555676276739E+0001 -1.06517932976365E+0001 -1.06480141655263E+0001 -1.06442302283886E+0001 -1.06404414832679E+0001 --1.06366479272080E+0001 -1.06328495572504E+0001 -1.06290463704361E+0001 -1.06252383638051E+0001 -1.06214255343959E+0001 --1.06176078792451E+0001 -1.06137853953898E+0001 -1.06099580798644E+0001 -1.06061259297024E+0001 -1.06022889419372E+0001 --1.05984471135996E+0001 -1.05946004417198E+0001 -1.05907489233272E+0001 -1.05868925554495E+0001 -1.05830313351131E+0001 --1.05791652593433E+0001 -1.05752943251649E+0001 -1.05714185296005E+0001 -1.05675378696726E+0001 -1.05636523424015E+0001 --1.05597619448067E+0001 -1.05558666739063E+0001 -1.05519665267182E+0001 -1.05480615002576E+0001 -1.05441515915395E+0001 --1.05402367975777E+0001 -1.05363171153844E+0001 -1.05323925419710E+0001 -1.05284630743474E+0001 -1.05245287095220E+0001 --1.05205894445035E+0001 -1.05166452762976E+0001 -1.05126962019095E+0001 -1.05087422183436E+0001 -1.05047833226028E+0001 --1.05008195116888E+0001 -1.04968507826021E+0001 -1.04928771323417E+0001 -1.04888985579067E+0001 -1.04849150562930E+0001 --1.04809266244969E+0001 -1.04769332595133E+0001 -1.04729349583350E+0001 -1.04689317179544E+0001 -1.04649235353631E+0001 --1.04609104075500E+0001 -1.04568923315042E+0001 -1.04528693042138E+0001 -1.04488413226642E+0001 -1.04448083838409E+0001 --1.04407704847279E+0001 -1.04367276223077E+0001 -1.04326797935618E+0001 -1.04286269954711E+0001 -1.04245692250144E+0001 --1.04205064791697E+0001 -1.04164387549138E+0001 -1.04123660492219E+0001 -1.04082883590696E+0001 -1.04042056814289E+0001 --1.04001180132729E+0001 -1.03960253515715E+0001 -1.03919276932949E+0001 -1.03878250354121E+0001 -1.03837173748893E+0001 --1.03796047086933E+0001 -1.03754870337893E+0001 -1.03713643471404E+0001 -1.03672366457096E+0001 -1.03631039264582E+0001 --1.03589661863463E+0001 -1.03548234223330E+0001 -1.03506756313763E+0001 -1.03465228104328E+0001 -1.03423649564578E+0001 --1.03382020664054E+0001 -1.03340341372289E+0001 -1.03298611658804E+0001 -1.03256831493104E+0001 -1.03215000844687E+0001 --1.03173119683031E+0001 -1.03131187977611E+0001 -1.03089205697887E+0001 -1.03047172813308E+0001 -1.03005089293309E+0001 --1.02962955107309E+0001 -1.02920770224724E+0001 -1.02878534614960E+0001 -1.02836248247400E+0001 -1.02793911091420E+0001 --1.02751523116387E+0001 -1.02709084291657E+0001 -1.02666594586564E+0001 -1.02624053970442E+0001 -1.02581462412608E+0001 --1.02538819882366E+0001 -1.02496126349016E+0001 -1.02453381781828E+0001 -1.02410586150084E+0001 -1.02367739423034E+0001 --1.02324841569930E+0001 -1.02281892560002E+0001 -1.02238892362479E+0001 -1.02195840946565E+0001 -1.02152738281457E+0001 --1.02109584336354E+0001 -1.02066379080419E+0001 -1.02023122482821E+0001 -1.01979814512714E+0001 -1.01936455139233E+0001 --1.01893044331503E+0001 -1.01849582058648E+0001 -1.01806068289770E+0001 -1.01762502993955E+0001 -1.01718886140292E+0001 --1.01675217697845E+0001 -1.01631497635670E+0001 -1.01587725922814E+0001 -1.01543902528312E+0001 -1.01500027421177E+0001 --1.01456100570429E+0001 -1.01412121945059E+0001 -1.01368091514052E+0001 -1.01324009246385E+0001 -1.01279875111019E+0001 --1.01235689076903E+0001 -1.01191451112977E+0001 -1.01147161188166E+0001 -1.01102819271383E+0001 -1.01058425331538E+0001 --1.01013979337510E+0001 -1.00969481258188E+0001 -1.00924931062436E+0001 -1.00880328719106E+0001 -1.00835674197047E+0001 --1.00790967465087E+0001 -1.00746208492048E+0001 -1.00701397246733E+0001 -1.00656533697944E+0001 -1.00611617814462E+0001 --1.00566649565065E+0001 -1.00521628918502E+0001 -1.00476555843533E+0001 -1.00431430308890E+0001 -1.00386252283298E+0001 --1.00341021735469E+0001 -1.00295738634107E+0001 -1.00250402947898E+0001 -1.00205014645522E+0001 -1.00159573695649E+0001 --1.00114080066925E+0001 -1.00068533727997E+0001 -1.00022934647494E+0001 -9.99772827940342E+0000 -9.99315781362236E+0000 --9.98858206426564E+0000 -9.98400102819187E+0000 -9.97941470225771E+0000 -9.97482308331928E+0000 -9.97022616823153E+0000 --9.96562395384785E+0000 -9.96101643702059E+0000 -9.95640361460050E+0000 -9.95178548343802E+0000 -9.94716204038241E+0000 --9.94253328228046E+0000 -9.93789920597897E+0000 -9.93325980832356E+0000 -9.92861508615761E+0000 -9.92396503632438E+0000 --9.91930965566553E+0000 -9.91464894102171E+0000 -9.90998288923220E+0000 -9.90531149713468E+0000 -9.90063476156695E+0000 --9.89595267936420E+0000 -9.89126524736128E+0000 -9.88657246239143E+0000 -9.88187432128711E+0000 -9.87717082087897E+0000 --9.87246195799776E+0000 -9.86774772947092E+0000 -9.86302813212717E+0000 -9.85830316279214E+0000 -9.85357281829056E+0000 --9.84883709544749E+0000 -9.84409599108494E+0000 -9.83934950202456E+0000 -9.83459762508653E+0000 -9.82984035709114E+0000 --9.82507769485483E+0000 -9.82030963519560E+0000 -9.81553617492875E+0000 -9.81075731086878E+0000 -9.80597303982893E+0000 --9.80118335862153E+0000 -9.79638826405721E+0000 -9.79158775294582E+0000 -9.78678182209580E+0000 -9.78197046831485E+0000 --9.77715368840893E+0000 -9.77233147918321E+0000 -9.76750383744104E+0000 -9.76267075998567E+0000 -9.75783224361840E+0000 --9.75298828513917E+0000 -9.74813888134736E+0000 -9.74328402904086E+0000 -9.73842372501633E+0000 -9.73355796606927E+0000 --9.72868674899428E+0000 -9.72381007058436E+0000 -9.71892792763128E+0000 -9.71404031692623E+0000 -9.70914723525868E+0000 --9.70424867941711E+0000 -9.69934464618825E+0000 -9.69443513235922E+0000 -9.68952013471414E+0000 -9.68459965003683E+0000 --9.67967367510971E+0000 -9.67474220671454E+0000 -9.66980524163102E+0000 -9.66486277663887E+0000 -9.65991480851483E+0000 --9.65496133403633E+0000 -9.65000234997831E+0000 -9.64503785311513E+0000 -9.64006784022024E+0000 -9.63509230806494E+0000 --9.63011125342018E+0000 -9.62512467305521E+0000 -9.62013256373882E+0000 -9.61513492223810E+0000 -9.61013174531865E+0000 --9.60512302974553E+0000 -9.60010877228217E+0000 -9.59508896969112E+0000 -9.59006361873332E+0000 -9.58503271616951E+0000 --9.57999625875766E+0000 -9.57495424325577E+0000 -9.56990666642059E+0000 -9.56485352500727E+0000 -9.55979481576992E+0000 --9.55473053546132E+0000 -9.54966068083377E+0000 -9.54458524863742E+0000 -9.53950423562139E+0000 -9.53441763853448E+0000 --9.52932545412375E+0000 -9.52422767913424E+0000 -9.51912431031167E+0000 -9.51401534439856E+0000 -9.50890077813790E+0000 --9.50378060827074E+0000 -9.49865483153667E+0000 -9.49352344467468E+0000 -9.48838644442230E+0000 -9.48324382751571E+0000 --9.47809559069049E+0000 -9.47294173068042E+0000 -9.46778224421860E+0000 -9.46261712803619E+0000 -9.45744637886446E+0000 --9.45226999343151E+0000 -9.44708796846658E+0000 -9.44190030069603E+0000 -9.43670698684582E+0000 -9.43150802364028E+0000 --9.42630340780306E+0000 -9.42109313605613E+0000 -9.41587720512098E+0000 -9.41065561171661E+0000 -9.40542835256247E+0000 --9.40019542437528E+0000 -9.39495682387235E+0000 -9.38971254776766E+0000 -9.38446259277555E+0000 -9.37920695560922E+0000 --9.37394563297983E+0000 -9.36867862159761E+0000 -9.36340591817202E+0000 -9.35812751941069E+0000 -9.35284342202135E+0000 --9.34755362270857E+0000 -9.34225811817714E+0000 -9.33695690513048E+0000 -9.33164998027121E+0000 -9.32633734029901E+0000 --9.32101898191456E+0000 -9.31569490181619E+0000 -9.31036509670128E+0000 -9.30502956326598E+0000 -9.29968829820496E+0000 --9.29434129821300E+0000 -9.28898855998159E+0000 -9.28363008020290E+0000 -9.27826585556693E+0000 -9.27289588276301E+0000 --9.26752015847876E+0000 -9.26213867940078E+0000 -9.25675144221555E+0000 -9.25135844360625E+0000 -9.24595968025665E+0000 --9.24055514884913E+0000 -9.23514484606358E+0000 -9.22972876858046E+0000 -9.22430691307738E+0000 -9.21887927623266E+0000 --9.21344585472173E+0000 -9.20800664521937E+0000 -9.20256164439979E+0000 -9.19711084893561E+0000 -9.19165425549738E+0000 --9.18619186075614E+0000 -9.18072366138051E+0000 -9.17524965403800E+0000 -9.16976983539621E+0000 -9.16428420211980E+0000 --9.15879275087286E+0000 -9.15329547831959E+0000 -9.14779238112044E+0000 -9.14228345593722E+0000 -9.13676869942913E+0000 --9.13124810825445E+0000 -9.12572167907058E+0000 -9.12018940853352E+0000 -9.11465129329770E+0000 -9.10910733001708E+0000 --9.10355751534428E+0000 -9.09800184593018E+0000 -9.09244031842491E+0000 -9.08687292947798E+0000 -9.08129967573643E+0000 --9.07572055384685E+0000 -9.07013556045524E+0000 -9.06454469220500E+0000 -9.05894794573942E+0000 -9.05334531770086E+0000 --9.04773680472920E+0000 -9.04212240346442E+0000 -9.03650211054435E+0000 -9.03087592260681E+0000 -9.02524383628679E+0000 --9.01960584821973E+0000 -9.01396195503878E+0000 -9.00831215337632E+0000 -9.00265643986370E+0000 -8.99699481113123E+0000 --8.99132726380731E+0000 -8.98565379451998E+0000 -8.97997439989479E+0000 -8.97428907655819E+0000 -8.96859782113347E+0000 --8.96290063024389E+0000 -8.95719750051114E+0000 -8.95148842855610E+0000 -8.94577341099762E+0000 -8.94005244445430E+0000 --8.93432552554259E+0000 -8.92859265087895E+0000 -8.92285381707791E+0000 -8.91710902075283E+0000 -8.91135825851609E+0000 --8.90560152697844E+0000 -8.89983882275044E+0000 -8.89407014244000E+0000 -8.88829548265551E+0000 -8.88251484000307E+0000 --8.87672821108799E+0000 -8.87093559251389E+0000 -8.86513698088390E+0000 -8.85933237279971E+0000 -8.85352176486185E+0000 --8.84770515366938E+0000 -8.84188253582079E+0000 -8.83605390791274E+0000 -8.83021926654089E+0000 -8.82437860830032E+0000 --8.81853192978372E+0000 -8.81267922758400E+0000 -8.80682049829159E+0000 -8.80095573849690E+0000 -8.79508494478796E+0000 --8.78920811375303E+0000 -8.78332524197799E+0000 -8.77743632604779E+0000 -8.77154136254683E+0000 -8.76564034805756E+0000 --8.75973327916176E+0000 -8.75382015243974E+0000 -8.74790096447077E+0000 -8.74197571183242E+0000 -8.73604439110272E+0000 --8.73010699885606E+0000 -8.72416353166795E+0000 -8.71821398611064E+0000 -8.71225835875771E+0000 -8.70629664617900E+0000 --8.70032884494469E+0000 -8.69435495162327E+0000 -8.68837496278218E+0000 -8.68238887498785E+0000 -8.67639668480524E+0000 --8.67039838879805E+0000 -8.66439398352907E+0000 -8.65838346555995E+0000 -8.65236683145099E+0000 -8.64634407776111E+0000 --8.64031520104857E+0000 -8.63428019787034E+0000 -8.62823906478195E+0000 -8.62219179833664E+0000 -8.61613839508948E+0000 --8.61007885159177E+0000 -8.60401316439447E+0000 -8.59794133004687E+0000 -8.59186334509809E+0000 -8.58577920609525E+0000 --8.57968890958455E+0000 -8.57359245211092E+0000 -8.56748983021828E+0000 -8.56138104044908E+0000 -8.55526607934496E+0000 --8.54914494344609E+0000 -8.54301762929197E+0000 -8.53688413341956E+0000 -8.53074445236643E+0000 -8.52459858266786E+0000 --8.51844652085833E+0000 -8.51228826347096E+0000 -8.50612380703751E+0000 -8.49995314808950E+0000 -8.49377628315551E+0000 --8.48759320876525E+0000 -8.48140392144501E+0000 -8.47520841772166E+0000 -8.46900669411980E+0000 -8.46279874716276E+0000 --8.45658457337356E+0000 -8.45036416927394E+0000 -8.44413753138349E+0000 -8.43790465622124E+0000 -8.43166554030529E+0000 --8.42542018015240E+0000 -8.41916857227795E+0000 -8.41291071319620E+0000 -8.40664659942058E+0000 -8.40037622746240E+0000 --8.39409959383306E+0000 -8.38781669504158E+0000 -8.38152752759720E+0000 -8.37523208800621E+0000 -8.36893037277537E+0000 --8.36262237840947E+0000 -8.35630810141174E+0000 -8.34998753828495E+0000 -8.34366068553095E+0000 -8.33732753964841E+0000 --8.33098809713783E+0000 -8.32464235449675E+0000 -8.31829030822132E+0000 -8.31193195480728E+0000 -8.30556729074829E+0000 --8.29919631253824E+0000 -8.29281901666877E+0000 -8.28643539963059E+0000 -8.28004545791305E+0000 -8.27364918800458E+0000 --8.26724658639273E+0000 -8.26083764956252E+0000 -8.25442237399966E+0000 -8.24800075618737E+0000 -8.24157279260885E+0000 --8.23513847974414E+0000 -8.22869781407439E+0000 -8.22225079207806E+0000 -8.21579741023288E+0000 -8.20933766501594E+0000 --8.20287155290134E+0000 -8.19639907036458E+0000 -8.18992021387839E+0000 -8.18343497991418E+0000 -8.17694336494333E+0000 --8.17044536543449E+0000 -8.16394097785633E+0000 -8.15743019867591E+0000 -8.15091302435940E+0000 -8.14438945137090E+0000 --8.13785947617521E+0000 -8.13132309523371E+0000 -8.12478030500802E+0000 -8.11823110195860E+0000 -8.11167548254321E+0000 --8.10511344322026E+0000 -8.09854498044638E+0000 -8.09197009067657E+0000 -8.08538877036540E+0000 -8.07880101596538E+0000 --8.07220682392835E+0000 -8.06560619070547E+0000 -8.05899911274537E+0000 -8.05238558649648E+0000 -8.04576560840678E+0000 --8.03913917492105E+0000 -8.03250628248429E+0000 -8.02586692754039E+0000 -8.01922110653163E+0000 -8.01256881589870E+0000 --8.00591005208207E+0000 -7.99924481152107E+0000 -7.99257309065183E+0000 -7.98589488591233E+0000 -7.97921019373712E+0000 --7.97251901056006E+0000 -7.96582133281481E+0000 -7.95911715693296E+0000 -7.95240647934452E+0000 -7.94568929647926E+0000 --7.93896560476560E+0000 -7.93223540063036E+0000 -7.92549868049900E+0000 -7.91875544079676E+0000 -7.91200567794681E+0000 --7.90524938837189E+0000 -7.89848656849267E+0000 -7.89171721472917E+0000 -7.88494132350070E+0000 -7.87815889122407E+0000 --7.87136991431635E+0000 -7.86457438919228E+0000 -7.85777231226621E+0000 -7.85096367995106E+0000 -7.84414848865822E+0000 --7.83732673479858E+0000 -7.83049841478169E+0000 -7.82366352501481E+0000 -7.81682206190544E+0000 -7.80997402186017E+0000 --7.80311940128217E+0000 -7.79625819657645E+0000 -7.78939040414343E+0000 -7.78251602038608E+0000 -7.77563504170325E+0000 --7.76874746449380E+0000 -7.76185328515567E+0000 -7.75495250008453E+0000 -7.74804510567697E+0000 -7.74113109832524E+0000 --7.73421047442343E+0000 -7.72728323036290E+0000 -7.72034936253385E+0000 -7.71340886732560E+0000 -7.70646174112653E+0000 --7.69950798032369E+0000 -7.69254758130251E+0000 -7.68558054044797E+0000 -7.67860685414325E+0000 -7.67162651877084E+0000 --7.66463953071161E+0000 -7.65764588634556E+0000 -7.65064558205017E+0000 -7.64363861420543E+0000 -7.63662497918540E+0000 --7.62960467336688E+0000 -7.62257769312237E+0000 -7.61554403482569E+0000 -7.60850369484888E+0000 -7.60145666956123E+0000 --7.59440295533250E+0000 -7.58734254853130E+0000 -7.58027544552351E+0000 -7.57320164267594E+0000 -7.56612113635219E+0000 --7.55903392291657E+0000 -7.55193999873040E+0000 -7.54483936015527E+0000 -7.53773200355113E+0000 -7.53061792527637E+0000 --7.52349712168848E+0000 -7.51636958914355E+0000 -7.50923532399725E+0000 -7.50209432260317E+0000 -7.49494658131425E+0000 --7.48779209648228E+0000 -7.48063086445677E+0000 -7.47346288158860E+0000 -7.46628814422434E+0000 -7.45910664871190E+0000 --7.45191839139579E+0000 -7.44472336862214E+0000 -7.43752157673225E+0000 -7.43031301207020E+0000 -7.42309767097572E+0000 --7.41587554979014E+0000 -7.40864664485048E+0000 -7.40141095249487E+0000 -7.39416846906011E+0000 -7.38691919088023E+0000 --7.37966311428977E+0000 -7.37240023562163E+0000 -7.36513055120736E+0000 -7.35785405737670E+0000 -7.35057075045938E+0000 --7.34328062678378E+0000 -7.33598368267667E+0000 -7.32867991446301E+0000 -7.32136931846730E+0000 -7.31405189101451E+0000 --7.30672762842437E+0000 -7.29939652701955E+0000 -7.29205858311957E+0000 -7.28471379304256E+0000 -7.27736215310642E+0000 --7.27000365962749E+0000 -7.26263830892026E+0000 -7.25526609729900E+0000 -7.24788702107662E+0000 -7.24050107656399E+0000 --7.23310826007287E+0000 -7.22570856791071E+0000 -7.21830199638680E+0000 -7.21088854180766E+0000 -7.20346820047848E+0000 --7.19604096870421E+0000 -7.18860684278820E+0000 -7.18116581903246E+0000 -7.17371789373715E+0000 -7.16626306320404E+0000 --7.15880132372922E+0000 -7.15133267161218E+0000 -7.14385710314809E+0000 -7.13637461463213E+0000 -7.12888520235879E+0000 --7.12138886261982E+0000 -7.11388559170700E+0000 -7.10637538591209E+0000 -7.09885824152207E+0000 -7.09133415482643E+0000 --7.08380312211102E+0000 -7.07626513966170E+0000 -7.06872020376409E+0000 -7.06116831070040E+0000 -7.05360945675329E+0000 --7.04604363820249E+0000 -7.03847085132861E+0000 -7.03089109241091E+0000 -7.02330435772569E+0000 -7.01571064354948E+0000 --7.00810994615722E+0000 -7.00050226182316E+0000 -6.99288758681996E+0000 -6.98526591741916E+0000 -6.97763724989045E+0000 --6.97000158050400E+0000 -6.96235890552657E+0000 -6.95470922122558E+0000 -6.94705252386711E+0000 -6.93938880971518E+0000 --6.93171807503268E+0000 -6.92404031608248E+0000 -6.91635552912498E+0000 -6.90866371041989E+0000 -6.90096485622598E+0000 --6.89325896280070E+0000 -6.88554602640033E+0000 -6.87782604327981E+0000 -6.87009900969178E+0000 -6.86236492189096E+0000 --6.85462377612748E+0000 -6.84687556865197E+0000 -6.83912029571388E+0000 -6.83135795356111E+0000 -6.82358853843994E+0000 --6.81581204659665E+0000 -6.80802847427572E+0000 -6.80023781771979E+0000 -6.79244007317061E+0000 -6.78463523686992E+0000 --6.77682330505763E+0000 -6.76900427397072E+0000 -6.76117813984911E+0000 -6.75334489892680E+0000 -6.74550454743940E+0000 --6.73765708162205E+0000 -6.72980249770580E+0000 -6.72194079192172E+0000 -6.71407196050200E+0000 -6.70619599967426E+0000 --6.69831290566731E+0000 -6.69042267470695E+0000 -6.68252530302038E+0000 -6.67462078683070E+0000 -6.66670912236145E+0000 --6.65879030583415E+0000 -6.65086433347119E+0000 -6.64293120149136E+0000 -6.63499090611253E+0000 -6.62704344355370E+0000 --6.61908881002955E+0000 -6.61112700175613E+0000 -6.60315801494630E+0000 -6.59518184581339E+0000 -6.58719849056888E+0000 --6.57920794542315E+0000 -6.57121020658406E+0000 -6.56320527026173E+0000 -6.55519313266109E+0000 -6.54717378998816E+0000 --6.53914723844832E+0000 -6.53111347424397E+0000 -6.52307249357636E+0000 -6.51502429264838E+0000 -6.50696886765832E+0000 --6.49890621480495E+0000 -6.49083633028613E+0000 -6.48275921029722E+0000 -6.47467485103334E+0000 -6.46658324868918E+0000 --6.45848439945689E+0000 -6.45037829952707E+0000 -6.44226494509144E+0000 -6.43414433233852E+0000 -6.42601645745640E+0000 --6.41788131663134E+0000 -6.40973890604914E+0000 -6.40158922189448E+0000 -6.39343226035089E+0000 -6.38526801759895E+0000 --6.37709648982172E+0000 -6.36891767319662E+0000 -6.36073156390421E+0000 -6.35253815812075E+0000 -6.34433745202182E+0000 --6.33612944178412E+0000 -6.32791412358097E+0000 -6.31969149358338E+0000 -6.31146154796488E+0000 -6.30322428289423E+0000 --6.29497969454133E+0000 -6.28672777907445E+0000 -6.27846853265964E+0000 -6.27020195146315E+0000 -6.26192803164872E+0000 --6.25364676938011E+0000 -6.24535816081857E+0000 -6.23706220212603E+0000 -6.22875888946191E+0000 -6.22044821898385E+0000 --6.21213018685035E+0000 -6.20380478921743E+0000 -6.19547202223953E+0000 -6.18713188207039E+0000 -6.17878436486308E+0000 --6.17042946676952E+0000 -6.16206718393914E+0000 -6.15369751252160E+0000 -6.14532044866382E+0000 -6.13693598851432E+0000 --6.12854412821753E+0000 -6.12014486391740E+0000 -6.11173819175906E+0000 -6.10332410788192E+0000 -6.09490260842927E+0000 --6.08647368953984E+0000 -6.07803734735171E+0000 -6.06959357800315E+0000 -6.06114237762927E+0000 -6.05268374236539E+0000 --6.04421766834685E+0000 -6.03574415170397E+0000 -6.02726318856958E+0000 -6.01877477507423E+0000 -6.01027890734622E+0000 --6.00177558151381E+0000 -5.99326479370393E+0000 -5.98474654004144E+0000 -5.97622081665145E+0000 -5.96768761965745E+0000 --5.95914694518137E+0000 -5.95059878934308E+0000 -5.94204314826311E+0000 -5.93348001805998E+0000 -5.92490939485174E+0000 --5.91633127475325E+0000 -5.90774565388028E+0000 -5.89915252834658E+0000 -5.89055189426404E+0000 -5.88194374774571E+0000 --5.87332808490100E+0000 -5.86470490183842E+0000 -5.85607419466714E+0000 -5.84743595949317E+0000 -5.83879019242181E+0000 --5.83013688955816E+0000 -5.82147604700640E+0000 -5.81280766086616E+0000 -5.80413172723956E+0000 -5.79544824222694E+0000 --5.78675720192587E+0000 -5.77805860243461E+0000 -5.76935243984894E+0000 -5.76063871026395E+0000 -5.75191740977266E+0000 --5.74318853446880E+0000 -5.73445208044382E+0000 -5.72570804378756E+0000 -5.71695642058876E+0000 -5.70819720693680E+0000 --5.69943039891723E+0000 -5.69065599261558E+0000 -5.68187398411737E+0000 -5.67308436950520E+0000 -5.66428714486074E+0000 --5.65548230626564E+0000 -5.64666984979976E+0000 -5.63784977154069E+0000 -5.62902206756667E+0000 -5.62018673395278E+0000 --5.61134376677524E+0000 -5.60249316210820E+0000 -5.59363491602267E+0000 -5.58476902459142E+0000 -5.57589548388501E+0000 --5.56701428997144E+0000 -5.55812543891943E+0000 -5.54922892679588E+0000 -5.54032474966561E+0000 -5.53141290359463E+0000 --5.52249338464480E+0000 -5.51356618887871E+0000 -5.50463131235688E+0000 -5.49568875113937E+0000 -5.48673850128557E+0000 --5.47778055885101E+0000 -5.46881491989348E+0000 -5.45984158046758E+0000 -5.45086053662703E+0000 -5.44187178442485E+0000 --5.43287531991245E+0000 -5.42387113913946E+0000 -5.41485923815617E+0000 -5.40583961300945E+0000 -5.39681225974755E+0000 --5.38777717441440E+0000 -5.37873435305596E+0000 -5.36968379171435E+0000 -5.36062548643190E+0000 -5.35155943325071E+0000 --5.34248562820972E+0000 -5.33340406734669E+0000 -5.32431474669966E+0000 -5.31521766230685E+0000 -5.30611281019992E+0000 --5.29700018641506E+0000 -5.28787978698347E+0000 -5.27875160793769E+0000 -5.26961564530870E+0000 -5.26047189512428E+0000 --5.25132035341289E+0000 -5.24216101620163E+0000 -5.23299387951533E+0000 -5.22381893938041E+0000 -5.21463619181804E+0000 --5.20544563285193E+0000 -5.19624725850190E+0000 -5.18704106478799E+0000 -5.17782704772935E+0000 -5.16860520334330E+0000 --5.15937552764490E+0000 -5.15013801665100E+0000 -5.14089266637438E+0000 -5.13163947282806E+0000 -5.12237843202365E+0000 --5.11310953997190E+0000 -5.10383279268126E+0000 -5.09454818616018E+0000 -5.08525571641530E+0000 -5.07595537945213E+0000 --5.06664717127569E+0000 -5.05733108788991E+0000 -5.04800712529504E+0000 -5.03867527949410E+0000 -5.02933554648553E+0000 --5.01998792226800E+0000 -5.01063240284043E+0000 -5.00126898419740E+0000 -4.99189766233394E+0000 -4.98251843324556E+0000 --4.97313129292365E+0000 -4.96373623736099E+0000 -4.95433326254670E+0000 -4.94492236447013E+0000 -4.93550353912087E+0000 --4.92607678248396E+0000 -4.91664209054602E+0000 -4.90719945929163E+0000 -4.89774888470356E+0000 -4.88829036276456E+0000 --4.87882388945536E+0000 -4.86934946075553E+0000 -4.85986707264419E+0000 -4.85037672109866E+0000 -4.84087840209554E+0000 --4.83137211160988E+0000 -4.82185784561534E+0000 -4.81233560008445E+0000 -4.80280537098974E+0000 -4.79326715430034E+0000 --4.78372094598649E+0000 -4.77416674201640E+0000 -4.76460453835625E+0000 -4.75503433097288E+0000 -4.74545611582835E+0000 --4.73586988888883E+0000 -4.72627564611594E+0000 -4.71667338346924E+0000 -4.70706309690968E+0000 -4.69744478239659E+0000 --4.68781843588658E+0000 -4.67818405333583E+0000 -4.66854163069979E+0000 -4.65889116393237E+0000 -4.64923264898630E+0000 --4.63956608181411E+0000 -4.62989145836514E+0000 -4.62020877458872E+0000 -4.61051802643419E+0000 -4.60081920984658E+0000 --4.59111232077316E+0000 -4.58139735515806E+0000 -4.57167430894424E+0000 -4.56194317807490E+0000 -4.55220395849074E+0000 --4.54245664613086E+0000 -4.53270123693505E+0000 -4.52293772683993E+0000 -4.51316611178231E+0000 -4.50338638769745E+0000 --4.49359855051966E+0000 -4.48380259618102E+0000 -4.47399852061335E+0000 -4.46418631974848E+0000 -4.45436598951324E+0000 --4.44453752583786E+0000 -4.43470092464850E+0000 -4.42485618187106E+0000 -4.41500329342989E+0000 -4.40514225524907E+0000 --4.39527306325044E+0000 -4.38539571335468E+0000 -4.37551020148294E+0000 -4.36561652355249E+0000 -4.35571467548198E+0000 --4.34580465318754E+0000 -4.33588645258419E+0000 -4.32596006958602E+0000 -4.31602550010598E+0000 -4.30608274005613E+0000 --4.29613178534623E+0000 -4.28617263188539E+0000 -4.27620527558292E+0000 -4.26622971234542E+0000 -4.25624593807925E+0000 --4.24625394868735E+0000 -4.23625374007543E+0000 -4.22624530814323E+0000 -4.21622864879419E+0000 -4.20620375792760E+0000 --4.19617063144165E+0000 -4.18612926523383E+0000 -4.17607965520142E+0000 -4.16602179723986E+0000 -4.15595568724166E+0000 --4.14588132110134E+0000 -4.13579869470982E+0000 -4.12570780395754E+0000 -4.11560864473495E+0000 -4.10550121292931E+0000 --4.09538550442812E+0000 -4.08526151511728E+0000 -4.07512924088041E+0000 -4.06498867760183E+0000 -4.05483982116402E+0000 --4.04468266744834E+0000 -4.03451721233409E+0000 -4.02434345170036E+0000 -4.01416138142531E+0000 -4.00397099738484E+0000 --3.99377229545439E+0000 -3.98356527150827E+0000 -3.97334992141873E+0000 -3.96312624105826E+0000 -3.95289422629753E+0000 --3.94265387300538E+0000 -3.93240517705090E+0000 -3.92214813430019E+0000 -3.91188274061983E+0000 -3.90160899187413E+0000 --3.89132688392669E+0000 -3.88103641264092E+0000 -3.87073757387611E+0000 -3.86043036349361E+0000 -3.85011477735225E+0000 --3.83979081130883E+0000 -3.82945846122152E+0000 -3.81911772294393E+0000 -3.80876859233149E+0000 -3.79841106523622E+0000 --3.78804513751015E+0000 -3.77767080500416E+0000 -3.76728806356823E+0000 -3.75689690904983E+0000 -3.74649733729620E+0000 --3.73608934415370E+0000 -3.72567292546614E+0000 -3.71524807707942E+0000 -3.70481479483260E+0000 -3.69437307457019E+0000 --3.68392291212945E+0000 -3.67346430335101E+0000 -3.66299724407304E+0000 -3.65252173013027E+0000 -3.64203775735928E+0000 --3.63154532159433E+0000 -3.62104441866745E+0000 -3.61053504441179E+0000 -3.60001719465708E+0000 -3.58949086523421E+0000 --3.57895605196950E+0000 -3.56841275069223E+0000 -3.55786095722624E+0000 -3.54730066739808E+0000 -3.53673187703043E+0000 --3.52615458194578E+0000 -3.51556877796588E+0000 -3.50497446091094E+0000 -3.49437162659956E+0000 -3.48376027084896E+0000 --3.47314038947729E+0000 -3.46251197829906E+0000 -3.45187503312741E+0000 -3.44122954977774E+0000 -3.43057552406094E+0000 --3.41991295178673E+0000 -3.40924182876506E+0000 -3.39856215080545E+0000 -3.38787391371443E+0000 -3.37717711329788E+0000 --3.36647174536120E+0000 -3.35575780570662E+0000 -3.34503529013887E+0000 -3.33430419445767E+0000 -3.32356451446321E+0000 --3.31281624595590E+0000 -3.30205938473182E+0000 -3.29129392658865E+0000 -3.28051986732157E+0000 -3.26973720272440E+0000 --3.25894592859186E+0000 -3.24814604071457E+0000 -3.23733753488273E+0000 -3.22652040688718E+0000 -3.21569465251628E+0000 --3.20486026755702E+0000 -3.19401724779482E+0000 -3.18316558901597E+0000 -3.17230528700270E+0000 -3.16143633753882E+0000 --3.15055873640517E+0000 -3.13967247938194E+0000 -3.12877756224793E+0000 -3.11787398078127E+0000 -3.10696173075985E+0000 --3.09604080795725E+0000 -3.08511120814910E+0000 -3.07417292710761E+0000 -3.06322596060545E+0000 -3.05227030441370E+0000 --3.04130595430115E+0000 -3.03033290603662E+0000 -3.01935115538799E+0000 -3.00836069812090E+0000 -2.99736153000003E+0000 --2.98635364678967E+0000 -2.97533704425246E+0000 -2.96431171814947E+0000 -2.95327766424157E+0000 -2.94223487828754E+0000 --2.93118335604436E+0000 -2.92012309326992E+0000 -2.90905408571939E+0000 -2.89797632914861E+0000 -2.88688981930818E+0000 --2.87579455195146E+0000 -2.86469052282996E+0000 -2.85357772769316E+0000 -2.84245616228873E+0000 -2.83132582236408E+0000 --2.82018670366642E+0000 -2.80903880193978E+0000 -2.79788211292885E+0000 -2.78671663237537E+0000 -2.77554235602247E+0000 --2.76435927960847E+0000 -2.75316739887353E+0000 -2.74196670955553E+0000 -2.73075720739189E+0000 -2.71953888811595E+0000 --2.70831174746536E+0000 -2.69707578117186E+0000 -2.68583098496720E+0000 -2.67457735458220E+0000 -2.66331488574770E+0000 --2.65204357419179E+0000 -2.64076341564169E+0000 -2.62947440582366E+0000 -2.61817654046217E+0000 -2.60686981528352E+0000 --2.59555422600761E+0000 -2.58422976835755E+0000 -2.57289643805325E+0000 -2.56155423081373E+0000 -2.55020314235799E+0000 --2.53884316840231E+0000 -2.52747430466115E+0000 -2.51609654685035E+0000 -2.50470989068390E+0000 -2.49331433187172E+0000 --2.48190986612735E+0000 -2.47049648915936E+0000 -2.45907419667537E+0000 -2.44764298438577E+0000 -2.43620284799499E+0000 --2.42475378320705E+0000 -2.41329578572822E+0000 -2.40182885125841E+0000 -2.39035297550254E+0000 -2.37886815416005E+0000 --2.36737438292903E+0000 -2.35587165750758E+0000 -2.34435997359378E+0000 -2.33283932688255E+0000 -2.32130971306970E+0000 --2.30977112784740E+0000 -2.29822356690784E+0000 -2.28666702594319E+0000 -2.27510150064199E+0000 -2.26352698669280E+0000 --2.25194347978459E+0000 -2.24035097560318E+0000 -2.22874946983347E+0000 -2.21713895816038E+0000 -2.20551943626515E+0000 --2.19389089983088E+0000 -2.18225334453791E+0000 -2.17060676606343E+0000 -2.15895116008869E+0000 -2.14728652228951E+0000 --2.13561284834168E+0000 -2.12393013391829E+0000 -2.11223837469515E+0000 -2.10053756634306E+0000 -2.08882770453465E+0000 --2.07710878493799E+0000 -2.06538080322298E+0000 -2.05364375505769E+0000 -2.04189763610702E+0000 -2.03014244203723E+0000 --2.01837816851321E+0000 -2.00660481119621E+0000 -1.99482236574886E+0000 -1.98303082783013E+0000 -1.97123019310266E+0000 --1.95942045722177E+0000 -1.94760161584554E+0000 -1.93577366463069E+0000 -1.92393659923073E+0000 -1.91209041529964E+0000 --1.90023510848960E+0000 -1.88837067445183E+0000 -1.87649710883670E+0000 -1.86461440729227E+0000 -1.85272256546659E+0000 --1.84082157900730E+0000 -1.82891144355744E+0000 -1.81699215476328E+0000 -1.80506370826606E+0000 -1.79312609971021E+0000 --1.78117932473242E+0000 -1.76922337897577E+0000 -1.75725825807649E+0000 -1.74528395767265E+0000 -1.73330047339869E+0000 --1.72130780089219E+0000 -1.70930593578396E+0000 -1.69729487370796E+0000 -1.68527461029498E+0000 -1.67324514117581E+0000 --1.66120646197760E+0000 -1.64915856832977E+0000 -1.63710145585765E+0000 -1.62503512018748E+0000 -1.61295955694413E+0000 --1.60087476174886E+0000 -1.58878073022424E+0000 -1.57667745799154E+0000 -1.56456494067061E+0000 -1.55244317387860E+0000 --1.54031215323312E+0000 -1.52817187435176E+0000 -1.51602233284575E+0000 -1.50386352433179E+0000 -1.49169544442202E+0000 --1.47951808872585E+0000 -1.46733145285634E+0000 -1.45513553241926E+0000 -1.44293032302539E+0000 -1.43071582027869E+0000 --1.41849201978721E+0000 -1.40625891715354E+0000 -1.39401650798072E+0000 -1.38176478787273E+0000 -1.36950375242759E+0000 --1.35723339724609E+0000 -1.34495371792673E+0000 -1.33266471006755E+0000 -1.32036636926296E+0000 -1.30805869110873E+0000 --1.29574167119881E+0000 -1.28341530512535E+0000 -1.27107958848092E+0000 -1.25873451685311E+0000 -1.24638008583315E+0000 --1.23401629100863E+0000 -1.22164312796622E+0000 -1.20926059229123E+0000 -1.19686867956761E+0000 -1.18446738537887E+0000 --1.17205670530620E+0000 -1.15963663493221E+0000 -1.14720716983720E+0000 -1.13476830559557E+0000 -1.12232003778809E+0000 --1.10986236199051E+0000 -1.09739527377633E+0000 -1.08491876872131E+0000 -1.07243284239712E+0000 -1.05993749037589E+0000 --1.04743270822564E+0000 -1.03491849151851E+0000 -1.02239483582025E+0000 -1.00986173669935E+0000 -9.97319189719747E-0001 --9.84767190446291E-0001 -9.72205734442014E-0001 -9.59634817270853E-0001 -9.47054434492202E-0001 -9.34464581665452E-0001 --9.21865254350450E-0001 -9.09256448103406E-0001 -8.96638158481892E-0001 -8.84010381039388E-0001 -8.71373111329831E-0001 --8.58726344907609E-0001 -8.46070077323020E-0001 -8.33404304127271E-0001 -8.20729020867475E-0001 -8.08044223093020E-0001 --7.95349906352840E-0001 -7.82646066188590E-0001 -7.69932698147841E-0001 -7.57209797773612E-0001 -7.44477360605742E-0001 --7.31735382187708E-0001 -7.18983858058891E-0001 -7.06222783755948E-0001 -6.93452154819624E-0001 -6.80671966783393E-0001 --6.67882215183454E-0001 -6.55082895554187E-0001 -6.42274003427246E-0001 -6.29455534335648E-0001 -6.16627483809225E-0001 --6.03789847378266E-0001 -5.90942620567603E-0001 -5.78085798908432E-0001 -5.65219377922858E-0001 -5.52343353138440E-0001 --5.39457720076371E-0001 -5.26562474259663E-0001 -5.13657611209055E-0001 -5.00743126445286E-0001 -4.87819015487730E-0001 --4.74885273851214E-0001 -4.61941897053748E-0001 -4.48988880611978E-0001 -4.36026220037547E-0001 -4.23053910842555E-0001 --4.10071948543191E-0001 -3.97080328646098E-0001 -3.84079046661554E-0001 -3.71068098098476E-0001 -3.58047478462595E-0001 --3.45017183261461E-0001 -3.31977207997170E-0001 -3.18927548176362E-0001 -3.05868199297947E-0001 -2.92799156865840E-0001 --2.79720416378950E-0001 -2.66631973335734E-0001 -2.53533823236467E-0001 -2.40425961572782E-0001 -2.27308383843592E-0001 --2.14181085542350E-0001 -2.01044062160690E-0001 -1.87897309192067E-0001 -1.74740822126296E-0001 -1.61574596453647E-0001 --1.48398627661209E-0001 -1.35212911236067E-0001 -1.22017442664400E-0001 -1.08812217431022E-0001 -9.55972310207471E-0002 --8.23724789142943E-0002 -6.91379565928401E-0002 -5.58936595366504E-0002 -4.26395832259914E-0002 -2.93757231388554E-0002 --1.61020747482326E-0002 -2.81863353302469E-0003 1.04746050360518E-0002 2.37776454810046E-0002 3.70904923333910E-0002 - 5.04131501229494E-0002 6.37456233785088E-0002 7.70879166325358E-0002 9.04400344161331E-0002 1.03801981265405E-0001 - 1.17173761715548E-0001 1.30555380302212E-0001 1.43946841562411E-0001 1.57348150036341E-0001 1.70759310261928E-0001 - 1.84180326781188E-0001 1.97611204137047E-0001 2.11051946871976E-0001 2.24502559529355E-0001 2.37963046658024E-0001 - 2.51433412802726E-0001 2.64913662510935E-0001 2.78403800335127E-0001 2.91903830820957E-0001 3.05413758523628E-0001 - 3.18933587993797E-0001 3.32463323785760E-0001 3.46002970456539E-0001 3.59552532559974E-0001 3.73112014656272E-0001 - 3.86681421301091E-0001 4.00260757054639E-0001 4.13850026479395E-0001 4.27449234136475E-0001 4.41058384589724E-0001 - 4.54677482402985E-0001 4.68306532142378E-0001 4.81945538374475E-0001 4.95594505666759E-0001 5.09253438588075E-0001 - 5.22922341711819E-0001 5.36601219605927E-0001 5.50290076843339E-0001 5.63988918000177E-0001 5.77697747649381E-0001 - 5.91416570369347E-0001 6.05145390733924E-0001 6.18884213324236E-0001 6.32633042720499E-0001 6.46391883501110E-0001 - 6.60160740249921E-0001 6.73939617549877E-0001 6.87728519985740E-0001 7.01527452140908E-0001 7.15336418605148E-0001 - 7.29155423964130E-0001 7.42984472806711E-0001 7.56823569724020E-0001 7.70672719308550E-0001 7.84531926151885E-0001 - 7.98401194846974E-0001 8.12280529989494E-0001 8.26169936175120E-0001 8.40069418001349E-0001 8.53978980067041E-0001 - 8.67898626972419E-0001 8.81828363315435E-0001 8.95768193701315E-0001 9.09718122731192E-0001 9.23678155009384E-0001 - 9.37648295142026E-0001 9.51628547735709E-0001 9.65618917396569E-0001 9.79619408737562E-0001 9.93630026365281E-0001 - 1.00765077489223E+0000 1.02168165893090E+0000 1.03572268309335E+0000 1.04977385199663E+0000 1.06383517025597E+0000 - 1.07790664248841E+0000 1.09198827331193E+0000 1.10608006734765E+0000 1.12018202921354E+0000 1.13429416353483E+0000 - 1.14841647493176E+0000 1.16254896802820E+0000 1.17669164745212E+0000 1.19084451782828E+0000 1.20500758378603E+0000 - 1.21918084995059E+0000 1.23336432095630E+0000 1.24755800143157E+0000 1.26176189600983E+0000 1.27597600932449E+0000 - 1.29020034601126E+0000 1.30443491070309E+0000 1.31867970804024E+0000 1.33293474265975E+0000 1.34720001920186E+0000 - 1.36147554230547E+0000 1.37576131661308E+0000 1.39005734676721E+0000 1.40436363741310E+0000 1.41868019319554E+0000 - 1.43300701876069E+0000 1.44734411875561E+0000 1.46169149782963E+0000 1.47604916063437E+0000 1.49041711181872E+0000 - 1.50479535603563E+0000 1.51918389793809E+0000 1.53358274218135E+0000 1.54799189342066E+0000 1.56241135631535E+0000 - 1.57684113551977E+0000 1.59128123569553E+0000 1.60573166150289E+0000 1.62019241760436E+0000 1.63466350866020E+0000 - 1.64914493933657E+0000 1.66363671429735E+0000 1.67813883821100E+0000 1.69265131574275E+0000 1.70717415156105E+0000 - 1.72170735033797E+0000 1.73625091674421E+0000 1.75080485545004E+0000 1.76536917112981E+0000 1.77994386845830E+0000 - 1.79452895211125E+0000 1.80912442676527E+0000 1.82373029709925E+0000 1.83834656779118E+0000 1.85297324352132E+0000 - 1.86761032897221E+0000 1.88225782882591E+0000 1.89691574776816E+0000 1.91158409048194E+0000 1.92626286165341E+0000 - 1.94095206597103E+0000 1.95565170812324E+0000 1.97036179279939E+0000 1.98508232469067E+0000 1.99981330849005E+0000 - 2.01455474888826E+0000 2.02930665058238E+0000 2.04406901826724E+0000 2.05884185663763E+0000 2.07362517039473E+0000 - 2.08841896423519E+0000 2.10322324286108E+0000 2.11803801097267E+0000 2.13286327327341E+0000 2.14769903446722E+0000 - 2.16254529925709E+0000 2.17740207235238E+0000 2.19226935845654E+0000 2.20714716228167E+0000 2.22203548853622E+0000 - 2.23693434193001E+0000 2.25184372717604E+0000 2.26676364898685E+0000 2.28169411207818E+0000 2.29663512116394E+0000 - 2.31158668096032E+0000 2.32654879618667E+0000 2.34152147156237E+0000 2.35650471180543E+0000 2.37149852164066E+0000 - 2.38650290578653E+0000 2.40151786896968E+0000 2.41654341591402E+0000 2.43157955134620E+0000 2.44662627999242E+0000 - 2.46168360658066E+0000 2.47675153584169E+0000 2.49183007250713E+0000 2.50691922130636E+0000 2.52201898697467E+0000 - 2.53712937424416E+0000 2.55225038785238E+0000 2.56738203253508E+0000 2.58252431302844E+0000 2.59767723407413E+0000 - 2.61284080041059E+0000 2.62801501678041E+0000 2.64319988792340E+0000 2.65839541858531E+0000 2.67360161351144E+0000 - 2.68881847744615E+0000 2.70404601513701E+0000 2.71928423133249E+0000 2.73453313078153E+0000 2.74979271823531E+0000 - 2.76506299844596E+0000 2.78034397616511E+0000 2.79563565614944E+0000 2.81093804315151E+0000 2.82625114192797E+0000 - 2.84157495723912E+0000 2.85690949384161E+0000 2.87225475649575E+0000 2.88761074996228E+0000 2.90297747900422E+0000 - 2.91835494838460E+0000 2.93374316287009E+0000 2.94914212722324E+0000 2.96455184621300E+0000 2.97997232460693E+0000 - 2.99540356717580E+0000 3.01084557868853E+0000 3.02629836391770E+0000 3.04176192763452E+0000 3.05723627461521E+0000 - 3.07272140963369E+0000 3.08821733746663E+0000 3.10372406289116E+0000 3.11924159068667E+0000 3.13476992563301E+0000 - 3.15030907251230E+0000 3.16585903610439E+0000 3.18141982119278E+0000 3.19699143256457E+0000 3.21257387500418E+0000 - 3.22816715329736E+0000 3.24377127223306E+0000 3.25938623659977E+0000 3.27501205119097E+0000 3.29064872079607E+0000 - 3.30629625020538E+0000 3.32195464421648E+0000 3.33762390762286E+0000 3.35330404522210E+0000 3.36899506180953E+0000 - 3.38469696218499E+0000 3.40040975114971E+0000 3.41613343350127E+0000 3.43186801404363E+0000 3.44761349758210E+0000 - 3.46336988891744E+0000 3.47913719285725E+0000 3.49491541420775E+0000 3.51070455777790E+0000 3.52650462837482E+0000 - 3.54231563081112E+0000 3.55813756989664E+0000 3.57397045044581E+0000 3.58981427727122E+0000 3.60566905518681E+0000 - 3.62153478901018E+0000 3.63741148355848E+0000 3.65329914365020E+0000 3.66919777410430E+0000 3.68510737974202E+0000 - 3.70102796538640E+0000 3.71695953585913E+0000 3.73290209598645E+0000 3.74885565059276E+0000 3.76482020450158E+0000 - 3.78079576254595E+0000 3.79678232955303E+0000 3.81277991035267E+0000 3.82878850977613E+0000 3.84480813265554E+0000 - 3.86083878382578E+0000 3.87688046812127E+0000 3.89293319037733E+0000 3.90899695543249E+0000 3.92507176812342E+0000 - 3.94115763329182E+0000 3.95725455577758E+0000 3.97336254042193E+0000 3.98948159206793E+0000 4.00561171555910E+0000 - 4.02175291574395E+0000 4.03790519746644E+0000 4.05406856557465E+0000 4.07024302491800E+0000 4.08642858034682E+0000 - 4.10262523671145E+0000 4.11883299886358E+0000 4.13505187165993E+0000 4.15128185995218E+0000 4.16752296859840E+0000 - 4.18377520245485E+0000 4.20003856637868E+0000 4.21631306523113E+0000 4.23259870387210E+0000 4.24889548716283E+0000 - 4.26520341996684E+0000 4.28152250714857E+0000 4.29785275357244E+0000 4.31419416410517E+0000 4.33054674361711E+0000 - 4.34691049697085E+0000 4.36328542904312E+0000 4.37967154470016E+0000 4.39606884881732E+0000 4.41247734626722E+0000 - 4.42889704192339E+0000 4.44532794066390E+0000 4.46177004736273E+0000 4.47822336689933E+0000 4.49468790415449E+0000 - 4.51116366400811E+0000 4.52765065134008E+0000 4.54414887103439E+0000 4.56065832797640E+0000 4.57717902705008E+0000 - 4.59371097314170E+0000 4.61025417113888E+0000 4.62680862592924E+0000 4.64337434240497E+0000 4.65995132545640E+0000 - 4.67653957997345E+0000 4.69313911085146E+0000 4.70974992298579E+0000 4.72637202127089E+0000 4.74300541060347E+0000 - 4.75965009588163E+0000 4.77630608200479E+0000 4.79297337387470E+0000 4.80965197639125E+0000 4.82634189445662E+0000 - 4.84304313297662E+0000 4.85975569685525E+0000 4.87647959099922E+0000 4.89321482031573E+0000 4.90996138971286E+0000 - 4.92671930410006E+0000 4.94348856839042E+0000 4.96026918749294E+0000 4.97706116632344E+0000 4.99386450979500E+0000 - 5.01067922282391E+0000 5.02750531032598E+0000 5.04434277722066E+0000 5.06119162842651E+0000 5.07805186886299E+0000 - 5.09492350345135E+0000 5.11180653711517E+0000 5.12870097477844E+0000 5.14560682136516E+0000 5.16252408180299E+0000 - 5.17945276101682E+0000 5.19639286393658E+0000 5.21334439549173E+0000 5.23030736061355E+0000 5.24728176423378E+0000 - 5.26426761128459E+0000 5.28126490670184E+0000 5.29827365541996E+0000 5.31529386237571E+0000 5.33232553250764E+0000 - 5.34936867075248E+0000 5.36642328205471E+0000 5.38348937135061E+0000 5.40056694358600E+0000 5.41765600370354E+0000 - 5.43475655664815E+0000 5.45186860736521E+0000 5.46899216080374E+0000 5.48612722191001E+0000 5.50327379563487E+0000 - 5.52043188692778E+0000 5.53760150074186E+0000 5.55478264202884E+0000 5.57197531574502E+0000 5.58917952684351E+0000 - 5.60639528028150E+0000 5.62362258101803E+0000 5.64086143400937E+0000 5.65811184421818E+0000 5.67537381660441E+0000 - 5.69264735612933E+0000 5.70993246775879E+0000 5.72722915645727E+0000 5.74453742718788E+0000 5.76185728492010E+0000 - 5.77918873462158E+0000 5.79653178126318E+0000 5.81388642981346E+0000 5.83125268524373E+0000 5.84863055252845E+0000 - 5.86602003664120E+0000 5.88342114255693E+0000 5.90083387525328E+0000 5.91825823970657E+0000 5.93569424089446E+0000 - 5.95314188380007E+0000 5.97060117340106E+0000 5.98807211468238E+0000 6.00555471262760E+0000 6.02304897221802E+0000 - 6.04055489844131E+0000 6.05807249628469E+0000 6.07560177073810E+0000 6.09314272678648E+0000 6.11069536942432E+0000 - 6.12825970363974E+0000 6.14583573442860E+0000 6.16342346678357E+0000 6.18102290569914E+0000 6.19863405617298E+0000 - 6.21625692320231E+0000 6.23389151178344E+0000 6.25153782691905E+0000 6.26919587360817E+0000 6.28686565685484E+0000 - 6.30454718166084E+0000 6.32224045303110E+0000 6.33994547597149E+0000 6.35766225548878E+0000 6.37539079658927E+0000 - 6.39313110428475E+0000 6.41088318358607E+0000 6.42864703949999E+0000 6.44642267704376E+0000 6.46421010122867E+0000 - 6.48200931707197E+0000 6.49982032958860E+0000 6.51764314379488E+0000 6.53547776471078E+0000 6.55332419735487E+0000 - 6.57118244674939E+0000 6.58905251791612E+0000 6.60693441587682E+0000 6.62482814565647E+0000 6.64273371228137E+0000 - 6.66065112077786E+0000 6.67858037617225E+0000 6.69652148349542E+0000 6.71447444777732E+0000 6.73243927405019E+0000 - 6.75041596734445E+0000 6.76840453269506E+0000 6.78640497513561E+0000 6.80441729970335E+0000 6.82244151143595E+0000 - 6.84047761537158E+0000 6.85852561654929E+0000 6.87658552000858E+0000 6.89465733079351E+0000 6.91274105394450E+0000 - 6.93083669450880E+0000 6.94894425753182E+0000 6.96706374805626E+0000 6.98519517113391E+0000 7.00333853181201E+0000 - 7.02149383514052E+0000 7.03966108617078E+0000 7.05784028995640E+0000 7.07603145154826E+0000 7.09423457600315E+0000 - 7.11244966837603E+0000 7.13067673372598E+0000 7.14891577710978E+0000 7.16716680358559E+0000 7.18542981821611E+0000 - 7.20370482606222E+0000 7.22199183218618E+0000 7.24029084165431E+0000 7.25860185952843E+0000 7.27692489087667E+0000 - 7.29525994076857E+0000 7.31360701427093E+0000 7.33196611645371E+0000 7.35033725238691E+0000 7.36872042714685E+0000 - 7.38711564580217E+0000 7.40552291342965E+0000 7.42394223510701E+0000 7.44237361590785E+0000 7.46081706091172E+0000 - 7.47927257519859E+0000 7.49774016384754E+0000 7.51621983193991E+0000 7.53471158456068E+0000 7.55321542679303E+0000 - 7.57173136372103E+0000 7.59025940043148E+0000 7.60879954201164E+0000 7.62735179355150E+0000 7.64591616013968E+0000 - 7.66449264686617E+0000 7.68308125882550E+0000 7.70168200110993E+0000 7.72029487881355E+0000 7.73891989703225E+0000 - 7.75755706086329E+0000 7.77620637540394E+0000 7.79486784575374E+0000 7.81354147701313E+0000 7.83222727428347E+0000 - 7.85092524266702E+0000 7.86963538726741E+0000 7.88835771319191E+0000 7.90709222554415E+0000 7.92583892943139E+0000 - 7.94459782996501E+0000 7.96336893225271E+0000 7.98215224140540E+0000 8.00094776253400E+0000 8.01975550075258E+0000 - 8.03857546117661E+0000 8.05740764892198E+0000 8.07625206910325E+0000 8.09510872683950E+0000 8.11397762724800E+0000 - 8.13285877545150E+0000 8.15175217656997E+0000 8.17065783572843E+0000 8.18957575804461E+0000 8.20850594865033E+0000 - 8.22744841266785E+0000 8.24640315522493E+0000 8.26537018145063E+0000 8.28434949647362E+0000 8.30334110542435E+0000 - 8.32234501343464E+0000 8.34136122564041E+0000 8.36038974717212E+0000 8.37943058316750E+0000 8.39848373876248E+0000 - 8.41754921909387E+0000 8.43662702930169E+0000 8.45571717452594E+0000 8.47481965990892E+0000 8.49393449059016E+0000 - 8.51306167171469E+0000 8.53220120842889E+0000 8.55135310587593E+0000 8.57051736920448E+0000 8.58969400356318E+0000 - 8.60888301409977E+0000 8.62808440596609E+0000 8.64729818431351E+0000 8.66652435429614E+0000 8.68576292106536E+0000 - 8.70501388977937E+0000 8.72427726559272E+0000 8.74355305366362E+0000 8.76284125915026E+0000 8.78214188721495E+0000 - 8.80145494301496E+0000 8.82078043171578E+0000 8.84011835847969E+0000 8.85946872847171E+0000 8.87883154685596E+0000 - 8.89820681880110E+0000 8.91759454947396E+0000 8.93699474404593E+0000 8.95640740768522E+0000 8.97583254556594E+0000 - 8.99527016285856E+0000 9.01472026473721E+0000 9.03418285637781E+0000 9.05365794295722E+0000 9.07314552965136E+0000 - 9.09264562164026E+0000 9.11215822410213E+0000 9.13168334221973E+0000 9.15122098117445E+0000 9.17077114615040E+0000 - 9.19033384233080E+0000 9.20990907490068E+0000 9.22949684904961E+0000 9.24909716996171E+0000 9.26871004283021E+0000 - 9.28833547284194E+0000 9.30797346519194E+0000 9.32762402506978E+0000 9.34728715767051E+0000 9.36696286818824E+0000 - 9.38665116181983E+0000 9.40635204376485E+0000 9.42606551921835E+0000 9.44579159338082E+0000 9.46553027145364E+0000 - 9.48528155864096E+0000 9.50504546014145E+0000 9.52482198116195E+0000 9.54461112690660E+0000 9.56441290258681E+0000 - 9.58422731340397E+0000 9.60405436456949E+0000 9.62389406129569E+0000 9.64374640879123E+0000 9.66361141227117E+0000 - 9.68348907694690E+0000 9.70337940803438E+0000 9.72328241074774E+0000 9.74319809030840E+0000 9.76312645193138E+0000 - 9.78306750083539E+0000 9.80302124224454E+0000 9.82298768137844E+0000 9.84296682345939E+0000 9.86295867371336E+0000 - 9.88296323736449E+0000 9.90298051964146E+0000 9.92301052576840E+0000 9.94305326097856E+0000 9.96310873049970E+0000 - 9.98317693956051E+0000 1.00032578933960E+0001 1.00233515972422E+0001 1.00434580563305E+0001 1.00635772758960E+0001 - 1.00837092611791E+0001 1.01038540174140E+0001 1.01240115498449E+0001 1.01441818637076E+0001 1.01643649642455E+0001 - 1.01845608567045E+0001 1.02047695463243E+0001 1.02249910383543E+0001 1.02452253380352E+0001 1.02654724506192E+0001 - 1.02857323813550E+0001 1.03060051354887E+0001 1.03262907182770E+0001 1.03465891349678E+0001 1.03669003908162E+0001 - 1.03872244910753E+0001 1.04075614410048E+0001 1.04279112458571E+0001 1.04482739108907E+0001 1.04686494413654E+0001 - 1.04890378425452E+0001 1.05094391196862E+0001 1.05298532780570E+0001 1.05502803229164E+0001 1.05707202595313E+0001 - 1.05911730931684E+0001 1.06116388290947E+0001 1.06321174725799E+0001 1.06526090288916E+0001 1.06731135033023E+0001 - 1.06936309010825E+0001 1.07141612275099E+0001 1.07347044878533E+0001 1.07552606873896E+0001 1.07758298313992E+0001 - 1.07964119251555E+0001 1.08170069739417E+0001 1.08376149830355E+0001 1.08582359577176E+0001 1.08788699032729E+0001 - 1.08995168249857E+0001 1.09201767281383E+0001 1.09408496180185E+0001 1.09615354999114E+0001 1.09822343791074E+0001 - 1.10029462608981E+0001 1.10236711505695E+0001 1.10444090534183E+0001 1.10651599747343E+0001 1.10859239198125E+0001 - 1.11067008939489E+0001 1.11274909024414E+0001 1.11482939505858E+0001 1.11691100436819E+0001 1.11899391870274E+0001 - 1.12107813859283E+0001 1.12316366456852E+0001 1.12525049716005E+0001 1.12733863689791E+0001 1.12942808431280E+0001 - 1.13151883993532E+0001 1.13361090429662E+0001 1.13570427792719E+0001 1.13779896135838E+0001 1.13989495512132E+0001 - 1.14199225974716E+0001 1.14409087576768E+0001 1.14619080371403E+0001 1.14829204411789E+0001 1.15039459751142E+0001 - 1.15249846442602E+0001 1.15460364539412E+0001 1.15671014094732E+0001 1.15881795161813E+0001 1.16092707793923E+0001 - 1.16303752044268E+0001 1.16514927966118E+0001 1.16726235612713E+0001 1.16937675037388E+0001 1.17149246293420E+0001 - 1.17360949434096E+0001 1.17572784512731E+0001 1.17784751582667E+0001 1.17996850697254E+0001 1.18209081909808E+0001 - 1.18421445273743E+0001 1.18633940842391E+0001 1.18846568669177E+0001 1.19059328807452E+0001 1.19272221310666E+0001 - 1.19485246232197E+0001 1.19698403625543E+0001 1.19911693544108E+0001 1.20125116041326E+0001 1.20338671170729E+0001 - 1.20552358985760E+0001 1.20766179539896E+0001 1.20980132886688E+0001 1.21194219079579E+0001 1.21408438172175E+0001 - 1.21622790217970E+0001 1.21837275270500E+0001 1.22051893383377E+0001 1.22266644610153E+0001 1.22481529004408E+0001 - 1.22696546619718E+0001 1.22911697509716E+0001 1.23126981728037E+0001 1.23342399328275E+0001 1.23557950364120E+0001 - 1.23773634889175E+0001 1.23989452957157E+0001 1.24205404621689E+0001 1.24421489936530E+0001 1.24637708955333E+0001 - 1.24854061731821E+0001 1.25070548319736E+0001 1.25287168772792E+0001 1.25503923144751E+0001 1.25720811489382E+0001 - 1.25937833860425E+0001 1.26154990311697E+0001 1.26372280897003E+0001 1.26589705670094E+0001 1.26807264684839E+0001 - 1.27024957995054E+0001 1.27242785654580E+0001 1.27460747717277E+0001 1.27678844237025E+0001 1.27897075267656E+0001 - 1.28115440863084E+0001 1.28333941077207E+0001 1.28552575963958E+0001 1.28771345577251E+0001 1.28990249971020E+0001 - 1.29209289199188E+0001 1.29428463315744E+0001 1.29647772374628E+0001 1.29867216429884E+0001 1.30086795535426E+0001 - 1.30306509745323E+0001 1.30526359113564E+0001 1.30746343694172E+0001 1.30966463541208E+0001 1.31186718708695E+0001 - 1.31407109250758E+0001 1.31627635221411E+0001 1.31848296674752E+0001 1.32069093664931E+0001 1.32290026245973E+0001 - 1.32511094472065E+0001 1.32732298397322E+0001 1.32953638075887E+0001 1.33175113561928E+0001 1.33396724909607E+0001 - 1.33618472173111E+0001 1.33840355406637E+0001 1.34062374664335E+0001 1.34284530000504E+0001 1.34506821469331E+0001 - 1.34729249125039E+0001 1.34951813021907E+0001 1.35174513214178E+0001 1.35397349756167E+0001 1.35620322702097E+0001 - 1.35843432106321E+0001 1.36066678023125E+0001 1.36290060506826E+0001 1.36513579611755E+0001 1.36737235392265E+0001 - 1.36961027902716E+0001 1.37184957197469E+0001 1.37409023330910E+0001 1.37633226357411E+0001 1.37857566331395E+0001 - 1.38082043307258E+0001 1.38306657339453E+0001 1.38531408482404E+0001 1.38756296790552E+0001 1.38981322318386E+0001 - 1.39206485120339E+0001 1.39431785250926E+0001 1.39657222764617E+0001 1.39882797715945E+0001 1.40108510159443E+0001 - 1.40334360149572E+0001 1.40560347740938E+0001 1.40786472988093E+0001 1.41012735945596E+0001 1.41239136667991E+0001 - 1.41465675209929E+0001 1.41692351625943E+0001 1.41919165970712E+0001 1.42146118298824E+0001 1.42373208664912E+0001 - 1.42600437123637E+0001 1.42827803729642E+0001 1.43055308537632E+0001 1.43282951602259E+0001 1.43510732978229E+0001 - 1.43738652720230E+0001 1.43966710883014E+0001 1.44194907521305E+0001 1.44423242689817E+0001 1.44651716443313E+0001 - 1.44880328836570E+0001 1.45109079924377E+0001 1.45337969761476E+0001 1.45566998402719E+0001 1.45796165902866E+0001 - 1.46025472316796E+0001 1.46254917699307E+0001 1.46484502105249E+0001 1.46714225589476E+0001 1.46944088206873E+0001 - 1.47174090012331E+0001 1.47404231060709E+0001 1.47634511406913E+0001 1.47864931105914E+0001 1.48095490212572E+0001 - 1.48326188781884E+0001 1.48557026868747E+0001 1.48788004528159E+0001 1.49019121815126E+0001 1.49250378784536E+0001 - 1.49481775491494E+0001 1.49713311990963E+0001 1.49944988337965E+0001 1.50176804587490E+0001 1.50408760794671E+0001 - 1.50640857014504E+0001 1.50873093302070E+0001 1.51105469712474E+0001 1.51337986300750E+0001 1.51570643122058E+0001 - 1.51803440231497E+0001 1.52036377684180E+0001 1.52269455535288E+0001 1.52502673839881E+0001 1.52736032653228E+0001 - 1.52969532030419E+0001 1.53203172026678E+0001 1.53436952697220E+0001 1.53670874097197E+0001 1.53904936281887E+0001 - 1.54139139306462E+0001 1.54373483226236E+0001 1.54607968096406E+0001 1.54842593972243E+0001 1.55077360909090E+0001 - 1.55312268962152E+0001 1.55547318186763E+0001 1.55782508638276E+0001 1.56017840371960E+0001 1.56253313443166E+0001 - 1.56488927907266E+0001 1.56724683819620E+0001 1.56960581235534E+0001 1.57196620210461E+0001 1.57432800799788E+0001 - 1.57669123058913E+0001 1.57905587043251E+0001 1.58142192808227E+0001 1.58378940409274E+0001 1.58615829901900E+0001 - 1.58852861341511E+0001 1.59090034783594E+0001 1.59327350283647E+0001 1.59564807897168E+0001 1.59802407679690E+0001 - 1.60040149686711E+0001 1.60278033973764E+0001 1.60516060596410E+0001 1.60754229610193E+0001 1.60992541070682E+0001 - 1.61230995033502E+0001 1.61469591554214E+0001 1.61708330688407E+0001 1.61947212491723E+0001 1.62186237019760E+0001 - 1.62425404328196E+0001 1.62664714472658E+0001 1.62904167508832E+0001 1.63143763492371E+0001 1.63383502478991E+0001 - 1.63623384524326E+0001 1.63863409684182E+0001 1.64103578014201E+0001 1.64343889570127E+0001 1.64584344407767E+0001 - 1.64824942582827E+0001 1.65065684151059E+0001 1.65306569168288E+0001 1.65547597690293E+0001 1.65788769772853E+0001 - 1.66030085471803E+0001 1.66271544842966E+0001 1.66513147942178E+0001 1.66754894825290E+0001 1.66996785548181E+0001 - 1.67238820166722E+0001 1.67480998736764E+0001 1.67723321314252E+0001 1.67965787955063E+0001 1.68208398715124E+0001 - 1.68451153650376E+0001 1.68694052816727E+0001 1.68937096270183E+0001 1.69180284066688E+0001 1.69423616262238E+0001 - 1.69667092912769E+0001 1.69910714074340E+0001 1.70154479802959E+0001 1.70398390154614E+0001 1.70642445185367E+0001 - 1.70886644951279E+0001 1.71130989508401E+0001 1.71375478912778E+0001 1.71620113220552E+0001 1.71864892487747E+0001 - 1.72109816770535E+0001 1.72354886124995E+0001 1.72600100607269E+0001 1.72845460273493E+0001 1.73090965179854E+0001 - 1.73336615382468E+0001 1.73582410937515E+0001 1.73828351901238E+0001 1.74074438329781E+0001 1.74320670279421E+0001 - 1.74567047806286E+0001 1.74813570966699E+0001 1.75060239816858E+0001 1.75307054413042E+0001 1.75554014811514E+0001 - 1.75801121068562E+0001 1.76048373240455E+0001 1.76295771383548E+0001 1.76543315554118E+0001 1.76791005808500E+0001 - 1.77038842203056E+0001 1.77286824794119E+0001 1.77534953638060E+0001 1.77783228791232E+0001 1.78031650310058E+0001 - 1.78280218250911E+0001 1.78528932670206E+0001 1.78777793624386E+0001 1.79026801169848E+0001 1.79275955363073E+0001 - 1.79525256260522E+0001 1.79774703918629E+0001 1.80024298393864E+0001 1.80274039742799E+0001 1.80523928021858E+0001 - 1.80773963287565E+0001 1.81024145596475E+0001 1.81274475005148E+0001 1.81524951570073E+0001 1.81775575347865E+0001 - 1.82026346395069E+0001 1.82277264768263E+0001 1.82528330524074E+0001 1.82779543719116E+0001 1.83030904409952E+0001 - 1.83282412653280E+0001 1.83534068505705E+0001 1.83785872023891E+0001 1.84037823264525E+0001 1.84289922284261E+0001 - 1.84542169139804E+0001 1.84794563887845E+0001 1.85047106585107E+0001 1.85299797288289E+0001 1.85552636054190E+0001 - 1.85805622939497E+0001 1.86058758000991E+0001 1.86312041295459E+0001 1.86565472879674E+0001 1.86819052810424E+0001 - 1.87072781144516E+0001 1.87326657938793E+0001 1.87580683250053E+0001 1.87834857135158E+0001 1.88089179650979E+0001 - 1.88343650854331E+0001 1.88598270802140E+0001 1.88853039551250E+0001 1.89107957158631E+0001 1.89363023681144E+0001 - 1.89618239175688E+0001 1.89873603699270E+0001 1.90129117308770E+0001 1.90384780061195E+0001 1.90640592013488E+0001 - 1.90896553222619E+0001 1.91152663745634E+0001 1.91408923639501E+0001 1.91665332961247E+0001 1.91921891767897E+0001 - 1.92178600116476E+0001 1.92435458064065E+0001 1.92692465667724E+0001 1.92949622984506E+0001 1.93206930071547E+0001 - 1.93464386985879E+0001 1.93721993784666E+0001 1.93979750524995E+0001 1.94237657264011E+0001 1.94495714058876E+0001 - 1.94753920966732E+0001 1.95012278044760E+0001 1.95270785350112E+0001 1.95529442940015E+0001 1.95788250871674E+0001 - 1.96047209202270E+0001 1.96306317989047E+0001 1.96565577289275E+0001 1.96824987160135E+0001 1.97084547658951E+0001 - 1.97344258842986E+0001 1.97604120769502E+0001 1.97864133495823E+0001 1.98124297079248E+0001 1.98384611577067E+0001 - 1.98645077046667E+0001 1.98905693545375E+0001 1.99166461130499E+0001 1.99427379859480E+0001 1.99688449789664E+0001 - 1.99949670978431E+0001 2.00211043483187E+0001 2.00472567361348E+0001 2.00734242670333E+0001 2.00996069467619E+0001 - 2.01258047810643E+0001 2.01520177756820E+0001 2.01782459363649E+0001 2.02044892688591E+0001 2.02307477789218E+0001 - 2.02570214722946E+0001 2.02833103547364E+0001 2.03096144319952E+0001 2.03359337098263E+0001 2.03622681939878E+0001 - 2.03886178902349E+0001 2.04149828043237E+0001 2.04413629420178E+0001 2.04677583090715E+0001 2.04941689112475E+0001 - 2.05205947543091E+0001 2.05470358440198E+0001 2.05734921861476E+0001 2.05999637864525E+0001 2.06264506507041E+0001 - 2.06529527846724E+0001 2.06794701941235E+0001 2.07060028848318E+0001 2.07325508625663E+0001 2.07591141330995E+0001 - 2.07856927022067E+0001 2.08122865756659E+0001 2.08388957592470E+0001 2.08655202587306E+0001 2.08921600799004E+0001 - 2.09188152285278E+0001 2.09454857104010E+0001 2.09721715312971E+0001 2.09988726970023E+0001 2.10255892132991E+0001 - 2.10523210859774E+0001 2.10790683208206E+0001 2.11058309236141E+0001 2.11326089001550E+0001 2.11594022562267E+0001 - 2.11862109976255E+0001 2.12130351301394E+0001 2.12398746595672E+0001 2.12667295916999E+0001 2.12935999323345E+0001 - 2.13204856872708E+0001 2.13473868623068E+0001 2.13743034632398E+0001 2.14012354958732E+0001 2.14281829660085E+0001 - 2.14551458794476E+0001 2.14821242419957E+0001 2.15091180594600E+0001 2.15361273376438E+0001 2.15631520823590E+0001 - 2.15901922994126E+0001 2.16172479946117E+0001 2.16443191737726E+0001 2.16714058427069E+0001 2.16985080072282E+0001 - 2.17256256731498E+0001 2.17527588462908E+0001 2.17799075324629E+0001 2.18070717374912E+0001 2.18342514671876E+0001 - 2.18614467273810E+0001 2.18886575238894E+0001 2.19158838625344E+0001 2.19431257491415E+0001 2.19703831895376E+0001 - 2.19976561895483E+0001 2.20249447550032E+0001 2.20522488917259E+0001 2.20795686055508E+0001 2.21069039023087E+0001 - 2.21342547878303E+0001 2.21616212679492E+0001 2.21890033485060E+0001 2.22164010353245E+0001 2.22438143342533E+0001 - 2.22712432511271E+0001 2.22986877917838E+0001 2.23261479620642E+0001 2.23536237678099E+0001 2.23811152148664E+0001 - 2.24086223090744E+0001 2.24361450562801E+0001 2.24636834623307E+0001 2.24912375330732E+0001 2.25188072743586E+0001 - 2.25463926920320E+0001 2.25739937919452E+0001 2.26016105799590E+0001 2.26292430619160E+0001 2.26568912436742E+0001 - 2.26845551310926E+0001 2.27122347300219E+0001 2.27399300463267E+0001 2.27676410858639E+0001 2.27953678544909E+0001 - 2.28231103580720E+0001 2.28508686024707E+0001 2.28786425935514E+0001 2.29064323371758E+0001 2.29342378392121E+0001 - 2.29620591055254E+0001 2.29898961419876E+0001 2.30177489544685E+0001 2.30456175488362E+0001 2.30735019309650E+0001 - 2.31014021067276E+0001 2.31293180819976E+0001 2.31572498626501E+0001 2.31851974545625E+0001 2.32131608636146E+0001 - 2.32411400956853E+0001 2.32691351566509E+0001 2.32971460523959E+0001 2.33251727888028E+0001 2.33532153717524E+0001 - 2.33812738071338E+0001 2.34093481008313E+0001 2.34374382587293E+0001 2.34655442867233E+0001 2.34936661906941E+0001 - 2.35218039765377E+0001 2.35499576501461E+0001 2.35781272174127E+0001 2.36063126842282E+0001 2.36345140564899E+0001 - 2.36627313400932E+0001 2.36909645409405E+0001 2.37192136649219E+0001 2.37474787179481E+0001 2.37757597059153E+0001 - 2.38040566347227E+0001 2.38323695102763E+0001 2.38606983384834E+0001 2.38890431252457E+0001 2.39174038764750E+0001 - 2.39457805980746E+0001 2.39741732959556E+0001 2.40025819760303E+0001 2.40310066442080E+0001 2.40594473064048E+0001 - 2.40879039685296E+0001 2.41163766365034E+0001 2.41448653162388E+0001 2.41733700136556E+0001 2.42018907346692E+0001 - 2.42304274852022E+0001 2.42589802711755E+0001 2.42875490985089E+0001 2.43161339731305E+0001 2.43447349009593E+0001 - 2.43733518879244E+0001 2.44019849399529E+0001 2.44306340629737E+0001 2.44592992629096E+0001 2.44879805456985E+0001 - 2.45166779172678E+0001 2.45453913835527E+0001 2.45741209504849E+0001 2.46028666239999E+0001 2.46316284100376E+0001 - 2.46604063145278E+0001 2.46892003434132E+0001 2.47180105026373E+0001 2.47468367981364E+0001 2.47756792358505E+0001 - 2.48045378217275E+0001 2.48334125617102E+0001 2.48623034617449E+0001 2.48912105277741E+0001 2.49201337657496E+0001 - 2.49490731816222E+0001 2.49780287813373E+0001 2.50070005708485E+0001 2.50359885561102E+0001 2.50649927430723E+0001 - 2.50940131376938E+0001 2.51230497459255E+0001 2.51521025737311E+0001 2.51811716270622E+0001 2.52102569118815E+0001 - 2.52393584341526E+0001 2.52684761998325E+0001 2.52976102148859E+0001 2.53267604852799E+0001 2.53559270169744E+0001 - 2.53851098159421E+0001 2.54143088881447E+0001 2.54435242395521E+0001 2.54727558761397E+0001 2.55020038038738E+0001 - 2.55312680287270E+0001 2.55605485566739E+0001 2.55898453936898E+0001 2.56191585457500E+0001 2.56484880188291E+0001 - 2.56778338189106E+0001 2.57071959519672E+0001 2.57365744239833E+0001 2.57659692409425E+0001 2.57953804088229E+0001 - 2.58248079336163E+0001 2.58542518212971E+0001 2.58837120778580E+0001 2.59131887092863E+0001 2.59426817215708E+0001 - 2.59721911206980E+0001 2.60017169126622E+0001 2.60312591034563E+0001 2.60608176990709E+0001 2.60903927055024E+0001 - 2.61199841287435E+0001 2.61495919747931E+0001 2.61792162496522E+0001 2.62088569593170E+0001 2.62385141097875E+0001 - 2.62681877070654E+0001 2.62978777571534E+0001 2.63275842660560E+0001 2.63573072397776E+0001 2.63870466843255E+0001 - 2.64168026057041E+0001 2.64465750099262E+0001 2.64763639029961E+0001 2.65061692909303E+0001 2.65359911797377E+0001 - 2.65658295754329E+0001 2.65956844840266E+0001 2.66255559115407E+0001 2.66554438639832E+0001 2.66853483473806E+0001 - 2.67152693677481E+0001 2.67452069311021E+0001 2.67751610434716E+0001 2.68051317108739E+0001 2.68351189393334E+0001 - 2.68651227348792E+0001 2.68951431035284E+0001 2.69251800513157E+0001 2.69552335842682E+0001 2.69853037084122E+0001 - 2.70153904297813E+0001 2.70454937544064E+0001 2.70756136883192E+0001 2.71057502375552E+0001 2.71359034081497E+0001 - 2.71660732061409E+0001 2.71962596375643E+0001 2.72264627084596E+0001 2.72566824248643E+0001 2.72869187928245E+0001 - 2.73171718183748E+0001 2.73474415075671E+0001 2.73777278664420E+0001 2.74080309010433E+0001 2.74383506174208E+0001 - 2.74686870216246E+0001 2.74990401196992E+0001 2.75294099176981E+0001 2.75597964216759E+0001 2.75901996376751E+0001 - 2.76206195717623E+0001 2.76510562299854E+0001 2.76815096183982E+0001 2.77119797430651E+0001 2.77424666100424E+0001 - 2.77729702253873E+0001 2.78034905951627E+0001 2.78340277254310E+0001 2.78645816222543E+0001 2.78951522916987E+0001 - 2.79257397398278E+0001 2.79563439727099E+0001 2.79869649964139E+0001 2.80176028170044E+0001 2.80482574405587E+0001 - 2.80789288731439E+0001 2.81096171208301E+0001 2.81403221896962E+0001 2.81710440858169E+0001 2.82017828152639E+0001 - 2.82325383841189E+0001 2.82633107984584E+0001 2.82941000643623E+0001 2.83249061879105E+0001 2.83557291751877E+0001 - 2.83865690322718E+0001 2.84174257652494E+0001 2.84482993802130E+0001 2.84791898832373E+0001 2.85100972804184E+0001 - 2.85410215778429E+0001 2.85719627816015E+0001 2.86029208977843E+0001 2.86338959324812E+0001 2.86648878917904E+0001 - 2.86958967818055E+0001 2.87269226086255E+0001 2.87579653783396E+0001 2.87890250970504E+0001 2.88201017708579E+0001 - 2.88511954058640E+0001 2.88823060081686E+0001 2.89134335838726E+0001 2.89445781390832E+0001 2.89757396799041E+0001 - 2.90069182124444E+0001 2.90381137428067E+0001 2.90693262771047E+0001 2.91005558214456E+0001 2.91318023819404E+0001 - 2.91630659647035E+0001 2.91943465758468E+0001 2.92256442214866E+0001 2.92569589077320E+0001 2.92882906407094E+0001 - 2.93196394265324E+0001 2.93510052713182E+0001 2.93823881811923E+0001 2.94137881622728E+0001 2.94452052206798E+0001 - 2.94766393625432E+0001 2.95080905939840E+0001 2.95395589211330E+0001 2.95710443501121E+0001 2.96025468870503E+0001 - 2.96340665380822E+0001 2.96656033093341E+0001 2.96971572069415E+0001 2.97287282370335E+0001 2.97603164057473E+0001 - 2.97919217192211E+0001 2.98235441835841E+0001 2.98551838049825E+0001 2.98868405895500E+0001 2.99185145434294E+0001 - 2.99502056727588E+0001 2.99819139836845E+0001 3.00136394823494E+0001 3.00453821748970E+0001 3.00771420674746E+0001 - 3.01089191662295E+0001 3.01407134773090E+0001 3.01725250068621E+0001 3.02043537610416E+0001 3.02361997459993E+0001 - 3.02680629678871E+0001 3.02999434328576E+0001 3.03318411470727E+0001 3.03637561166825E+0001 3.03956883478431E+0001 - 3.04276378467212E+0001 3.04596046194729E+0001 3.04915886722565E+0001 3.05235900112384E+0001 3.05556086425813E+0001 - 3.05876445724471E+0001 3.06196978070047E+0001 3.06517683524216E+0001 3.06838562148641E+0001 3.07159614005013E+0001 - 3.07480839155078E+0001 3.07802237660489E+0001 3.08123809583049E+0001 3.08445554984419E+0001 3.08767473926409E+0001 - 3.09089566470757E+0001 3.09411832679225E+0001 3.09734272613659E+0001 3.10056886335824E+0001 3.10379673907491E+0001 - 3.10702635390526E+0001 3.11025770846745E+0001 3.11349080338014E+0001 3.11672563926177E+0001 3.11996221673098E+0001 - 3.12320053640660E+0001 3.12644059890754E+0001 3.12968240485307E+0001 3.13292595486200E+0001 3.13617124955363E+0001 - 3.13941828954758E+0001 3.14266707546321E+0001 3.14591760792018E+0001 3.14916988753785E+0001 3.15242391493694E+0001 - 3.15567969073691E+0001 3.15893721555758E+0001 3.16219649001941E+0001 3.16545751474259E+0001 3.16872029034803E+0001 - 3.17198481745563E+0001 3.17525109668650E+0001 3.17851912866126E+0001 3.18178891400084E+0001 3.18506045332642E+0001 - 3.18833374725864E+0001 3.19160879641913E+0001 3.19488560142936E+0001 3.19816416291060E+0001 3.20144448148467E+0001 - 3.20472655777285E+0001 3.20801039239732E+0001 3.21129598598018E+0001 3.21458333914306E+0001 3.21787245250825E+0001 - 3.22116332669839E+0001 3.22445596233520E+0001 3.22775036004232E+0001 3.23104652044140E+0001 3.23434444415579E+0001 - 3.23764413180779E+0001 3.24094558402094E+0001 3.24424880141823E+0001 3.24755378462296E+0001 3.25086053425803E+0001 - 3.25416905094726E+0001 3.25747933531438E+0001 3.26079138798295E+0001 3.26410520957625E+0001 3.26742080071917E+0001 - 3.27073816203520E+0001 3.27405729414868E+0001 3.27737819768345E+0001 3.28070087326460E+0001 3.28402532151613E+0001 - 3.28735154306305E+0001 3.29067953852955E+0001 3.29400930854117E+0001 3.29734085372229E+0001 3.30067417469845E+0001 - 3.30400927209457E+0001 3.30734614653638E+0001 3.31068479864862E+0001 3.31402522905755E+0001 3.31736743838846E+0001 - 3.32071142726763E+0001 3.32405719632043E+0001 3.32740474617294E+0001 3.33075407745146E+0001 3.33410519078243E+0001 - 3.33745808679159E+0001 3.34081276610614E+0001 3.34416922935252E+0001 3.34752747715702E+0001 3.35088751014719E+0001 - 3.35424932894948E+0001 3.35761293419127E+0001 3.36097832649921E+0001 3.36434550650138E+0001 3.36771447482479E+0001 - 3.37108523209699E+0001 3.37445777894536E+0001 3.37783211599835E+0001 3.38120824388352E+0001 3.38458616322860E+0001 - 3.38796587466222E+0001 3.39134737881232E+0001 3.39473067630734E+0001 3.39811576777538E+0001 3.40150265384545E+0001 - 3.40489133514657E+0001 3.40828181230718E+0001 3.41167408595593E+0001 3.41506815672201E+0001 3.41846402523552E+0001 - 3.42186169212437E+0001 3.42526115801866E+0001 3.42866242354812E+0001 3.43206548934213E+0001 3.43547035602987E+0001 - 3.43887702424236E+0001 3.44228549460877E+0001 3.44569576775975E+0001 3.44910784432486E+0001 3.45252172493510E+0001 - 3.45593741022058E+0001 3.45935490081192E+0001 3.46277419733960E+0001 3.46619530043499E+0001 3.46961821072837E+0001 - 3.47304292885110E+0001 3.47646945543493E+0001 3.47989779110994E+0001 3.48332793650807E+0001 3.48675989226085E+0001 - 3.49019365900003E+0001 3.49362923735735E+0001 3.49706662796452E+0001 3.50050583145367E+0001 3.50394684845687E+0001 - 3.50738967960569E+0001 3.51083432553296E+0001 3.51428078687150E+0001 3.51772906425340E+0001 3.52117915831168E+0001 - 3.52463106967862E+0001 3.52808479898704E+0001 3.53154034687104E+0001 3.53499771396255E+0001 3.53845690089511E+0001 - 3.54191790830282E+0001 3.54538073681833E+0001 3.54884538707593E+0001 3.55231185970824E+0001 3.55578015535029E+0001 - 3.55925027463563E+0001 3.56272221819818E+0001 3.56619598667166E+0001 3.56967158069183E+0001 3.57314900089132E+0001 - 3.57662824790605E+0001 3.58010932236994E+0001 3.58359222491817E+0001 3.58707695618523E+0001 3.59056351680665E+0001 - 3.59405190741709E+0001 3.59754212865191E+0001 3.60103418114650E+0001 3.60452806553585E+0001 3.60802378245644E+0001 - 3.61152133254363E+0001 3.61502071643263E+0001 3.61852193476043E+0001 3.62202498816223E+0001 3.62552987727468E+0001 - 3.62903660273369E+0001 3.63254516517591E+0001 3.63605556523780E+0001 3.63956780355602E+0001 3.64308188076702E+0001 - 3.64659779750855E+0001 3.65011555441633E+0001 3.65363515212848E+0001 3.65715659128218E+0001 3.66067987251372E+0001 - 3.66420499646138E+0001 3.66773196376307E+0001 3.67126077505563E+0001 3.67479143097717E+0001 3.67832393216631E+0001 - 3.68185827925972E+0001 3.68539447289641E+0001 3.68893251371483E+0001 3.69247240235254E+0001 3.69601413944874E+0001 - 3.69955772564208E+0001 3.70310316157102E+0001 3.70665044787438E+0001 3.71019958519119E+0001 3.71375057416044E+0001 - 3.71730341542116E+0001 3.72085810961325E+0001 3.72441465737556E+0001 3.72797305934801E+0001 3.73153331617013E+0001 - 3.73509542848169E+0001 3.73865939692278E+0001 3.74222522213313E+0001 3.74579290475303E+0001 3.74936244542241E+0001 - 3.75293384478209E+0001 3.75650710347218E+0001 3.76008222213368E+0001 3.76365920140688E+0001 3.76723804193261E+0001 - 3.77081874435207E+0001 3.77440130930627E+0001 3.77798573743639E+0001 3.78157202938419E+0001 3.78516018578994E+0001 - 3.78875020729593E+0001 3.79234209454426E+0001 3.79593584817521E+0001 3.79953146883217E+0001 3.80312895715633E+0001 - 3.80672831378997E+0001 3.81032953937502E+0001 3.81393263455502E+0001 3.81753759997064E+0001 3.82114443626615E+0001 - 3.82475314408312E+0001 3.82836372406455E+0001 3.83197617685346E+0001 3.83559050309341E+0001 3.83920670342668E+0001 - 3.84282477849720E+0001 3.84644472894797E+0001 3.85006655542293E+0001 3.85369025856489E+0001 3.85731583901870E+0001 - 3.86094329742737E+0001 3.86457263443517E+0001 3.86820385068586E+0001 3.87183694682444E+0001 3.87547192349466E+0001 - 3.87910878134098E+0001 3.88274752100806E+0001 3.88638814314018E+0001 3.89003064838289E+0001 3.89367503738067E+0001 - 3.89732131077853E+0001 3.90096946922131E+0001 3.90461951335510E+0001 3.90827144382420E+0001 3.91192526127561E+0001 - 3.91558096635308E+0001 3.91923855970344E+0001 3.92289804197262E+0001 3.92655941380599E+0001 3.93022267584984E+0001 - 3.93388782875081E+0001 3.93755487315466E+0001 3.94122380970803E+0001 3.94489463905720E+0001 3.94856736184938E+0001 - 3.95224197873085E+0001 3.95591849034845E+0001 3.95959689734937E+0001 3.96327720038134E+0001 3.96695940009031E+0001 - 3.97064349712437E+0001 3.97432949213126E+0001 3.97801738575799E+0001 3.98170717865250E+0001 3.98539887146253E+0001 - 3.98909246483618E+0001 3.99278795942173E+0001 3.99648535586639E+0001 4.00018465481990E+0001 4.00388585692963E+0001 - 4.00758896284351E+0001 4.01129397321201E+0001 4.01500088868197E+0001 4.01870970990385E+0001 4.02242043752594E+0001 - 4.02613307219654E+0001 4.02984761456592E+0001 4.03356406528364E+0001 4.03728242499892E+0001 4.04100269436021E+0001 - 4.04472487401836E+0001 4.04844896462309E+0001 4.05217496682344E+0001 4.05590288127059E+0001 4.05963270861394E+0001 - 4.06336444950448E+0001 4.06709810459161E+0001 4.07083367452633E+0001 4.07457115995912E+0001 4.07831056154137E+0001 - 4.08205187992280E+0001 4.08579511575535E+0001 4.08954026969004E+0001 4.09328734237697E+0001 4.09703633446843E+0001 - 4.10078724661635E+0001 4.10454007947083E+0001 4.10829483368470E+0001 4.11205150990845E+0001 4.11581010879581E+0001 - 4.11957063099744E+0001 4.12333307716599E+0001 4.12709744795320E+0001 4.13086374401209E+0001 4.13463196599514E+0001 - 4.13840211455408E+0001 4.14217419034248E+0001 4.14594819401282E+0001 4.14972412621773E+0001 4.15350198761116E+0001 - 4.15728177884594E+0001 4.16106350057489E+0001 4.16484715345177E+0001 4.16863273813015E+0001 4.17242025526357E+0001 - 4.17620970550543E+0001 4.18000108951037E+0001 4.18379440793178E+0001 4.18758966142432E+0001 4.19138685064099E+0001 - 4.19518597623792E+0001 4.19898703886865E+0001 4.20279003918749E+0001 4.20659497784964E+0001 4.21040185550901E+0001 - 4.21421067282190E+0001 4.21802143044260E+0001 4.22183412902559E+0001 4.22564876922770E+0001 4.22946535170322E+0001 - 4.23328387710790E+0001 4.23710434609711E+0001 4.24092675932770E+0001 4.24475111745414E+0001 4.24857742113309E+0001 - 4.25240567102046E+0001 4.25623586777219E+0001 4.26006801204530E+0001 4.26390210449572E+0001 4.26773814577973E+0001 - 4.27157613655490E+0001 4.27541607747753E+0001 4.27925796920408E+0001 4.28310181239249E+0001 4.28694760769922E+0001 - 4.29079535578185E+0001 4.29464505729738E+0001 4.29849671290358E+0001 4.30235032325854E+0001 4.30620588901893E+0001 - 4.31006341084303E+0001 4.31392288938896E+0001 4.31778432531501E+0001 4.32164771927892E+0001 4.32551307193880E+0001 - 4.32938038395387E+0001 4.33324965598149E+0001 4.33712088868178E+0001 4.34099408271213E+0001 4.34486923873246E+0001 - 4.34874635740125E+0001 4.35262543937770E+0001 4.35650648532082E+0001 4.36038949589056E+0001 4.36427447174556E+0001 - 4.36816141354630E+0001 4.37205032195179E+0001 4.37594119762271E+0001 4.37983404121769E+0001 4.38372885339722E+0001 - 4.38762563482269E+0001 4.39152438615311E+0001 4.39542510804895E+0001 4.39932780117124E+0001 4.40323246618009E+0001 - 4.40713910373597E+0001 4.41104771450155E+0001 4.41495829913583E+0001 4.41887085830003E+0001 4.42278539265681E+0001 - 4.42670190286626E+0001 4.43062038958997E+0001 4.43454085349003E+0001 4.43846329522821E+0001 4.44238771546516E+0001 - 4.44631411486407E+0001 4.45024249408652E+0001 4.45417285379444E+0001 4.45810519465031E+0001 4.46203951731586E+0001 - 4.46597582245486E+0001 4.46991411072904E+0001 4.47385438280162E+0001 4.47779663933434E+0001 4.48174088099167E+0001 - 4.48568710843556E+0001 4.48963532232974E+0001 4.49358552333761E+0001 4.49753771212218E+0001 4.50149188934702E+0001 - 4.50544805567679E+0001 4.50940621177360E+0001 4.51336635830266E+0001 4.51732849592736E+0001 4.52129262531198E+0001 - 4.52525874712082E+0001 4.52922686201819E+0001 4.53319697066836E+0001 4.53716907373637E+0001 4.54114317188687E+0001 - 4.54511926578398E+0001 4.54909735609344E+0001 4.55307744348011E+0001 4.55705952860881E+0001 4.56104361214511E+0001 - 4.56502969475459E+0001 4.56901777710282E+0001 4.57300785985499E+0001 4.57699994367686E+0001 4.58099402923490E+0001 - 4.58499011719432E+0001 4.58898820822214E+0001 4.59298830298358E+0001 4.59699040214527E+0001 4.60099450637481E+0001 - 4.60500061633702E+0001 4.60900873269984E+0001 4.61301885612957E+0001 4.61703098729322E+0001 4.62104512685710E+0001 - 4.62506127548968E+0001 4.62907943385781E+0001 4.63309960262832E+0001 4.63712178246915E+0001 4.64114597404787E+0001 - 4.64517217803223E+0001 4.64920039508997E+0001 4.65323062588941E+0001 4.65726287109792E+0001 4.66129713138453E+0001 - 4.66533340741698E+0001 4.66937169986395E+0001 4.67341200939372E+0001 4.67745433667569E+0001 4.68149868237797E+0001 - 4.68554504716922E+0001 4.68959343171900E+0001 4.69364383669654E+0001 4.69769626277048E+0001 4.70175071061112E+0001 - 4.70580718088695E+0001 4.70986567426826E+0001 4.71392619142425E+0001 4.71798873302541E+0001 4.72205329974076E+0001 - 4.72611989224151E+0001 4.73018851119705E+0001 4.73425915727730E+0001 4.73833183115348E+0001 4.74240653349643E+0001 - 4.74648326497572E+0001 4.75056202626292E+0001 4.75464281802870E+0001 4.75872564094370E+0001 4.76281049567933E+0001 - 4.76689738290697E+0001 4.77098630329783E+0001 4.77507725752330E+0001 4.77917024625476E+0001 4.78326527016507E+0001 - 4.78736232992414E+0001 4.79146142620502E+0001 4.79556255967982E+0001 4.79966573102029E+0001 4.80377094089963E+0001 - 4.80787818998924E+0001 4.81198747896142E+0001 4.81609880848973E+0001 4.82021217924648E+0001 4.82432759190469E+0001 - 4.82844504713685E+0001 4.83256454561633E+0001 4.83668608801654E+0001 4.84080967501068E+0001 4.84493530727268E+0001 - 4.84906298547485E+0001 4.85319271029184E+0001 4.85732448239723E+0001 4.86145830246478E+0001 4.86559417116878E+0001 - 4.86973208918334E+0001 4.87387205718278E+0001 4.87801407584084E+0001 4.88215814583309E+0001 4.88630426783311E+0001 - 4.89045244251611E+0001 4.89460267055656E+0001 4.89875495262986E+0001 4.90290928941158E+0001 4.90706568157566E+0001 - 4.91122412979839E+0001 4.91538463475481E+0001 4.91954719712012E+0001 4.92371181757080E+0001 4.92787849678170E+0001 - 4.93204723542949E+0001 4.93621803418955E+0001 4.94039089373837E+0001 4.94456581475206E+0001 4.94874279790747E+0001 - 4.95292184387999E+0001 4.95710295334720E+0001 4.96128612698576E+0001 4.96547136547160E+0001 4.96965866948303E+0001 - 4.97384803969544E+0001 4.97803947678713E+0001 4.98223298143494E+0001 4.98642855431717E+0001 4.99062619610995E+0001 - 4.99482590749212E+0001 4.99902768914035E+0001 5.00323154173384E+0001 5.00743746594908E+0001 5.01164546246509E+0001 - 5.01585553195964E+0001 5.02006767511211E+0001 5.02428189259917E+0001 5.02849818510076E+0001 5.03271655329536E+0001 - 5.03693699786163E+0001 5.04115951947806E+0001 5.04538411882422E+0001 5.04961079657933E+0001 5.05383955342222E+0001 - 5.05807039003248E+0001 5.06230330708950E+0001 5.06653830527339E+0001 5.07077538526282E+0001 5.07501454773937E+0001 - 5.07925579338080E+0001 5.08349912286867E+0001 5.08774453688329E+0001 5.09199203610406E+0001 5.09624162121218E+0001 - 5.10049329288759E+0001 5.10474705181132E+0001 5.10900289866404E+0001 5.11326083412714E+0001 5.11752085888111E+0001 - 5.12178297360661E+0001 5.12604717898557E+0001 5.13031347569904E+0001 5.13458186442931E+0001 5.13885234585687E+0001 - 5.14312492066401E+0001 5.14739958953214E+0001 5.15167635314410E+0001 5.15595521218111E+0001 5.16023616732509E+0001 - 5.16451921925945E+0001 5.16880436866595E+0001 5.17309161622634E+0001 5.17738096262492E+0001 5.18167240854364E+0001 - 5.18596595466479E+0001 5.19026160167214E+0001 5.19455935024871E+0001 5.19885920107754E+0001 5.20316115484129E+0001 - 5.20746521222500E+0001 5.21177137391096E+0001 5.21607964058385E+0001 5.22039001292615E+0001 5.22470249162270E+0001 - 5.22901707735764E+0001 5.23333377081472E+0001 5.23765257267842E+0001 5.24197348363323E+0001 5.24629650436309E+0001 - 5.25062163555285E+0001 5.25494887788755E+0001 5.25927823205257E+0001 5.26360969873185E+0001 5.26794327861062E+0001 - 5.27227897237444E+0001 5.27661678070817E+0001 5.28095670429793E+0001 5.28529874382875E+0001 5.28964289998712E+0001 - 5.29398917345752E+0001 5.29833756492681E+0001 5.30268807508073E+0001 5.30704070460488E+0001 5.31139545418609E+0001 - 5.31575232451105E+0001 5.32011131626605E+0001 5.32447243013739E+0001 5.32883566681121E+0001 5.33320102697580E+0001 - 5.33756851131693E+0001 5.34193812052199E+0001 5.34630985527856E+0001 5.35068371627349E+0001 5.35505970419435E+0001 - 5.35943781972856E+0001 5.36381806356385E+0001 5.36820043638854E+0001 5.37258493888985E+0001 5.37697157175498E+0001 - 5.38136033567371E+0001 5.38575123133360E+0001 5.39014425942278E+0001 5.39453942062955E+0001 5.39893671564314E+0001 - 5.40333614515202E+0001 5.40773770984506E+0001 5.41214141041019E+0001 5.41654724753771E+0001 5.42095522191685E+0001 - 5.42536533423572E+0001 5.42977758518464E+0001 5.43419197545263E+0001 5.43860850573001E+0001 5.44302717670580E+0001 - 5.44744798906995E+0001 5.45187094351331E+0001 5.45629604072474E+0001 5.46072328139489E+0001 5.46515266621445E+0001 - 5.46958419587372E+0001 5.47401787106337E+0001 5.47845369247298E+0001 5.48289166079448E+0001 5.48733177671911E+0001 - 5.49177404093698E+0001 5.49621845413949E+0001 5.50066501701767E+0001 5.50511373026347E+0001 5.50956459456811E+0001 - 5.51401761062334E+0001 5.51847277912038E+0001 5.52293010075155E+0001 5.52738957620877E+0001 5.53185120618418E+0001 - 5.53631499136936E+0001 5.54078093245789E+0001 5.54524903014062E+0001 5.54971928511095E+0001 5.55419169806100E+0001 - 5.55866626968455E+0001 5.56314300067370E+0001 5.56762189172205E+0001 5.57210294352190E+0001 5.57658615676683E+0001 - 5.58107153215060E+0001 5.58555907036625E+0001 5.59004877210718E+0001 5.59454063806734E+0001 5.59903466894139E+0001 - 5.60353086542182E+0001 5.60802922820349E+0001 5.61252975798016E+0001 5.61703245544668E+0001 5.62153732129682E+0001 - 5.62604435622561E+0001 5.63055356092791E+0001 5.63506493609711E+0001 5.63957848242990E+0001 5.64409420062002E+0001 - 5.64861209136288E+0001 5.65313215535371E+0001 5.65765439328770E+0001 5.66217880586100E+0001 5.66670539376846E+0001 - 5.67123415770584E+0001 5.67576509836872E+0001 5.68029821645396E+0001 5.68483351265641E+0001 5.68937098767383E+0001 - 5.69391064220035E+0001 5.69845247693411E+0001 5.70299649257031E+0001 5.70754268980654E+0001 5.71209106933929E+0001 - 5.71664163186524E+0001 5.72119437808160E+0001 5.72574930868486E+0001 5.73030642437261E+0001 5.73486572584243E+0001 - 5.73942721379135E+0001 5.74399088891714E+0001 5.74855675191702E+0001 5.75312480348966E+0001 5.75769504433229E+0001 - 5.76226747514283E+0001 5.76684209661998E+0001 5.77141890946095E+0001 5.77599791436569E+0001 5.78057911203123E+0001 - 5.78516250315643E+0001 5.78974808844087E+0001 5.79433586858268E+0001 5.79892584428053E+0001 5.80351801623365E+0001 - 5.80811238514179E+0001 5.81270895170401E+0001 5.81730771661914E+0001 5.82190868058715E+0001 5.82651184430761E+0001 - 5.83111720848083E+0001 5.83572477380621E+0001 5.84033454098317E+0001 5.84494651071236E+0001 5.84956068369411E+0001 - 5.85417706062854E+0001 5.85879564221632E+0001 5.86341642915831E+0001 5.86803942215429E+0001 5.87266462190601E+0001 - 5.87729202911323E+0001 5.88192164447810E+0001 5.88655346870164E+0001 5.89118750248454E+0001 5.89582374652855E+0001 - 5.90046220153508E+0001 5.90510286820609E+0001 5.90974574724241E+0001 5.91439083934747E+0001 5.91903814522175E+0001 - 5.92368766556738E+0001 5.92833940108758E+0001 5.93299335248430E+0001 5.93764952045931E+0001 5.94230790571582E+0001 - 5.94696850895652E+0001 5.95163133088354E+0001 5.95629637220063E+0001 5.96096363361066E+0001 5.96563311581576E+0001 - 5.97030481952042E+0001 5.97497874542751E+0001 5.97965489424078E+0001 5.98433326666309E+0001 5.98901386339858E+0001 - 5.99369668515174E+0001 5.99838173262524E+0001 6.00306900652395E+0001 6.00775850755199E+0001 6.01245023641422E+0001 - 6.01714419381369E+0001 6.02184038045580E+0001 6.02653879704521E+0001 6.03123944428644E+0001 6.03594232288433E+0001 - 6.04064743354429E+0001 6.04535477697100E+0001 6.05006435386949E+0001 6.05477616494627E+0001 6.05949021090510E+0001 - 6.06420649245283E+0001 6.06892501029452E+0001 6.07364576513646E+0001 6.07836875768462E+0001 6.08309398864385E+0001 - 6.08782145872210E+0001 6.09255116862441E+0001 6.09728311905747E+0001 6.10201731072793E+0001 6.10675374434213E+0001 - 6.11149242060728E+0001 6.11623334022952E+0001 6.12097650391679E+0001 6.12572191237523E+0001 6.13046956631279E+0001 - 6.13521946643650E+0001 6.13997161345396E+0001 6.14472600807148E+0001 6.14948265099847E+0001 6.15424154294233E+0001 - 6.15900268461010E+0001 6.16376607671082E+0001 6.16853171995190E+0001 6.17329961504256E+0001 6.17806976268967E+0001 - 6.18284216360225E+0001 6.18761681849028E+0001 6.19239372806060E+0001 6.19717289302334E+0001 6.20195431408683E+0001 - 6.20673799195993E+0001 6.21152392735239E+0001 6.21631212097273E+0001 6.22110257353179E+0001 6.22589528573735E+0001 - 6.23069025830064E+0001 6.23548749193051E+0001 6.24028698733728E+0001 6.24508874522999E+0001 6.24989276631986E+0001 - 6.25469905131704E+0001 6.25950760093147E+0001 6.26431841587382E+0001 6.26913149685442E+0001 6.27394684458395E+0001 - 6.27876445977399E+0001 6.28358434313395E+0001 6.28840649537669E+0001 6.29323091721217E+0001 6.29805760935214E+0001 - 6.30288657250803E+0001 6.30771780739051E+0001 6.31255131471244E+0001 6.31738709518540E+0001 6.32222514952009E+0001 - 6.32706547842972E+0001 6.33190808262570E+0001 6.33675296281981E+0001 6.34160011972617E+0001 6.34644955405547E+0001 - 6.35130126652111E+0001 6.35615525783596E+0001 6.36101152871179E+0001 6.36587007986218E+0001 6.37073091200054E+0001 - 6.37559402583938E+0001 6.38045942209155E+0001 6.38532710147174E+0001 6.39019706469262E+0001 6.39506931246779E+0001 - 6.39994384551119E+0001 6.40482066453624E+0001 6.40969977025761E+0001 6.41458116338854E+0001 6.41946484464479E+0001 - 6.42435081473850E+0001 6.42923907438526E+0001 6.43412962429938E+0001 6.43902246519592E+0001 6.44391759778955E+0001 - 6.44881502279422E+0001 6.45371474092644E+0001 6.45861675289998E+0001 6.46352105943170E+0001 6.46842766123464E+0001 - 6.47333655902603E+0001 6.47824775352128E+0001 6.48316124543526E+0001 6.48807703548482E+0001 6.49299512438520E+0001 - 6.49791551285271E+0001 6.50283820160366E+0001 6.50776319135366E+0001 6.51269048281956E+0001 6.51762007671805E+0001 - 6.52255197376617E+0001 6.52748617467932E+0001 6.53242268017548E+0001 6.53736149097131E+0001 6.54230260778386E+0001 - 6.54724603133072E+0001 6.55219176232858E+0001 6.55713980149558E+0001 6.56209014954838E+0001 6.56704280720587E+0001 - 6.57199777518435E+0001 6.57695505420343E+0001 6.58191464497941E+0001 6.58687654823207E+0001 6.59184076467900E+0001 - 6.59680729503762E+0001 6.60177614002805E+0001 6.60674730036808E+0001 6.61172077677602E+0001 6.61669656997146E+0001 - 6.62167468067310E+0001 6.62665510960014E+0001 6.63163785747165E+0001 6.63662292500703E+0001 6.64161031292533E+0001 - 6.64660002194632E+0001 6.65159205279051E+0001 6.65658640617603E+0001 6.66158308282393E+0001 6.66658208345380E+0001 - 6.67158340878632E+0001 6.67658705954127E+0001 6.68159303643897E+0001 6.68660134019956E+0001 6.69161197154426E+0001 - 6.69662493119376E+0001 6.70164021986839E+0001 6.70665783829008E+0001 6.71167778717845E+0001 6.71670006725581E+0001 - 6.72172467924283E+0001 6.72675162386131E+0001 6.73178090183264E+0001 6.73681251387807E+0001 6.74184646072008E+0001 - 6.74688274307991E+0001 6.75192136168025E+0001 6.75696231724251E+0001 6.76200561048863E+0001 6.76705124214241E+0001 - 6.77209921292488E+0001 6.77714952355946E+0001 6.78220217476810E+0001 6.78725716727422E+0001 6.79231450180032E+0001 - 6.79737417906981E+0001 6.80243619980556E+0001 6.80750056473098E+0001 6.81256727456930E+0001 6.81763633004393E+0001 - 6.82270773187920E+0001 6.82778148079797E+0001 6.83285757752474E+0001 6.83793602278256E+0001 6.84301681729685E+0001 - 6.84809996179101E+0001 6.85318545698901E+0001 6.85827330361590E+0001 6.86336350239635E+0001 6.86845605405451E+0001 - 6.87355095931525E+0001 6.87864821890380E+0001 6.88374783354448E+0001 6.88884980396360E+0001 6.89395413088514E+0001 - 6.89906081503523E+0001 6.90416985713946E+0001 6.90928125792307E+0001 6.91439501811128E+0001 6.91951113843061E+0001 - 6.92462961960700E+0001 6.92975046236661E+0001 6.93487366743502E+0001 6.93999923553874E+0001 6.94512716740464E+0001 - 6.95025746375904E+0001 6.95539012532827E+0001 6.96052515283918E+0001 6.96566254701866E+0001 6.97080230859428E+0001 - 6.97594443829221E+0001 6.98108893684002E+0001 6.98623580496587E+0001 6.99138504339589E+0001 6.99653665285878E+0001 - 7.00169063408121E+0001 7.00684698779150E+0001 7.01200571471763E+0001 7.01716681558810E+0001 7.02233029112995E+0001 - 7.02749614207205E+0001 7.03266436914291E+0001 7.03783497307104E+0001 7.04300795458512E+0001 7.04818331441329E+0001 - 7.05336105328497E+0001 7.05854117192921E+0001 7.06372367107433E+0001 7.06890855145048E+0001 7.07409581378615E+0001 - 7.07928545881168E+0001 7.08447748725594E+0001 7.08967189984869E+0001 7.09486869732009E+0001 7.10006788039955E+0001 - 7.10526944981721E+0001 7.11047340630357E+0001 7.11567975058861E+0001 7.12088848340263E+0001 7.12609960547561E+0001 - 7.13131311753950E+0001 7.13652902032409E+0001 7.14174731456023E+0001 7.14696800097900E+0001 7.15219108031160E+0001 - 7.15741655328875E+0001 7.16264442064221E+0001 7.16787468310340E+0001 7.17310734140374E+0001 7.17834239627482E+0001 - 7.18357984844824E+0001 7.18881969865670E+0001 7.19406194763051E+0001 7.19930659610345E+0001 7.20455364480695E+0001 - 7.20980309447368E+0001 7.21505494583616E+0001 7.22030919962635E+0001 7.22556585657767E+0001 7.23082491742243E+0001 - 7.23608638289425E+0001 7.24135025372525E+0001 7.24661653064868E+0001 7.25188521439886E+0001 7.25715630570812E+0001 - 7.26242980531024E+0001 7.26770571393899E+0001 7.27298403232799E+0001 7.27826476121118E+0001 7.28354790132307E+0001 - 7.28883345339673E+0001 7.29412141816647E+0001 7.29941179636753E+0001 7.30470458873351E+0001 7.30999979599983E+0001 - 7.31529741889972E+0001 7.32059745816914E+0001 7.32589991454261E+0001 7.33120478875571E+0001 7.33651208154242E+0001 - 7.34182179363943E+0001 7.34713392578105E+0001 7.35244847870235E+0001 7.35776545314075E+0001 7.36308484983001E+0001 - 7.36840666950757E+0001 7.37373091290792E+0001 7.37905758076849E+0001 7.38438667382452E+0001 7.38971819281251E+0001 - 7.39505213846896E+0001 7.40038851153113E+0001 7.40572731273423E+0001 7.41106854281570E+0001 7.41641220251277E+0001 - 7.42175829256212E+0001 7.42710681370099E+0001 7.43245776666645E+0001 7.43781115219572E+0001 7.44316697102713E+0001 - 7.44852522389720E+0001 7.45388591154351E+0001 7.45924903470495E+0001 7.46461459411876E+0001 7.46998259052325E+0001 - 7.47535302465676E+0001 7.48072589725707E+0001 7.48610120906214E+0001 7.49147896081176E+0001 7.49685915324353E+0001 - 7.50224178709686E+0001 7.50762686311027E+0001 7.51301438202281E+0001 7.51840434457372E+0001 7.52379675150169E+0001 - 7.52919160354704E+0001 7.53458890144793E+0001 7.53998864594487E+0001 7.54539083777709E+0001 7.55079547768455E+0001 - 7.55620256640705E+0001 7.56161210468508E+0001 7.56702409325808E+0001 7.57243853286673E+0001 7.57785542425117E+0001 - 7.58327476815211E+0001 7.58869656531024E+0001 7.59412081646587E+0001 7.59954752236044E+0001 7.60497668373482E+0001 - 7.61040830132915E+0001 7.61584237588522E+0001 7.62127890814518E+0001 7.62671789884880E+0001 7.63215934873879E+0001 - 7.63760325855656E+0001 7.64304962904389E+0001 7.64849846094239E+0001 7.65394975499439E+0001 7.65940351194222E+0001 - 7.66485973252747E+0001 7.67031841749267E+0001 7.67577956758087E+0001 7.68124318353402E+0001 7.68670926609466E+0001 - 7.69217781600637E+0001 7.69764883401167E+0001 7.70312232085362E+0001 7.70859827727509E+0001 7.71407670401986E+0001 - 7.71955760183118E+0001 7.72504097145193E+0001 7.73052681362751E+0001 7.73601512909918E+0001 7.74150591861307E+0001 - 7.74699918291208E+0001 7.75249492274015E+0001 7.75799313884199E+0001 7.76349383196157E+0001 7.76899700284339E+0001 - 7.77450265223197E+0001 7.78001078087254E+0001 7.78552138950927E+0001 7.79103447888720E+0001 7.79655004975139E+0001 - 7.80206810284708E+0001 7.80758863891988E+0001 7.81311165871393E+0001 7.81863716297648E+0001 7.82416515245150E+0001 - 7.82969562788585E+0001 7.83522859002533E+0001 7.84076403961462E+0001 7.84630197740134E+0001 7.85184240413073E+0001 - 7.85738532054929E+0001 7.86293072740391E+0001 7.86847862544073E+0001 7.87402901540627E+0001 7.87958189804795E+0001 - 7.88513727411173E+0001 7.89069514434523E+0001 7.89625550949586E+0001 7.90181837030996E+0001 7.90738372753567E+0001 - 7.91295158191970E+0001 7.91852193421037E+0001 7.92409478515492E+0001 7.92967013550169E+0001 7.93524798599810E+0001 - 7.94082833739267E+0001 7.94641119043281E+0001 7.95199654586777E+0001 7.95758440444461E+0001 7.96317476691383E+0001 - 7.96876763402233E+0001 7.97436300651971E+0001 7.97996088515447E+0001 7.98556127067550E+0001 7.99116416383258E+0001 - 7.99676956537369E+0001 8.00237747604988E+0001 8.00798789660912E+0001 8.01360082780193E+0001 8.01921627037718E+0001 - 8.02483422508485E+0001 8.03045469267563E+0001 8.03607767389876E+0001 8.04170316950440E+0001 8.04733118024360E+0001 - 8.05296170686579E+0001 8.05859475012221E+0001 8.06423031076229E+0001 8.06986838953835E+0001 8.07550898720056E+0001 - 8.08115210449923E+0001 8.08679774218617E+0001 8.09244590101298E+0001 8.09809658172999E+0001 8.10374978508862E+0001 - 8.10940551184121E+0001 8.11506376273901E+0001 8.12072453853398E+0001 8.12638783997736E+0001 8.13205366782186E+0001 - 8.13772202281980E+0001 8.14339290572298E+0001 8.14906631728336E+0001 8.15474225825401E+0001 8.16042072938744E+0001 - 8.16610173143617E+0001 8.17178526515327E+0001 8.17747133129142E+0001 8.18315993060405E+0001 8.18885106384441E+0001 - 8.19454473176465E+0001 8.20024093511911E+0001 8.20593967466193E+0001 8.21164095114509E+0001 8.21734476532365E+0001 - 8.22305111795158E+0001 8.22876000978213E+0001 8.23447144156926E+0001 8.24018541406749E+0001 8.24590192803116E+0001 - 8.25162098421551E+0001 8.25734258337434E+0001 8.26306672626197E+0001 8.26879341363365E+0001 8.27452264624462E+0001 - 8.28025442484941E+0001 8.28598875020325E+0001 8.29172562306121E+0001 8.29746504418035E+0001 8.30320701431301E+0001 - 8.30895153421734E+0001 8.31469860464858E+0001 8.32044822636199E+0001 8.32620040011352E+0001 8.33195512666025E+0001 - 8.33771240675705E+0001 8.34347224116100E+0001 8.34923463062914E+0001 8.35499957591674E+0001 8.36076707778120E+0001 - 8.36653713697888E+0001 8.37230975426683E+0001 8.37808493040211E+0001 8.38386266614143E+0001 8.38964296224367E+0001 - 8.39542581946480E+0001 8.40121123856188E+0001 8.40699922029380E+0001 8.41278976541689E+0001 8.41858287469004E+0001 - 8.42437854887066E+0001 8.43017678871729E+0001 8.43597759498771E+0001 8.44178096844043E+0001 8.44758690983326E+0001 - 8.45339541992544E+0001 8.45920649947548E+0001 8.46502014924154E+0001 8.47083636998323E+0001 8.47665516245943E+0001 - 8.48247652742975E+0001 8.48830046565163E+0001 8.49412697788612E+0001 8.49995606489210E+0001 8.50578772742883E+0001 - 8.51162196625628E+0001 8.51745878213478E+0001 8.52329817582322E+0001 8.52914014808266E+0001 8.53498469967199E+0001 - 8.54083183135299E+0001 8.54668154388455E+0001 8.55253383802810E+0001 8.55838871454471E+0001 8.56424617419361E+0001 - 8.57010621773734E+0001 8.57596884593586E+0001 8.58183405954987E+0001 8.58770185934191E+0001 8.59357224607193E+0001 - 8.59944522050246E+0001 8.60532078339384E+0001 8.61119893550931E+0001 8.61707967760922E+0001 8.62296301045608E+0001 - 8.62884893481205E+0001 8.63473745143856E+0001 8.64062856109922E+0001 8.64652226455510E+0001 8.65241856256871E+0001 - 8.65831745590367E+0001 8.66421894532214E+0001 8.67012303158554E+0001 8.67602971545966E+0001 8.68193899770595E+0001 - 8.68785087908727E+0001 8.69376536036689E+0001 8.69968244230986E+0001 8.70560212567798E+0001 8.71152441123450E+0001 - 8.71744929974520E+0001 8.72337679197226E+0001 8.72930688868000E+0001 8.73523959063423E+0001 8.74117489859673E+0001 - 8.74711281333257E+0001 8.75305333560682E+0001 8.75899646618345E+0001 8.76494220582863E+0001 8.77089055530414E+0001 - 8.77684151537760E+0001 8.78279508681371E+0001 8.78875127037645E+0001 8.79471006683198E+0001 8.80067147694535E+0001 - 8.80663550148165E+0001 8.81260214120812E+0001 8.81857139688800E+0001 8.82454326928964E+0001 8.83051775917738E+0001 - 8.83649486731774E+0001 8.84247459447688E+0001 8.84845694142168E+0001 8.85444190891867E+0001 8.86042949773255E+0001 - 8.86641970863166E+0001 8.87241254238252E+0001 8.87840799975202E+0001 8.88440608150740E+0001 8.89040678841484E+0001 - 8.89641012124266E+0001 8.90241608075848E+0001 8.90842466772738E+0001 8.91443588291986E+0001 8.92044972710173E+0001 - 8.92646620104242E+0001 8.93248530550882E+0001 8.93850704126780E+0001 8.94453140909027E+0001 8.95055840974273E+0001 - 8.95658804399427E+0001 8.96262031261285E+0001 8.96865521636792E+0001 8.97469275602743E+0001 8.98073293236012E+0001 - 8.98677574613575E+0001 8.99282119812378E+0001 8.99886928909182E+0001 9.00492001981074E+0001 9.01097339104927E+0001 - 9.01702940357682E+0001 9.02308805816392E+0001 9.02914935557965E+0001 9.03521329659379E+0001 9.04127988197761E+0001 - 9.04734911250016E+0001 9.05342098893088E+0001 9.05949551204285E+0001 9.06557268260331E+0001 9.07165250138569E+0001 - 9.07773496915906E+0001 9.08382008669469E+0001 9.08990785476381E+0001 9.09599827413840E+0001 9.10209134558754E+0001 - 9.10818706988284E+0001 9.11428544779737E+0001 9.12038648010202E+0001 9.12649016756768E+0001 9.13259651096669E+0001 - 9.13870551107175E+0001 9.14481716865375E+0001 9.15093148448541E+0001 9.15704845933833E+0001 9.16316809398559E+0001 - 9.16929038919916E+0001 9.17541534575139E+0001 9.18154296441608E+0001 9.18767324596520E+0001 9.19380619117219E+0001 - 9.19994180080939E+0001 9.20608007565097E+0001 9.21222101646927E+0001 9.21836462403917E+0001 9.22451089913229E+0001 - 9.23065984252280E+0001 9.23681145498522E+0001 9.24296573729298E+0001 9.24912269022134E+0001 9.25528231454191E+0001 - 9.26144461103031E+0001 9.26760958046034E+0001 9.27377722360798E+0001 9.27994754124593E+0001 9.28612053415018E+0001 - 9.29229620309452E+0001 9.29847454885494E+0001 9.30465557220632E+0001 9.31083927392247E+0001 9.31702565477972E+0001 - 9.32321471555406E+0001 9.32940645701965E+0001 9.33560087995356E+0001 9.34179798512960E+0001 9.34799777332628E+0001 - 9.35420024531668E+0001 9.36040540187896E+0001 9.36661324378802E+0001 9.37282377182128E+0001 9.37903698675509E+0001 - 9.38525288936544E+0001 9.39147148042903E+0001 9.39769276072220E+0001 9.40391673102313E+0001 9.41014339210778E+0001 - 9.41637274475434E+0001 9.42260478973876E+0001 9.42883952783923E+0001 9.43507695983280E+0001 9.44131708649766E+0001 - 9.44755990861122E+0001 9.45380542695093E+0001 9.46005364229532E+0001 9.46630455542181E+0001 9.47255816710895E+0001 - 9.47881447813634E+0001 9.48507348927997E+0001 9.49133520131982E+0001 9.49759961503405E+0001 9.50386673120156E+0001 - 9.51013655060233E+0001 9.51640907401306E+0001 9.52268430221411E+0001 9.52896223598545E+0001 9.53524287610562E+0001 - 9.54152622335387E+0001 9.54781227850981E+0001 9.55410104235380E+0001 9.56039251566544E+0001 9.56668669922510E+0001 - 9.57298359381093E+0001 9.57928320020401E+0001 9.58558551918613E+0001 9.59189055153583E+0001 9.59819829803491E+0001 - 9.60450875946262E+0001 9.61082193660113E+0001 9.61713783023006E+0001 9.62345644113157E+0001 9.62977777008637E+0001 - 9.63610181787408E+0001 9.64242858527832E+0001 9.64875807307908E+0001 9.65509028205925E+0001 9.66142521299844E+0001 - 9.66776286668137E+0001 9.67410324388766E+0001 9.68044634539874E+0001 9.68679217199897E+0001 9.69314072446869E+0001 - 9.69949200359297E+0001 9.70584601015107E+0001 9.71220274492662E+0001 9.71856220870322E+0001 9.72492440226306E+0001 - 9.73128932639011E+0001 9.73765698186508E+0001 9.74402736947413E+0001 9.75040048999799E+0001 9.75677634422100E+0001 - 9.76315493292750E+0001 9.76953625690003E+0001 9.77592031692329E+0001 9.78230711378055E+0001 9.78869664825543E+0001 - 9.79508892113263E+0001 9.80148393319723E+0001 9.80788168523213E+0001 9.81428217802168E+0001 9.82068541235094E+0001 - 9.82709138900573E+0001 9.83350010877002E+0001 9.83991157242708E+0001 9.84632578076416E+0001 9.85274273456707E+0001 - 9.85916243461834E+0001 9.86558488170449E+0001 9.87201007661315E+0001 9.87843802012576E+0001 9.88486871303212E+0001 - 9.89130215611549E+0001 9.89773835016385E+0001 9.90417729596047E+0001 9.91061899429515E+0001 9.91706344595077E+0001 - 9.92351065171606E+0001 9.92996061237718E+0001 9.93641332871994E+0001 9.94286880153122E+0001 9.94932703159866E+0001 - 9.95578801970987E+0001 9.96225176664993E+0001 9.96871827320792E+0001 9.97518754017074E+0001 9.98165956832490E+0001 - 9.98813435845987E+0001 9.99461191136106E+0001 1.00010922278183E+0002 1.00075753086195E+0002 1.00140611545510E+0002 - 1.00205497664017E+0002 1.00270411449615E+0002 1.00335352910158E+0002 1.00400322053563E+0002 1.00465318887701E+0002 - 1.00530343420450E+0002 1.00595395659722E+0002 1.00660475613392E+0002 1.00725583289342E+0002 1.00790718695483E+0002 - 1.00855881839710E+0002 1.00921072729903E+0002 1.00986291373963E+0002 1.01051537779796E+0002 1.01116811955289E+0002 - 1.01182113908333E+0002 1.01247443646847E+0002 1.01312801178733E+0002 1.01378186511872E+0002 1.01443599654187E+0002 - 1.01509040613582E+0002 1.01574509397964E+0002 1.01640006015219E+0002 1.01705530473293E+0002 1.01771082780065E+0002 - 1.01836662943456E+0002 1.01902270971382E+0002 1.01967906871741E+0002 1.02033570652478E+0002 1.02099262321480E+0002 - 1.02164981886668E+0002 1.02230729355978E+0002 1.02296504737310E+0002 1.02362308038584E+0002 1.02428139267740E+0002 - 1.02493998432677E+0002 1.02559885541344E+0002 1.02625800601643E+0002 1.02691743621504E+0002 1.02757714608858E+0002 - 1.02823713571655E+0002 1.02889740517788E+0002 1.02955795455211E+0002 1.03021878391839E+0002 1.03087989335628E+0002 - 1.03154128294489E+0002 1.03220295276372E+0002 1.03286490289207E+0002 1.03352713340937E+0002 1.03418964439493E+0002 - 1.03485243592818E+0002 1.03551550808857E+0002 1.03617886095555E+0002 1.03684249460846E+0002 1.03750640912680E+0002 - 1.03817060458997E+0002 1.03883508107755E+0002 1.03949983866892E+0002 1.04016487744371E+0002 1.04083019748122E+0002 - 1.04149579886106E+0002 1.04216168166287E+0002 1.04282784596602E+0002 1.04349429185018E+0002 1.04416101939485E+0002 - 1.04482802867958E+0002 1.04549531978402E+0002 1.04616289278776E+0002 1.04683074777040E+0002 1.04749888481157E+0002 - 1.04816730399077E+0002 1.04883600538785E+0002 1.04950498908248E+0002 1.05017425515405E+0002 1.05084380368240E+0002 - 1.05151363474738E+0002 1.05218374842847E+0002 1.05285414480546E+0002 1.05352482395803E+0002 1.05419578596611E+0002 - 1.05486703090915E+0002 1.05553855886708E+0002 1.05621036991971E+0002 1.05688246414676E+0002 1.05755484162808E+0002 - 1.05822750244340E+0002 1.05890044667256E+0002 1.05957367439532E+0002 1.06024718569176E+0002 1.06092098064153E+0002 - 1.06159505932442E+0002 1.06226942182056E+0002 1.06294406820969E+0002 1.06361899857165E+0002 1.06429421298657E+0002 - 1.06496971153403E+0002 1.06564549429429E+0002 1.06632156134714E+0002 1.06699791277253E+0002 1.06767454865057E+0002 - 1.06835146906109E+0002 1.06902867408414E+0002 1.06970616379974E+0002 1.07038393828785E+0002 1.07106199762856E+0002 - 1.07174034190189E+0002 1.07241897118783E+0002 1.07309788556656E+0002 1.07377708511816E+0002 1.07445656992251E+0002 - 1.07513634005994E+0002 1.07581639561034E+0002 1.07649673665404E+0002 1.07717736327114E+0002 1.07785827554165E+0002 - 1.07853947354586E+0002 1.07922095736390E+0002 1.07990272707589E+0002 1.08058478276208E+0002 1.08126712450266E+0002 - 1.08194975237787E+0002 1.08263266646790E+0002 1.08331586685300E+0002 1.08399935361336E+0002 1.08468312682936E+0002 - 1.08536718658120E+0002 1.08605153294920E+0002 1.08673616601361E+0002 1.08742108585473E+0002 1.08810629255283E+0002 - 1.08879178618844E+0002 1.08947756684174E+0002 1.09016363459311E+0002 1.09084998952294E+0002 1.09153663171153E+0002 - 1.09222356123948E+0002 1.09291077818688E+0002 1.09359828263433E+0002 1.09428607466234E+0002 1.09497415435114E+0002 - 1.09566252178119E+0002 1.09635117703324E+0002 1.09704012018737E+0002 1.09772935132423E+0002 1.09841887052440E+0002 - 1.09910867786831E+0002 1.09979877343641E+0002 1.10048915730931E+0002 1.10117982956748E+0002 1.10187079029157E+0002 - 1.10256203956214E+0002 1.10325357745972E+0002 1.10394540406483E+0002 1.10463751945812E+0002 1.10532992372023E+0002 - 1.10602261693184E+0002 1.10671559917351E+0002 1.10740887052576E+0002 1.10810243106931E+0002 1.10879628088507E+0002 - 1.10949042005348E+0002 1.11018484865519E+0002 1.11087956677110E+0002 1.11157457448171E+0002 1.11226987186793E+0002 - 1.11296545901048E+0002 1.11366133599003E+0002 1.11435750288725E+0002 1.11505395978307E+0002 1.11575070675826E+0002 - 1.11644774389358E+0002 1.11714507126987E+0002 1.11784268896786E+0002 1.11854059706845E+0002 1.11923879565252E+0002 - 1.11993728480083E+0002 1.12063606459429E+0002 1.12133513511380E+0002 1.12203449644021E+0002 1.12273414865445E+0002 - 1.12343409183740E+0002 1.12413432606998E+0002 1.12483485143326E+0002 1.12553566800797E+0002 1.12623677587515E+0002 - 1.12693817511582E+0002 1.12763986581092E+0002 1.12834184804156E+0002 1.12904412188843E+0002 1.12974668743292E+0002 - 1.13044954475593E+0002 1.13115269393845E+0002 1.13185613506146E+0002 1.13255986820615E+0002 1.13326389345347E+0002 - 1.13396821088470E+0002 1.13467282058081E+0002 1.13537772262290E+0002 1.13608291709220E+0002 1.13678840406963E+0002 - 1.13749418363659E+0002 1.13820025587399E+0002 1.13890662086323E+0002 1.13961327868528E+0002 1.14032022942155E+0002 - 1.14102747315304E+0002 1.14173500996097E+0002 1.14244283992677E+0002 1.14315096313148E+0002 1.14385937965642E+0002 - 1.14456808958286E+0002 1.14527709299211E+0002 1.14598638996540E+0002 1.14669598058393E+0002 1.14740586492924E+0002 - 1.14811604308237E+0002 1.14882651512496E+0002 1.14953728113796E+0002 1.15024834120315E+0002 1.15095969540165E+0002 - 1.15167134381488E+0002 1.15238328652423E+0002 1.15309552361104E+0002 1.15380805515691E+0002 1.15452088124300E+0002 - 1.15523400195092E+0002 1.15594741736218E+0002 1.15666112755803E+0002 1.15737513262014E+0002 1.15808943262985E+0002 - 1.15880402766870E+0002 1.15951891781813E+0002 1.16023410315978E+0002 1.16094958377514E+0002 1.16166535974574E+0002 - 1.16238143115315E+0002 1.16309779807877E+0002 1.16381446060444E+0002 1.16453141881153E+0002 1.16524867278170E+0002 - 1.16596622259672E+0002 1.16668406833796E+0002 1.16740221008727E+0002 1.16812064792615E+0002 1.16883938193626E+0002 - 1.16955841219933E+0002 1.17027773879701E+0002 1.17099736181106E+0002 1.17171728132310E+0002 1.17243749741472E+0002 - 1.17315801016793E+0002 1.17387881966424E+0002 1.17459992598545E+0002 1.17532132921343E+0002 1.17604302943000E+0002 - 1.17676502671663E+0002 1.17748732115534E+0002 1.17820991282798E+0002 1.17893280181626E+0002 1.17965598820203E+0002 - 1.18037947206707E+0002 1.18110325349345E+0002 1.18182733256289E+0002 1.18255170935710E+0002 1.18327638395829E+0002 - 1.18400135644817E+0002 1.18472662690863E+0002 1.18545219542167E+0002 1.18617806206941E+0002 1.18690422693325E+0002 - 1.18763069009568E+0002 1.18835745163854E+0002 1.18908451164363E+0002 1.18981187019315E+0002 1.19053952736900E+0002 - 1.19126748325321E+0002 1.19199573792786E+0002 1.19272429147498E+0002 1.19345314397647E+0002 1.19418229551451E+0002 - 1.19491174617131E+0002 1.19564149602872E+0002 1.19637154516895E+0002 1.19710189367415E+0002 1.19783254162637E+0002 - 1.19856348910772E+0002 1.19929473620039E+0002 1.20002628298654E+0002 1.20075812954837E+0002 1.20149027596802E+0002 - 1.20222272232767E+0002 1.20295546870947E+0002 1.20368851519575E+0002 1.20442186186868E+0002 1.20515550881056E+0002 - 1.20588945610354E+0002 1.20662370382993E+0002 1.20735825207189E+0002 1.20809310091186E+0002 1.20882825043208E+0002 - 1.20956370071497E+0002 1.21029945184258E+0002 1.21103550389751E+0002 1.21177185696193E+0002 1.21250851111821E+0002 - 1.21324546644882E+0002 1.21398272303617E+0002 1.21472028096239E+0002 1.21545814031014E+0002 1.21619630116169E+0002 - 1.21693476359949E+0002 1.21767352770610E+0002 1.21841259356377E+0002 1.21915196125508E+0002 1.21989163086243E+0002 - 1.22063160246838E+0002 1.22137187615535E+0002 1.22211245200593E+0002 1.22285333010255E+0002 1.22359451052776E+0002 - 1.22433599336411E+0002 1.22507777869417E+0002 1.22581986660043E+0002 1.22656225716560E+0002 1.22730495047224E+0002 - 1.22804794660281E+0002 1.22879124564002E+0002 1.22953484766640E+0002 1.23027875276475E+0002 1.23102296101758E+0002 - 1.23176747250759E+0002 1.23251228731755E+0002 1.23325740552983E+0002 1.23400282722752E+0002 1.23474855249300E+0002 - 1.23549458140914E+0002 1.23624091405858E+0002 1.23698755052424E+0002 1.23773449088876E+0002 1.23848173523474E+0002 - 1.23922928364521E+0002 1.23997713620276E+0002 1.24072529299035E+0002 1.24147375409062E+0002 1.24222251958650E+0002 - 1.24297158956080E+0002 1.24372096409631E+0002 1.24447064327603E+0002 1.24522062718260E+0002 1.24597091589908E+0002 - 1.24672150950831E+0002 1.24747240809319E+0002 1.24822361173661E+0002 1.24897512052146E+0002 1.24972693453066E+0002 - 1.25047905384737E+0002 1.25123147855432E+0002 1.25198420873453E+0002 1.25273724447102E+0002 1.25349058584673E+0002 - 1.25424423294472E+0002 1.25499818584805E+0002 1.25575244463965E+0002 1.25650700940259E+0002 1.25726188021995E+0002 - 1.25801705717469E+0002 1.25877254035000E+0002 1.25952832982897E+0002 1.26028442569459E+0002 1.26104082803009E+0002 - 1.26179753691849E+0002 1.26255455244303E+0002 1.26331187468669E+0002 1.26406950373293E+0002 1.26482743966451E+0002 - 1.26558568256488E+0002 1.26634423251722E+0002 1.26710308960464E+0002 1.26786225391035E+0002 1.26862172551776E+0002 - 1.26938150450980E+0002 1.27014159096997E+0002 1.27090198498146E+0002 1.27166268662738E+0002 1.27242369599127E+0002 - 1.27318501315639E+0002 1.27394663820588E+0002 1.27470857122327E+0002 1.27547081229160E+0002 1.27623336149437E+0002 - 1.27699621891515E+0002 1.27775938463699E+0002 1.27852285874345E+0002 1.27928664131766E+0002 1.28005073244338E+0002 - 1.28081513220382E+0002 1.28157984068239E+0002 1.28234485796253E+0002 1.28311018412795E+0002 1.28387581926159E+0002 - 1.28464176344740E+0002 1.28540801676856E+0002 1.28617457930872E+0002 1.28694145115132E+0002 1.28770863238002E+0002 - 1.28847612307804E+0002 1.28924392332916E+0002 1.29001203321692E+0002 1.29078045282487E+0002 1.29154918223652E+0002 - 1.29231822153546E+0002 1.29308757080529E+0002 1.29385723012980E+0002 1.29462719959225E+0002 1.29539747927662E+0002 - 1.29616806926639E+0002 1.29693896964516E+0002 1.29771018049676E+0002 1.29848170190471E+0002 1.29925353395280E+0002 - 1.30002567672476E+0002 1.30079813030417E+0002 1.30157089477500E+0002 1.30234397022068E+0002 1.30311735672509E+0002 - 1.30389105437211E+0002 1.30466506324530E+0002 1.30543938342864E+0002 1.30621401500575E+0002 1.30698895806057E+0002 - 1.30776421267685E+0002 1.30853977893847E+0002 1.30931565692921E+0002 1.31009184673294E+0002 1.31086834843361E+0002 - 1.31164516211495E+0002 1.31242228786101E+0002 1.31319972575555E+0002 1.31397747588253E+0002 1.31475553832592E+0002 - 1.31553391316949E+0002 1.31631260049740E+0002 1.31709160039361E+0002 1.31787091294183E+0002 1.31865053822628E+0002 - 1.31943047633096E+0002 1.32021072733969E+0002 1.32099129133669E+0002 1.32177216840584E+0002 1.32255335863116E+0002 - 1.32333486209685E+0002 1.32411667888689E+0002 1.32489880908535E+0002 1.32568125277630E+0002 1.32646401004393E+0002 - 1.32724708097219E+0002 1.32803046564532E+0002 1.32881416414748E+0002 1.32959817656276E+0002 1.33038250297530E+0002 - 1.33116714346917E+0002 1.33195209812882E+0002 1.33273736703813E+0002 1.33352295028159E+0002 1.33430884794314E+0002 - 1.33509506010727E+0002 1.33588158685805E+0002 1.33666842827981E+0002 1.33745558445666E+0002 1.33824305547296E+0002 - 1.33903084141319E+0002 1.33981894236131E+0002 1.34060735840187E+0002 1.34139608961905E+0002 1.34218513609732E+0002 - 1.34297449792080E+0002 1.34376417517407E+0002 1.34455416794142E+0002 1.34534447630715E+0002 1.34613510035571E+0002 - 1.34692604017149E+0002 1.34771729583903E+0002 1.34850886744247E+0002 1.34930075506658E+0002 1.35009295879550E+0002 - 1.35088547871379E+0002 1.35167831490609E+0002 1.35247146745660E+0002 1.35326493645010E+0002 1.35405872197087E+0002 - 1.35485282410347E+0002 1.35564724293254E+0002 1.35644197854235E+0002 1.35723703101783E+0002 1.35803240044330E+0002 - 1.35882808690352E+0002 1.35962409048276E+0002 1.36042041126595E+0002 1.36121704933739E+0002 1.36201400478207E+0002 - 1.36281127768427E+0002 1.36360886812876E+0002 1.36440677620034E+0002 1.36520500198349E+0002 1.36600354556289E+0002 - 1.36680240702335E+0002 1.36760158644953E+0002 1.36840108392607E+0002 1.36920089953783E+0002 1.37000103336937E+0002 - 1.37080148550562E+0002 1.37160225603118E+0002 1.37240334503087E+0002 1.37320475258970E+0002 1.37400647879207E+0002 - 1.37480852372308E+0002 1.37561088746737E+0002 1.37641357010998E+0002 1.37721657173555E+0002 1.37801989242889E+0002 - 1.37882353227520E+0002 1.37962749135910E+0002 1.38043176976546E+0002 1.38123636757915E+0002 1.38204128488531E+0002 - 1.38284652176862E+0002 1.38365207831419E+0002 1.38445795460684E+0002 1.38526415073167E+0002 1.38607066677348E+0002 - 1.38687750281730E+0002 1.38768465894827E+0002 1.38849213525111E+0002 1.38929993181111E+0002 1.39010804871319E+0002 - 1.39091648604230E+0002 1.39172524388370E+0002 1.39253432232232E+0002 1.39334372144316E+0002 1.39415344133140E+0002 - 1.39496348207223E+0002 1.39577384375061E+0002 1.39658452645162E+0002 1.39739553026051E+0002 1.39820685526254E+0002 - 1.39901850154260E+0002 1.39983046918602E+0002 1.40064275827786E+0002 1.40145536890344E+0002 1.40226830114796E+0002 - 1.40308155509647E+0002 1.40389513083435E+0002 1.40470902844689E+0002 1.40552324801916E+0002 1.40633778963645E+0002 - 1.40715265338415E+0002 1.40796783934740E+0002 1.40878334761168E+0002 1.40959917826218E+0002 1.41041533138410E+0002 - 1.41123180706305E+0002 1.41204860538408E+0002 1.41286572643286E+0002 1.41368317029432E+0002 1.41450093705440E+0002 - 1.41531902679795E+0002 1.41613743961072E+0002 1.41695617557794E+0002 1.41777523478508E+0002 1.41859461731758E+0002 - 1.41941432326093E+0002 1.42023435270046E+0002 1.42105470572187E+0002 1.42187538241051E+0002 1.42269638285168E+0002 - 1.42351770713121E+0002 1.42433935533449E+0002 1.42516132754699E+0002 1.42598362385426E+0002 1.42680624434197E+0002 - 1.42762918909542E+0002 1.42845245820048E+0002 1.42927605174264E+0002 1.43009996980742E+0002 1.43092421248050E+0002 - 1.43174877984748E+0002 1.43257367199396E+0002 1.43339888900569E+0002 1.43422443096806E+0002 1.43505029796710E+0002 - 1.43587649008827E+0002 1.43670300741735E+0002 1.43752985003990E+0002 1.43835701804175E+0002 1.43918451150879E+0002 - 1.44001233052630E+0002 1.44084047518048E+0002 1.44166894555681E+0002 1.44249774174121E+0002 1.44332686381942E+0002 - 1.44415631187716E+0002 1.44498608600035E+0002 1.44581618627479E+0002 1.44664661278635E+0002 1.44747736562062E+0002 - 1.44830844486380E+0002 1.44913985060146E+0002 1.44997158291975E+0002 1.45080364190431E+0002 1.45163602764122E+0002 - 1.45246874021621E+0002 1.45330177971540E+0002 1.45413514622465E+0002 1.45496883982974E+0002 1.45580286061693E+0002 - 1.45663720867204E+0002 1.45747188408099E+0002 1.45830688692979E+0002 1.45914221730454E+0002 1.45997787529119E+0002 - 1.46081386097572E+0002 1.46165017444426E+0002 1.46248681578290E+0002 1.46332378507763E+0002 1.46416108241428E+0002 - 1.46499870787942E+0002 1.46583666155886E+0002 1.46667494353875E+0002 1.46751355390523E+0002 1.46835249274423E+0002 - 1.46919176014231E+0002 1.47003135618528E+0002 1.47087128095936E+0002 1.47171153455100E+0002 1.47255211704596E+0002 - 1.47339302853074E+0002 1.47423426909150E+0002 1.47507583881441E+0002 1.47591773778575E+0002 1.47675996609178E+0002 - 1.47760252381864E+0002 1.47844541105274E+0002 1.47928862788031E+0002 1.48013217438765E+0002 1.48097605066108E+0002 - 1.48182025678685E+0002 1.48266479285143E+0002 1.48350965894104E+0002 1.48435485514205E+0002 1.48520038154085E+0002 - 1.48604623822379E+0002 1.48689242527726E+0002 1.48773894278776E+0002 1.48858579084157E+0002 1.48943296952515E+0002 - 1.49028047892498E+0002 1.49112831912738E+0002 1.49197649021895E+0002 1.49282499228608E+0002 1.49367382541528E+0002 - 1.49452298969311E+0002 1.49537248520592E+0002 1.49622231204023E+0002 1.49707247028284E+0002 1.49792296001990E+0002 - 1.49877378133828E+0002 1.49962493432442E+0002 1.50047641906483E+0002 1.50132823564614E+0002 1.50218038415500E+0002 - 1.50303286467795E+0002 1.50388567730166E+0002 1.50473882211267E+0002 1.50559229919778E+0002 1.50644610864354E+0002 - 1.50730025053665E+0002 1.50815472496368E+0002 1.50900953201148E+0002 1.50986467176670E+0002 1.51072014431604E+0002 - 1.51157594974618E+0002 1.51243208814398E+0002 1.51328855959597E+0002 1.51414536418906E+0002 1.51500250201010E+0002 - 1.51585997314582E+0002 1.51671777768279E+0002 1.51757591570808E+0002 1.51843438730848E+0002 1.51929319257077E+0002 - 1.52015233158170E+0002 1.52101180442831E+0002 1.52187161119728E+0002 1.52273175197570E+0002 1.52359222685016E+0002 - 1.52445303590779E+0002 1.52531417923539E+0002 1.52617565691999E+0002 1.52703746904845E+0002 1.52789961570783E+0002 - 1.52876209698483E+0002 1.52962491296665E+0002 1.53048806374019E+0002 1.53135154939238E+0002 1.53221537001038E+0002 - 1.53307952568106E+0002 1.53394401649151E+0002 1.53480884252880E+0002 1.53567400387998E+0002 1.53653950063192E+0002 - 1.53740533287193E+0002 1.53827150068708E+0002 1.53913800416423E+0002 1.54000484339078E+0002 1.54087201845377E+0002 - 1.54173952944020E+0002 1.54260737643734E+0002 1.54347555953220E+0002 1.54434407881214E+0002 1.54521293436428E+0002 - 1.54608212627576E+0002 1.54695165463370E+0002 1.54782151952550E+0002 1.54869172103827E+0002 1.54956225925936E+0002 - 1.55043313427585E+0002 1.55130434617506E+0002 1.55217589504431E+0002 1.55304778097088E+0002 1.55392000404201E+0002 - 1.55479256434508E+0002 1.55566546196729E+0002 1.55653869699607E+0002 1.55741226951868E+0002 1.55828617962266E+0002 - 1.55916042739515E+0002 1.56003501292358E+0002 1.56090993629543E+0002 1.56178519759796E+0002 1.56266079691875E+0002 - 1.56353673434503E+0002 1.56441300996452E+0002 1.56528962386430E+0002 1.56616657613213E+0002 1.56704386685524E+0002 - 1.56792149612131E+0002 1.56879946401776E+0002 1.56967777063197E+0002 1.57055641605173E+0002 1.57143540036428E+0002 - 1.57231472365725E+0002 1.57319438601826E+0002 1.57407438753486E+0002 1.57495472829465E+0002 1.57583540838506E+0002 - 1.57671642789388E+0002 1.57759778690852E+0002 1.57847948551680E+0002 1.57936152380618E+0002 1.58024390186445E+0002 - 1.58112661977921E+0002 1.58200967763805E+0002 1.58289307552870E+0002 1.58377681353883E+0002 1.58466089175618E+0002 - 1.58554531026854E+0002 1.58643006916340E+0002 1.58731516852884E+0002 1.58820060845217E+0002 1.58908638902158E+0002 - 1.58997251032455E+0002 1.59085897244895E+0002 1.59174577548260E+0002 1.59263291951342E+0002 1.59352040462894E+0002 - 1.59440823091718E+0002 1.59529639846594E+0002 1.59618490736309E+0002 1.59707375769649E+0002 1.59796294955402E+0002 - 1.59885248302355E+0002 1.59974235819289E+0002 1.60063257515019E+0002 1.60152313398321E+0002 1.60241403477987E+0002 - 1.60330527762810E+0002 1.60419686261590E+0002 1.60508878983128E+0002 1.60598105936209E+0002 1.60687367129656E+0002 - 1.60776662572243E+0002 1.60865992272786E+0002 1.60955356240083E+0002 1.61044754482940E+0002 1.61134187010171E+0002 - 1.61223653830555E+0002 1.61313154952932E+0002 1.61402690386090E+0002 1.61492260138843E+0002 1.61581864219992E+0002 - 1.61671502638372E+0002 1.61761175402782E+0002 1.61850882522038E+0002 1.61940624004954E+0002 1.62030399860345E+0002 - 1.62120210097037E+0002 1.62210054723848E+0002 1.62299933749571E+0002 1.62389847183069E+0002 1.62479795033145E+0002 - 1.62569777308614E+0002 1.62659794018320E+0002 1.62749845171078E+0002 1.62839930775710E+0002 1.62930050841045E+0002 - 1.63020205375917E+0002 1.63110394389158E+0002 1.63200617889612E+0002 1.63290875886087E+0002 1.63381168387426E+0002 - 1.63471495402468E+0002 1.63561856940050E+0002 1.63652253009015E+0002 1.63742683618180E+0002 1.63833148776408E+0002 - 1.63923648492524E+0002 1.64014182775376E+0002 1.64104751633811E+0002 1.64195355076678E+0002 1.64285993112808E+0002 - 1.64376665751057E+0002 1.64467373000272E+0002 1.64558114869291E+0002 1.64648891366985E+0002 1.64739702502200E+0002 - 1.64830548283782E+0002 1.64921428720576E+0002 1.65012343821443E+0002 1.65103293595261E+0002 1.65194278050865E+0002 - 1.65285297197112E+0002 1.65376351042865E+0002 1.65467439597000E+0002 1.65558562868358E+0002 1.65649720865815E+0002 - 1.65740913598227E+0002 1.65832141074461E+0002 1.65923403303397E+0002 1.66014700293879E+0002 1.66106032054788E+0002 - 1.66197398595003E+0002 1.66288799923386E+0002 1.66380236048812E+0002 1.66471706980141E+0002 1.66563212726265E+0002 - 1.66654753296054E+0002 1.66746328698391E+0002 1.66837938942135E+0002 1.66929584036196E+0002 1.67021263989427E+0002 - 1.67112978810717E+0002 1.67204728508950E+0002 1.67296513093021E+0002 1.67388332571805E+0002 1.67480186954192E+0002 - 1.67572076249064E+0002 1.67664000465302E+0002 1.67755959611812E+0002 1.67847953697485E+0002 1.67939982731205E+0002 - 1.68032046721859E+0002 1.68124145678357E+0002 1.68216279609591E+0002 1.68308448524440E+0002 1.68400652431832E+0002 - 1.68492891340647E+0002 1.68585165259792E+0002 1.68677474198161E+0002 1.68769818164656E+0002 1.68862197168193E+0002 - 1.68954611217658E+0002 1.69047060321987E+0002 1.69139544490048E+0002 1.69232063730782E+0002 1.69324618053084E+0002 - 1.69417207465871E+0002 1.69509831978045E+0002 1.69602491598525E+0002 1.69695186336237E+0002 1.69787916200075E+0002 - 1.69880681198974E+0002 1.69973481341840E+0002 1.70066316637589E+0002 1.70159187095156E+0002 1.70252092723440E+0002 - 1.70345033531394E+0002 1.70438009527916E+0002 1.70531020721934E+0002 1.70624067122386E+0002 1.70717148738189E+0002 - 1.70810265578275E+0002 1.70903417651563E+0002 1.70996604967004E+0002 1.71089827533517E+0002 1.71183085360037E+0002 - 1.71276378455488E+0002 1.71369706828824E+0002 1.71463070488968E+0002 1.71556469444855E+0002 1.71649903705438E+0002 - 1.71743373279649E+0002 1.71836878176422E+0002 1.71930418404703E+0002 1.72023993973449E+0002 1.72117604891595E+0002 - 1.72211251168072E+0002 1.72304932811850E+0002 1.72398649831855E+0002 1.72492402237054E+0002 1.72586190036396E+0002 - 1.72680013238827E+0002 1.72773871853289E+0002 1.72867765888757E+0002 1.72961695354170E+0002 1.73055660258495E+0002 - 1.73149660610678E+0002 1.73243696419686E+0002 1.73337767694473E+0002 1.73431874444006E+0002 1.73526016677228E+0002 - 1.73620194403142E+0002 1.73714407630665E+0002 1.73808656368808E+0002 1.73902940626493E+0002 1.73997260412718E+0002 - 1.74091615736445E+0002 1.74186006606644E+0002 1.74280433032276E+0002 1.74374895022313E+0002 1.74469392585754E+0002 - 1.74563925731549E+0002 1.74658494468684E+0002 1.74753098806133E+0002 1.74847738752873E+0002 1.74942414317884E+0002 - 1.75037125510142E+0002 1.75131872338643E+0002 1.75226654812359E+0002 1.75321472940272E+0002 1.75416326731367E+0002 - 1.75511216194638E+0002 1.75606141339067E+0002 1.75701102173654E+0002 1.75796098707360E+0002 1.75891130949207E+0002 - 1.75986198908173E+0002 1.76081302593251E+0002 1.76176442013442E+0002 1.76271617177728E+0002 1.76366828095117E+0002 - 1.76462074774616E+0002 1.76557357225200E+0002 1.76652675455887E+0002 1.76748029475664E+0002 1.76843419293553E+0002 - 1.76938844918546E+0002 1.77034306359648E+0002 1.77129803625867E+0002 1.77225336726206E+0002 1.77320905669680E+0002 - 1.77416510465293E+0002 1.77512151122060E+0002 1.77607827648993E+0002 1.77703540055096E+0002 1.77799288349393E+0002 - 1.77895072540905E+0002 1.77990892638623E+0002 1.78086748651585E+0002 1.78182640588824E+0002 1.78278568459322E+0002 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 8.49898852027388E+0001 8.49468438709679E+0001 8.49038337885178E+0001 - 8.48608549125942E+0001 8.48179072004646E+0001 8.47749906094583E+0001 8.47321050969626E+0001 8.46892506204255E+0001 - 8.46464271373560E+0001 8.46036346053207E+0001 8.45608729819497E+0001 8.45181422249311E+0001 8.44754422920134E+0001 - 8.44327731410038E+0001 8.43901347297725E+0001 8.43475270162447E+0001 8.43049499584093E+0001 8.42624035143128E+0001 - 8.42198876420607E+0001 8.41774022998214E+0001 8.41349474458176E+0001 8.40925230383356E+0001 8.40501290357179E+0001 - 8.40077653963685E+0001 8.39654320787494E+0001 8.39231290413823E+0001 8.38808562428468E+0001 8.38386136417819E+0001 - 8.37964011968855E+0001 8.37542188669163E+0001 8.37120666106874E+0001 8.36699443870743E+0001 8.36278521550108E+0001 - 8.35857898734863E+0001 8.35437575015517E+0001 8.35017549983165E+0001 8.34597823229461E+0001 8.34178394346661E+0001 - 8.33759262927592E+0001 8.33340428565660E+0001 8.32921890854888E+0001 8.32503649389830E+0001 8.32085703765642E+0001 - 8.31668053578068E+0001 8.31250698423414E+0001 8.30833637898578E+0001 8.30416871601018E+0001 8.30000399128791E+0001 - 8.29584220080503E+0001 8.29168334055349E+0001 8.28752740653125E+0001 8.28337439474146E+0001 8.27922430119355E+0001 - 8.27507712190225E+0001 8.27093285288830E+0001 8.26679149017795E+0001 8.26265302980335E+0001 8.25851746780220E+0001 - 8.25438480021804E+0001 8.25025502309998E+0001 8.24612813250274E+0001 8.24200412448696E+0001 8.23788299511885E+0001 - 8.23376474047012E+0001 8.22964935661834E+0001 8.22553683964672E+0001 8.22142718564401E+0001 8.21732039070471E+0001 - 8.21321645092875E+0001 8.20911536242204E+0001 8.20501712129574E+0001 8.20092172366692E+0001 8.19682916565815E+0001 - 8.19273944339748E+0001 8.18865255301857E+0001 8.18456849066106E+0001 8.18048725246969E+0001 8.17640883459496E+0001 - 8.17233323319305E+0001 8.16826044442546E+0001 8.16419046445955E+0001 8.16012328946799E+0001 8.15605891562914E+0001 - 8.15199733912680E+0001 8.14793855615027E+0001 8.14388256289470E+0001 8.13982935556038E+0001 8.13577893035324E+0001 - 8.13173128348485E+0001 8.12768641117187E+0001 8.12364430963730E+0001 8.11960497510854E+0001 8.11556840381935E+0001 - 8.11153459200876E+0001 8.10750353592077E+0001 8.10347523180562E+0001 8.09944967591846E+0001 8.09542686452004E+0001 - 8.09140679387671E+0001 8.08738946026011E+0001 8.08337485994730E+0001 8.07936298922095E+0001 8.07535384436881E+0001 - 8.07134742168453E+0001 8.06734371746671E+0001 8.06334272801963E+0001 8.05934444965286E+0001 8.05534887868146E+0001 - 8.05135601142595E+0001 8.04736584421177E+0001 8.04337837337044E+0001 8.03939359523820E+0001 8.03541150615706E+0001 - 8.03143210247423E+0001 8.02745538054239E+0001 8.02348133671948E+0001 8.01950996736874E+0001 8.01554126885877E+0001 - 8.01157523756348E+0001 8.00761186986224E+0001 8.00365116213965E+0001 7.99969311078567E+0001 7.99573771219524E+0001 - 7.99178496276920E+0001 7.98783485891305E+0001 7.98388739703811E+0001 7.97994257356066E+0001 7.97600038490230E+0001 - 7.97206082749002E+0001 7.96812389775596E+0001 7.96418959213747E+0001 7.96025790707740E+0001 7.95632883902350E+0001 - 7.95240238442913E+0001 7.94847853975249E+0001 7.94455730145731E+0001 7.94063866601249E+0001 7.93672262989202E+0001 - 7.93280918957514E+0001 7.92889834154656E+0001 7.92499008229564E+0001 7.92108440831744E+0001 7.91718131611199E+0001 - 7.91328080218452E+0001 7.90938286304546E+0001 7.90548749521032E+0001 7.90159469519990E+0001 7.89770445954018E+0001 - 7.89381678476203E+0001 7.88993166740173E+0001 7.88604910400078E+0001 7.88216909110539E+0001 7.87829162526739E+0001 - 7.87441670304331E+0001 7.87054432099499E+0001 7.86667447568959E+0001 7.86280716369899E+0001 7.85894238160038E+0001 - 7.85508012597600E+0001 7.85122039341326E+0001 7.84736318050436E+0001 7.84350848384701E+0001 7.83965630004360E+0001 - 7.83580662570196E+0001 7.83195945743462E+0001 7.82811479185931E+0001 7.82427262559885E+0001 7.82043295528114E+0001 - 7.81659577753882E+0001 7.81276108901000E+0001 7.80892888633742E+0001 7.80509916616916E+0001 7.80127192515804E+0001 - 7.79744715996198E+0001 7.79362486724406E+0001 7.78980504367221E+0001 7.78598768591920E+0001 7.78217279066318E+0001 - 7.77836035458679E+0001 7.77455037437816E+0001 7.77074284672987E+0001 7.76693776833984E+0001 7.76313513591073E+0001 - 7.75933494615040E+0001 7.75553719577140E+0001 7.75174188149117E+0001 7.74794900003253E+0001 7.74415854812256E+0001 - 7.74037052249392E+0001 7.73658491988368E+0001 7.73280173703420E+0001 7.72902097069233E+0001 7.72524261761029E+0001 - 7.72146667454485E+0001 7.71769313825774E+0001 7.71392200551570E+0001 7.71015327309011E+0001 7.70638693775753E+0001 - 7.70262299629918E+0001 7.69886144550106E+0001 7.69510228215420E+0001 7.69134550305452E+0001 7.68759110500245E+0001 - 7.68383908480374E+0001 7.68008943926861E+0001 7.67634216521217E+0001 7.67259725945440E+0001 7.66885471882015E+0001 - 7.66511454013890E+0001 7.66137672024524E+0001 7.65764125597809E+0001 7.65390814418174E+0001 7.65017738170473E+0001 - 7.64644896540076E+0001 7.64272289212809E+0001 7.63899915874972E+0001 7.63527776213372E+0001 7.63155869915258E+0001 - 7.62784196668368E+0001 7.62412756160923E+0001 7.62041548081598E+0001 7.61670572119550E+0001 7.61299827964427E+0001 - 7.60929315306335E+0001 7.60559033835832E+0001 7.60188983243993E+0001 7.59819163222307E+0001 7.59449573462799E+0001 - 7.59080213657898E+0001 7.58711083500551E+0001 7.58342182684162E+0001 7.57973510902576E+0001 7.57605067850141E+0001 - 7.57236853221660E+0001 7.56868866712390E+0001 7.56501108018077E+0001 7.56133576834916E+0001 7.55766272859563E+0001 - 7.55399195789139E+0001 7.55032345321262E+0001 7.54665721153972E+0001 7.54299322985785E+0001 7.53933150515689E+0001 - 7.53567203443115E+0001 7.53201481467972E+0001 7.52835984290629E+0001 7.52470711611893E+0001 7.52105663133062E+0001 - 7.51740838555868E+0001 7.51376237582517E+0001 7.51011859915668E+0001 7.50647705258431E+0001 7.50283773314380E+0001 - 7.49920063787533E+0001 7.49556576382404E+0001 7.49193310803895E+0001 7.48830266757425E+0001 7.48467443948830E+0001 - 7.48104842084418E+0001 7.47742460870934E+0001 7.47380300015597E+0001 7.47018359226054E+0001 7.46656638210418E+0001 - 7.46295136677261E+0001 7.45933854335573E+0001 7.45572790894837E+0001 7.45211946064951E+0001 7.44851319556276E+0001 - 7.44490911079622E+0001 7.44130720346241E+0001 7.43770747067833E+0001 7.43410990956552E+0001 7.43051451724988E+0001 - 7.42692129086191E+0001 7.42333022753644E+0001 7.41974132441260E+0001 7.41615457863435E+0001 7.41256998734976E+0001 - 7.40898754771144E+0001 7.40540725687645E+0001 7.40182911200608E+0001 7.39825311026651E+0001 7.39467924882766E+0001 - 7.39110752486441E+0001 7.38753793555580E+0001 7.38397047808533E+0001 7.38040514964064E+0001 7.37684194741430E+0001 - 7.37328086860258E+0001 7.36972191040667E+0001 7.36616507003188E+0001 7.36261034468783E+0001 7.35905773158867E+0001 - 7.35550722795282E+0001 7.35195883100295E+0001 7.34841253796631E+0001 7.34486834607413E+0001 7.34132625256241E+0001 - 7.33778625467102E+0001 7.33424834964454E+0001 7.33071253473157E+0001 7.32717880718526E+0001 7.32364716426283E+0001 - 7.32011760322608E+0001 7.31659012134069E+0001 7.31306471587708E+0001 7.30954138410971E+0001 7.30602012331730E+0001 - 7.30250093078306E+0001 7.29898380379408E+0001 7.29546873964219E+0001 7.29195573562301E+0001 7.28844478903685E+0001 - 7.28493589718789E+0001 7.28142905738476E+0001 7.27792426694027E+0001 7.27442152317159E+0001 7.27092082339983E+0001 - 7.26742216495071E+0001 7.26392554515371E+0001 7.26043096134298E+0001 7.25693841085654E+0001 7.25344789103672E+0001 - 7.24995939923015E+0001 7.24647293278741E+0001 7.24298848906363E+0001 7.23950606541782E+0001 7.23602565921317E+0001 - 7.23254726781718E+0001 7.22907088860165E+0001 7.22559651894204E+0001 7.22212415621849E+0001 7.21865379781506E+0001 - 7.21518544111988E+0001 7.21171908352540E+0001 7.20825472242815E+0001 7.20479235522869E+0001 7.20133197933194E+0001 - 7.19787359214663E+0001 7.19441719108570E+0001 7.19096277356654E+0001 7.18751033701006E+0001 7.18405987884181E+0001 - 7.18061139649110E+0001 7.17716488739145E+0001 7.17372034898048E+0001 7.17027777869987E+0001 7.16683717399528E+0001 - 7.16339853231667E+0001 7.15996185111788E+0001 7.15652712785683E+0001 7.15309435999553E+0001 7.14966354499996E+0001 - 7.14623468034042E+0001 7.14280776349102E+0001 7.13938279192976E+0001 7.13595976313894E+0001 7.13253867460493E+0001 - 7.12911952381795E+0001 7.12570230827205E+0001 7.12228702546585E+0001 7.11887367290144E+0001 7.11546224808523E+0001 - 7.11205274852740E+0001 7.10864517174234E+0001 7.10523951524831E+0001 7.10183577656753E+0001 7.09843395322634E+0001 - 7.09503404275489E+0001 7.09163604268724E+0001 7.08823995056174E+0001 7.08484576392040E+0001 7.08145348030932E+0001 - 7.07806309727833E+0001 7.07467461238160E+0001 7.07128802317687E+0001 7.06790332722603E+0001 7.06452052209478E+0001 - 7.06113960535290E+0001 7.05776057457387E+0001 7.05438342733518E+0001 7.05100816121833E+0001 7.04763477380857E+0001 - 7.04426326269520E+0001 7.04089362547128E+0001 7.03752585973383E+0001 7.03415996308371E+0001 7.03079593312578E+0001 - 7.02743376746857E+0001 7.02407346372472E+0001 7.02071501951050E+0001 7.01735843244626E+0001 7.01400370015604E+0001 - 7.01065082026784E+0001 7.00729979041344E+0001 7.00395060822854E+0001 7.00060327135245E+0001 6.99725777742873E+0001 - 6.99391412410434E+0001 6.99057230903031E+0001 6.98723232986151E+0001 6.98389418425635E+0001 6.98055786987750E+0001 - 6.97722338439088E+0001 6.97389072546675E+0001 6.97055989077883E+0001 6.96723087800473E+0001 6.96390368482575E+0001 - 6.96057830892720E+0001 6.95725474799794E+0001 6.95393299973064E+0001 6.95061306182184E+0001 6.94729493197185E+0001 - 6.94397860788454E+0001 6.94066408726776E+0001 6.93735136783292E+0001 6.93404044729534E+0001 6.93073132337399E+0001 - 6.92742399379157E+0001 6.92411845627454E+0001 6.92081470855296E+0001 6.91751274836098E+0001 6.91421257343594E+0001 - 6.91091418151932E+0001 6.90761757035594E+0001 6.90432273769475E+0001 6.90102968128811E+0001 6.89773839889206E+0001 - 6.89444888826644E+0001 6.89116114717474E+0001 6.88787517338405E+0001 6.88459096466529E+0001 6.88130851879290E+0001 - 6.87802783354507E+0001 6.87474890670361E+0001 6.87147173605408E+0001 6.86819631938552E+0001 6.86492265449067E+0001 - 6.86165073916608E+0001 6.85838057121159E+0001 6.85511214843115E+0001 6.85184546863186E+0001 6.84858052962481E+0001 - 6.84531732922434E+0001 6.84205586524879E+0001 6.83879613552006E+0001 6.83553813786320E+0001 6.83228187010734E+0001 - 6.82902733008514E+0001 6.82577451563259E+0001 6.82252342458963E+0001 6.81927405479947E+0001 6.81602640410904E+0001 - 6.81278047036889E+0001 6.80953625143300E+0001 6.80629374515901E+0001 6.80305294940807E+0001 6.79981386204493E+0001 - 6.79657648093787E+0001 6.79334080395862E+0001 6.79010682898270E+0001 6.78687455388900E+0001 6.78364397655976E+0001 - 6.78041509488111E+0001 6.77718790674243E+0001 6.77396241003685E+0001 6.77073860266080E+0001 6.76751648251425E+0001 - 6.76429604750090E+0001 6.76107729552760E+0001 6.75786022450495E+0001 6.75464483234698E+0001 6.75143111697122E+0001 - 6.74821907629855E+0001 6.74500870825353E+0001 6.74180001076403E+0001 6.73859298176155E+0001 6.73538761918094E+0001 - 6.73218392096039E+0001 6.72898188504187E+0001 6.72578150937052E+0001 6.72258279189499E+0001 6.71938573056752E+0001 - 6.71619032334360E+0001 6.71299656818231E+0001 6.70980446304604E+0001 6.70661400590056E+0001 6.70342519471525E+0001 - 6.70023802746281E+0001 6.69705250211932E+0001 6.69386861666422E+0001 6.69068636908053E+0001 6.68750575735451E+0001 - 6.68432677947586E+0001 6.68114943343767E+0001 6.67797371723648E+0001 6.67479962887203E+0001 6.67162716634773E+0001 - 6.66845632767009E+0001 6.66528711084912E+0001 6.66211951389811E+0001 6.65895353483386E+0001 6.65578917167629E+0001 - 6.65262642244894E+0001 6.64946528517851E+0001 6.64630575789511E+0001 6.64314783863215E+0001 6.63999152542644E+0001 - 6.63683681631805E+0001 6.63368370935035E+0001 6.63053220257012E+0001 6.62738229402753E+0001 6.62423398177580E+0001 - 6.62108726387164E+0001 6.61794213837502E+0001 6.61479860334935E+0001 6.61165665686090E+0001 6.60851629697988E+0001 - 6.60537752177920E+0001 6.60224032933540E+0001 6.59910471772820E+0001 6.59597068504052E+0001 6.59283822935861E+0001 - 6.58970734877195E+0001 6.58657804137342E+0001 6.58345030525901E+0001 6.58032413852792E+0001 6.57719953928284E+0001 - 6.57407650562935E+0001 6.57095503567665E+0001 6.56783512753683E+0001 6.56471677932545E+0001 6.56159998916113E+0001 - 6.55848475516602E+0001 6.55537107546494E+0001 6.55225894818641E+0001 6.54914837146207E+0001 6.54603934342654E+0001 - 6.54293186221788E+0001 6.53982592597727E+0001 6.53672153284903E+0001 6.53361868098060E+0001 6.53051736852289E+0001 - 6.52741759362984E+0001 6.52431935445842E+0001 6.52122264916881E+0001 6.51812747592463E+0001 6.51503383289237E+0001 - 6.51194171824176E+0001 6.50885113014573E+0001 6.50576206678041E+0001 6.50267452632490E+0001 6.49958850696163E+0001 - 6.49650400687599E+0001 6.49342102425661E+0001 6.49033955729525E+0001 6.48725960418681E+0001 6.48418116312928E+0001 - 6.48110423232381E+0001 6.47802880997446E+0001 6.47495489428879E+0001 6.47188248347709E+0001 6.46881157575290E+0001 - 6.46574216933287E+0001 6.46267426243680E+0001 6.45960785328748E+0001 6.45654294011067E+0001 6.45347952113561E+0001 - 6.45041759459417E+0001 6.44735715872148E+0001 6.44429821175584E+0001 6.44124075193847E+0001 6.43818477751373E+0001 - 6.43513028672885E+0001 6.43207727783443E+0001 6.42902574908386E+0001 6.42597569873378E+0001 6.42292712504357E+0001 - 6.41988002627598E+0001 6.41683440069654E+0001 6.41379024657393E+0001 6.41074756217986E+0001 6.40770634578909E+0001 - 6.40466659567921E+0001 6.40162831013101E+0001 6.39859148742820E+0001 6.39555612585750E+0001 6.39252222370875E+0001 - 6.38948977927457E+0001 6.38645879085068E+0001 6.38342925673585E+0001 6.38040117523178E+0001 6.37737454464312E+0001 - 6.37434936327747E+0001 6.37132562944549E+0001 6.36830334146081E+0001 6.36528249763982E+0001 6.36226309630227E+0001 - 6.35924513577039E+0001 6.35622861436980E+0001 6.35321353042864E+0001 6.35019988227829E+0001 6.34718766825312E+0001 - 6.34417688669014E+0001 6.34116753592962E+0001 6.33815961431447E+0001 6.33515312019071E+0001 6.33214805190722E+0001 - 6.32914440781568E+0001 6.32614218627099E+0001 6.32314138563057E+0001 6.32014200425514E+0001 6.31714404050792E+0001 - 6.31414749275538E+0001 6.31115235936661E+0001 6.30815863871368E+0001 6.30516632917176E+0001 6.30217542911853E+0001 - 6.29918593693477E+0001 6.29619785100407E+0001 6.29321116971299E+0001 6.29022589145073E+0001 6.28724201460956E+0001 - 6.28425953758457E+0001 6.28127845877358E+0001 6.27829877657747E+0001 6.27532048939970E+0001 6.27234359564679E+0001 - 6.26936809372801E+0001 6.26639398205548E+0001 6.26342125904410E+0001 6.26044992311172E+0001 6.25747997267884E+0001 - 6.25451140616890E+0001 6.25154422200818E+0001 6.24857841862556E+0001 6.24561399445307E+0001 6.24265094792517E+0001 - 6.23968927747941E+0001 6.23672898155601E+0001 6.23377005859805E+0001 6.23081250705116E+0001 6.22785632536404E+0001 - 6.22490151198814E+0001 6.22194806537751E+0001 6.21899598398914E+0001 6.21604526628262E+0001 6.21309591072048E+0001 - 6.21014791576798E+0001 6.20720127989298E+0001 6.20425600156619E+0001 6.20131207926123E+0001 6.19836951145417E+0001 - 6.19542829662403E+0001 6.19248843325251E+0001 6.18954991982409E+0001 6.18661275482581E+0001 6.18367693674763E+0001 - 6.18074246408213E+0001 6.17780933532471E+0001 6.17487754897325E+0001 6.17194710352875E+0001 6.16901799749447E+0001 - 6.16609022937662E+0001 6.16316379768409E+0001 6.16023870092841E+0001 6.15731493762388E+0001 6.15439250628739E+0001 - 6.15147140543863E+0001 6.14855163359985E+0001 6.14563318929609E+0001 6.14271607105491E+0001 6.13980027740676E+0001 - 6.13688580688451E+0001 6.13397265802396E+0001 6.13106082936328E+0001 6.12815031944362E+0001 6.12524112680837E+0001 - 6.12233325000400E+0001 6.11942668757938E+0001 6.11652143808597E+0001 6.11361750007812E+0001 6.11071487211250E+0001 - 6.10781355274864E+0001 6.10491354054863E+0001 6.10201483407719E+0001 6.09911743190160E+0001 6.09622133259173E+0001 - 6.09332653472030E+0001 6.09043303686226E+0001 6.08754083759552E+0001 6.08464993550039E+0001 6.08176032915982E+0001 - 6.07887201715936E+0001 6.07598499808710E+0001 6.07309927053386E+0001 6.07021483309290E+0001 6.06733168436005E+0001 - 6.06444982293377E+0001 6.06156924741507E+0001 6.05868995640768E+0001 6.05581194851766E+0001 6.05293522235373E+0001 - 6.05005977652712E+0001 6.04718560965169E+0001 6.04431272034387E+0001 6.04144110722251E+0001 6.03857076890911E+0001 - 6.03570170402766E+0001 6.03283391120469E+0001 6.02996738906926E+0001 6.02710213625293E+0001 6.02423815138991E+0001 - 6.02137543311674E+0001 6.01851398007269E+0001 6.01565379089931E+0001 6.01279486424086E+0001 6.00993719874397E+0001 - 6.00708079305788E+0001 6.00422564583420E+0001 6.00137175572717E+0001 5.99851912139353E+0001 5.99566774149226E+0001 - 5.99281761468518E+0001 5.98996873963627E+0001 5.98712111501229E+0001 5.98427473948213E+0001 5.98142961171760E+0001 - 5.97858573039243E+0001 5.97574309418333E+0001 5.97290170176908E+0001 5.97006155183117E+0001 5.96722264305344E+0001 - 5.96438497412220E+0001 5.96154854372608E+0001 5.95871335055640E+0001 5.95587939330678E+0001 5.95304667067323E+0001 - 5.95021518135421E+0001 5.94738492405073E+0001 5.94455589746611E+0001 5.94172810030613E+0001 5.93890153127895E+0001 - 5.93607618909517E+0001 5.93325207246784E+0001 5.93042918011232E+0001 5.92760751074649E+0001 5.92478706309061E+0001 - 5.92196783586720E+0001 5.91914982780133E+0001 5.91633303762045E+0001 5.91351746405425E+0001 5.91070310583499E+0001 - 5.90788996169720E+0001 5.90507803037777E+0001 5.90226731061616E+0001 5.89945780115383E+0001 5.89664950073497E+0001 - 5.89384240810602E+0001 5.89103652201558E+0001 5.88823184121488E+0001 5.88542836445747E+0001 5.88262609049899E+0001 - 5.87982501809772E+0001 5.87702514601413E+0001 5.87422647301113E+0001 5.87142899785385E+0001 5.86863271930980E+0001 - 5.86583763614886E+0001 5.86304374714319E+0001 5.86025105106731E+0001 5.85745954669794E+0001 5.85466923281431E+0001 - 5.85188010819777E+0001 5.84909217163216E+0001 5.84630542190345E+0001 5.84351985780008E+0001 5.84073547811258E+0001 - 5.83795228163401E+0001 5.83517026715955E+0001 5.83238943348674E+0001 5.82960977941543E+0001 5.82683130374758E+0001 - 5.82405400528773E+0001 5.82127788284242E+0001 5.81850293522058E+0001 5.81572916123342E+0001 5.81295655969441E+0001 - 5.81018512941917E+0001 5.80741486922574E+0001 5.80464577793441E+0001 5.80187785436751E+0001 5.79911109734987E+0001 - 5.79634550570842E+0001 5.79358107827236E+0001 5.79081781387313E+0001 5.78805571134448E+0001 5.78529476952223E+0001 - 5.78253498724463E+0001 5.77977636335198E+0001 5.77701889668685E+0001 5.77426258609410E+0001 5.77150743042076E+0001 - 5.76875342851600E+0001 5.76600057923129E+0001 5.76324888142039E+0001 5.76049833393897E+0001 5.75774893564524E+0001 - 5.75500068539929E+0001 5.75225358206370E+0001 5.74950762450304E+0001 5.74676281158413E+0001 5.74401914217594E+0001 - 5.74127661514971E+0001 5.73853522937868E+0001 5.73579498373847E+0001 5.73305587710680E+0001 5.73031790836344E+0001 - 5.72758107639044E+0001 5.72484538007199E+0001 5.72211081829444E+0001 5.71937738994631E+0001 5.71664509391816E+0001 - 5.71391392910286E+0001 5.71118389439528E+0001 5.70845498869261E+0001 5.70572721089390E+0001 5.70300055990065E+0001 - 5.70027503461619E+0001 5.69755063394625E+0001 5.69482735679846E+0001 5.69210520208278E+0001 5.68938416871108E+0001 - 5.68666425559746E+0001 5.68394546165819E+0001 5.68122778581152E+0001 5.67851122697786E+0001 5.67579578407968E+0001 - 5.67308145604166E+0001 5.67036824179053E+0001 5.66765614025499E+0001 5.66494515036602E+0001 5.66223527105655E+0001 - 5.65952650126168E+0001 5.65681883991846E+0001 5.65411228596620E+0001 5.65140683834617E+0001 5.64870249600170E+0001 - 5.64599925787825E+0001 5.64329712292331E+0001 5.64059609008642E+0001 5.63789615831915E+0001 5.63519732657526E+0001 - 5.63249959381044E+0001 5.62980295898243E+0001 5.62710742105106E+0001 5.62441297897822E+0001 5.62171963172779E+0001 - 5.61902737826564E+0001 5.61633621755978E+0001 5.61364614858028E+0001 5.61095717029906E+0001 5.60826928169022E+0001 - 5.60558248172981E+0001 5.60289676939592E+0001 5.60021214366864E+0001 5.59752860353012E+0001 5.59484614796444E+0001 - 5.59216477595777E+0001 5.58948448649818E+0001 5.58680527857590E+0001 5.58412715118296E+0001 5.58145010331352E+0001 - 5.57877413396370E+0001 5.57609924213153E+0001 5.57342542681716E+0001 5.57075268702267E+0001 5.56808102175204E+0001 - 5.56541043001131E+0001 5.56274091080840E+0001 5.56007246315341E+0001 5.55740508605819E+0001 5.55473877853652E+0001 - 5.55207353960442E+0001 5.54940936827961E+0001 5.54674626358178E+0001 5.54408422453278E+0001 5.54142325015614E+0001 - 5.53876333947751E+0001 5.53610449152440E+0001 5.53344670532632E+0001 5.53078997991470E+0001 5.52813431432281E+0001 - 5.52547970758603E+0001 5.52282615874146E+0001 5.52017366682833E+0001 5.51752223088757E+0001 5.51487184996228E+0001 - 5.51222252309723E+0001 5.50957424933927E+0001 5.50692702773706E+0001 5.50428085734126E+0001 5.50163573720434E+0001 - 5.49899166638069E+0001 5.49634864392670E+0001 5.49370666890050E+0001 5.49106574036218E+0001 5.48842585737373E+0001 - 5.48578701899902E+0001 5.48314922430380E+0001 5.48051247235573E+0001 5.47787676222426E+0001 5.47524209298079E+0001 - 5.47260846369853E+0001 5.46997587345263E+0001 5.46734432132009E+0001 5.46471380637971E+0001 5.46208432771221E+0001 - 5.45945588440010E+0001 5.45682847552785E+0001 5.45420210018166E+0001 5.45157675744969E+0001 5.44895244642189E+0001 - 5.44632916619000E+0001 5.44370691584763E+0001 5.44108569449032E+0001 5.43846550121531E+0001 5.43584633512177E+0001 - 5.43322819531064E+0001 5.43061108088466E+0001 5.42799499094842E+0001 5.42537992460840E+0001 5.42276588097282E+0001 - 5.42015285915167E+0001 5.41754085825684E+0001 5.41492987740201E+0001 5.41231991570257E+0001 5.40971097227585E+0001 - 5.40710304624092E+0001 5.40449613671856E+0001 5.40189024283151E+0001 5.39928536370413E+0001 5.39668149846273E+0001 - 5.39407864623518E+0001 5.39147680615147E+0001 5.38887597734297E+0001 5.38627615894317E+0001 5.38367735008712E+0001 - 5.38107954991168E+0001 5.37848275755557E+0001 5.37588697215915E+0001 5.37329219286460E+0001 5.37069841881590E+0001 - 5.36810564915874E+0001 5.36551388304053E+0001 5.36292311961043E+0001 5.36033335801947E+0001 5.35774459742024E+0001 - 5.35515683696726E+0001 5.35257007581665E+0001 5.34998431312627E+0001 5.34739954805583E+0001 5.34481577976663E+0001 - 5.34223300742180E+0001 5.33965123018617E+0001 5.33707044722621E+0001 5.33449065771024E+0001 5.33191186080821E+0001 - 5.32933405569184E+0001 5.32675724153448E+0001 5.32418141751124E+0001 5.32160658279893E+0001 5.31903273657613E+0001 - 5.31645987802300E+0001 5.31388800632142E+0001 5.31131712065508E+0001 5.30874722020921E+0001 5.30617830417082E+0001 - 5.30361037172854E+0001 5.30104342207279E+0001 5.29847745439558E+0001 5.29591246789062E+0001 5.29334846175329E+0001 - 5.29078543518068E+0001 5.28822338737146E+0001 5.28566231752608E+0001 5.28310222484659E+0001 5.28054310853674E+0001 - 5.27798496780182E+0001 5.27542780184896E+0001 5.27287160988685E+0001 5.27031639112578E+0001 5.26776214477777E+0001 - 5.26520887005644E+0001 5.26265656617705E+0001 5.26010523235661E+0001 5.25755486781358E+0001 5.25500547176817E+0001 - 5.25245704344219E+0001 5.24990958205913E+0001 5.24736308684406E+0001 5.24481755702365E+0001 5.24227299182628E+0001 - 5.23972939048175E+0001 5.23718675222179E+0001 5.23464507627947E+0001 5.23210436188961E+0001 5.22956460828862E+0001 - 5.22702581471436E+0001 5.22448798040659E+0001 5.22195110460642E+0001 5.21941518655660E+0001 5.21688022550160E+0001 - 5.21434622068741E+0001 5.21181317136147E+0001 5.20928107677310E+0001 5.20674993617291E+0001 5.20421974881331E+0001 - 5.20169051394811E+0001 5.19916223083280E+0001 5.19663489872456E+0001 5.19410851688183E+0001 5.19158308456489E+0001 - 5.18905860103544E+0001 5.18653506555688E+0001 5.18401247739399E+0001 5.18149083581329E+0001 5.17897014008269E+0001 - 5.17645038947180E+0001 5.17393158325166E+0001 5.17141372069498E+0001 5.16889680107585E+0001 5.16638082367002E+0001 - 5.16386578775480E+0001 5.16135169260897E+0001 5.15883853751285E+0001 5.15632632174836E+0001 5.15381504459887E+0001 - 5.15130470534921E+0001 5.14879530328599E+0001 5.14628683769706E+0001 5.14377930787203E+0001 5.14127271310179E+0001 - 5.13876705267892E+0001 5.13626232589744E+0001 5.13375853205287E+0001 5.13125567044231E+0001 5.12875374036425E+0001 - 5.12625274111880E+0001 5.12375267200746E+0001 5.12125353233328E+0001 5.11875532140084E+0001 5.11625803851618E+0001 - 5.11376168298672E+0001 5.11126625412159E+0001 5.10877175123123E+0001 5.10627817362761E+0001 5.10378552062414E+0001 - 5.10129379153580E+0001 5.09880298567898E+0001 5.09631310237157E+0001 5.09382414093281E+0001 5.09133610068361E+0001 - 5.08884898094620E+0001 5.08636278104432E+0001 5.08387750030315E+0001 5.08139313804931E+0001 5.07890969361092E+0001 - 5.07642716631749E+0001 5.07394555550010E+0001 5.07146486049113E+0001 5.06898508062446E+0001 5.06650621523541E+0001 - 5.06402826366077E+0001 5.06155122523875E+0001 5.05907509930898E+0001 5.05659988521248E+0001 5.05412558229180E+0001 - 5.05165218989083E+0001 5.04917970735492E+0001 5.04670813403085E+0001 5.04423746926677E+0001 5.04176771241231E+0001 - 5.03929886281849E+0001 5.03683091983771E+0001 5.03436388282387E+0001 5.03189775113209E+0001 5.02943252411911E+0001 - 5.02696820114293E+0001 5.02450478156303E+0001 5.02204226474028E+0001 5.01958065003681E+0001 5.01711993681640E+0001 - 5.01466012444399E+0001 5.01220121228595E+0001 5.00974319971012E+0001 5.00728608608570E+0001 5.00482987078315E+0001 - 5.00237455317455E+0001 4.99992013263304E+0001 4.99746660853340E+0001 4.99501398025168E+0001 4.99256224716528E+0001 - 4.99011140865300E+0001 4.98766146409496E+0001 4.98521241287266E+0001 4.98276425436902E+0001 4.98031698796821E+0001 - 4.97787061305582E+0001 4.97542512901882E+0001 4.97298053524540E+0001 4.97053683112524E+0001 4.96809401604934E+0001 - 4.96565208940992E+0001 4.96321105060075E+0001 4.96077089901665E+0001 4.95833163405410E+0001 4.95589325511066E+0001 - 4.95345576158535E+0001 4.95101915287848E+0001 4.94858342839165E+0001 4.94614858752790E+0001 4.94371462969139E+0001 - 4.94128155428779E+0001 4.93884936072403E+0001 4.93641804840830E+0001 4.93398761675012E+0001 4.93155806516044E+0001 - 4.92912939305127E+0001 4.92670159983617E+0001 4.92427468492989E+0001 4.92184864774845E+0001 4.91942348770926E+0001 - 4.91699920423092E+0001 4.91457579673339E+0001 4.91215326463794E+0001 4.90973160736705E+0001 4.90731082434457E+0001 - 4.90489091499550E+0001 4.90247187874638E+0001 4.90005371502472E+0001 4.89763642325948E+0001 4.89522000288091E+0001 - 4.89280445332051E+0001 4.89038977401087E+0001 4.88797596438618E+0001 4.88556302388162E+0001 4.88315095193381E+0001 - 4.88073974798047E+0001 4.87832941146072E+0001 4.87591994181479E+0001 4.87351133848438E+0001 4.87110360091222E+0001 - 4.86869672854241E+0001 4.86629072082027E+0001 4.86388557719238E+0001 4.86148129710649E+0001 4.85907788001172E+0001 - 4.85667532535832E+0001 4.85427363259777E+0001 4.85187280118294E+0001 4.84947283056765E+0001 4.84707372020726E+0001 - 4.84467546955817E+0001 4.84227807807803E+0001 4.83988154522574E+0001 4.83748587046136E+0001 4.83509105324627E+0001 - 4.83269709304303E+0001 4.83030398931539E+0001 4.82791174152829E+0001 4.82552034914788E+0001 4.82312981164158E+0001 - 4.82074012847799E+0001 4.81835129912691E+0001 4.81596332305927E+0001 4.81357619974732E+0001 4.81118992866440E+0001 - 4.80880450928511E+0001 4.80641994108523E+0001 4.80403622354172E+0001 4.80165335613270E+0001 4.79927133833753E+0001 - 4.79689016963674E+0001 4.79450984951197E+0001 4.79213037744609E+0001 4.78975175292321E+0001 4.78737397542854E+0001 - 4.78499704444843E+0001 4.78262095947048E+0001 4.78024571998342E+0001 4.77787132547712E+0001 4.77549777544269E+0001 - 4.77312506937234E+0001 4.77075320675940E+0001 4.76838218709845E+0001 4.76601200988520E+0001 4.76364267461643E+0001 - 4.76127418079022E+0001 4.75890652790560E+0001 4.75653971546298E+0001 4.75417374296372E+0001 4.75180860991044E+0001 - 4.74944431580681E+0001 4.74708086015768E+0001 4.74471824246907E+0001 4.74235646224808E+0001 4.73999551900300E+0001 - 4.73763541224312E+0001 4.73527614147906E+0001 4.73291770622235E+0001 4.73056010598578E+0001 4.72820334028331E+0001 - 4.72584740862979E+0001 4.72349231054140E+0001 4.72113804553538E+0001 4.71878461313002E+0001 4.71643201284482E+0001 - 4.71408024420030E+0001 4.71172930671810E+0001 4.70937919992102E+0001 4.70702992333290E+0001 4.70468147647875E+0001 - 4.70233385888456E+0001 4.69998707007755E+0001 4.69764110958593E+0001 4.69529597693902E+0001 4.69295167166733E+0001 - 4.69060819330232E+0001 4.68826554137661E+0001 4.68592371542388E+0001 4.68358271497892E+0001 4.68124253957751E+0001 - 4.67890318875665E+0001 4.67656466205430E+0001 4.67422695900950E+0001 4.67189007916240E+0001 4.66955402205431E+0001 - 4.66721878722735E+0001 4.66488437422498E+0001 4.66255078259155E+0001 4.66021801187252E+0001 4.65788606161439E+0001 - 4.65555493136479E+0001 4.65322462067233E+0001 4.65089512908668E+0001 4.64856645615855E+0001 4.64623860143978E+0001 - 4.64391156448318E+0001 4.64158534484262E+0001 4.63925994207296E+0001 4.63693535573027E+0001 4.63461158537143E+0001 - 4.63228863055452E+0001 4.62996649083859E+0001 4.62764516578377E+0001 4.62532465495111E+0001 4.62300495790284E+0001 - 4.62068607420204E+0001 4.61836800341306E+0001 4.61605074510097E+0001 4.61373429883215E+0001 4.61141866417375E+0001 - 4.60910384069414E+0001 4.60678982796253E+0001 4.60447662554927E+0001 4.60216423302570E+0001 4.59985264996411E+0001 - 4.59754187593786E+0001 4.59523191052120E+0001 4.59292275328958E+0001 4.59061440381929E+0001 4.58830686168761E+0001 - 4.58600012647294E+0001 4.58369419775462E+0001 4.58138907511289E+0001 4.57908475812913E+0001 4.57678124638560E+0001 - 4.57447853946562E+0001 4.57217663695342E+0001 4.56987553843428E+0001 4.56757524349441E+0001 4.56527575172101E+0001 - 4.56297706270230E+0001 4.56067917602744E+0001 4.55838209128655E+0001 4.55608580807076E+0001 4.55379032597215E+0001 - 4.55149564458372E+0001 4.54920176349950E+0001 4.54690868231450E+0001 4.54461640062455E+0001 4.54232491802666E+0001 - 4.54003423411864E+0001 4.53774434849931E+0001 4.53545526076840E+0001 4.53316697052661E+0001 4.53087947737564E+0001 - 4.52859278091810E+0001 4.52630688075754E+0001 4.52402177649844E+0001 4.52173746774623E+0001 4.51945395410738E+0001 - 4.51717123518913E+0001 4.51488931059978E+0001 4.51260817994850E+0001 4.51032784284541E+0001 4.50804829890165E+0001 - 4.50576954772910E+0001 4.50349158894074E+0001 4.50121442215036E+0001 4.49893804697278E+0001 4.49666246302366E+0001 - 4.49438766991960E+0001 4.49211366727814E+0001 4.48984045471768E+0001 4.48756803185765E+0001 4.48529639831824E+0001 - 4.48302555372067E+0001 4.48075549768700E+0001 4.47848622984027E+0001 4.47621774980432E+0001 4.47395005720397E+0001 - 4.47168315166491E+0001 4.46941703281378E+0001 4.46715170027803E+0001 4.46488715368611E+0001 4.46262339266731E+0001 - 4.46036041685172E+0001 4.45809822587051E+0001 4.45583681935559E+0001 4.45357619693979E+0001 4.45131635825694E+0001 - 4.44905730294153E+0001 4.44679903062912E+0001 4.44454154095605E+0001 4.44228483355965E+0001 4.44002890807795E+0001 - 4.43777376415002E+0001 4.43551940141568E+0001 4.43326581951572E+0001 4.43101301809176E+0001 4.42876099678620E+0001 - 4.42650975524249E+0001 4.42425929310479E+0001 4.42200961001810E+0001 4.41976070562846E+0001 4.41751257958261E+0001 - 4.41526523152819E+0001 4.41301866111369E+0001 4.41077286798846E+0001 4.40852785180272E+0001 4.40628361220749E+0001 - 4.40404014885466E+0001 4.40179746139700E+0001 4.39955554948810E+0001 4.39731441278234E+0001 4.39507405093502E+0001 - 4.39283446360222E+0001 4.39059565044090E+0001 4.38835761110881E+0001 4.38612034526460E+0001 4.38388385256769E+0001 - 4.38164813267831E+0001 4.37941318525760E+0001 4.37717900996745E+0001 4.37494560647066E+0001 4.37271297443073E+0001 - 4.37048111351208E+0001 4.36825002337992E+0001 4.36601970370025E+0001 4.36379015413994E+0001 4.36156137436666E+0001 - 4.35933336404881E+0001 4.35710612285573E+0001 4.35487965045746E+0001 4.35265394652491E+0001 4.35042901072980E+0001 - 4.34820484274459E+0001 4.34598144224263E+0001 4.34375880889791E+0001 4.34153694238545E+0001 4.33931584238091E+0001 - 4.33709550856079E+0001 4.33487594060233E+0001 4.33265713818364E+0001 4.33043910098356E+0001 4.32822182868176E+0001 - 4.32600532095869E+0001 4.32378957749554E+0001 4.32157459797438E+0001 4.31936038207793E+0001 4.31714692948977E+0001 - 4.31493423989427E+0001 4.31272231297652E+0001 4.31051114842244E+0001 4.30830074591869E+0001 4.30609110515275E+0001 - 4.30388222581270E+0001 4.30167410758770E+0001 4.29946675016733E+0001 4.29726015324219E+0001 4.29505431650350E+0001 - 4.29284923964335E+0001 4.29064492235446E+0001 4.28844136433043E+0001 4.28623856526554E+0001 4.28403652485482E+0001 - 4.28183524279416E+0001 4.27963471878001E+0001 4.27743495250979E+0001 4.27523594368155E+0001 4.27303769199397E+0001 - 4.27084019714676E+0001 4.26864345884010E+0001 4.26644747677507E+0001 4.26425225065343E+0001 4.26205778017776E+0001 - 4.25986406505116E+0001 4.25767110497774E+0001 4.25547889966218E+0001 4.25328744880992E+0001 4.25109675212713E+0001 - 4.24890680932072E+0001 4.24671762009831E+0001 4.24452918416832E+0001 4.24234150123976E+0001 4.24015457102243E+0001 - 4.23796839322689E+0001 4.23578296756431E+0001 4.23359829374676E+0001 4.23141437148682E+0001 4.22923120049792E+0001 - 4.22704878049416E+0001 4.22486711119029E+0001 4.22268619230188E+0001 4.22050602354518E+0001 4.21832660463707E+0001 - 4.21614793529518E+0001 4.21397001523787E+0001 4.21179284418417E+0001 4.20961642185383E+0001 4.20744074796727E+0001 - 4.20526582224562E+0001 4.20309164441073E+0001 4.20091821418506E+0001 4.19874553129190E+0001 4.19657359545510E+0001 - 4.19440240639924E+0001 4.19223196384960E+0001 4.19006226753220E+0001 4.18789331717360E+0001 4.18572511250118E+0001 - 4.18355765324290E+0001 4.18139093912749E+0001 4.17922496988427E+0001 4.17705974524336E+0001 4.17489526493538E+0001 - 4.17273152869174E+0001 4.17056853624454E+0001 4.16840628732645E+0001 4.16624478167089E+0001 4.16408401901192E+0001 - 4.16192399908427E+0001 4.15976472162332E+0001 4.15760618636511E+0001 4.15544839304638E+0001 4.15329134140450E+0001 - 4.15113503117746E+0001 4.14897946210400E+0001 4.14682463392338E+0001 4.14467054637569E+0001 4.14251719920146E+0001 - 4.14036459214209E+0001 4.13821272493946E+0001 4.13606159733614E+0001 4.13391120907541E+0001 4.13176155990113E+0001 - 4.12961264955780E+0001 4.12746447779059E+0001 4.12531704434530E+0001 4.12317034896836E+0001 4.12102439140685E+0001 - 4.11887917140848E+0001 4.11673468872155E+0001 4.11459094309510E+0001 4.11244793427865E+0001 4.11030566202251E+0001 - 4.10816412607750E+0001 4.10602332619505E+0001 4.10388326212737E+0001 4.10174393362709E+0001 4.09960534044765E+0001 - 4.09746748234299E+0001 4.09533035906765E+0001 4.09319397037687E+0001 4.09105831602652E+0001 4.08892339577296E+0001 - 4.08678920937326E+0001 4.08465575658512E+0001 4.08252303716679E+0001 4.08039105087710E+0001 4.07825979747557E+0001 - 4.07612927672230E+0001 4.07399948837795E+0001 4.07187043220382E+0001 4.06974210796186E+0001 4.06761451541447E+0001 - 4.06548765432484E+0001 4.06336152445660E+0001 4.06123612557402E+0001 4.05911145744202E+0001 4.05698751982605E+0001 - 4.05486431249217E+0001 4.05274183520704E+0001 4.05062008773786E+0001 4.04849906985250E+0001 4.04637878131935E+0001 - 4.04425922190741E+0001 4.04214039138625E+0001 4.04002228952602E+0001 4.03790491609742E+0001 4.03578827087183E+0001 - 4.03367235362111E+0001 4.03155716411771E+0001 4.02944270213468E+0001 4.02732896744561E+0001 4.02521595982472E+0001 - 4.02310367904672E+0001 4.02099212488695E+0001 4.01888129712130E+0001 4.01677119552618E+0001 4.01466181987865E+0001 - 4.01255316995625E+0001 4.01044524553715E+0001 4.00833804640001E+0001 4.00623157232410E+0001 4.00412582308924E+0001 - 4.00202079847579E+0001 3.99991649826466E+0001 3.99781292223734E+0001 3.99571007017585E+0001 3.99360794186275E+0001 - 3.99150653708118E+0001 3.98940585561480E+0001 3.98730589724784E+0001 3.98520666176506E+0001 3.98310814895172E+0001 - 3.98101035859371E+0001 3.97891329047739E+0001 3.97681694438973E+0001 3.97472132011814E+0001 3.97262641745063E+0001 - 3.97053223617574E+0001 3.96843877608252E+0001 3.96634603696060E+0001 3.96425401860010E+0001 3.96216272079165E+0001 - 3.96007214332648E+0001 3.95798228599625E+0001 3.95589314859325E+0001 3.95380473091022E+0001 3.95171703274044E+0001 - 3.94963005387772E+0001 3.94754379411639E+0001 3.94545825325129E+0001 3.94337343107781E+0001 3.94128932739180E+0001 - 3.93920594198966E+0001 3.93712327466828E+0001 3.93504132522512E+0001 3.93296009345807E+0001 3.93087957916559E+0001 - 3.92879978214662E+0001 3.92672070220061E+0001 3.92464233912756E+0001 3.92256469272787E+0001 3.92048776280255E+0001 - 3.91841154915305E+0001 3.91633605158135E+0001 3.91426126988990E+0001 3.91218720388169E+0001 3.91011385336014E+0001 - 3.90804121812926E+0001 3.90596929799347E+0001 3.90389809275769E+0001 3.90182760222739E+0001 3.89975782620850E+0001 - 3.89768876450736E+0001 3.89562041693096E+0001 3.89355278328665E+0001 3.89148586338227E+0001 3.88941965702620E+0001 - 3.88735416402728E+0001 3.88528938419481E+0001 3.88322531733860E+0001 3.88116196326893E+0001 3.87909932179649E+0001 - 3.87703739273260E+0001 3.87497617588888E+0001 3.87291567107756E+0001 3.87085587811126E+0001 3.86879679680306E+0001 - 3.86673842696664E+0001 3.86468076841597E+0001 3.86262382096558E+0001 3.86056758443051E+0001 3.85851205862615E+0001 - 3.85645724336843E+0001 3.85440313847377E+0001 3.85234974375894E+0001 3.85029705904126E+0001 3.84824508413853E+0001 - 3.84619381886887E+0001 3.84414326305099E+0001 3.84209341650403E+0001 3.84004427904757E+0001 3.83799585050159E+0001 - 3.83594813068660E+0001 3.83390111942351E+0001 3.83185481653368E+0001 3.82980922183895E+0001 3.82776433516160E+0001 - 3.82572015632431E+0001 3.82367668515027E+0001 3.82163392146302E+0001 3.81959186508666E+0001 3.81755051584560E+0001 - 3.81550987356481E+0001 3.81346993806962E+0001 3.81143070918584E+0001 3.80939218673966E+0001 3.80735437055774E+0001 - 3.80531726046719E+0001 3.80328085629550E+0001 3.80124515787064E+0001 3.79921016502097E+0001 3.79717587757535E+0001 - 3.79514229536293E+0001 3.79310941821344E+0001 3.79107724595691E+0001 3.78904577842385E+0001 3.78701501544523E+0001 - 3.78498495685234E+0001 3.78295560247698E+0001 3.78092695215132E+0001 3.77889900570795E+0001 3.77687176297991E+0001 - 3.77484522380062E+0001 3.77281938800390E+0001 3.77079425542400E+0001 3.76876982589564E+0001 3.76674609925386E+0001 - 3.76472307533416E+0001 3.76270075397238E+0001 3.76067913500487E+0001 3.75865821826832E+0001 3.75663800359984E+0001 - 3.75461849083692E+0001 3.75259967981749E+0001 3.75058157037985E+0001 3.74856416236272E+0001 3.74654745560520E+0001 - 3.74453144994680E+0001 3.74251614522743E+0001 3.74050154128734E+0001 3.73848763796728E+0001 3.73647443510828E+0001 - 3.73446193255184E+0001 3.73245013013982E+0001 3.73043902771449E+0001 3.72842862511845E+0001 3.72641892219475E+0001 - 3.72440991878677E+0001 3.72240161473836E+0001 3.72039400989366E+0001 3.71838710409724E+0001 3.71638089719403E+0001 - 3.71437538902938E+0001 3.71237057944895E+0001 3.71036646829885E+0001 3.70836305542553E+0001 3.70636034067580E+0001 - 3.70435832389686E+0001 3.70235700493633E+0001 3.70035638364212E+0001 3.69835645986257E+0001 3.69635723344634E+0001 - 3.69435870424250E+0001 3.69236087210050E+0001 3.69036373687011E+0001 3.68836729840147E+0001 3.68637155654514E+0001 - 3.68437651115198E+0001 3.68238216207324E+0001 3.68038850916052E+0001 3.67839555226578E+0001 3.67640329124139E+0001 - 3.67441172593998E+0001 3.67242085621461E+0001 3.67043068191869E+0001 3.66844120290594E+0001 3.66645241903048E+0001 - 3.66446433014675E+0001 3.66247693610959E+0001 3.66049023677411E+0001 3.65850423199585E+0001 3.65651892163065E+0001 - 3.65453430553471E+0001 3.65255038356455E+0001 3.65056715557710E+0001 3.64858462142956E+0001 3.64660278097953E+0001 - 3.64462163408493E+0001 3.64264118060397E+0001 3.64066142039531E+0001 3.63868235331784E+0001 3.63670397923084E+0001 - 3.63472629799394E+0001 3.63274930946705E+0001 3.63077301351046E+0001 3.62879740998480E+0001 3.62682249875098E+0001 - 3.62484827967028E+0001 3.62287475260431E+0001 3.62090191741499E+0001 3.61892977396461E+0001 3.61695832211571E+0001 - 3.61498756173123E+0001 3.61301749267439E+0001 3.61104811480875E+0001 3.60907942799820E+0001 3.60711143210694E+0001 - 3.60514412699949E+0001 3.60317751254069E+0001 3.60121158859570E+0001 3.59924635502999E+0001 3.59728181170936E+0001 - 3.59531795849996E+0001 3.59335479526813E+0001 3.59139232188067E+0001 3.58943053820463E+0001 3.58746944410733E+0001 - 3.58550903945645E+0001 3.58354932412001E+0001 3.58159029796623E+0001 3.57963196086377E+0001 3.57767431268149E+0001 - 3.57571735328862E+0001 3.57376108255463E+0001 3.57180550034935E+0001 3.56985060654293E+0001 3.56789640100574E+0001 - 3.56594288360853E+0001 3.56399005422228E+0001 3.56203791271833E+0001 3.56008645896826E+0001 3.55813569284401E+0001 - 3.55618561421776E+0001 3.55423622296202E+0001 3.55228751894957E+0001 3.55033950205345E+0001 3.54839217214710E+0001 - 3.54644552910415E+0001 3.54449957279855E+0001 3.54255430310452E+0001 3.54060971989660E+0001 3.53866582304962E+0001 - 3.53672261243864E+0001 3.53478008793909E+0001 3.53283824942660E+0001 3.53089709677711E+0001 3.52895662986687E+0001 - 3.52701684857237E+0001 3.52507775277041E+0001 3.52313934233806E+0001 3.52120161715264E+0001 3.51926457709178E+0001 - 3.51732822203340E+0001 3.51539255185565E+0001 3.51345756643694E+0001 3.51152326565605E+0001 3.50958964939194E+0001 - 3.50765671752384E+0001 3.50572446993133E+0001 3.50379290649419E+0001 3.50186202709244E+0001 3.49993183160648E+0001 - 3.49800231991686E+0001 3.49607349190445E+0001 3.49414534745040E+0001 3.49221788643607E+0001 3.49029110874315E+0001 - 3.48836501425354E+0001 3.48643960284938E+0001 3.48451487441314E+0001 3.48259082882751E+0001 3.48066746597543E+0001 - 3.47874478574010E+0001 3.47682278800500E+0001 3.47490147265382E+0001 3.47298083957055E+0001 3.47106088863944E+0001 - 3.46914161974491E+0001 3.46722303277170E+0001 3.46530512760480E+0001 3.46338790412946E+0001 3.46147136223112E+0001 - 3.45955550179549E+0001 3.45764032270857E+0001 3.45572582485656E+0001 3.45381200812594E+0001 3.45189887240337E+0001 - 3.44998641757583E+0001 3.44807464353048E+0001 3.44616355015477E+0001 3.44425313733637E+0001 3.44234340496318E+0001 - 3.44043435292332E+0001 3.43852598110521E+0001 3.43661828939746E+0001 3.43471127768893E+0001 3.43280494586868E+0001 - 3.43089929382607E+0001 3.42899432145064E+0001 3.42709002863216E+0001 3.42518641526070E+0001 3.42328348122648E+0001 - 3.42138122641999E+0001 3.41947965073192E+0001 3.41757875405325E+0001 3.41567853627506E+0001 3.41377899728884E+0001 - 3.41188013698613E+0001 3.40998195525881E+0001 3.40808445199891E+0001 3.40618762709875E+0001 3.40429148045081E+0001 - 3.40239601194783E+0001 3.40050122148273E+0001 3.39860710894871E+0001 3.39671367423915E+0001 3.39482091724762E+0001 - 3.39292883786796E+0001 3.39103743599421E+0001 3.38914671152059E+0001 3.38725666434158E+0001 3.38536729435188E+0001 - 3.38347860144634E+0001 3.38159058552004E+0001 3.37970324646831E+0001 3.37781658418671E+0001 3.37593059857091E+0001 - 3.37404528951688E+0001 3.37216065692071E+0001 3.37027670067882E+0001 3.36839342068769E+0001 3.36651081684413E+0001 - 3.36462888904506E+0001 3.36274763718769E+0001 3.36086706116935E+0001 3.35898716088761E+0001 3.35710793624025E+0001 - 3.35522938712522E+0001 3.35335151344073E+0001 3.35147431508509E+0001 3.34959779195687E+0001 3.34772194395487E+0001 - 3.34584677097799E+0001 3.34397227292539E+0001 3.34209844969640E+0001 3.34022530119060E+0001 3.33835282730765E+0001 - 3.33648102794753E+0001 3.33460990301032E+0001 3.33273945239628E+0001 3.33086967600597E+0001 3.32900057374000E+0001 - 3.32713214549922E+0001 3.32526439118474E+0001 3.32339731069779E+0001 3.32153090393972E+0001 3.31966517081217E+0001 - 3.31780011121695E+0001 3.31593572505598E+0001 3.31407201223144E+0001 3.31220897264566E+0001 3.31034660620112E+0001 - 3.30848491280053E+0001 3.30662389234676E+0001 3.30476354474286E+0001 3.30290386989201E+0001 3.30104486769768E+0001 - 3.29918653806339E+0001 3.29732888089290E+0001 3.29547189609012E+0001 3.29361558355916E+0001 3.29175994320426E+0001 - 3.28990497492991E+0001 3.28805067864069E+0001 3.28619705424136E+0001 3.28434410163686E+0001 3.28249182073235E+0001 - 3.28064021143310E+0001 3.27878927364453E+0001 3.27693900727227E+0001 3.27508941222210E+0001 3.27324048840000E+0001 - 3.27139223571204E+0001 3.26954465406446E+0001 3.26769774336379E+0001 3.26585150351653E+0001 3.26400593442948E+0001 - 3.26216103600953E+0001 3.26031680816382E+0001 3.25847325079949E+0001 3.25663036382400E+0001 3.25478814714487E+0001 - 3.25294660066981E+0001 3.25110572430665E+0001 3.24926551796344E+0001 3.24742598154836E+0001 3.24558711496967E+0001 - 3.24374891813590E+0001 3.24191139095564E+0001 3.24007453333767E+0001 3.23823834519092E+0001 3.23640282642449E+0001 - 3.23456797694756E+0001 3.23273379666954E+0001 3.23090028549990E+0001 3.22906744334833E+0001 3.22723527012467E+0001 - 3.22540376573880E+0001 3.22357293010091E+0001 3.22174276312116E+0001 3.21991326471002E+0001 3.21808443477793E+0001 - 3.21625627323562E+0001 3.21442877999388E+0001 3.21260195496366E+0001 3.21077579805606E+0001 3.20895030918226E+0001 - 3.20712548825370E+0001 3.20530133518182E+0001 3.20347784987829E+0001 3.20165503225488E+0001 3.19983288222349E+0001 - 3.19801139969616E+0001 3.19619058458509E+0001 3.19437043680255E+0001 3.19255095626102E+0001 3.19073214287305E+0001 - 3.18891399655136E+0001 3.18709651720877E+0001 3.18527970475823E+0001 3.18346355911288E+0001 3.18164808018589E+0001 - 3.17983326789060E+0001 3.17801912214054E+0001 3.17620564284925E+0001 3.17439282993049E+0001 3.17258068329810E+0001 - 3.17076920286603E+0001 3.16895838854838E+0001 3.16714824025940E+0001 3.16533875791340E+0001 3.16352994142485E+0001 - 3.16172179070832E+0001 3.15991430567852E+0001 3.15810748625027E+0001 3.15630133233847E+0001 3.15449584385822E+0001 - 3.15269102072468E+0001 3.15088686285314E+0001 3.14908337015900E+0001 3.14728054255775E+0001 3.14547837996507E+0001 - 3.14367688229666E+0001 3.14187604946841E+0001 3.14007588139627E+0001 3.13827637799633E+0001 3.13647753918480E+0001 - 3.13467936487795E+0001 3.13288185499222E+0001 3.13108500944411E+0001 3.12928882815026E+0001 3.12749331102742E+0001 - 3.12569845799242E+0001 3.12390426896221E+0001 3.12211074385385E+0001 3.12031788258451E+0001 3.11852568507144E+0001 - 3.11673415123199E+0001 3.11494328098368E+0001 3.11315307424406E+0001 3.11136353093081E+0001 3.10957465096169E+0001 - 3.10778643425459E+0001 3.10599888072750E+0001 3.10421199029848E+0001 3.10242576288570E+0001 3.10064019840747E+0001 - 3.09885529678211E+0001 3.09707105792810E+0001 3.09528748176404E+0001 3.09350456820855E+0001 3.09172231718039E+0001 - 3.08994072859840E+0001 3.08815980238155E+0001 3.08637953844884E+0001 3.08459993671941E+0001 3.08282099711248E+0001 - 3.08104271954735E+0001 3.07926510394343E+0001 3.07748815022018E+0001 3.07571185829719E+0001 3.07393622809415E+0001 - 3.07216125953078E+0001 3.07038695252693E+0001 3.06861330700254E+0001 3.06684032287761E+0001 3.06506800007224E+0001 - 3.06329633850663E+0001 3.06152533810100E+0001 3.05975499877577E+0001 3.05798532045130E+0001 3.05621630304817E+0001 - 3.05444794648693E+0001 3.05268025068828E+0001 3.05091321557299E+0001 3.04914684106189E+0001 3.04738112707589E+0001 - 3.04561607353598E+0001 3.04385168036327E+0001 3.04208794747890E+0001 3.04032487480406E+0001 3.03856246226011E+0001 - 3.03680070976842E+0001 3.03503961725043E+0001 3.03327918462767E+0001 3.03151941182177E+0001 3.02976029875441E+0001 - 3.02800184534729E+0001 3.02624405152230E+0001 3.02448691720131E+0001 3.02273044230627E+0001 3.02097462675925E+0001 - 3.01921947048234E+0001 3.01746497339772E+0001 3.01571113542761E+0001 3.01395795649439E+0001 3.01220543652037E+0001 - 3.01045357542802E+0001 3.00870237313988E+0001 3.00695182957852E+0001 3.00520194466656E+0001 3.00345271832675E+0001 - 3.00170415048184E+0001 2.99995624105467E+0001 2.99820898996815E+0001 2.99646239714526E+0001 2.99471646250897E+0001 - 2.99297118598244E+0001 2.99122656748875E+0001 2.98948260695117E+0001 2.98773930429292E+0001 2.98599665943736E+0001 - 2.98425467230787E+0001 2.98251334282788E+0001 2.98077267092090E+0001 2.97903265651049E+0001 2.97729329952026E+0001 - 2.97555459987388E+0001 2.97381655749509E+0001 2.97207917230766E+0001 2.97034244423543E+0001 2.96860637320227E+0001 - 2.96687095913214E+0001 2.96513620194903E+0001 2.96340210157700E+0001 2.96166865794012E+0001 2.95993587096256E+0001 - 2.95820374056851E+0001 2.95647226668222E+0001 2.95474144922799E+0001 2.95301128813016E+0001 2.95128178331314E+0001 - 2.94955293470136E+0001 2.94782474221932E+0001 2.94609720579155E+0001 2.94437032534263E+0001 2.94264410079720E+0001 - 2.94091853207992E+0001 2.93919361911553E+0001 2.93746936182876E+0001 2.93574576014445E+0001 2.93402281398741E+0001 - 2.93230052328258E+0001 2.93057888795486E+0001 2.92885790792924E+0001 2.92713758313072E+0001 2.92541791348437E+0001 - 2.92369889891527E+0001 2.92198053934859E+0001 2.92026283470947E+0001 2.91854578492313E+0001 2.91682938991483E+0001 - 2.91511364960986E+0001 2.91339856393352E+0001 2.91168413281120E+0001 2.90997035616829E+0001 2.90825723393021E+0001 - 2.90654476602246E+0001 2.90483295237049E+0001 2.90312179289988E+0001 2.90141128753618E+0001 2.89970143620500E+0001 - 2.89799223883196E+0001 2.89628369534274E+0001 2.89457580566302E+0001 2.89286856971856E+0001 2.89116198743510E+0001 - 2.88945605873842E+0001 2.88775078355434E+0001 2.88604616180871E+0001 2.88434219342741E+0001 2.88263887833634E+0001 - 2.88093621646143E+0001 2.87923420772865E+0001 2.87753285206397E+0001 2.87583214939339E+0001 2.87413209964296E+0001 - 2.87243270273874E+0001 2.87073395860682E+0001 2.86903586717330E+0001 2.86733842836430E+0001 2.86564164210602E+0001 - 2.86394550832460E+0001 2.86225002694625E+0001 2.86055519789719E+0001 2.85886102110367E+0001 2.85716749649195E+0001 - 2.85547462398832E+0001 2.85378240351910E+0001 2.85209083501058E+0001 2.85039991838911E+0001 2.84870965358109E+0001 - 2.84702004051284E+0001 2.84533107911082E+0001 2.84364276930139E+0001 2.84195511101101E+0001 2.84026810416613E+0001 - 2.83858174869319E+0001 2.83689604451869E+0001 2.83521099156911E+0001 2.83352658977096E+0001 2.83184283905077E+0001 - 2.83015973933506E+0001 2.82847729055039E+0001 2.82679549262331E+0001 2.82511434548041E+0001 2.82343384904824E+0001 - 2.82175400325343E+0001 2.82007480802256E+0001 2.81839626328225E+0001 2.81671836895915E+0001 2.81504112497987E+0001 - 2.81336453127106E+0001 2.81168858775938E+0001 2.81001329437149E+0001 2.80833865103405E+0001 2.80666465767374E+0001 - 2.80499131421725E+0001 2.80331862059125E+0001 2.80164657672246E+0001 2.79997518253756E+0001 2.79830443796325E+0001 - 2.79663434292627E+0001 2.79496489735333E+0001 2.79329610117112E+0001 2.79162795430638E+0001 2.78996045668583E+0001 - 2.78829360823620E+0001 2.78662740888422E+0001 2.78496185855661E+0001 2.78329695718012E+0001 2.78163270468148E+0001 - 2.77996910098742E+0001 2.77830614602465E+0001 2.77664383971995E+0001 2.77498218200000E+0001 2.77332117279157E+0001 - 2.77166081202138E+0001 2.77000109961615E+0001 2.76834203550260E+0001 2.76668361960747E+0001 2.76502585185745E+0001 - 2.76336873217928E+0001 2.76171226049966E+0001 2.76005643674531E+0001 2.75840126084292E+0001 2.75674673271917E+0001 - 2.75509285230077E+0001 2.75343961951441E+0001 2.75178703428675E+0001 2.75013509654446E+0001 2.74848380621421E+0001 - 2.74683316322266E+0001 2.74518316749645E+0001 2.74353381896222E+0001 2.74188511754661E+0001 2.74023706317622E+0001 - 2.73858965577767E+0001 2.73694289527757E+0001 2.73529678160249E+0001 2.73365131467903E+0001 2.73200649443375E+0001 - 2.73036232079320E+0001 2.72871879368392E+0001 2.72707591303247E+0001 2.72543367876534E+0001 2.72379209080905E+0001 - 2.72215114909009E+0001 2.72051085353493E+0001 2.71887120407004E+0001 2.71723220062188E+0001 2.71559384311687E+0001 - 2.71395613148142E+0001 2.71231906564196E+0001 2.71068264552485E+0001 2.70904687105648E+0001 2.70741174216319E+0001 - 2.70577725877131E+0001 2.70414342080718E+0001 2.70251022819708E+0001 2.70087768086731E+0001 2.69924577874411E+0001 - 2.69761452175375E+0001 2.69598390982242E+0001 2.69435394287636E+0001 2.69272462084172E+0001 2.69109594364468E+0001 - 2.68946791121139E+0001 2.68784052346795E+0001 2.68621378034049E+0001 2.68458768175504E+0001 2.68296222763771E+0001 - 2.68133741791449E+0001 2.67971325251139E+0001 2.67808973135442E+0001 2.67646685436952E+0001 2.67484462148264E+0001 - 2.67322303261968E+0001 2.67160208770653E+0001 2.66998178666906E+0001 2.66836212943310E+0001 2.66674311592446E+0001 - 2.66512474606893E+0001 2.66350701979227E+0001 2.66188993702018E+0001 2.66027349767840E+0001 2.65865770169260E+0001 - 2.65704254898841E+0001 2.65542803949144E+0001 2.65381417312732E+0001 2.65220094982158E+0001 2.65058836949977E+0001 - 2.64897643208738E+0001 2.64736513750988E+0001 2.64575448569273E+0001 2.64414447656131E+0001 2.64253511004103E+0001 - 2.64092638605721E+0001 2.63931830453519E+0001 2.63771086540024E+0001 2.63610406857763E+0001 2.63449791399256E+0001 - 2.63289240157022E+0001 2.63128753123577E+0001 2.62968330291432E+0001 2.62807971653097E+0001 2.62647677201076E+0001 - 2.62487446927869E+0001 2.62327280825978E+0001 2.62167178887895E+0001 2.62007141106110E+0001 2.61847167473114E+0001 - 2.61687257981388E+0001 2.61527412623411E+0001 2.61367631391664E+0001 2.61207914278616E+0001 2.61048261276736E+0001 - 2.60888672378490E+0001 2.60729147576340E+0001 2.60569686862743E+0001 2.60410290230153E+0001 2.60250957671018E+0001 - 2.60091689177786E+0001 2.59932484742897E+0001 2.59773344358790E+0001 2.59614268017899E+0001 2.59455255712654E+0001 - 2.59296307435479E+0001 2.59137423178795E+0001 2.58978602935021E+0001 2.58819846696570E+0001 2.58661154455851E+0001 - 2.58502526205268E+0001 2.58343961937222E+0001 2.58185461644108E+0001 2.58027025318319E+0001 2.57868652952243E+0001 - 2.57710344538261E+0001 2.57552100068751E+0001 2.57393919536092E+0001 2.57235802932649E+0001 2.57077750250788E+0001 - 2.56919761482871E+0001 2.56761836621254E+0001 2.56603975658287E+0001 2.56446178586317E+0001 2.56288445397687E+0001 - 2.56130776084734E+0001 2.55973170639791E+0001 2.55815629055185E+0001 2.55658151323242E+0001 2.55500737436278E+0001 - 2.55343387386607E+0001 2.55186101166539E+0001 2.55028878768375E+0001 2.54871720184417E+0001 2.54714625406959E+0001 - 2.54557594428288E+0001 2.54400627240690E+0001 2.54243723836443E+0001 2.54086884207822E+0001 2.53930108347095E+0001 - 2.53773396246526E+0001 2.53616747898374E+0001 2.53460163294892E+0001 2.53303642428330E+0001 2.53147185290930E+0001 - 2.52990791874929E+0001 2.52834462172561E+0001 2.52678196176054E+0001 2.52521993877630E+0001 2.52365855269504E+0001 - 2.52209780343889E+0001 2.52053769092989E+0001 2.51897821509008E+0001 2.51741937584137E+0001 2.51586117310570E+0001 - 2.51430360680486E+0001 2.51274667686069E+0001 2.51119038319488E+0001 2.50963472572913E+0001 2.50807970438505E+0001 - 2.50652531908418E+0001 2.50497156974808E+0001 2.50341845629814E+0001 2.50186597865580E+0001 2.50031413674236E+0001 - 2.49876293047912E+0001 2.49721235978729E+0001 2.49566242458804E+0001 2.49411312480244E+0001 2.49256446035159E+0001 - 2.49101643115644E+0001 2.48946903713792E+0001 2.48792227821691E+0001 2.48637615431420E+0001 2.48483066535056E+0001 - 2.48328581124667E+0001 2.48174159192315E+0001 2.48019800730057E+0001 2.47865505729945E+0001 2.47711274184023E+0001 - 2.47557106084328E+0001 2.47403001422895E+0001 2.47248960191748E+0001 2.47094982382907E+0001 2.46941067988388E+0001 - 2.46787217000196E+0001 2.46633429410335E+0001 2.46479705210799E+0001 2.46326044393574E+0001 2.46172446950645E+0001 - 2.46018912873989E+0001 2.45865442155573E+0001 2.45712034787362E+0001 2.45558690761312E+0001 2.45405410069375E+0001 - 2.45252192703492E+0001 2.45099038655603E+0001 2.44945947917638E+0001 2.44792920481521E+0001 2.44639956339171E+0001 - 2.44487055482498E+0001 2.44334217903407E+0001 2.44181443593798E+0001 2.44028732545559E+0001 2.43876084750577E+0001 - 2.43723500200730E+0001 2.43570978887889E+0001 2.43418520803918E+0001 2.43266125940675E+0001 2.43113794290012E+0001 - 2.42961525843773E+0001 2.42809320593794E+0001 2.42657178531910E+0001 2.42505099649939E+0001 2.42353083939701E+0001 - 2.42201131393007E+0001 2.42049242001657E+0001 2.41897415757450E+0001 2.41745652652175E+0001 2.41593952677612E+0001 - 2.41442315825540E+0001 2.41290742087723E+0001 2.41139231455925E+0001 2.40987783921898E+0001 2.40836399477393E+0001 - 2.40685078114144E+0001 2.40533819823889E+0001 2.40382624598351E+0001 2.40231492429249E+0001 2.40080423308294E+0001 - 2.39929417227191E+0001 2.39778474177637E+0001 2.39627594151322E+0001 2.39476777139925E+0001 2.39326023135125E+0001 - 2.39175332128589E+0001 2.39024704111976E+0001 2.38874139076942E+0001 2.38723637015128E+0001 2.38573197918178E+0001 - 2.38422821777719E+0001 2.38272508585376E+0001 2.38122258332767E+0001 2.37972071011497E+0001 2.37821946613170E+0001 - 2.37671885129380E+0001 2.37521886551712E+0001 2.37371950871744E+0001 2.37222078081050E+0001 2.37072268171190E+0001 - 2.36922521133724E+0001 2.36772836960198E+0001 2.36623215642153E+0001 2.36473657171124E+0001 2.36324161538634E+0001 - 2.36174728736204E+0001 2.36025358755340E+0001 2.35876051587549E+0001 2.35726807224324E+0001 2.35577625657151E+0001 - 2.35428506877511E+0001 2.35279450876874E+0001 2.35130457646706E+0001 2.34981527178460E+0001 2.34832659463586E+0001 - 2.34683854493524E+0001 2.34535112259708E+0001 2.34386432753560E+0001 2.34237815966498E+0001 2.34089261889930E+0001 - 2.33940770515257E+0001 2.33792341833873E+0001 2.33643975837162E+0001 2.33495672516501E+0001 2.33347431863259E+0001 - 2.33199253868798E+0001 2.33051138524469E+0001 2.32903085821619E+0001 2.32755095751583E+0001 2.32607168305691E+0001 - 2.32459303475263E+0001 2.32311501251612E+0001 2.32163761626043E+0001 2.32016084589851E+0001 2.31868470134325E+0001 - 2.31720918250746E+0001 2.31573428930385E+0001 2.31426002164504E+0001 2.31278637944362E+0001 2.31131336261202E+0001 - 2.30984097106268E+0001 2.30836920470786E+0001 2.30689806345982E+0001 2.30542754723067E+0001 2.30395765593249E+0001 - 2.30248838947726E+0001 2.30101974777687E+0001 2.29955173074311E+0001 2.29808433828771E+0001 2.29661757032233E+0001 - 2.29515142675853E+0001 2.29368590750775E+0001 2.29222101248142E+0001 2.29075674159081E+0001 2.28929309474716E+0001 - 2.28783007186162E+0001 2.28636767284521E+0001 2.28490589760891E+0001 2.28344474606361E+0001 2.28198421812010E+0001 - 2.28052431368909E+0001 2.27906503268120E+0001 2.27760637500699E+0001 2.27614834057691E+0001 2.27469092930130E+0001 - 2.27323414109048E+0001 2.27177797585463E+0001 2.27032243350385E+0001 2.26886751394818E+0001 2.26741321709756E+0001 - 2.26595954286184E+0001 2.26450649115076E+0001 2.26305406187404E+0001 2.26160225494123E+0001 2.26015107026186E+0001 - 2.25870050774534E+0001 2.25725056730101E+0001 2.25580124883807E+0001 2.25435255226571E+0001 2.25290447749301E+0001 - 2.25145702442891E+0001 2.25001019298232E+0001 2.24856398306203E+0001 2.24711839457678E+0001 2.24567342743518E+0001 - 2.24422908154575E+0001 2.24278535681696E+0001 2.24134225315717E+0001 2.23989977047465E+0001 2.23845790867756E+0001 - 2.23701666767402E+0001 2.23557604737203E+0001 2.23413604767950E+0001 2.23269666850426E+0001 2.23125790975402E+0001 - 2.22981977133647E+0001 2.22838225315914E+0001 2.22694535512949E+0001 2.22550907715491E+0001 2.22407341914268E+0001 - 2.22263838100000E+0001 2.22120396263398E+0001 2.21977016395163E+0001 2.21833698485988E+0001 2.21690442526556E+0001 - 2.21547248507541E+0001 2.21404116419610E+0001 2.21261046253417E+0001 2.21118037999611E+0001 2.20975091648828E+0001 - 2.20832207191700E+0001 2.20689384618844E+0001 2.20546623920871E+0001 2.20403925088384E+0001 2.20261288111973E+0001 - 2.20118712982223E+0001 2.19976199689707E+0001 2.19833748224990E+0001 2.19691358578629E+0001 2.19549030741167E+0001 - 2.19406764703145E+0001 2.19264560455086E+0001 2.19122417987515E+0001 2.18980337290936E+0001 2.18838318355852E+0001 - 2.18696361172752E+0001 2.18554465732119E+0001 2.18412632024424E+0001 2.18270860040133E+0001 2.18129149769696E+0001 - 2.17987501203559E+0001 2.17845914332158E+0001 2.17704389145917E+0001 2.17562925635254E+0001 2.17421523790574E+0001 - 2.17280183602276E+0001 2.17138905060749E+0001 2.16997688156371E+0001 2.16856532879512E+0001 2.16715439220531E+0001 - 2.16574407169780E+0001 2.16433436717601E+0001 2.16292527854323E+0001 2.16151680570272E+0001 2.16010894855759E+0001 - 2.15870170701089E+0001 2.15729508096555E+0001 2.15588907032441E+0001 2.15448367499025E+0001 2.15307889486571E+0001 - 2.15167472985335E+0001 2.15027117985566E+0001 2.14886824477499E+0001 2.14746592451362E+0001 2.14606421897375E+0001 - 2.14466312805745E+0001 2.14326265166673E+0001 2.14186278970347E+0001 2.14046354206948E+0001 2.13906490866648E+0001 - 2.13766688939606E+0001 2.13626948415974E+0001 2.13487269285895E+0001 2.13347651539500E+0001 2.13208095166914E+0001 - 2.13068600158248E+0001 2.12929166503608E+0001 2.12789794193086E+0001 2.12650483216766E+0001 2.12511233564726E+0001 - 2.12372045227028E+0001 2.12232918193730E+0001 2.12093852454874E+0001 2.11954848000501E+0001 2.11815904820635E+0001 - 2.11677022905295E+0001 2.11538202244486E+0001 2.11399442828208E+0001 2.11260744646446E+0001 2.11122107689182E+0001 - 2.10983531946381E+0001 2.10845017408004E+0001 2.10706564064001E+0001 2.10568171904311E+0001 2.10429840918863E+0001 - 2.10291571097578E+0001 2.10153362430366E+0001 2.10015214907128E+0001 2.09877128517755E+0001 2.09739103252128E+0001 - 2.09601139100119E+0001 2.09463236051589E+0001 2.09325394096390E+0001 2.09187613224365E+0001 2.09049893425348E+0001 - 2.08912234689158E+0001 2.08774637005611E+0001 2.08637100364509E+0001 2.08499624755647E+0001 2.08362210168807E+0001 - 2.08224856593762E+0001 2.08087564020279E+0001 2.07950332438110E+0001 2.07813161837000E+0001 2.07676052206683E+0001 - 2.07539003536886E+0001 2.07402015817323E+0001 2.07265089037699E+0001 2.07128223187709E+0001 2.06991418257038E+0001 - 2.06854674235364E+0001 2.06717991112351E+0001 2.06581368877656E+0001 2.06444807520925E+0001 2.06308307031794E+0001 - 2.06171867399890E+0001 2.06035488614830E+0001 2.05899170666219E+0001 2.05762913543657E+0001 2.05626717236728E+0001 - 2.05490581735011E+0001 2.05354507028074E+0001 2.05218493105472E+0001 2.05082539956754E+0001 2.04946647571458E+0001 - 2.04810815939112E+0001 2.04675045049233E+0001 2.04539334891330E+0001 2.04403685454900E+0001 2.04268096729432E+0001 - 2.04132568704404E+0001 2.03997101369284E+0001 2.03861694713531E+0001 2.03726348726595E+0001 2.03591063397912E+0001 - 2.03455838716912E+0001 2.03320674673015E+0001 2.03185571255628E+0001 2.03050528454151E+0001 2.02915546257973E+0001 - 2.02780624656473E+0001 2.02645763639020E+0001 2.02510963194974E+0001 2.02376223313684E+0001 2.02241543984488E+0001 - 2.02106925196717E+0001 2.01972366939691E+0001 2.01837869202718E+0001 2.01703431975099E+0001 2.01569055246122E+0001 - 2.01434739005068E+0001 2.01300483241207E+0001 2.01166287943797E+0001 2.01032153102090E+0001 2.00898078705324E+0001 - 2.00764064742731E+0001 2.00630111203529E+0001 2.00496218076928E+0001 2.00362385352129E+0001 2.00228613018323E+0001 - 2.00094901064687E+0001 1.99961249480394E+0001 1.99827658254603E+0001 1.99694127376464E+0001 1.99560656835117E+0001 - 1.99427246619692E+0001 1.99293896719311E+0001 1.99160607123083E+0001 1.99027377820107E+0001 1.98894208799475E+0001 - 1.98761100050267E+0001 1.98628051561553E+0001 1.98495063322394E+0001 1.98362135321840E+0001 1.98229267548930E+0001 - 1.98096459992696E+0001 1.97963712642158E+0001 1.97831025486326E+0001 1.97698398514202E+0001 1.97565831714773E+0001 - 1.97433325077023E+0001 1.97300878589921E+0001 1.97168492242427E+0001 1.97036166023492E+0001 1.96903899922057E+0001 - 1.96771693927051E+0001 1.96639548027396E+0001 1.96507462212001E+0001 1.96375436469769E+0001 1.96243470789588E+0001 - 1.96111565160339E+0001 1.95979719570893E+0001 1.95847934010112E+0001 1.95716208466844E+0001 1.95584542929930E+0001 - 1.95452937388202E+0001 1.95321391830480E+0001 1.95189906245574E+0001 1.95058480622285E+0001 1.94927114949404E+0001 - 1.94795809215712E+0001 1.94664563409977E+0001 1.94533377520963E+0001 1.94402251537420E+0001 1.94271185448086E+0001 - 1.94140179241695E+0001 1.94009232906966E+0001 1.93878346432610E+0001 1.93747519807329E+0001 1.93616753019811E+0001 - 1.93486046058739E+0001 1.93355398912784E+0001 1.93224811570605E+0001 1.93094284020855E+0001 1.92963816252174E+0001 - 1.92833408253192E+0001 1.92703060012531E+0001 1.92572771518802E+0001 1.92442542760605E+0001 1.92312373726532E+0001 - 1.92182264405163E+0001 1.92052214785072E+0001 1.91922224854816E+0001 1.91792294602949E+0001 1.91662424018012E+0001 - 1.91532613088535E+0001 1.91402861803040E+0001 1.91273170150038E+0001 1.91143538118031E+0001 1.91013965695510E+0001 - 1.90884452870956E+0001 1.90754999632842E+0001 1.90625605969629E+0001 1.90496271869767E+0001 1.90366997321700E+0001 - 1.90237782313859E+0001 1.90108626834665E+0001 1.89979530872531E+0001 1.89850494415858E+0001 1.89721517453039E+0001 - 1.89592599972455E+0001 1.89463741962478E+0001 1.89334943411472E+0001 1.89206204307788E+0001 1.89077524639769E+0001 - 1.88948904395747E+0001 1.88820343564045E+0001 1.88691842132976E+0001 1.88563400090841E+0001 1.88435017425935E+0001 - 1.88306694126539E+0001 1.88178430180928E+0001 1.88050225577363E+0001 1.87922080304099E+0001 1.87793994349380E+0001 - 1.87665967701436E+0001 1.87538000348495E+0001 1.87410092278768E+0001 1.87282243480459E+0001 1.87154453941763E+0001 - 1.87026723650863E+0001 1.86899052595933E+0001 1.86771440765139E+0001 1.86643888146635E+0001 1.86516394728565E+0001 - 1.86388960499063E+0001 1.86261585446256E+0001 1.86134269558257E+0001 1.86007012823172E+0001 1.85879815229098E+0001 - 1.85752676764118E+0001 1.85625597416309E+0001 1.85498577173737E+0001 1.85371616024458E+0001 1.85244713956518E+0001 - 1.85117870957953E+0001 1.84991087016791E+0001 1.84864362121047E+0001 1.84737696258729E+0001 1.84611089417835E+0001 - 1.84484541586350E+0001 1.84358052752254E+0001 1.84231622903514E+0001 1.84105252028088E+0001 1.83978940113924E+0001 - 1.83852687148960E+0001 1.83726493121126E+0001 1.83600358018340E+0001 1.83474281828511E+0001 1.83348264539540E+0001 - 1.83222306139314E+0001 1.83096406615715E+0001 1.82970565956613E+0001 1.82844784149867E+0001 1.82719061183329E+0001 - 1.82593397044839E+0001 1.82467791722229E+0001 1.82342245203321E+0001 1.82216757475925E+0001 1.82091328527844E+0001 - 1.81965958346870E+0001 1.81840646920787E+0001 1.81715394237366E+0001 1.81590200284372E+0001 1.81465065049556E+0001 - 1.81339988520665E+0001 1.81214970685432E+0001 1.81090011531581E+0001 1.80965111046827E+0001 1.80840269218876E+0001 - 1.80715486035422E+0001 1.80590761484152E+0001 1.80466095552742E+0001 1.80341488228859E+0001 1.80216939500160E+0001 - 1.80092449354291E+0001 1.79968017778890E+0001 1.79843644761588E+0001 1.79719330289999E+0001 1.79595074351735E+0001 - 1.79470876934394E+0001 1.79346738025567E+0001 1.79222657612832E+0001 1.79098635683761E+0001 1.78974672225914E+0001 - 1.78850767226843E+0001 1.78726920674090E+0001 1.78603132555186E+0001 1.78479402857655E+0001 1.78355731569009E+0001 - 1.78232118676752E+0001 1.78108564168378E+0001 1.77985068031372E+0001 1.77861630253208E+0001 1.77738250821353E+0001 - 1.77614929723261E+0001 1.77491666946379E+0001 1.77368462478145E+0001 1.77245316305985E+0001 1.77122228417318E+0001 - 1.76999198799552E+0001 1.76876227440085E+0001 1.76753314326309E+0001 1.76630459445602E+0001 1.76507662785335E+0001 - 1.76384924332869E+0001 1.76262244075556E+0001 1.76139622000738E+0001 1.76017058095749E+0001 1.75894552347910E+0001 - 1.75772104744537E+0001 1.75649715272935E+0001 1.75527383920397E+0001 1.75405110674211E+0001 1.75282895521652E+0001 - 1.75160738449987E+0001 1.75038639446474E+0001 1.74916598498361E+0001 1.74794615592889E+0001 1.74672690717284E+0001 - 1.74550823858769E+0001 1.74429015004553E+0001 1.74307264141839E+0001 1.74185571257818E+0001 1.74063936339674E+0001 - 1.73942359374580E+0001 1.73820840349701E+0001 1.73699379252190E+0001 1.73577976069195E+0001 1.73456630787851E+0001 - 1.73335343395285E+0001 1.73214113878616E+0001 1.73092942224952E+0001 1.72971828421393E+0001 1.72850772455028E+0001 - 1.72729774312939E+0001 1.72608833982196E+0001 1.72487951449863E+0001 1.72367126702993E+0001 1.72246359728630E+0001 - 1.72125650513807E+0001 1.72004999045553E+0001 1.71884405310882E+0001 1.71763869296801E+0001 1.71643390990310E+0001 - 1.71522970378397E+0001 1.71402607448041E+0001 1.71282302186214E+0001 1.71162054579877E+0001 1.71041864615982E+0001 - 1.70921732281472E+0001 1.70801657563282E+0001 1.70681640448337E+0001 1.70561680923552E+0001 1.70441778975835E+0001 - 1.70321934592084E+0001 1.70202147759186E+0001 1.70082418464023E+0001 1.69962746693464E+0001 1.69843132434371E+0001 - 1.69723575673596E+0001 1.69604076397984E+0001 1.69484634594368E+0001 1.69365250249573E+0001 1.69245923350418E+0001 - 1.69126653883708E+0001 1.69007441836243E+0001 1.68888287194812E+0001 1.68769189946195E+0001 1.68650150077165E+0001 - 1.68531167574483E+0001 1.68412242424903E+0001 1.68293374615172E+0001 1.68174564132023E+0001 1.68055810962184E+0001 - 1.67937115092373E+0001 1.67818476509300E+0001 1.67699895199663E+0001 1.67581371150156E+0001 1.67462904347460E+0001 - 1.67344494778249E+0001 1.67226142429188E+0001 1.67107847286932E+0001 1.66989609338129E+0001 1.66871428569417E+0001 - 1.66753304967425E+0001 1.66635238518775E+0001 1.66517229210078E+0001 1.66399277027936E+0001 1.66281381958945E+0001 - 1.66163543989690E+0001 1.66045763106748E+0001 1.65928039296686E+0001 1.65810372546064E+0001 1.65692762841432E+0001 - 1.65575210169333E+0001 1.65457714516299E+0001 1.65340275868855E+0001 1.65222894213516E+0001 1.65105569536790E+0001 - 1.64988301825174E+0001 1.64871091065160E+0001 1.64753937243226E+0001 1.64636840345846E+0001 1.64519800359484E+0001 - 1.64402817270595E+0001 1.64285891065624E+0001 1.64169021731012E+0001 1.64052209253184E+0001 1.63935453618565E+0001 - 1.63818754813564E+0001 1.63702112824587E+0001 1.63585527638027E+0001 1.63468999240271E+0001 1.63352527617697E+0001 - 1.63236112756675E+0001 1.63119754643565E+0001 1.63003453264721E+0001 1.62887208606484E+0001 1.62771020655191E+0001 - 1.62654889397170E+0001 1.62538814818737E+0001 1.62422796906204E+0001 1.62306835645872E+0001 1.62190931024034E+0001 - 1.62075083026974E+0001 1.61959291640969E+0001 1.61843556852286E+0001 1.61727878647186E+0001 1.61612257011918E+0001 - 1.61496691932727E+0001 1.61381183395846E+0001 1.61265731387501E+0001 1.61150335893909E+0001 1.61034996901280E+0001 - 1.60919714395816E+0001 1.60804488363708E+0001 1.60689318791141E+0001 1.60574205664291E+0001 1.60459148969326E+0001 - 1.60344148692406E+0001 1.60229204819681E+0001 1.60114317337294E+0001 1.59999486231381E+0001 1.59884711488068E+0001 - 1.59769993093473E+0001 1.59655331033707E+0001 1.59540725294871E+0001 1.59426175863059E+0001 1.59311682724357E+0001 - 1.59197245864842E+0001 1.59082865270583E+0001 1.58968540927642E+0001 1.58854272822071E+0001 1.58740060939915E+0001 - 1.58625905267213E+0001 1.58511805789990E+0001 1.58397762494269E+0001 1.58283775366063E+0001 1.58169844391373E+0001 - 1.58055969556200E+0001 1.57942150846529E+0001 1.57828388248342E+0001 1.57714681747610E+0001 1.57601031330299E+0001 - 1.57487436982365E+0001 1.57373898689755E+0001 1.57260416438410E+0001 1.57146990214263E+0001 1.57033620003238E+0001 - 1.56920305791251E+0001 1.56807047564212E+0001 1.56693845308021E+0001 1.56580699008570E+0001 1.56467608651744E+0001 - 1.56354574223422E+0001 1.56241595709470E+0001 1.56128673095752E+0001 1.56015806368120E+0001 1.55902995512420E+0001 - 1.55790240514489E+0001 1.55677541360158E+0001 1.55564898035249E+0001 1.55452310525576E+0001 1.55339778816947E+0001 - 1.55227302895157E+0001 1.55114882746002E+0001 1.55002518355262E+0001 1.54890209708713E+0001 1.54777956792125E+0001 - 1.54665759591255E+0001 1.54553618091859E+0001 1.54441532279678E+0001 1.54329502140452E+0001 1.54217527659910E+0001 - 1.54105608823773E+0001 1.53993745617755E+0001 1.53881938027564E+0001 1.53770186038898E+0001 1.53658489637448E+0001 - 1.53546848808898E+0001 1.53435263538925E+0001 1.53323733813198E+0001 1.53212259617376E+0001 1.53100840937113E+0001 - 1.52989477758057E+0001 1.52878170065845E+0001 1.52766917846108E+0001 1.52655721084470E+0001 1.52544579766547E+0001 - 1.52433493877948E+0001 1.52322463404273E+0001 1.52211488331116E+0001 1.52100568644064E+0001 1.51989704328695E+0001 - 1.51878895370581E+0001 1.51768141755286E+0001 1.51657443468366E+0001 1.51546800495371E+0001 1.51436212821843E+0001 - 1.51325680433316E+0001 1.51215203315318E+0001 1.51104781453369E+0001 1.50994414832981E+0001 1.50884103439659E+0001 - 1.50773847258902E+0001 1.50663646276201E+0001 1.50553500477039E+0001 1.50443409846892E+0001 1.50333374371230E+0001 - 1.50223394035514E+0001 1.50113468825200E+0001 1.50003598725734E+0001 1.49893783722557E+0001 1.49784023801101E+0001 - 1.49674318946795E+0001 1.49564669145055E+0001 1.49455074381293E+0001 1.49345534640915E+0001 1.49236049909318E+0001 - 1.49126620171891E+0001 1.49017245414020E+0001 1.48907925621079E+0001 1.48798660778438E+0001 1.48689450871460E+0001 - 1.48580295885498E+0001 1.48471195805903E+0001 1.48362150618014E+0001 1.48253160307167E+0001 1.48144224858687E+0001 - 1.48035344257896E+0001 1.47926518490106E+0001 1.47817747540624E+0001 1.47709031394750E+0001 1.47600370037776E+0001 - 1.47491763454987E+0001 1.47383211631663E+0001 1.47274714553075E+0001 1.47166272204489E+0001 1.47057884571162E+0001 - 1.46949551638347E+0001 1.46841273391286E+0001 1.46733049815219E+0001 1.46624880895376E+0001 1.46516766616982E+0001 - 1.46408706965253E+0001 1.46300701925401E+0001 1.46192751482629E+0001 1.46084855622135E+0001 1.45977014329109E+0001 - 1.45869227588735E+0001 1.45761495386190E+0001 1.45653817706645E+0001 1.45546194535263E+0001 1.45438625857202E+0001 - 1.45331111657611E+0001 1.45223651921636E+0001 1.45116246634413E+0001 1.45008895781073E+0001 1.44901599346740E+0001 - 1.44794357316532E+0001 1.44687169675559E+0001 1.44580036408927E+0001 1.44472957501734E+0001 1.44365932939070E+0001 - 1.44258962706021E+0001 1.44152046787664E+0001 1.44045185169074E+0001 1.43938377835314E+0001 1.43831624771444E+0001 - 1.43724925962517E+0001 1.43618281393579E+0001 1.43511691049670E+0001 1.43405154915823E+0001 1.43298672977066E+0001 - 1.43192245218420E+0001 1.43085871624898E+0001 1.42979552181509E+0001 1.42873286873254E+0001 1.42767075685130E+0001 - 1.42660918602126E+0001 1.42554815609224E+0001 1.42448766691401E+0001 1.42342771833627E+0001 1.42236831020867E+0001 - 1.42130944238079E+0001 1.42025111470214E+0001 1.41919332702218E+0001 1.41813607919031E+0001 1.41707937105585E+0001 - 1.41602320246807E+0001 1.41496757327620E+0001 1.41391248332936E+0001 1.41285793247666E+0001 1.41180392056712E+0001 - 1.41075044744970E+0001 1.40969751297331E+0001 1.40864511698678E+0001 1.40759325933892E+0001 1.40654193987843E+0001 - 1.40549115845399E+0001 1.40444091491419E+0001 1.40339120910758E+0001 1.40234204088265E+0001 1.40129341008781E+0001 - 1.40024531657143E+0001 1.39919776018183E+0001 1.39815074076724E+0001 1.39710425817585E+0001 1.39605831225580E+0001 - 1.39501290285515E+0001 1.39396802982191E+0001 1.39292369300404E+0001 1.39187989224943E+0001 1.39083662740591E+0001 - 1.38979389832128E+0001 1.38875170484325E+0001 1.38771004681947E+0001 1.38666892409756E+0001 1.38562833652507E+0001 - 1.38458828394949E+0001 1.38354876621825E+0001 1.38250978317872E+0001 1.38147133467823E+0001 1.38043342056404E+0001 - 1.37939604068336E+0001 1.37835919488334E+0001 1.37732288301107E+0001 1.37628710491359E+0001 1.37525186043789E+0001 - 1.37421714943088E+0001 1.37318297173944E+0001 1.37214932721039E+0001 1.37111621569048E+0001 1.37008363702642E+0001 - 1.36905159106485E+0001 1.36802007765238E+0001 1.36698909663554E+0001 1.36595864786082E+0001 1.36492873117464E+0001 - 1.36389934642338E+0001 1.36287049345337E+0001 1.36184217211087E+0001 1.36081438224209E+0001 1.35978712369320E+0001 - 1.35876039631030E+0001 1.35773419993944E+0001 1.35670853442663E+0001 1.35568339961780E+0001 1.35465879535886E+0001 - 1.35363472149563E+0001 1.35261117787392E+0001 1.35158816433945E+0001 1.35056568073790E+0001 1.34954372691491E+0001 - 1.34852230271606E+0001 1.34750140798685E+0001 1.34648104257279E+0001 1.34546120631927E+0001 1.34444189907168E+0001 - 1.34342312067533E+0001 1.34240487097550E+0001 1.34138714981739E+0001 1.34036995704617E+0001 1.33935329250695E+0001 - 1.33833715604481E+0001 1.33732154750475E+0001 1.33630646673174E+0001 1.33529191357068E+0001 1.33427788786644E+0001 - 1.33326438946384E+0001 1.33225141820763E+0001 1.33123897394252E+0001 1.33022705651319E+0001 1.32921566576425E+0001 - 1.32820480154025E+0001 1.32719446368572E+0001 1.32618465204511E+0001 1.32517536646286E+0001 1.32416660678332E+0001 - 1.32315837285082E+0001 1.32215066450963E+0001 1.32114348160398E+0001 1.32013682397804E+0001 1.31913069147593E+0001 - 1.31812508394175E+0001 1.31712000121951E+0001 1.31611544315321E+0001 1.31511140958679E+0001 1.31410790036413E+0001 - 1.31310491532908E+0001 1.31210245432543E+0001 1.31110051719695E+0001 1.31009910378732E+0001 1.30909821394021E+0001 - 1.30809784749922E+0001 1.30709800430793E+0001 1.30609868420984E+0001 1.30509988704845E+0001 1.30410161266716E+0001 - 1.30310386090937E+0001 1.30210663161841E+0001 1.30110992463756E+0001 1.30011373981009E+0001 1.29911807697918E+0001 - 1.29812293598800E+0001 1.29712831667966E+0001 1.29613421889722E+0001 1.29514064248371E+0001 1.29414758728210E+0001 - 1.29315505313534E+0001 1.29216303988631E+0001 1.29117154737786E+0001 1.29018057545279E+0001 1.28919012395387E+0001 - 1.28820019272382E+0001 1.28721078160529E+0001 1.28622189044094E+0001 1.28523351907334E+0001 1.28424566734504E+0001 - 1.28325833509855E+0001 1.28227152217632E+0001 1.28128522842078E+0001 1.28029945367430E+0001 1.27931419777922E+0001 - 1.27832946057782E+0001 1.27734524191236E+0001 1.27636154162506E+0001 1.27537835955808E+0001 1.27439569555354E+0001 - 1.27341354945354E+0001 1.27243192110011E+0001 1.27145081033528E+0001 1.27047021700099E+0001 1.26949014093917E+0001 - 1.26851058199171E+0001 1.26753154000046E+0001 1.26655301480721E+0001 1.26557500625374E+0001 1.26459751418175E+0001 - 1.26362053843295E+0001 1.26264407884897E+0001 1.26166813527143E+0001 1.26069270754189E+0001 1.25971779550188E+0001 - 1.25874339899289E+0001 1.25776951785637E+0001 1.25679615193374E+0001 1.25582330106637E+0001 1.25485096509560E+0001 - 1.25387914386273E+0001 1.25290783720901E+0001 1.25193704497568E+0001 1.25096676700391E+0001 1.24999700313487E+0001 - 1.24902775320965E+0001 1.24805901706934E+0001 1.24709079455496E+0001 1.24612308550754E+0001 1.24515588976802E+0001 - 1.24418920717734E+0001 1.24322303757639E+0001 1.24225738080602E+0001 1.24129223670706E+0001 1.24032760512029E+0001 - 1.23936348588645E+0001 1.23839987884627E+0001 1.23743678384042E+0001 1.23647420070953E+0001 1.23551212929423E+0001 - 1.23455056943508E+0001 1.23358952097262E+0001 1.23262898374735E+0001 1.23166895759975E+0001 1.23070944237024E+0001 - 1.22975043789924E+0001 1.22879194402710E+0001 1.22783396059415E+0001 1.22687648744071E+0001 1.22591952440703E+0001 - 1.22496307133335E+0001 1.22400712805986E+0001 1.22305169442674E+0001 1.22209677027412E+0001 1.22114235544209E+0001 - 1.22018844977073E+0001 1.21923505310007E+0001 1.21828216527011E+0001 1.21732978612084E+0001 1.21637791549218E+0001 - 1.21542655322404E+0001 1.21447569915631E+0001 1.21352535312882E+0001 1.21257551498139E+0001 1.21162618455380E+0001 - 1.21067736168581E+0001 1.20972904621713E+0001 1.20878123798745E+0001 1.20783393683644E+0001 1.20688714260372E+0001 - 1.20594085512888E+0001 1.20499507425151E+0001 1.20404979981113E+0001 1.20310503164726E+0001 1.20216076959937E+0001 - 1.20121701350692E+0001 1.20027376320932E+0001 1.19933101854597E+0001 1.19838877935622E+0001 1.19744704547942E+0001 - 1.19650581675486E+0001 1.19556509302182E+0001 1.19462487411956E+0001 1.19368515988728E+0001 1.19274595016418E+0001 - 1.19180724478943E+0001 1.19086904360215E+0001 1.18993134644147E+0001 1.18899415314645E+0001 1.18805746355615E+0001 - 1.18712127750960E+0001 1.18618559484580E+0001 1.18525041540371E+0001 1.18431573902229E+0001 1.18338156554045E+0001 - 1.18244789479709E+0001 1.18151472663107E+0001 1.18058206088123E+0001 1.17964989738639E+0001 1.17871823598534E+0001 - 1.17778707651683E+0001 1.17685641881961E+0001 1.17592626273238E+0001 1.17499660809385E+0001 1.17406745474266E+0001 - 1.17313880251745E+0001 1.17221065125684E+0001 1.17128300079941E+0001 1.17035585098374E+0001 1.16942920164835E+0001 - 1.16850305263176E+0001 1.16757740377247E+0001 1.16665225490894E+0001 1.16572760587962E+0001 1.16480345652293E+0001 - 1.16387980667725E+0001 1.16295665618098E+0001 1.16203400487246E+0001 1.16111185259001E+0001 1.16019019917195E+0001 - 1.15926904445655E+0001 1.15834838828209E+0001 1.15742823048679E+0001 1.15650857090887E+0001 1.15558940938652E+0001 - 1.15467074575792E+0001 1.15375257986123E+0001 1.15283491153456E+0001 1.15191774061604E+0001 1.15100106694374E+0001 - 1.15008489035573E+0001 1.14916921069005E+0001 1.14825402778474E+0001 1.14733934147780E+0001 1.14642515160720E+0001 - 1.14551145801092E+0001 1.14459826052690E+0001 1.14368555899306E+0001 1.14277335324730E+0001 1.14186164312751E+0001 - 1.14095042847155E+0001 1.14003970911727E+0001 1.13912948490250E+0001 1.13821975566504E+0001 1.13731052124269E+0001 - 1.13640178147320E+0001 1.13549353619434E+0001 1.13458578524383E+0001 1.13367852845939E+0001 1.13277176567872E+0001 - 1.13186549673949E+0001 1.13095972147937E+0001 1.13005443973599E+0001 1.12914965134700E+0001 1.12824535614999E+0001 - 1.12734155398255E+0001 1.12643824468227E+0001 1.12553542808669E+0001 1.12463310403336E+0001 1.12373127235980E+0001 - 1.12282993290352E+0001 1.12192908550202E+0001 1.12102872999276E+0001 1.12012886621322E+0001 1.11922949400082E+0001 - 1.11833061319301E+0001 1.11743222362719E+0001 1.11653432514075E+0001 1.11563691757110E+0001 1.11474000075558E+0001 - 1.11384357453155E+0001 1.11294763873636E+0001 1.11205219320732E+0001 1.11115723778175E+0001 1.11026277229693E+0001 - 1.10936879659015E+0001 1.10847531049868E+0001 1.10758231385977E+0001 1.10668980651065E+0001 1.10579778828855E+0001 - 1.10490625903069E+0001 1.10401521857427E+0001 1.10312466675647E+0001 1.10223460341446E+0001 1.10134502838540E+0001 - 1.10045594150645E+0001 1.09956734261474E+0001 1.09867923154739E+0001 1.09779160814151E+0001 1.09690447223421E+0001 - 1.09601782366256E+0001 1.09513166226365E+0001 1.09424598787455E+0001 1.09336080033229E+0001 1.09247609947393E+0001 - 1.09159188513650E+0001 1.09070815715701E+0001 1.08982491537247E+0001 1.08894215961990E+0001 1.08805988973626E+0001 - 1.08717810555854E+0001 1.08629680692370E+0001 1.08541599366872E+0001 1.08453566563052E+0001 1.08365582264606E+0001 - 1.08277646455225E+0001 1.08189759118603E+0001 1.08101920238429E+0001 1.08014129798394E+0001 1.07926387782187E+0001 - 1.07838694173496E+0001 1.07751048956010E+0001 1.07663452113414E+0001 1.07575903629394E+0001 1.07488403487636E+0001 - 1.07400951671823E+0001 1.07313548165638E+0001 1.07226192952766E+0001 1.07138886016886E+0001 1.07051627341681E+0001 - 1.06964416910830E+0001 1.06877254708014E+0001 1.06790140716911E+0001 1.06703074921199E+0001 1.06616057304557E+0001 - 1.06529087850661E+0001 1.06442166543187E+0001 1.06355293365812E+0001 1.06268468302210E+0001 1.06181691336055E+0001 - 1.06094962451023E+0001 1.06008281630785E+0001 1.05921648859015E+0001 1.05835064119386E+0001 1.05748527395568E+0001 - 1.05662038671234E+0001 1.05575597930053E+0001 1.05489205155697E+0001 1.05402860331835E+0001 1.05316563442136E+0001 - 1.05230314470269E+0001 1.05144113399905E+0001 1.05057960214708E+0001 1.04971854898349E+0001 1.04885797434495E+0001 - 1.04799787806811E+0001 1.04713825998966E+0001 1.04627911994626E+0001 1.04542045777456E+0001 1.04456227331122E+0001 - 1.04370456639291E+0001 1.04284733685626E+0001 1.04199058453794E+0001 1.04113430927459E+0001 1.04027851090285E+0001 - 1.03942318925937E+0001 1.03856834418079E+0001 1.03771397550375E+0001 1.03686008306488E+0001 1.03600666670083E+0001 - 1.03515372624823E+0001 1.03430126154371E+0001 1.03344927242391E+0001 1.03259775872546E+0001 1.03174672028498E+0001 - 1.03089615693912E+0001 1.03004606852450E+0001 1.02919645487775E+0001 1.02834731583551E+0001 1.02749865123439E+0001 - 1.02665046091104E+0001 1.02580274470208E+0001 1.02495550244415E+0001 1.02410873397387E+0001 1.02326243912788E+0001 - 1.02241661774281E+0001 1.02157126965529E+0001 1.02072639470196E+0001 1.01988199271947E+0001 1.01903806354444E+0001 - 1.01819460701351E+0001 1.01735162296333E+0001 1.01650911123054E+0001 1.01566707165179E+0001 1.01482550406372E+0001 - 1.01398440830299E+0001 1.01314378420624E+0001 1.01230363161013E+0001 1.01146395035133E+0001 1.01062474026648E+0001 - 1.00978600119227E+0001 1.00894773296534E+0001 1.00810993542238E+0001 1.00727260840005E+0001 1.00643575173504E+0001 - 1.00559936526402E+0001 1.00476344882369E+0001 1.00392800225073E+0001 1.00309302538183E+0001 1.00225851805370E+0001 - 1.00142448010303E+0001 1.00059091136654E+0001 9.99757811680939E+0000 9.98925180882935E+0000 9.98093018809256E+0000 - 9.97261325296630E+0000 9.96430100181789E+0000 9.95599343301473E+0000 9.94769054492424E+0000 9.93939233591392E+0000 - 9.93109880435135E+0000 9.92280994860413E+0000 9.91452576703994E+0000 9.90624625802652E+0000 9.89797141993172E+0000 - 9.88970125112335E+0000 9.88143574996940E+0000 9.87317491483789E+0000 9.86491874409689E+0000 9.85666723611454E+0000 - 9.84842038925910E+0000 9.84017820189886E+0000 9.83194067240220E+0000 9.82370779913763E+0000 9.81547958047361E+0000 - 9.80725601477884E+0000 9.79903710042197E+0000 9.79082283577180E+0000 9.78261321919721E+0000 9.77440824906714E+0000 - 9.76620792375067E+0000 9.75801224161693E+0000 9.74982120103511E+0000 9.74163480037457E+0000 9.73345303800470E+0000 - 9.72527591229503E+0000 9.71710342161515E+0000 9.70893556433476E+0000 9.70077233882364E+0000 9.69261374345177E+0000 - 9.68445977658906E+0000 9.67631043660566E+0000 9.66816572187177E+0000 9.66002563075773E+0000 9.65189016163392E+0000 - 9.64375931287094E+0000 9.63563308283940E+0000 9.62751146991002E+0000 9.61939447245374E+0000 9.61128208884149E+0000 - 9.60317431744441E+0000 9.59507115663367E+0000 9.58697260478064E+0000 9.57887866025680E+0000 9.57078932143365E+0000 - 9.56270458668295E+0000 9.55462445437652E+0000 9.54654892288628E+0000 9.53847799058435E+0000 9.53041165584290E+0000 - 9.52234991703427E+0000 9.51429277253094E+0000 9.50624022070549E+0000 9.49819225993068E+0000 9.49014888857934E+0000 - 9.48211010502452E+0000 9.47407590763933E+0000 9.46604629479705E+0000 9.45802126487112E+0000 9.45000081623508E+0000 - 9.44198494726267E+0000 9.43397365632771E+0000 9.42596694180422E+0000 9.41796480206634E+0000 9.40996723548834E+0000 - 9.40197424044471E+0000 9.39398581531003E+0000 9.38600195845903E+0000 9.37802266826663E+0000 9.37004794310788E+0000 - 9.36207778135801E+0000 9.35411218139241E+0000 9.34615114158656E+0000 9.33819466031618E+0000 9.33024273595716E+0000 - 9.32229536688548E+0000 9.31435255147736E+0000 9.30641428810913E+0000 9.29848057515731E+0000 9.29055141099861E+0000 - 9.28262679400988E+0000 9.27470672256814E+0000 9.26679119505059E+0000 9.25888020983464E+0000 9.25097376529783E+0000 - 9.24307185981789E+0000 9.23517449177273E+0000 9.22728165954043E+0000 9.21939336149930E+0000 9.21150959602775E+0000 - 9.20363036150446E+0000 9.19575565630822E+0000 9.18788547881805E+0000 9.18001982741314E+0000 9.17215870047289E+0000 - 9.16430209637687E+0000 9.15645001350487E+0000 9.14860245023679E+0000 9.14075940495286E+0000 9.13292087603338E+0000 - 9.12508686185892E+0000 9.11725736081023E+0000 9.10943237126822E+0000 9.10161189161410E+0000 9.09379592022917E+0000 - 9.08598445549500E+0000 9.07817749579335E+0000 9.07037503950616E+0000 9.06257708501564E+0000 9.05478363070414E+0000 - 9.04699467495426E+0000 9.03921021614880E+0000 9.03143025267078E+0000 9.02365478290340E+0000 9.01588380523015E+0000 - 9.00811731803464E+0000 9.00035531970079E+0000 8.99259780861266E+0000 8.98484478315460E+0000 8.97709624171112E+0000 - 8.96935218266699E+0000 8.96161260440720E+0000 8.95387750531694E+0000 8.94614688378168E+0000 8.93842073818708E+0000 - 8.93069906691900E+0000 8.92298186836360E+0000 8.91526914090722E+0000 8.90756088293648E+0000 8.89985709283817E+0000 - 8.89215776899935E+0000 8.88446290980735E+0000 8.87677251364967E+0000 8.86908657891410E+0000 8.86140510398867E+0000 - 8.85372808726160E+0000 8.84605552712145E+0000 8.83838742195691E+0000 8.83072377015700E+0000 8.82306457011094E+0000 - 8.81540982020825E+0000 8.80775951883862E+0000 8.80011366439207E+0000 8.79247225525884E+0000 8.78483528982942E+0000 - 8.77720276649455E+0000 8.76957468364521E+0000 8.76195103967271E+0000 8.75433183296853E+0000 8.74671706192447E+0000 - 8.73910672493256E+0000 8.73150082038511E+0000 8.72389934667465E+0000 8.71630230219406E+0000 8.70870968533639E+0000 - 8.70112149449504E+0000 8.69353772806359E+0000 8.68595838443600E+0000 8.67838346200639E+0000 8.67081295916922E+0000 - 8.66324687431921E+0000 8.65568520585135E+0000 8.64812795216088E+0000 8.64057511164338E+0000 8.63302668269464E+0000 - 8.62548266371077E+0000 8.61794305308815E+0000 8.61040784922344E+0000 8.60287705051357E+0000 8.59535065535577E+0000 - 8.58782866214758E+0000 8.58031106928678E+0000 8.57279787517144E+0000 8.56528907819998E+0000 8.55778467677102E+0000 - 8.55028466928356E+0000 8.54278905413680E+0000 8.53529782973033E+0000 8.52781099446396E+0000 8.52032854673785E+0000 - 8.51285048495242E+0000 8.50537680750837E+0000 8.49790751280677E+0000 8.49044259924895E+0000 8.48298206523652E+0000 - 8.47552590917143E+0000 8.46807412945592E+0000 8.46062672449253E+0000 8.45318369268414E+0000 8.44574503243386E+0000 - 8.43831074214521E+0000 8.43088082022194E+0000 8.42345526506817E+0000 8.41603407508827E+0000 8.40861724868699E+0000 - 8.40120478426933E+0000 8.39379668024068E+0000 8.38639293500666E+0000 8.37899354697332E+0000 8.37159851454690E+0000 - 8.36420783613407E+0000 8.35682151014175E+0000 8.34943953497722E+0000 8.34206190904810E+0000 8.33468863076227E+0000 - 8.32731969852802E+0000 8.31995511075388E+0000 8.31259486584878E+0000 8.30523896222197E+0000 8.29788739828298E+0000 - 8.29054017244174E+0000 8.28319728310845E+0000 8.27585872869371E+0000 8.26852450760839E+0000 8.26119461826376E+0000 - 8.25386905907137E+0000 8.24654782844314E+0000 8.23923092479135E+0000 8.23191834652857E+0000 8.22461009206776E+0000 - 8.21730615982219E+0000 8.21000654820550E+0000 8.20271125563166E+0000 8.19542028051498E+0000 8.18813362127014E+0000 - 8.18085127631217E+0000 8.17357324405643E+0000 8.16629952291863E+0000 8.15903011131486E+0000 8.15176500766154E+0000 - 8.14450421037546E+0000 8.13724771787376E+0000 8.12999552857393E+0000 8.12274764089383E+0000 8.11550405325163E+0000 - 8.10826476406597E+0000 8.10102977175576E+0000 8.09379907474028E+0000 8.08657267143921E+0000 8.07935056027258E+0000 - 8.07213273966074E+0000 8.06491920802450E+0000 8.05770996378499E+0000 8.05050500536365E+0000 8.04330433118241E+0000 - 8.03610793966346E+0000 8.02891582922943E+0000 8.02172799830329E+0000 8.01454444530843E+0000 8.00736516866856E+0000 - 8.00019016680779E+0000 7.99301943815061E+0000 7.98585298112188E+0000 7.97869079414687E+0000 7.97153287565119E+0000 - 7.96437922406085E+0000 7.95722983780224E+0000 7.95008471530216E+0000 7.94294385498773E+0000 7.93580725528655E+0000 - 7.92867491462652E+0000 7.92154683143597E+0000 7.91442300414361E+0000 7.90730343117856E+0000 7.90018811097031E+0000 - 7.89307704194874E+0000 7.88597022254414E+0000 7.87886765118719E+0000 7.87176932630895E+0000 7.86467524634090E+0000 - 7.85758540971490E+0000 7.85049981486321E+0000 7.84341846021851E+0000 7.83634134421386E+0000 7.82926846528273E+0000 - 7.82219982185899E+0000 7.81513541237692E+0000 7.80807523527118E+0000 7.80101928897688E+0000 7.79396757192950E+0000 - 7.78692008256495E+0000 7.77987681931954E+0000 7.77283778062998E+0000 7.76580296493341E+0000 7.75877237066737E+0000 - 7.75174599626982E+0000 7.74472384017913E+0000 7.73770590083409E+0000 7.73069217667388E+0000 7.72368266613815E+0000 - 7.71667736766693E+0000 7.70967627970067E+0000 7.70267940068024E+0000 7.69568672904695E+0000 7.68869826324251E+0000 - 7.68171400170908E+0000 7.67473394288921E+0000 7.66775808522590E+0000 7.66078642716256E+0000 7.65381896714305E+0000 - 7.64685570361164E+0000 7.63989663501302E+0000 7.63294175979233E+0000 7.62599107639513E+0000 7.61904458326742E+0000 - 7.61210227885564E+0000 7.60516416160663E+0000 7.59823022996770E+0000 7.59130048238658E+0000 7.58437491731143E+0000 - 7.57745353319087E+0000 7.57053632847393E+0000 7.56362330161013E+0000 7.55671445104936E+0000 7.54980977524200E+0000 - 7.54290927263886E+0000 7.53601294169120E+0000 7.52912078085071E+0000 7.52223278856954E+0000 7.51534896330026E+0000 - 7.50846930349594E+0000 7.50159380761003E+0000 7.49472247409649E+0000 7.48785530140971E+0000 7.48099228800448E+0000 - 7.47413343233614E+0000 7.46727873286040E+0000 7.46042818803347E+0000 7.45358179631197E+0000 7.44673955615304E+0000 - 7.43990146601422E+0000 7.43306752435353E+0000 7.42623772962945E+0000 7.41941208030091E+0000 7.41259057482732E+0000 - 7.40577321166852E+0000 7.39895998928484E+0000 7.39215090613705E+0000 7.38534596068640E+0000 7.37854515139461E+0000 - 7.37174847672384E+0000 7.36495593513675E+0000 7.35816752509644E+0000 7.35138324506649E+0000 7.34460309351094E+0000 - 7.33782706889433E+0000 7.33105516968163E+0000 7.32428739433828E+0000 7.31752374133026E+0000 7.31076420912396E+0000 - 7.30400879618625E+0000 7.29725750098449E+0000 7.29051032198652E+0000 7.28376725766064E+0000 7.27702830647565E+0000 - 7.27029346690081E+0000 7.26356273740588E+0000 7.25683611646106E+0000 7.25011360253709E+0000 7.24339519410515E+0000 - 7.23668088963691E+0000 7.22997068760453E+0000 7.22326458648064E+0000 7.21656258473840E+0000 7.20986468085142E+0000 - 7.20317087329379E+0000 7.19648116054011E+0000 7.18979554106546E+0000 7.18311401334541E+0000 7.17643657585602E+0000 - 7.16976322707386E+0000 7.16309396547596E+0000 7.15642878953986E+0000 7.14976769774359E+0000 7.14311068856570E+0000 - 7.13645776048522E+0000 7.12980891198164E+0000 7.12316414153499E+0000 7.11652344762579E+0000 7.10988682873509E+0000 - 7.10325428334436E+0000 7.09662580993563E+0000 7.09000140699142E+0000 7.08338107299478E+0000 7.07676480642920E+0000 - 7.07015260577873E+0000 7.06354446952789E+0000 7.05694039616172E+0000 7.05034038416579E+0000 7.04374443202613E+0000 - 7.03715253822931E+0000 7.03056470126240E+0000 7.02398091961298E+0000 7.01740119176914E+0000 7.01082551621950E+0000 - 7.00425389145313E+0000 6.99768631595970E+0000 6.99112278822934E+0000 6.98456330675270E+0000 6.97800787002095E+0000 - 6.97145647652576E+0000 6.96490912475936E+0000 6.95836581321448E+0000 6.95182654038431E+0000 6.94529130476265E+0000 - 6.93876010484376E+0000 6.93223293912245E+0000 6.92570980609403E+0000 6.91919070425435E+0000 6.91267563209975E+0000 - 6.90616458812715E+0000 6.89965757083395E+0000 6.89315457871808E+0000 6.88665561027800E+0000 6.88016066401272E+0000 - 6.87366973842175E+0000 6.86718283200512E+0000 6.86069994326342E+0000 6.85422107069775E+0000 6.84774621280974E+0000 - 6.84127536810156E+0000 6.83480853507590E+0000 6.82834571223600E+0000 6.82188689808562E+0000 6.81543209112904E+0000 - 6.80898128987111E+0000 6.80253449281719E+0000 6.79609169847320E+0000 6.78965290534554E+0000 6.78321811194121E+0000 - 6.77678731676774E+0000 6.77036051833316E+0000 6.76393771514607E+0000 6.75751890571560E+0000 6.75110408855145E+0000 - 6.74469326216381E+0000 6.73828642506345E+0000 6.73188357576168E+0000 6.72548471277033E+0000 6.71908983460180E+0000 - 6.71269893976902E+0000 6.70631202678549E+0000 6.69992909416521E+0000 6.69355014042278E+0000 6.68717516407331E+0000 - 6.68080416363250E+0000 6.67443713761655E+0000 6.66807408454223E+0000 6.66171500292686E+0000 6.65535989128833E+0000 - 6.64900874814506E+0000 6.64266157201602E+0000 6.63631836142075E+0000 6.62997911487935E+0000 6.62364383091243E+0000 - 6.61731250804121E+0000 6.61098514478744E+0000 6.60466173967342E+0000 6.59834229122202E+0000 6.59202679795668E+0000 - 6.58571525840135E+0000 6.57940767108060E+0000 6.57310403451952E+0000 6.56680434724376E+0000 6.56050860777959E+0000 - 6.55421681465374E+0000 6.54792896639358E+0000 6.54164506152703E+0000 6.53536509858257E+0000 6.52908907608921E+0000 - 6.52281699257657E+0000 6.51654884657482E+0000 6.51028463661470E+0000 6.50402436122750E+0000 6.49776801894510E+0000 - 6.49151560829993E+0000 6.48526712782499E+0000 6.47902257605388E+0000 6.47278195152072E+0000 6.46654525276024E+0000 - 6.46031247830772E+0000 6.45408362669902E+0000 6.44785869647057E+0000 6.44163768615938E+0000 6.43542059430301E+0000 - 6.42920741943963E+0000 6.42299816010796E+0000 6.41679281484728E+0000 6.41059138219749E+0000 6.40439386069905E+0000 - 6.39820024889295E+0000 6.39201054532084E+0000 6.38582474852488E+0000 6.37964285704785E+0000 6.37346486943307E+0000 - 6.36729078422448E+0000 6.36112059996658E+0000 6.35495431520446E+0000 6.34879192848376E+0000 6.34263343835075E+0000 - 6.33647884335226E+0000 6.33032814203570E+0000 6.32418133294905E+0000 6.31803841464092E+0000 6.31189938566045E+0000 - 6.30576424455741E+0000 6.29963298988212E+0000 6.29350562018552E+0000 6.28738213401909E+0000 6.28126252993497E+0000 - 6.27514680648580E+0000 6.26903496222490E+0000 6.26292699570609E+0000 6.25682290548386E+0000 6.25072269011322E+0000 - 6.24462634814983E+0000 6.23853387814991E+0000 6.23244527867025E+0000 6.22636054826829E+0000 6.22027968550201E+0000 - 6.21420268893003E+0000 6.20812955711150E+0000 6.20206028860624E+0000 6.19599488197459E+0000 6.18993333577754E+0000 - 6.18387564857667E+0000 6.17782181893413E+0000 6.17177184541268E+0000 6.16572572657569E+0000 6.15968346098709E+0000 - 6.15364504721145E+0000 6.14761048381393E+0000 6.14157976936026E+0000 6.13555290241681E+0000 6.12952988155052E+0000 - 6.12351070532895E+0000 6.11749537232025E+0000 6.11148388109316E+0000 6.10547623021706E+0000 6.09947241826189E+0000 - 6.09347244379822E+0000 6.08747630539720E+0000 6.08148400163062E+0000 6.07549553107084E+0000 6.06951089229084E+0000 - 6.06353008386420E+0000 6.05755310436512E+0000 6.05157995236836E+0000 6.04561062644937E+0000 6.03964512518412E+0000 - 6.03368344714924E+0000 6.02772559092195E+0000 6.02177155508008E+0000 6.01582133820209E+0000 6.00987493886698E+0000 - 6.00393235565446E+0000 5.99799358714477E+0000 5.99205863191879E+0000 5.98612748855804E+0000 5.98020015564457E+0000 - 5.97427663176113E+0000 5.96835691549103E+0000 5.96244100541821E+0000 5.95652890012723E+0000 5.95062059820324E+0000 - 5.94471609823203E+0000 5.93881539879996E+0000 5.93291849849408E+0000 5.92702539590198E+0000 5.92113608961191E+0000 - 5.91525057821270E+0000 5.90936886029384E+0000 5.90349093444542E+0000 5.89761679925812E+0000 5.89174645332327E+0000 - 5.88587989523280E+0000 5.88001712357926E+0000 5.87415813695584E+0000 5.86830293395631E+0000 5.86245151317509E+0000 - 5.85660387320721E+0000 5.85076001264832E+0000 5.84491993009469E+0000 5.83908362414320E+0000 5.83325109339138E+0000 - 5.82742233643734E+0000 5.82159735187985E+0000 5.81577613831828E+0000 5.80995869435263E+0000 5.80414501858352E+0000 - 5.79833510961220E+0000 5.79252896604052E+0000 5.78672658647100E+0000 5.78092796950673E+0000 5.77513311375146E+0000 - 5.76934201780955E+0000 5.76355468028600E+0000 5.75777109978641E+0000 5.75199127491702E+0000 5.74621520428472E+0000 - 5.74044288649698E+0000 5.73467432016194E+0000 5.72890950388832E+0000 5.72314843628552E+0000 5.71739111596352E+0000 - 5.71163754153297E+0000 5.70588771160511E+0000 5.70014162479184E+0000 5.69439927970566E+0000 5.68866067495974E+0000 - 5.68292580916782E+0000 5.67719468094434E+0000 5.67146728890431E+0000 5.66574363166340E+0000 5.66002370783790E+0000 - 5.65430751604474E+0000 5.64859505490148E+0000 5.64288632302631E+0000 5.63718131903804E+0000 5.63148004155612E+0000 - 5.62578248920065E+0000 5.62008866059234E+0000 5.61439855435254E+0000 5.60871216910323E+0000 5.60302950346702E+0000 - 5.59735055606718E+0000 5.59167532552756E+0000 5.58600381047272E+0000 5.58033600952779E+0000 5.57467192131856E+0000 - 5.56901154447145E+0000 5.56335487761351E+0000 5.55770191937244E+0000 5.55205266837658E+0000 5.54640712325488E+0000 - 5.54076528263694E+0000 5.53512714515299E+0000 5.52949270943393E+0000 5.52386197411125E+0000 5.51823493781709E+0000 - 5.51261159918425E+0000 5.50699195684614E+0000 5.50137600943683E+0000 5.49576375559102E+0000 5.49015519394402E+0000 - 5.48455032313184E+0000 5.47894914179107E+0000 5.47335164855896E+0000 5.46775784207342E+0000 5.46216772097296E+0000 - 5.45658128389676E+0000 5.45099852948462E+0000 5.44541945637699E+0000 5.43984406321497E+0000 5.43427234864027E+0000 - 5.42870431129528E+0000 5.42313994982298E+0000 5.41757926286705E+0000 5.41202224907178E+0000 5.40646890708208E+0000 - 5.40091923554353E+0000 5.39537323310236E+0000 5.38983089840542E+0000 5.38429223010021E+0000 5.37875722683486E+0000 - 5.37322588725816E+0000 5.36769821001953E+0000 5.36217419376906E+0000 5.35665383715743E+0000 5.35113713883601E+0000 - 5.34562409745679E+0000 5.34011471167241E+0000 5.33460898013616E+0000 5.32910690150195E+0000 5.32360847442436E+0000 - 5.31811369755860E+0000 5.31262256956053E+0000 5.30713508908664E+0000 5.30165125479409E+0000 5.29617106534066E+0000 - 5.29069451938479E+0000 5.28522161558555E+0000 5.27975235260266E+0000 5.27428672909650E+0000 5.26882474372807E+0000 - 5.26336639515902E+0000 5.25791168205168E+0000 5.25246060306897E+0000 5.24701315687449E+0000 5.24156934213249E+0000 - 5.23612915750784E+0000 5.23069260166607E+0000 5.22525967327336E+0000 5.21983037099653E+0000 5.21440469350304E+0000 - 5.20898263946100E+0000 5.20356420753919E+0000 5.19814939640700E+0000 5.19273820473447E+0000 5.18733063119231E+0000 - 5.18192667445186E+0000 5.17652633318512E+0000 5.17112960606471E+0000 5.16573649176393E+0000 5.16034698895671E+0000 - 5.15496109631760E+0000 5.14957881252186E+0000 5.14420013624534E+0000 5.13882506616456E+0000 5.13345360095669E+0000 - 5.12808573929954E+0000 5.12272147987157E+0000 5.11736082135189E+0000 5.11200376242024E+0000 5.10665030175703E+0000 - 5.10130043804331E+0000 5.09595416996078E+0000 5.09061149619177E+0000 5.08527241541928E+0000 5.07993692632695E+0000 - 5.07460502759907E+0000 5.06927671792056E+0000 5.06395199597700E+0000 5.05863086045463E+0000 5.05331331004033E+0000 - 5.04799934342161E+0000 5.04268895928664E+0000 5.03738215632425E+0000 5.03207893322391E+0000 5.02677928867572E+0000 - 5.02148322137046E+0000 5.01619072999953E+0000 5.01090181325499E+0000 5.00561646982955E+0000 5.00033469841656E+0000 - 4.99505649771001E+0000 4.98978186640457E+0000 4.98451080319553E+0000 4.97924330677883E+0000 4.97397937585106E+0000 - 4.96871900910947E+0000 4.96346220525193E+0000 4.95820896297701E+0000 4.95295928098385E+0000 4.94771315797231E+0000 - 4.94247059264287E+0000 4.93723158369664E+0000 4.93199612983539E+0000 4.92676422976156E+0000 4.92153588217821E+0000 - 4.91631108578904E+0000 4.91108983929844E+0000 4.90587214141141E+0000 4.90065799083360E+0000 4.89544738627132E+0000 - 4.89024032643153E+0000 4.88503681002181E+0000 4.87983683575043E+0000 4.87464040232627E+0000 4.86944750845887E+0000 - 4.86425815285842E+0000 4.85907233423576E+0000 4.85389005130236E+0000 4.84871130277035E+0000 4.84353608735250E+0000 - 4.83836440376225E+0000 4.83319625071365E+0000 4.82803162692142E+0000 4.82287053110091E+0000 4.81771296196814E+0000 - 4.81255891823975E+0000 4.80740839863305E+0000 4.80226140186597E+0000 4.79711792665710E+0000 4.79197797172570E+0000 - 4.78684153579163E+0000 4.78170861757542E+0000 4.77657921579824E+0000 4.77145332918191E+0000 4.76633095644890E+0000 - 4.76121209632231E+0000 4.75609674752589E+0000 4.75098490878404E+0000 4.74587657882181E+0000 4.74077175636488E+0000 - 4.73567044013959E+0000 4.73057262887290E+0000 4.72547832129245E+0000 4.72038751612649E+0000 4.71530021210393E+0000 - 4.71021640795433E+0000 4.70513610240787E+0000 4.70005929419542E+0000 4.69498598204843E+0000 4.68991616469904E+0000 - 4.68484984088003E+0000 4.67978700932479E+0000 4.67472766876739E+0000 4.66967181794252E+0000 4.66461945558554E+0000 - 4.65957058043240E+0000 4.65452519121976E+0000 4.64948328668486E+0000 4.64444486556562E+0000 4.63940992660059E+0000 - 4.63437846852896E+0000 4.62935049009057E+0000 4.62432599002589E+0000 4.61930496707603E+0000 4.61428741998275E+0000 - 4.60927334748845E+0000 4.60426274833617E+0000 4.59925562126958E+0000 4.59425196503301E+0000 4.58925177837140E+0000 - 4.58425506003036E+0000 4.57926180875612E+0000 4.57427202329556E+0000 4.56928570239620E+0000 4.56430284480619E+0000 - 4.55932344927432E+0000 4.55434751455001E+0000 4.54937503938335E+0000 4.54440602252504E+0000 4.53944046272642E+0000 - 4.53447835873949E+0000 4.52951970931684E+0000 4.52456451321175E+0000 4.51961276917811E+0000 4.51466447597044E+0000 - 4.50971963234392E+0000 4.50477823705435E+0000 4.49984028885817E+0000 4.49490578651245E+0000 4.48997472877491E+0000 - 4.48504711440388E+0000 4.48012294215836E+0000 4.47520221079795E+0000 4.47028491908291E+0000 4.46537106577411E+0000 - 4.46046064963309E+0000 4.45555366942198E+0000 4.45065012390359E+0000 4.44575001184131E+0000 4.44085333199922E+0000 - 4.43596008314198E+0000 4.43107026403492E+0000 4.42618387344398E+0000 4.42130091013575E+0000 4.41642137287744E+0000 - 4.41154526043689E+0000 4.40667257158258E+0000 4.40180330508361E+0000 4.39693745970972E+0000 4.39207503423127E+0000 - 4.38721602741925E+0000 4.38236043804531E+0000 4.37750826488168E+0000 4.37265950670125E+0000 4.36781416227754E+0000 - 4.36297223038468E+0000 4.35813370979745E+0000 4.35329859929123E+0000 4.34846689764206E+0000 4.34363860362658E+0000 - 4.33881371602208E+0000 4.33399223360645E+0000 4.32917415515822E+0000 4.32435947945656E+0000 4.31954820528125E+0000 - 4.31474033141269E+0000 4.30993585663191E+0000 4.30513477972057E+0000 4.30033709946095E+0000 4.29554281463595E+0000 - 4.29075192402911E+0000 4.28596442642458E+0000 4.28118032060712E+0000 4.27639960536213E+0000 4.27162227947564E+0000 - 4.26684834173429E+0000 4.26207779092532E+0000 4.25731062583664E+0000 4.25254684525675E+0000 4.24778644797475E+0000 - 4.24302943278042E+0000 4.23827579846409E+0000 4.23352554381676E+0000 4.22877866763003E+0000 4.22403516869613E+0000 - 4.21929504580787E+0000 4.21455829775874E+0000 4.20982492334280E+0000 4.20509492135473E+0000 4.20036829058986E+0000 - 4.19564502984410E+0000 4.19092513791399E+0000 4.18620861359668E+0000 4.18149545568995E+0000 4.17678566299219E+0000 - 4.17207923430239E+0000 4.16737616842015E+0000 4.16267646414573E+0000 4.15798012027994E+0000 4.15328713562425E+0000 - 4.14859750898071E+0000 4.14391123915201E+0000 4.13922832494143E+0000 4.13454876515288E+0000 4.12987255859085E+0000 - 4.12519970406048E+0000 4.12053020036748E+0000 4.11586404631822E+0000 4.11120124071961E+0000 4.10654178237923E+0000 - 4.10188567010523E+0000 4.09723290270640E+0000 4.09258347899211E+0000 4.08793739777234E+0000 4.08329465785769E+0000 - 4.07865525805936E+0000 4.07401919718914E+0000 4.06938647405946E+0000 4.06475708748332E+0000 4.06013103627433E+0000 - 4.05550831924672E+0000 4.05088893521532E+0000 4.04627288299554E+0000 4.04166016140342E+0000 4.03705076925560E+0000 - 4.03244470536929E+0000 4.02784196856233E+0000 4.02324255765316E+0000 4.01864647146081E+0000 4.01405370880490E+0000 - 4.00946426850568E+0000 4.00487814938398E+0000 4.00029535026121E+0000 3.99571586995939E+0000 3.99113970730117E+0000 - 3.98656686110976E+0000 3.98199733020896E+0000 3.97743111342319E+0000 3.97286820957745E+0000 3.96830861749735E+0000 - 3.96375233600907E+0000 3.95919936393941E+0000 3.95464970011574E+0000 3.95010334336603E+0000 3.94556029251886E+0000 - 3.94102054640337E+0000 3.93648410384932E+0000 3.93195096368704E+0000 3.92742112474745E+0000 3.92289458586207E+0000 - 3.91837134586303E+0000 3.91385140358299E+0000 3.90933475785525E+0000 3.90482140751367E+0000 3.90031135139271E+0000 - 3.89580458832742E+0000 3.89130111715341E+0000 3.88680093670690E+0000 3.88230404582469E+0000 3.87781044334417E+0000 - 3.87332012810329E+0000 3.86883309894060E+0000 3.86434935469524E+0000 3.85986889420691E+0000 3.85539171631591E+0000 - 3.85091781986311E+0000 3.84644720368998E+0000 3.84197986663853E+0000 3.83751580755138E+0000 3.83305502527173E+0000 - 3.82859751864335E+0000 3.82414328651057E+0000 3.81969232771833E+0000 3.81524464111213E+0000 3.81080022553803E+0000 - 3.80635907984269E+0000 3.80192120287334E+0000 3.79748659347777E+0000 3.79305525050435E+0000 3.78862717280203E+0000 - 3.78420235922033E+0000 3.77978080860933E+0000 3.77536251981969E+0000 3.77094749170264E+0000 3.76653572310998E+0000 - 3.76212721289408E+0000 3.75772195990787E+0000 3.75331996300487E+0000 3.74892122103913E+0000 3.74452573286531E+0000 - 3.74013349733859E+0000 3.73574451331476E+0000 3.73135877965015E+0000 3.72697629520166E+0000 3.72259705882674E+0000 - 3.71822106938343E+0000 3.71384832573031E+0000 3.70947882672653E+0000 3.70511257123180E+0000 3.70074955810640E+0000 - 3.69638978621115E+0000 3.69203325440744E+0000 3.68767996155723E+0000 3.68332990652301E+0000 3.67898308816785E+0000 - 3.67463950535537E+0000 3.67029915694975E+0000 3.66596204181572E+0000 3.66162815881856E+0000 3.65729750682411E+0000 - 3.65297008469877E+0000 3.64864589130948E+0000 3.64432492552374E+0000 3.64000718620960E+0000 3.63569267223566E+0000 - 3.63138138247107E+0000 3.62707331578552E+0000 3.62276847104927E+0000 3.61846684713310E+0000 3.61416844290837E+0000 - 3.60987325724696E+0000 3.60558128902131E+0000 3.60129253710439E+0000 3.59700700036974E+0000 3.59272467769142E+0000 - 3.58844556794404E+0000 3.58416967000277E+0000 3.57989698274328E+0000 3.57562750504183E+0000 3.57136123577519E+0000 - 3.56709817382068E+0000 3.56283831805615E+0000 3.55858166736000E+0000 3.55432822061117E+0000 3.55007797668911E+0000 - 3.54583093447384E+0000 3.54158709284590E+0000 3.53734645068636E+0000 3.53310900687683E+0000 3.52887476029946E+0000 - 3.52464370983692E+0000 3.52041585437241E+0000 3.51619119278969E+0000 3.51196972397300E+0000 3.50775144680716E+0000 - 3.50353636017749E+0000 3.49932446296985E+0000 3.49511575407061E+0000 3.49091023236669E+0000 3.48670789674553E+0000 - 3.48250874609508E+0000 3.47831277930383E+0000 3.47411999526078E+0000 3.46993039285548E+0000 3.46574397097798E+0000 - 3.46156072851884E+0000 3.45738066436916E+0000 3.45320377742057E+0000 3.44903006656520E+0000 3.44485953069570E+0000 - 3.44069216870524E+0000 3.43652797948751E+0000 3.43236696193671E+0000 3.42820911494757E+0000 3.42405443741532E+0000 - 3.41990292823571E+0000 3.41575458630499E+0000 3.41160941051995E+0000 3.40746739977786E+0000 3.40332855297653E+0000 - 3.39919286901425E+0000 3.39506034678984E+0000 3.39093098520263E+0000 3.38680478315244E+0000 3.38268173953961E+0000 - 3.37856185326499E+0000 3.37444512322992E+0000 3.37033154833625E+0000 3.36622112748635E+0000 3.36211385958306E+0000 - 3.35800974352975E+0000 3.35390877823029E+0000 3.34981096258903E+0000 3.34571629551083E+0000 3.34162477590105E+0000 - 3.33753640266556E+0000 3.33345117471071E+0000 3.32936909094334E+0000 3.32529015027081E+0000 3.32121435160095E+0000 - 3.31714169384210E+0000 3.31307217590309E+0000 3.30900579669324E+0000 3.30494255512235E+0000 3.30088245010074E+0000 - 3.29682548053918E+0000 3.29277164534897E+0000 3.28872094344186E+0000 3.28467337373012E+0000 3.28062893512648E+0000 - 3.27658762654416E+0000 3.27254944689689E+0000 3.26851439509885E+0000 3.26448247006471E+0000 3.26045367070965E+0000 - 3.25642799594930E+0000 3.25240544469977E+0000 3.24838601587768E+0000 3.24436970840009E+0000 3.24035652118456E+0000 - 3.23634645314913E+0000 3.23233950321230E+0000 3.22833567029305E+0000 3.22433495331086E+0000 3.22033735118563E+0000 - 3.21634286283778E+0000 3.21235148718818E+0000 3.20836322315818E+0000 3.20437806966959E+0000 3.20039602564470E+0000 - 3.19641709000625E+0000 3.19244126167747E+0000 3.18846853958204E+0000 3.18449892264411E+0000 3.18053240978830E+0000 - 3.17656899993969E+0000 3.17260869202381E+0000 3.16865148496666E+0000 3.16469737769472E+0000 3.16074636913490E+0000 - 3.15679845821458E+0000 3.15285364386161E+0000 3.14891192500429E+0000 3.14497330057136E+0000 3.14103776949204E+0000 - 3.13710533069599E+0000 3.13317598311333E+0000 3.12924972567462E+0000 3.12532655731089E+0000 3.12140647695361E+0000 - 3.11748948353470E+0000 3.11357557598653E+0000 3.10966475324191E+0000 3.10575701423413E+0000 3.10185235789688E+0000 - 3.09795078316432E+0000 3.09405228897106E+0000 3.09015687425214E+0000 3.08626453794304E+0000 3.08237527897970E+0000 - 3.07848909629847E+0000 3.07460598883618E+0000 3.07072595553006E+0000 3.06684899531780E+0000 3.06297510713752E+0000 - 3.05910428992777E+0000 3.05523654262755E+0000 3.05137186417628E+0000 3.04751025351382E+0000 3.04365170958046E+0000 - 3.03979623131692E+0000 3.03594381766434E+0000 3.03209446756432E+0000 3.02824817995885E+0000 3.02440495379036E+0000 - 3.02056478800172E+0000 3.01672768153622E+0000 3.01289363333756E+0000 3.00906264234987E+0000 3.00523470751771E+0000 - 3.00140982778606E+0000 2.99758800210030E+0000 2.99376922940626E+0000 2.98995350865017E+0000 2.98614083877867E+0000 - 2.98233121873883E+0000 2.97852464747814E+0000 2.97472112394449E+0000 2.97092064708619E+0000 2.96712321585196E+0000 - 2.96332882919093E+0000 2.95953748605263E+0000 2.95574918538704E+0000 2.95196392614450E+0000 2.94818170727578E+0000 - 2.94440252773206E+0000 2.94062638646490E+0000 2.93685328242630E+0000 2.93308321456864E+0000 2.92931618184471E+0000 - 2.92555218320768E+0000 2.92179121761117E+0000 2.91803328400914E+0000 2.91427838135599E+0000 2.91052650860650E+0000 - 2.90677766471584E+0000 2.90303184863959E+0000 2.89928905933372E+0000 2.89554929575458E+0000 2.89181255685893E+0000 - 2.88807884160391E+0000 2.88434814894705E+0000 2.88062047784627E+0000 2.87689582725989E+0000 2.87317419614659E+0000 - 2.86945558346546E+0000 2.86573998817596E+0000 2.86202740923794E+0000 2.85831784561163E+0000 2.85461129625764E+0000 - 2.85090776013697E+0000 2.84720723621099E+0000 2.84350972344145E+0000 2.83981522079046E+0000 2.83612372722055E+0000 - 2.83243524169458E+0000 2.82874976317580E+0000 2.82506729062785E+0000 2.82138782301472E+0000 2.81771135930077E+0000 - 2.81403789845074E+0000 2.81036743942974E+0000 2.80669998120324E+0000 2.80303552273708E+0000 2.79937406299747E+0000 - 2.79571560095096E+0000 2.79206013556450E+0000 2.78840766580538E+0000 2.78475819064125E+0000 2.78111170904013E+0000 - 2.77746821997039E+0000 2.77382772240077E+0000 2.77019021530034E+0000 2.76655569763856E+0000 2.76292416838522E+0000 - 2.75929562651048E+0000 2.75567007098483E+0000 2.75204750077913E+0000 2.74842791486459E+0000 2.74481131221276E+0000 - 2.74119769179554E+0000 2.73758705258517E+0000 2.73397939355426E+0000 2.73037471367574E+0000 2.72677301192289E+0000 - 2.72317428726934E+0000 2.71957853868904E+0000 2.71598576515630E+0000 2.71239596564578E+0000 2.70880913913244E+0000 - 2.70522528459161E+0000 2.70164440099894E+0000 2.69806648733042E+0000 2.69449154256237E+0000 2.69091956567144E+0000 - 2.68735055563461E+0000 2.68378451142921E+0000 2.68022143203287E+0000 2.67666131642357E+0000 2.67310416357959E+0000 - 2.66954997247957E+0000 2.66599874210244E+0000 2.66245047142749E+0000 2.65890515943429E+0000 2.65536280510277E+0000 - 2.65182340741315E+0000 2.64828696534598E+0000 2.64475347788213E+0000 2.64122294400278E+0000 2.63769536268944E+0000 - 2.63417073292390E+0000 2.63064905368831E+0000 2.62713032396509E+0000 2.62361454273700E+0000 2.62010170898708E+0000 - 2.61659182169870E+0000 2.61308487985553E+0000 2.60958088244155E+0000 2.60607982844104E+0000 2.60258171683858E+0000 - 2.59908654661906E+0000 2.59559431676767E+0000 2.59210502626989E+0000 2.58861867411151E+0000 2.58513525927862E+0000 - 2.58165478075758E+0000 2.57817723753509E+0000 2.57470262859809E+0000 2.57123095293387E+0000 2.56776220952996E+0000 - 2.56429639737422E+0000 2.56083351545477E+0000 2.55737356276004E+0000 2.55391653827873E+0000 2.55046244099983E+0000 - 2.54701126991264E+0000 2.54356302400669E+0000 2.54011770227184E+0000 2.53667530369820E+0000 2.53323582727619E+0000 - 2.52979927199649E+0000 2.52636563685004E+0000 2.52293492082809E+0000 2.51950712292214E+0000 2.51608224212398E+0000 - 2.51266027742567E+0000 2.50924122781952E+0000 2.50582509229814E+0000 2.50241186985439E+0000 2.49900155948141E+0000 - 2.49559416017258E+0000 2.49218967092159E+0000 2.48878809072235E+0000 2.48538941856905E+0000 2.48199365345615E+0000 - 2.47860079437835E+0000 2.47521084033064E+0000 2.47182379030824E+0000 2.46843964330663E+0000 2.46505839832155E+0000 - 2.46168005434900E+0000 2.45830461038524E+0000 2.45493206542674E+0000 2.45156241847027E+0000 2.44819566851283E+0000 - 2.44483181455165E+0000 2.44147085558424E+0000 2.43811279060833E+0000 2.43475761862191E+0000 2.43140533862320E+0000 - 2.42805594961066E+0000 2.42470945058301E+0000 2.42136584053919E+0000 2.41802511847838E+0000 2.41468728340002E+0000 - 2.41135233430374E+0000 2.40802027018946E+0000 2.40469109005728E+0000 2.40136479290757E+0000 2.39804137774091E+0000 - 2.39472084355811E+0000 2.39140318936023E+0000 2.38808841414852E+0000 2.38477651692448E+0000 2.38146749668984E+0000 - 2.37816135244653E+0000 2.37485808319672E+0000 2.37155768794279E+0000 2.36826016568734E+0000 2.36496551543319E+0000 - 2.36167373618339E+0000 2.35838482694117E+0000 2.35509878671002E+0000 2.35181561449360E+0000 2.34853530929581E+0000 - 2.34525787012075E+0000 2.34198329597272E+0000 2.33871158585624E+0000 2.33544273877604E+0000 2.33217675373703E+0000 - 2.32891362974437E+0000 2.32565336580336E+0000 2.32239596091956E+0000 2.31914141409870E+0000 2.31588972434670E+0000 - 2.31264089066970E+0000 2.30939491207403E+0000 2.30615178756620E+0000 2.30291151615293E+0000 2.29967409684112E+0000 - 2.29643952863788E+0000 2.29320781055049E+0000 2.28997894158642E+0000 2.28675292075333E+0000 2.28352974705907E+0000 - 2.28030941951168E+0000 2.27709193711936E+0000 2.27387729889051E+0000 2.27066550383371E+0000 2.26745655095772E+0000 - 2.26425043927145E+0000 2.26104716778403E+0000 2.25784673550474E+0000 2.25464914144303E+0000 2.25145438460853E+0000 - 2.24826246401106E+0000 2.24507337866056E+0000 2.24188712756720E+0000 2.23870370974127E+0000 2.23552312419324E+0000 - 2.23234536993376E+0000 2.22917044597362E+0000 2.22599835132379E+0000 2.22282908499538E+0000 2.21966264599968E+0000 - 2.21649903334813E+0000 2.21333824605232E+0000 2.21018028312402E+0000 2.20702514357511E+0000 2.20387282641766E+0000 - 2.20072333066388E+0000 2.19757665532613E+0000 2.19443279941692E+0000 2.19129176194889E+0000 2.18815354193486E+0000 - 2.18501813838776E+0000 2.18188555032068E+0000 2.17875577674686E+0000 2.17562881667966E+0000 2.17250466913260E+0000 - 2.16938333311931E+0000 2.16626480765360E+0000 2.16314909174937E+0000 2.16003618442067E+0000 2.15692608468170E+0000 - 2.15381879154677E+0000 2.15071430403033E+0000 2.14761262114694E+0000 2.14451374191132E+0000 2.14141766533829E+0000 - 2.13832439044279E+0000 2.13523391623992E+0000 2.13214624174485E+0000 2.12906136597291E+0000 2.12597928793953E+0000 - 2.12290000666026E+0000 2.11982352115078E+0000 2.11674983042687E+0000 2.11367893350442E+0000 2.11061082939944E+0000 - 2.10754551712805E+0000 2.10448299570648E+0000 2.10142326415107E+0000 2.09836632147826E+0000 2.09531216670460E+0000 - 2.09226079884674E+0000 2.08921221692143E+0000 2.08616641994554E+0000 2.08312340693602E+0000 2.08008317690991E+0000 - 2.07704572888438E+0000 2.07401106187667E+0000 2.07097917490411E+0000 2.06795006698415E+0000 2.06492373713430E+0000 - 2.06190018437219E+0000 2.05887940771551E+0000 2.05586140618206E+0000 2.05284617878971E+0000 2.04983372455642E+0000 - 2.04682404250024E+0000 2.04381713163930E+0000 2.04081299099180E+0000 2.03781161957602E+0000 2.03481301641033E+0000 - 2.03181718051316E+0000 2.02882411090304E+0000 2.02583380659855E+0000 2.02284626661834E+0000 2.01986148998115E+0000 - 2.01687947570578E+0000 2.01390022281109E+0000 2.01092373031601E+0000 2.00794999723955E+0000 2.00497902260077E+0000 - 2.00201080541878E+0000 1.99904534471278E+0000 1.99608263950201E+0000 1.99312268880577E+0000 1.99016549164341E+0000 - 1.98721104703436E+0000 1.98425935399809E+0000 1.98131041155410E+0000 1.97836421872197E+0000 1.97542077452132E+0000 - 1.97248007797183E+0000 1.96954212809321E+0000 1.96660692390521E+0000 1.96367446442764E+0000 1.96074474868035E+0000 - 1.95781777568323E+0000 1.95489354445621E+0000 1.95197205401924E+0000 1.94905330339234E+0000 1.94613729159555E+0000 - 1.94322401764893E+0000 1.94031348057259E+0000 1.93740567938667E+0000 1.93450061311132E+0000 1.93159828076676E+0000 - 1.92869868137320E+0000 1.92580181395088E+0000 1.92290767752008E+0000 1.92001627110108E+0000 1.91712759371421E+0000 - 1.91424164437979E+0000 1.91135842211819E+0000 1.90847792594977E+0000 1.90560015489492E+0000 1.90272510797403E+0000 - 1.89985278420751E+0000 1.89698318261580E+0000 1.89411630221932E+0000 1.89125214203851E+0000 1.88839070109383E+0000 - 1.88553197840572E+0000 1.88267597299465E+0000 1.87982268388107E+0000 1.87697211008544E+0000 1.87412425062824E+0000 - 1.87127910452990E+0000 1.86843667081091E+0000 1.86559694849170E+0000 1.86275993659271E+0000 1.85992563413441E+0000 - 1.85709404013720E+0000 1.85426515362150E+0000 1.85143897360773E+0000 1.84861549911628E+0000 1.84579472916754E+0000 - 1.84297666278186E+0000 1.84016129897958E+0000 1.83734863678104E+0000 1.83453867520655E+0000 1.83173141327639E+0000 - 1.82892685001081E+0000 1.82612498443006E+0000 1.82332581555435E+0000 1.82052934240386E+0000 1.81773556399874E+0000 - 1.81494447935912E+0000 1.81215608750509E+0000 1.80937038745670E+0000 1.80658737823398E+0000 1.80380705885692E+0000 - 1.80102942834546E+0000 1.79825448571951E+0000 1.79548222999895E+0000 1.79271266020359E+0000 1.78994577535323E+0000 - 1.78718157446760E+0000 1.78442005656638E+0000 1.78166122066923E+0000 1.77890506579573E+0000 1.77615159096544E+0000 - 1.77340079519784E+0000 1.77065267751236E+0000 1.76790723692839E+0000 1.76516447246526E+0000 1.76242438314223E+0000 - 1.75968696797850E+0000 1.75695222599322E+0000 1.75422015620548E+0000 1.75149075763430E+0000 1.74876402929862E+0000 - 1.74603997021734E+0000 1.74331857940927E+0000 1.74059985589316E+0000 1.73788379868769E+0000 1.73517040681146E+0000 - 1.73245967928300E+0000 1.72975161512076E+0000 1.72704621334313E+0000 1.72434347296839E+0000 1.72164339301477E+0000 - 1.71894597250041E+0000 1.71625121044334E+0000 1.71355910586156E+0000 1.71086965777293E+0000 1.70818286519525E+0000 - 1.70549872714623E+0000 1.70281724264348E+0000 1.70013841070453E+0000 1.69746223034680E+0000 1.69478870058764E+0000 - 1.69211782044427E+0000 1.68944958893384E+0000 1.68678400507340E+0000 1.68412106787988E+0000 1.68146077637012E+0000 - 1.67880312956086E+0000 1.67614812646873E+0000 1.67349576611024E+0000 1.67084604750182E+0000 1.66819896965977E+0000 - 1.66555453160028E+0000 1.66291273233944E+0000 1.66027357089321E+0000 1.65763704627745E+0000 1.65500315750788E+0000 - 1.65237190360014E+0000 1.64974328356971E+0000 1.64711729643196E+0000 1.64449394120216E+0000 1.64187321689542E+0000 - 1.63925512252676E+0000 1.63663965711104E+0000 1.63402681966301E+0000 1.63141660919729E+0000 1.62880902472836E+0000 - 1.62620406527057E+0000 1.62360172983813E+0000 1.62100201744513E+0000 1.61840492710551E+0000 1.61581045783306E+0000 - 1.61321860864146E+0000 1.61062937854421E+0000 1.60804276655470E+0000 1.60545877168616E+0000 1.60287739295167E+0000 - 1.60029862936417E+0000 1.59772247993644E+0000 1.59514894368112E+0000 1.59257801961069E+0000 1.59000970673748E+0000 - 1.58744400407366E+0000 1.58488091063126E+0000 1.58232042542212E+0000 1.57976254745794E+0000 1.57720727575027E+0000 - 1.57465460931047E+0000 1.57210454714976E+0000 1.56955708827916E+0000 1.56701223170958E+0000 1.56446997645170E+0000 - 1.56193032151606E+0000 1.55939326591303E+0000 1.55685880865279E+0000 1.55432694874538E+0000 1.55179768520062E+0000 - 1.54927101702817E+0000 1.54674694323753E+0000 1.54422546283798E+0000 1.54170657483866E+0000 1.53919027824849E+0000 - 1.53667657207623E+0000 1.53416545533044E+0000 1.53165692701949E+0000 1.52915098615158E+0000 1.52664763173469E+0000 - 1.52414686277662E+0000 1.52164867828499E+0000 1.51915307726721E+0000 1.51666005873049E+0000 1.51416962168185E+0000 - 1.51168176512810E+0000 1.50919648807585E+0000 1.50671378953152E+0000 1.50423366850132E+0000 1.50175612399125E+0000 - 1.49928115500709E+0000 1.49680876055443E+0000 1.49433893963865E+0000 1.49187169126490E+0000 1.48940701443813E+0000 - 1.48694490816308E+0000 1.48448537144426E+0000 1.48202840328596E+0000 1.47957400269228E+0000 1.47712216866705E+0000 - 1.47467290021393E+0000 1.47222619633631E+0000 1.46978205603739E+0000 1.46734047832012E+0000 1.46490146218724E+0000 - 1.46246500664123E+0000 1.46003111068438E+0000 1.45759977331872E+0000 1.45517099354604E+0000 1.45274477036791E+0000 - 1.45032110278567E+0000 1.44789998980039E+0000 1.44548143041294E+0000 1.44306542362390E+0000 1.44065196843366E+0000 - 1.43824106384232E+0000 1.43583270884977E+0000 1.43342690245561E+0000 1.43102364365923E+0000 1.42862293145976E+0000 - 1.42622476485606E+0000 1.42382914284676E+0000 1.42143606443021E+0000 1.41904552860452E+0000 1.41665753436754E+0000 - 1.41427208071686E+0000 1.41188916664981E+0000 1.40950879116345E+0000 1.40713095325457E+0000 1.40475565191973E+0000 - 1.40238288615517E+0000 1.40001265495691E+0000 1.39764495732066E+0000 1.39527979224189E+0000 1.39291715871579E+0000 - 1.39055705573725E+0000 1.38819948230092E+0000 1.38584443740114E+0000 1.38349192003200E+0000 1.38114192918729E+0000 - 1.37879446386053E+0000 1.37644952304495E+0000 1.37410710573348E+0000 1.37176721091880E+0000 1.36942983759327E+0000 - 1.36709498474898E+0000 1.36476265137771E+0000 1.36243283647096E+0000 1.36010553901995E+0000 1.35778075801557E+0000 - 1.35545849244844E+0000 1.35313874130887E+0000 1.35082150358689E+0000 1.34850677827219E+0000 1.34619456435420E+0000 - 1.34388486082202E+0000 1.34157766666444E+0000 1.33927298086997E+0000 1.33697080242677E+0000 1.33467113032274E+0000 - 1.33237396354544E+0000 1.33007930108210E+0000 1.32778714191967E+0000 1.32549748504476E+0000 1.32321032944368E+0000 - 1.32092567410241E+0000 1.31864351800661E+0000 1.31636386014161E+0000 1.31408669949245E+0000 1.31181203504379E+0000 - 1.30953986578002E+0000 1.30727019068517E+0000 1.30500300874294E+0000 1.30273831893672E+0000 1.30047612024953E+0000 - 1.29821641166411E+0000 1.29595919216282E+0000 1.29370446072770E+0000 1.29145221634045E+0000 1.28920245798242E+0000 - 1.28695518463466E+0000 1.28471039527781E+0000 1.28246808889223E+0000 1.28022826445789E+0000 1.27799092095444E+0000 - 1.27575605736117E+0000 1.27352367265702E+0000 1.27129376582058E+0000 1.26906633583009E+0000 1.26684138166342E+0000 - 1.26461890229812E+0000 1.26239889671134E+0000 1.26018136387989E+0000 1.25796630278024E+0000 1.25575371238846E+0000 - 1.25354359168029E+0000 1.25133593963108E+0000 1.24913075521583E+0000 1.24692803740917E+0000 1.24472778518534E+0000 - 1.24252999751826E+0000 1.24033467338142E+0000 1.23814181174797E+0000 1.23595141159069E+0000 1.23376347188195E+0000 - 1.23157799159378E+0000 1.22939496969780E+0000 1.22721440516528E+0000 1.22503629696708E+0000 1.22286064407369E+0000 - 1.22068744545522E+0000 1.21851670008138E+0000 1.21634840692149E+0000 1.21418256494451E+0000 1.21201917311896E+0000 - 1.20985823041303E+0000 1.20769973579445E+0000 1.20554368823060E+0000 1.20339008668846E+0000 1.20123893013458E+0000 - 1.19909021753515E+0000 1.19694394785594E+0000 1.19480012006230E+0000 1.19265873311922E+0000 1.19051978599124E+0000 - 1.18838327764253E+0000 1.18624920703682E+0000 1.18411757313744E+0000 1.18198837490733E+0000 1.17986161130900E+0000 - 1.17773728130453E+0000 1.17561538385561E+0000 1.17349591792351E+0000 1.17137888246907E+0000 1.16926427645272E+0000 - 1.16715209883446E+0000 1.16504234857388E+0000 1.16293502463012E+0000 1.16083012596194E+0000 1.15872765152763E+0000 - 1.15662760028506E+0000 1.15452997119169E+0000 1.15243476320453E+0000 1.15034197528016E+0000 1.14825160637474E+0000 - 1.14616365544398E+0000 1.14407812144315E+0000 1.14199500332709E+0000 1.13991430005020E+0000 1.13783601056644E+0000 - 1.13576013382932E+0000 1.13368666879191E+0000 1.13161561440683E+0000 1.12954696962627E+0000 1.12748073340196E+0000 - 1.12541690468516E+0000 1.12335548242671E+0000 1.12129646557699E+0000 1.11923985308591E+0000 1.11718564390294E+0000 - 1.11513383697710E+0000 1.11308443125692E+0000 1.11103742569050E+0000 1.10899281922548E+0000 1.10695061080901E+0000 - 1.10491079938780E+0000 1.10287338390808E+0000 1.10083836331564E+0000 1.09880573655576E+0000 1.09677550257329E+0000 - 1.09474766031257E+0000 1.09272220871752E+0000 1.09069914673153E+0000 1.08867847329754E+0000 1.08666018735803E+0000 - 1.08464428785497E+0000 1.08263077372987E+0000 1.08061964392376E+0000 1.07861089737718E+0000 1.07660453303019E+0000 - 1.07460054982235E+0000 1.07259894669276E+0000 1.07059972258003E+0000 1.06860287642224E+0000 1.06660840715704E+0000 - 1.06461631372153E+0000 1.06262659505236E+0000 1.06063925008568E+0000 1.05865427775710E+0000 1.05667167700179E+0000 - 1.05469144675440E+0000 1.05271358594905E+0000 1.05073809351941E+0000 1.04876496839860E+0000 1.04679420951928E+0000 - 1.04482581581355E+0000 1.04285978621306E+0000 1.04089611964891E+0000 1.03893481505170E+0000 1.03697587135154E+0000 - 1.03501928747799E+0000 1.03306506236013E+0000 1.03111319492651E+0000 1.02916368410515E+0000 1.02721652882358E+0000 - 1.02527172800878E+0000 1.02332928058723E+0000 1.02138918548489E+0000 1.01945144162718E+0000 1.01751604793900E+0000 - 1.01558300334473E+0000 1.01365230676822E+0000 1.01172395713279E+0000 1.00979795336121E+0000 1.00787429437577E+0000 - 1.00595297909816E+0000 1.00403400644959E+0000 1.00211737535070E+0000 1.00020308472161E+0000 9.98291133481897E-0001 - 9.96381520550596E-0001 9.94474244846198E-0001 9.92569305286660E-0001 9.90666700789386E-0001 9.88766430271240E-0001 - 9.86868492648537E-0001 9.84972886837041E-0001 9.83079611751975E-0001 9.81188666308001E-0001 9.79300049419236E-0001 - 9.77413759999240E-0001 9.75529796961016E-0001 9.73648159217021E-0001 9.71768845679141E-0001 9.69891855258710E-0001 - 9.68017186866503E-0001 9.66144839412730E-0001 9.64274811807041E-0001 9.62407102958521E-0001 9.60541711775685E-0001 - 9.58678637166490E-0001 9.56817878038315E-0001 9.54959433297979E-0001 9.53103301851723E-0001 9.51249482605217E-0001 - 9.49397974463562E-0001 9.47548776331277E-0001 9.45701887112314E-0001 9.43857305710041E-0001 9.42015031027244E-0001 - 9.40175061966142E-0001 9.38337397428356E-0001 9.36502036314940E-0001 9.34668977526354E-0001 9.32838219962473E-0001 - 9.31009762522592E-0001 9.29183604105412E-0001 9.27359743609048E-0001 9.25538179931024E-0001 9.23718911968268E-0001 - 9.21901938617125E-0001 9.20087258773332E-0001 9.18274871332045E-0001 9.16464775187812E-0001 9.14656969234585E-0001 - 9.12851452365722E-0001 9.11048223473971E-0001 9.09247281451489E-0001 9.07448625189822E-0001 9.05652253579909E-0001 - 9.03858165512093E-0001 9.02066359876101E-0001 9.00276835561052E-0001 8.98489591455464E-0001 8.96704626447232E-0001 - 8.94921939423648E-0001 8.93141529271386E-0001 8.91363394876504E-0001 8.89587535124450E-0001 8.87813948900045E-0001 - 8.86042635087502E-0001 8.84273592570408E-0001 8.82506820231726E-0001 8.80742316953804E-0001 8.78980081618362E-0001 - 8.77220113106497E-0001 8.75462410298678E-0001 8.73706972074743E-0001 8.71953797313912E-0001 8.70202884894764E-0001 - 8.68454233695255E-0001 8.66707842592703E-0001 8.64963710463793E-0001 8.63221836184580E-0001 8.61482218630474E-0001 - 8.59744856676259E-0001 8.58009749196072E-0001 8.56276895063409E-0001 8.54546293151134E-0001 8.52817942331458E-0001 - 8.51091841475957E-0001 8.49367989455559E-0001 8.47646385140541E-0001 8.45927027400544E-0001 8.44209915104550E-0001 - 8.42495047120894E-0001 8.40782422317267E-0001 8.39072039560697E-0001 8.37363897717568E-0001 8.35657995653605E-0001 - 8.33954332233875E-0001 8.32252906322795E-0001 8.30553716784116E-0001 8.28856762480937E-0001 8.27162042275692E-0001 - 8.25469555030152E-0001 8.23779299605431E-0001 8.22091274861971E-0001 8.20405479659556E-0001 8.18721912857299E-0001 - 8.17040573313645E-0001 8.15361459886376E-0001 8.13684571432594E-0001 8.12009906808740E-0001 8.10337464870576E-0001 - 8.08667244473190E-0001 8.06999244471000E-0001 8.05333463717744E-0001 8.03669901066486E-0001 8.02008555369608E-0001 - 8.00349425478813E-0001 7.98692510245129E-0001 7.97037808518892E-0001 7.95385319149765E-0001 7.93735040986721E-0001 - 7.92086972878048E-0001 7.90441113671351E-0001 7.88797462213544E-0001 7.87156017350851E-0001 7.85516777928810E-0001 - 7.83879742792266E-0001 7.82244910785373E-0001 7.80612280751590E-0001 7.78981851533678E-0001 7.77353621973711E-0001 - 7.75727590913057E-0001 7.74103757192394E-0001 7.72482119651696E-0001 7.70862677130236E-0001 7.69245428466590E-0001 - 7.67630372498627E-0001 7.66017508063516E-0001 7.64406833997719E-0001 7.62798349136991E-0001 7.61192052316385E-0001 - 7.59587942370239E-0001 7.57986018132189E-0001 7.56386278435154E-0001 7.54788722111344E-0001 7.53193347992260E-0001 - 7.51600154908683E-0001 7.50009141690686E-0001 7.48420307167620E-0001 7.46833650168120E-0001 7.45249169520109E-0001 - 7.43666864050781E-0001 7.42086732586619E-0001 7.40508773953380E-0001 7.38932986976096E-0001 7.37359370479082E-0001 - 7.35787923285923E-0001 7.34218644219482E-0001 7.32651532101892E-0001 7.31086585754558E-0001 7.29523803998160E-0001 - 7.27963185652646E-0001 7.26404729537229E-0001 7.24848434470397E-0001 7.23294299269898E-0001 7.21742322752752E-0001 - 7.20192503735237E-0001 7.18644841032898E-0001 7.17099333460547E-0001 7.15555979832246E-0001 7.14014778961331E-0001 - 7.12475729660388E-0001 7.10938830741261E-0001 7.09404081015059E-0001 7.07871479292139E-0001 7.06341024382120E-0001 - 7.04812715093870E-0001 7.03286550235510E-0001 7.01762528614419E-0001 7.00240649037220E-0001 6.98720910309792E-0001 - 6.97203311237259E-0001 6.95687850623992E-0001 6.94174527273614E-0001 6.92663339988989E-0001 6.91154287572230E-0001 - 6.89647368824692E-0001 6.88142582546969E-0001 6.86639927538906E-0001 6.85139402599579E-0001 6.83641006527312E-0001 - 6.82144738119663E-0001 6.80650596173426E-0001 6.79158579484642E-0001 6.77668686848577E-0001 6.76180917059734E-0001 - 6.74695268911856E-0001 6.73211741197912E-0001 6.71730332710109E-0001 6.70251042239879E-0001 6.68773868577886E-0001 - 6.67298810514028E-0001 6.65825866837422E-0001 6.64355036336422E-0001 6.62886317798600E-0001 6.61419710010756E-0001 - 6.59955211758916E-0001 6.58492821828326E-0001 6.57032539003458E-0001 6.55574362068003E-0001 6.54118289804871E-0001 - 6.52664320996196E-0001 6.51212454423324E-0001 6.49762688866826E-0001 6.48315023106485E-0001 6.46869455921297E-0001 - 6.45425986089481E-0001 6.43984612388462E-0001 6.42545333594883E-0001 6.41108148484596E-0001 6.39673055832663E-0001 - 6.38240054413362E-0001 6.36809143000172E-0001 6.35380320365789E-0001 6.33953585282109E-0001 6.32528936520237E-0001 - 6.31106372850485E-0001 6.29685893042369E-0001 6.28267495864607E-0001 6.26851180085123E-0001 6.25436944471038E-0001 - 6.24024787788681E-0001 6.22614708803576E-0001 6.21206706280445E-0001 6.19800778983215E-0001 6.18396925675004E-0001 - 6.16995145118131E-0001 6.15595436074109E-0001 6.14197797303643E-0001 6.12802227566639E-0001 6.11408725622188E-0001 - 6.10017290228582E-0001 6.08627920143297E-0001 6.07240614123002E-0001 6.05855370923559E-0001 6.04472189300012E-0001 - 6.03091068006602E-0001 6.01712005796750E-0001 6.00335001423063E-0001 5.98960053637341E-0001 5.97587161190559E-0001 - 5.96216322832886E-0001 5.94847537313665E-0001 5.93480803381425E-0001 5.92116119783878E-0001 5.90753485267913E-0001 - 5.89392898579603E-0001 5.88034358464195E-0001 5.86677863666116E-0001 5.85323412928974E-0001 5.83971004995546E-0001 - 5.82620638607794E-0001 5.81272312506846E-0001 5.79926025433008E-0001 5.78581776125761E-0001 5.77239563323756E-0001 - 5.75899385764815E-0001 5.74561242185934E-0001 5.73225131323276E-0001 5.71891051912176E-0001 5.70559002687137E-0001 - 5.69228982381826E-0001 5.67900989729084E-0001 5.66575023460911E-0001 5.65251082308480E-0001 5.63929165002123E-0001 - 5.62609270271335E-0001 5.61291396844782E-0001 5.59975543450283E-0001 5.58661708814827E-0001 5.57349891664559E-0001 - 5.56040090724784E-0001 5.54732304719971E-0001 5.53426532373742E-0001 5.52122772408882E-0001 5.50821023547332E-0001 - 5.49521284510186E-0001 5.48223554017701E-0001 5.46927830789281E-0001 5.45634113543492E-0001 5.44342400998049E-0001 - 5.43052691869820E-0001 5.41764984874829E-0001 5.40479278728247E-0001 5.39195572144402E-0001 5.37913863836766E-0001 - 5.36634152517962E-0001 5.35356436899767E-0001 5.34080715693100E-0001 5.32806987608028E-0001 5.31535251353770E-0001 - 5.30265505638685E-0001 5.28997749170284E-0001 5.27731980655217E-0001 5.26468198799279E-0001 5.25206402307413E-0001 - 5.23946589883698E-0001 5.22688760231364E-0001 5.21432912052773E-0001 5.20179044049434E-0001 5.18927154921995E-0001 - 5.17677243370243E-0001 5.16429308093105E-0001 5.15183347788645E-0001 5.13939361154065E-0001 5.12697346885706E-0001 - 5.11457303679043E-0001 5.10219230228689E-0001 5.08983125228390E-0001 5.07748987371027E-0001 5.06516815348618E-0001 - 5.05286607852311E-0001 5.04058363572389E-0001 5.02832081198267E-0001 5.01607759418488E-0001 5.00385396920732E-0001 - 4.99164992391804E-0001 4.97946544517645E-0001 4.96730051983320E-0001 4.95515513473022E-0001 4.94302927670079E-0001 - 4.93092293256940E-0001 4.91883608915182E-0001 4.90676873325513E-0001 4.89472085167761E-0001 4.88269243120884E-0001 - 4.87068345862961E-0001 4.85869392071198E-0001 4.84672380421925E-0001 4.83477309590591E-0001 4.82284178251774E-0001 - 4.81092985079170E-0001 4.79903728745596E-0001 4.78716407922993E-0001 4.77531021282419E-0001 4.76347567494058E-0001 - 4.75166045227206E-0001 4.73986453150282E-0001 4.72808789930826E-0001 4.71633054235489E-0001 4.70459244730048E-0001 - 4.69287360079390E-0001 4.68117398947521E-0001 4.66949359997565E-0001 4.65783241891758E-0001 4.64619043291455E-0001 - 4.63456762857122E-0001 4.62296399248340E-0001 4.61137951123807E-0001 4.59981417141330E-0001 4.58826795957830E-0001 - 4.57674086229342E-0001 4.56523286611009E-0001 4.55374395757091E-0001 4.54227412320954E-0001 4.53082334955077E-0001 - 4.51939162311048E-0001 4.50797893039565E-0001 4.49658525790437E-0001 4.48521059212578E-0001 4.47385491954013E-0001 - 4.46251822661876E-0001 4.45120049982405E-0001 4.43990172560949E-0001 4.42862189041962E-0001 4.41736098069002E-0001 - 4.40611898284739E-0001 4.39489588330940E-0001 4.38369166848487E-0001 4.37250632477360E-0001 4.36133983856643E-0001 - 4.35019219624529E-0001 4.33906338418311E-0001 4.32795338874386E-0001 4.31686219628256E-0001 4.30578979314519E-0001 - 4.29473616566886E-0001 4.28370130018159E-0001 4.27268518300249E-0001 4.26168780044166E-0001 4.25070913880017E-0001 - 4.23974918437017E-0001 4.22880792343474E-0001 4.21788534226801E-0001 4.20698142713507E-0001 4.19609616429202E-0001 - 4.18522953998596E-0001 4.17438154045493E-0001 4.16355215192802E-0001 4.15274136062524E-0001 4.14194915275761E-0001 - 4.13117551452712E-0001 4.12042043212672E-0001 4.10968389174032E-0001 4.09896587954285E-0001 4.08826638170011E-0001 - 4.07758538436896E-0001 4.06692287369715E-0001 4.05627883582339E-0001 4.04565325687738E-0001 4.03504612297973E-0001 - 4.02445742024203E-0001 4.01388713476679E-0001 4.00333525264746E-0001 3.99280175996845E-0001 3.98228664280509E-0001 - 3.97178988722367E-0001 3.96131147928138E-0001 3.95085140502635E-0001 3.94040965049766E-0001 3.92998620172529E-0001 - 3.91958104473017E-0001 3.90919416552413E-0001 3.89882555010992E-0001 3.88847518448124E-0001 3.87814305462265E-0001 - 3.86782914650969E-0001 3.85753344610878E-0001 3.84725593937723E-0001 3.83699661226331E-0001 3.82675545070614E-0001 - 3.81653244063581E-0001 3.80632756797326E-0001 3.79614081863035E-0001 3.78597217850987E-0001 3.77582163350547E-0001 - 3.76568916950171E-0001 3.75557477237408E-0001 3.74547842798890E-0001 3.73540012220346E-0001 3.72533984086589E-0001 - 3.71529756981522E-0001 3.70527329488142E-0001 3.69526700188527E-0001 3.68527867663851E-0001 3.67530830494372E-0001 - 3.66535587259440E-0001 3.65542136537493E-0001 3.64550476906054E-0001 3.63560606941742E-0001 3.62572525220257E-0001 - 3.61586230316389E-0001 3.60601720804021E-0001 3.59618995256118E-0001 3.58638052244737E-0001 3.57658890341022E-0001 - 3.56681508115204E-0001 3.55705904136605E-0001 3.54732076973631E-0001 3.53760025193780E-0001 3.52789747363635E-0001 - 3.51821242048867E-0001 3.50854507814237E-0001 3.49889543223592E-0001 3.48926346839867E-0001 3.47964917225087E-0001 - 3.47005252940361E-0001 3.46047352545890E-0001 3.45091214600958E-0001 3.44136837663943E-0001 3.43184220292307E-0001 - 3.42233361042598E-0001 3.41284258470458E-0001 3.40336911130611E-0001 3.39391317576872E-0001 3.38447476362146E-0001 - 3.37505386038420E-0001 3.36565045156776E-0001 3.35626452267380E-0001 3.34689605919487E-0001 3.33754504661442E-0001 - 3.32821147040676E-0001 3.31889531603711E-0001 3.30959656896156E-0001 3.30031521462708E-0001 3.29105123847156E-0001 - 3.28180462592373E-0001 3.27257536240327E-0001 3.26336343332070E-0001 3.25416882407745E-0001 3.24499152006585E-0001 - 3.23583150666910E-0001 3.22668876926135E-0001 3.21756329320758E-0001 3.20845506386370E-0001 3.19936406657654E-0001 - 3.19029028668380E-0001 3.18123370951409E-0001 3.17219432038693E-0001 3.16317210461274E-0001 3.15416704749287E-0001 - 3.14517913431954E-0001 3.13620835037591E-0001 3.12725468093606E-0001 3.11831811126495E-0001 3.10939862661849E-0001 - 3.10049621224350E-0001 3.09161085337770E-0001 3.08274253524978E-0001 3.07389124307930E-0001 3.06505696207679E-0001 - 3.05623967744369E-0001 3.04743937437237E-0001 3.03865603804616E-0001 3.02988965363927E-0001 3.02114020631693E-0001 - 3.01240768123524E-0001 3.00369206354128E-0001 2.99499333837307E-0001 2.98631149085958E-0001 2.97764650612073E-0001 - 2.96899836926740E-0001 2.96036706540141E-0001 2.95175257961558E-0001 2.94315489699365E-0001 2.93457400261036E-0001 - 2.92600988153139E-0001 2.91746251881342E-0001 2.90893189950409E-0001 2.90041800864202E-0001 2.89192083125683E-0001 - 2.88344035236911E-0001 2.87497655699042E-0001 2.86652943012337E-0001 2.85809895676149E-0001 2.84968512188938E-0001 - 2.84128791048261E-0001 2.83290730750774E-0001 2.82454329792238E-0001 2.81619586667512E-0001 2.80786499870559E-0001 - 2.79955067894444E-0001 2.79125289231333E-0001 2.78297162372497E-0001 2.77470685808308E-0001 2.76645858028244E-0001 - 2.75822677520887E-0001 2.75001142773921E-0001 2.74181252274140E-0001 2.73363004507438E-0001 2.72546397958817E-0001 - 2.71731431112388E-0001 2.70918102451365E-0001 2.70106410458071E-0001 2.69296353613937E-0001 2.68487930399500E-0001 - 2.67681139294410E-0001 2.66875978777420E-0001 2.66072447326399E-0001 2.65270543418321E-0001 2.64470265529273E-0001 - 2.63671612134454E-0001 2.62874581708170E-0001 2.62079172723845E-0001 2.61285383654013E-0001 2.60493212970318E-0001 - 2.59702659143524E-0001 2.58913720643503E-0001 2.58126395939246E-0001 2.57340683498857E-0001 2.56556581789556E-0001 - 2.55774089277681E-0001 2.54993204428684E-0001 2.54213925707138E-0001 2.53436251576730E-0001 2.52660180500268E-0001 - 2.51885710939681E-0001 2.51112841356014E-0001 2.50341570209433E-0001 2.49571895959228E-0001 2.48803817063808E-0001 - 2.48037331980705E-0001 2.47272439166573E-0001 2.46509137077189E-0001 2.45747424167458E-0001 2.44987298891404E-0001 - 2.44228759702181E-0001 2.43471805052066E-0001 2.42716433392463E-0001 2.41962643173906E-0001 2.41210432846053E-0001 - 2.40459800857695E-0001 2.39710745656748E-0001 2.38963265690259E-0001 2.38217359404410E-0001 2.37473025244507E-0001 - 2.36730261654994E-0001 2.35989067079447E-0001 2.35249439960571E-0001 2.34511378740212E-0001 2.33774881859344E-0001 - 2.33039947758083E-0001 2.32306574875678E-0001 2.31574761650513E-0001 2.30844506520116E-0001 2.30115807921148E-0001 - 2.29388664289412E-0001 2.28663074059851E-0001 2.27939035666548E-0001 2.27216547542730E-0001 2.26495608120764E-0001 - 2.25776215832160E-0001 2.25058369107575E-0001 2.24342066376808E-0001 2.23627306068807E-0001 2.22914086611662E-0001 - 2.22202406432614E-0001 2.21492263958051E-0001 2.20783657613509E-0001 2.20076585823677E-0001 2.19371047012391E-0001 - 2.18667039602640E-0001 2.17964562016567E-0001 2.17263612675464E-0001 2.16564189999784E-0001 2.15866292409128E-0001 - 2.15169918322256E-0001 2.14475066157087E-0001 2.13781734330692E-0001 2.13089921259308E-0001 2.12399625358325E-0001 - 2.11710845042296E-0001 2.11023578724937E-0001 2.10337824819123E-0001 2.09653581736895E-0001 2.08970847889456E-0001 - 2.08289621687176E-0001 2.07609901539590E-0001 2.06931685855400E-0001 2.06254973042476E-0001 2.05579761507858E-0001 - 2.04906049657755E-0001 2.04233835897546E-0001 2.03563118631784E-0001 2.02893896264195E-0001 2.02226167197675E-0001 - 2.01559929834300E-0001 2.00895182575319E-0001 2.00231923821159E-0001 1.99570151971424E-0001 1.98909865424900E-0001 - 1.98251062579548E-0001 1.97593741832515E-0001 1.96937901580128E-0001 1.96283540217896E-0001 1.95630656140516E-0001 - 1.94979247741867E-0001 1.94329313415017E-0001 1.93680851552220E-0001 1.93033860544918E-0001 1.92388338783746E-0001 - 1.91744284658526E-0001 1.91101696558275E-0001 1.90460572871201E-0001 1.89820911984708E-0001 1.89182712285395E-0001 - 1.88545972159056E-0001 1.87910689990685E-0001 1.87276864164475E-0001 1.86644493063815E-0001 1.86013575071301E-0001 - 1.85384108568726E-0001 1.84756091937091E-0001 1.84129523556599E-0001 1.83504401806659E-0001 1.82880725065890E-0001 - 1.82258491712114E-0001 1.81637700122370E-0001 1.81018348672901E-0001 1.80400435739164E-0001 1.79783959695833E-0001 - 1.79168918916792E-0001 1.78555311775141E-0001 1.77943136643200E-0001 1.77332391892505E-0001 1.76723075893812E-0001 - 1.76115187017100E-0001 1.75508723631565E-0001 1.74903684105633E-0001 1.74300066806949E-0001 1.73697870102387E-0001 - 1.73097092358049E-0001 1.72497731939263E-0001 1.71899787210590E-0001 1.71303256535818E-0001 1.70708138277974E-0001 - 1.70114430799314E-0001 1.69522132461330E-0001 1.68931241624754E-0001 1.68341756649551E-0001 1.67753675894930E-0001 - 1.67166997719339E-0001 1.66581720480468E-0001 1.65997842535252E-0001 1.65415362239868E-0001 1.64834277949745E-0001 - 1.64254588019554E-0001 1.63676290803218E-0001 1.63099384653913E-0001 1.62523867924061E-0001 1.61949738965345E-0001 - 1.61376996128699E-0001 1.60805637764312E-0001 1.60235662221635E-0001 1.59667067849377E-0001 1.59099852995506E-0001 - 1.58534016007256E-0001 1.57969555231122E-0001 1.57406469012867E-0001 1.56844755697519E-0001 1.56284413629374E-0001 - 1.55725441152002E-0001 1.55167836608238E-0001 1.54611598340197E-0001 1.54056724689265E-0001 1.53503213996104E-0001 - 1.52951064600655E-0001 1.52400274842138E-0001 1.51850843059055E-0001 1.51302767589187E-0001 1.50756046769603E-0001 - 1.50210678936657E-0001 1.49666662425988E-0001 1.49123995572526E-0001 1.48582676710492E-0001 1.48042704173396E-0001 - 1.47504076294047E-0001 1.46966791404543E-0001 1.46430847836286E-0001 1.45896243919972E-0001 1.45362977985597E-0001 - 1.44831048362464E-0001 1.44300453379174E-0001 1.43771191363639E-0001 1.43243260643073E-0001 1.42716659544002E-0001 - 1.42191386392262E-0001 1.41667439513000E-0001 1.41144817230679E-0001 1.40623517869078E-0001 1.40103539751290E-0001 - 1.39584881199732E-0001 1.39067540536139E-0001 1.38551516081567E-0001 1.38036806156403E-0001 1.37523409080353E-0001 - 1.37011323172456E-0001 1.36500546751079E-0001 1.35991078133921E-0001 1.35482915638015E-0001 1.34976057579727E-0001 - 1.34470502274764E-0001 1.33966248038169E-0001 1.33463293184327E-0001 1.32961636026965E-0001 1.32461274879156E-0001 - 1.31962208053317E-0001 1.31464433861216E-0001 1.30967950613968E-0001 1.30472756622044E-0001 1.29978850195265E-0001 - 1.29486229642810E-0001 1.28994893273215E-0001 1.28504839394376E-0001 1.28016066313550E-0001 1.27528572337359E-0001 - 1.27042355771789E-0001 1.26557414922193E-0001 1.26073748093293E-0001 1.25591353589187E-0001 1.25110229713339E-0001 - 1.24630374768594E-0001 1.24151787057171E-0001 1.23674464880670E-0001 1.23198406540073E-0001 1.22723610335741E-0001 - 1.22250074567424E-0001 1.21777797534260E-0001 1.21306777534774E-0001 1.20837012866882E-0001 1.20368501827896E-0001 - 1.19901242714521E-0001 1.19435233822862E-0001 1.18970473448420E-0001 1.18506959886102E-0001 1.18044691430216E-0001 - 1.17583666374476E-0001 1.17123883012006E-0001 1.16665339635337E-0001 1.16208034536415E-0001 1.15751966006600E-0001 - 1.15297132336666E-0001 1.14843531816809E-0001 1.14391162736643E-0001 1.13940023385208E-0001 1.13490112050967E-0001 - 1.13041427021809E-0001 1.12593966585056E-0001 1.12147729027460E-0001 1.11702712635206E-0001 1.11258915693916E-0001 - 1.10816336488651E-0001 1.10374973303911E-0001 1.09934824423641E-0001 1.09495888131229E-0001 1.09058162709510E-0001 - 1.08621646440771E-0001 1.08186337606750E-0001 1.07752234488637E-0001 1.07319335367081E-0001 1.06887638522188E-0001 - 1.06457142233526E-0001 1.06027844780126E-0001 1.05599744440484E-0001 1.05172839492565E-0001 1.04747128213804E-0001 - 1.04322608881107E-0001 1.03899279770859E-0001 1.03477139158918E-0001 1.03056185320623E-0001 1.02636416530797E-0001 - 1.02217831063745E-0001 1.01800427193261E-0001 1.01384203192626E-0001 1.00969157334614E-0001 1.00555287891494E-0001 - 1.00142593135029E-0001 9.97310713364836E-0002 9.93207207666222E-0002 9.89115396957130E-0002 9.85035263935321E-0002 - 9.80966791293624E-0002 9.76909961720000E-0002 9.72864757897532E-0002 9.68831162504469E-0002 9.64809158214258E-0002 - 9.60798727695541E-0002 9.56799853612219E-0002 9.52812518623439E-0002 9.48836705383640E-0002 9.44872396542585E-0002 - 9.40919574745363E-0002 9.36978222632443E-0002 9.33048322839672E-0002 9.29129857998317E-0002 9.25222810735097E-0002 - 9.21327163672189E-0002 9.17442899427264E-0002 9.13570000613528E-0002 9.09708449839716E-0002 9.05858229710155E-0002 - 9.02019322824758E-0002 8.98191711779065E-0002 8.94375379164282E-0002 8.90570307567279E-0002 8.86776479570649E-0002 - 8.82993877752704E-0002 8.79222484687518E-0002 8.75462282944966E-0002 8.71713255090721E-0002 8.67975383686312E-0002 - 8.64248651289127E-0002 8.60533040452450E-0002 8.56828533725501E-0002 8.53135113653436E-0002 8.49452762777407E-0002 - 8.45781463634559E-0002 8.42121198758072E-0002 8.38471950677205E-0002 8.34833701917286E-0002 8.31206434999782E-0002 - 8.27590132442294E-0002 8.23984776758596E-0002 8.20390350458682E-0002 8.16806836048761E-0002 8.13234216031317E-0002 - 8.09672472905112E-0002 8.06121589165227E-0002 8.02581547303103E-0002 7.99052329806542E-0002 7.95533919159754E-0002 - 7.92026297843394E-0002 7.88529448334562E-0002 7.85043353106871E-0002 7.81567994630440E-0002 7.78103355371940E-0002 - 7.74649417794638E-0002 7.71206164358391E-0002 7.67773577519715E-0002 7.64351639731785E-0002 7.60940333444472E-0002 - 7.57539641104393E-0002 7.54149545154908E-0002 7.50770028036182E-0002 7.47401072185191E-0002 7.44042660035759E-0002 - 7.40694774018607E-0002 7.37357396561348E-0002 7.34030510088557E-0002 7.30714097021769E-0002 7.27408139779524E-0002 - 7.24112620777407E-0002 7.20827522428056E-0002 7.17552827141221E-0002 7.14288517323768E-0002 7.11034575379725E-0002 - 7.07790983710320E-0002 7.04557724713991E-0002 7.01334780786444E-0002 6.98122134320660E-0002 6.94919767706938E-0002 - 6.91727663332937E-0002 6.88545803583689E-0002 6.85374170841636E-0002 6.82212747486679E-0002 6.79061515896183E-0002 - 6.75920458445036E-0002 6.72789557505660E-0002 6.69668795448051E-0002 6.66558154639823E-0002 6.63457617446219E-0002 - 6.60367166230167E-0002 6.57286783352293E-0002 6.54216451170961E-0002 6.51156152042319E-0002 6.48105868320305E-0002 - 6.45065582356712E-0002 6.42035276501195E-0002 6.39014933101312E-0002 6.36004534502574E-0002 6.33004063048450E-0002 - 6.30013501080430E-0002 6.27032830938034E-0002 6.24062034958857E-0002 6.21101095478614E-0002 6.18149994831146E-0002 - 6.15208715348490E-0002 6.12277239360879E-0002 6.09355549196796E-0002 6.06443627183013E-0002 6.03541455644603E-0002 - 6.00649016905004E-0002 5.97766293286028E-0002 5.94893267107906E-0002 5.92029920689335E-0002 5.89176236347488E-0002 - 5.86332196398075E-0002 5.83497783155360E-0002 5.80672978932198E-0002 5.77857766040090E-0002 5.75052126789191E-0002 - 5.72256043488359E-0002 5.69469498445202E-0002 5.66692473966088E-0002 5.63924952356209E-0002 5.61166915919593E-0002 - 5.58418346959152E-0002 5.55679227776726E-0002 5.52949540673098E-0002 5.50229267948056E-0002 5.47518391900406E-0002 - 5.44816894828021E-0002 5.42124759027884E-0002 5.39441966796105E-0002 5.36768500427984E-0002 5.34104342218023E-0002 - 5.31449474459974E-0002 5.28803879446889E-0002 5.26167539471130E-0002 5.23540436824435E-0002 5.20922553797932E-0002 - 5.18313872682189E-0002 5.15714375767258E-0002 5.13124045342692E-0002 5.10542863697607E-0002 5.07970813120703E-0002 - 5.05407875900305E-0002 5.02854034324414E-0002 5.00309270680726E-0002 4.97773567256689E-0002 4.95246906339527E-0002 - 4.92729270216282E-0002 4.90220641173867E-0002 4.87721001499083E-0002 4.85230333478670E-0002 4.82748619399350E-0002 - 4.80275841547855E-0002 4.77811982210977E-0002 4.75357023675600E-0002 4.72910948228739E-0002 4.70473738157593E-0002 - 4.68045375749562E-0002 4.65625843292311E-0002 4.63215123073791E-0002 4.60813197382286E-0002 4.58420048506462E-0002 - 4.56035658735389E-0002 4.53660010358601E-0002 4.51293085666118E-0002 4.48934866948498E-0002 4.46585336496881E-0002 - 4.44244476603015E-0002 4.41912269559316E-0002 4.39588697658889E-0002 4.37273743195581E-0002 4.34967388464029E-0002 - 4.32669615759679E-0002 4.30380407378853E-0002 4.28099745618772E-0002 4.25827612777602E-0002 4.23563991154507E-0002 - 4.21308863049670E-0002 4.19062210764359E-0002 4.16824016600946E-0002 4.14594262862963E-0002 4.12372931855147E-0002 - 4.10160005883470E-0002 4.07955467255187E-0002 4.05759298278887E-0002 4.03571481264520E-0002 4.01391998523456E-0002 - 3.99220832368515E-0002 3.97057965114011E-0002 3.94903379075812E-0002 3.92757056571356E-0002 3.90618979919721E-0002 - 3.88489131441647E-0002 3.86367493459591E-0002 3.84254048297775E-0002 3.82148778282212E-0002 3.80051665740772E-0002 - 3.77962693003208E-0002 3.75881842401206E-0002 3.73809096268439E-0002 3.71744436940593E-0002 3.69687846755428E-0002 - 3.67639308052812E-0002 3.65598803174766E-0002 3.63566314465523E-0002 3.61541824271548E-0002 3.59525314941610E-0002 - 3.57516768826805E-0002 3.55516168280609E-0002 3.53523495658934E-0002 3.51538733320151E-0002 3.49561863625162E-0002 - 3.47592868937422E-0002 3.45631731622993E-0002 3.43678434050603E-0002 3.41732958591668E-0002 3.39795287620359E-0002 - 3.37865403513636E-0002 3.35943288651295E-0002 3.34028925416025E-0002 3.32122296193441E-0002 3.30223383372135E-0002 - 3.28332169343732E-0002 3.26448636502919E-0002 3.24572767247511E-0002 3.22704543978485E-0002 3.20843949100027E-0002 - 3.18990965019592E-0002 3.17145574147935E-0002 3.15307758899174E-0002 3.13477501690824E-0002 3.11654784943849E-0002 - 3.09839591082721E-0002 3.08031902535447E-0002 3.06231701733640E-0002 3.04438971112547E-0002 3.02653693111107E-0002 - 3.00875850172004E-0002 2.99105424741704E-0002 2.97342399270514E-0002 2.95586756212624E-0002 2.93838478026157E-0002 - 2.92097547173224E-0002 2.90363946119960E-0002 2.88637657336593E-0002 2.86918663297473E-0002 2.85206946481129E-0002 - 2.83502489370328E-0002 2.81805274452109E-0002 2.80115284217847E-0002 2.78432501163288E-0002 2.76756907788611E-0002 - 2.75088486598478E-0002 2.73427220102075E-0002 2.71773090813168E-0002 2.70126081250157E-0002 2.68486173936118E-0002 - 2.66853351398865E-0002 2.65227596170987E-0002 2.63608890789910E-0002 2.61997217797946E-0002 2.60392559742338E-0002 - 2.58794899175319E-0002 2.57204218654160E-0002 2.55620500741217E-0002 2.54043728003995E-0002 2.52473883015184E-0002 - 2.50910948352726E-0002 2.49354906599854E-0002 2.47805740345150E-0002 2.46263432182603E-0002 2.44727964711648E-0002 - 2.43199320537233E-0002 2.41677482269857E-0002 2.40162432525633E-0002 2.38654153926341E-0002 2.37152629099472E-0002 - 2.35657840678292E-0002 2.34169771301886E-0002 2.32688403615216E-0002 2.31213720269176E-0002 2.29745703920638E-0002 - 2.28284337232517E-0002 2.26829602873813E-0002 2.25381483519671E-0002 2.23939961851438E-0002 2.22505020556709E-0002 - 2.21076642329385E-0002 2.19654809869733E-0002 2.18239505884429E-0002 2.16830713086624E-0002 2.15428414195991E-0002 - 2.14032591938780E-0002 2.12643229047881E-0002 2.11260308262866E-0002 2.09883812330060E-0002 2.08513724002580E-0002 - 2.07150026040400E-0002 2.05792701210409E-0002 2.04441732286455E-0002 2.03097102049417E-0002 2.01758793287244E-0002 - 2.00426788795020E-0002 1.99101071375026E-0002 1.97781623836780E-0002 1.96468428997110E-0002 1.95161469680199E-0002 - 1.93860728717646E-0002 1.92566188948526E-0002 1.91277833219438E-0002 1.89995644384574E-0002 1.88719605305764E-0002 - 1.87449698852539E-0002 1.86185907902192E-0002 1.84928215339828E-0002 1.83676604058428E-0002 1.82431056958902E-0002 - 1.81191556950146E-0002 1.79958086949109E-0002 1.78730629880839E-0002 1.77509168678551E-0002 1.76293686283680E-0002 - 1.75084165645937E-0002 1.73880589723377E-0002 1.72682941482451E-0002 1.71491203898060E-0002 1.70305359953629E-0002 - 1.69125392641148E-0002 1.67951284961248E-0002 1.66783019923247E-0002 1.65620580545215E-0002 1.64463949854036E-0002 - 1.63313110885464E-0002 1.62168046684185E-0002 1.61028740303873E-0002 1.59895174807254E-0002 1.58767333266168E-0002 - 1.57645198761622E-0002 1.56528754383861E-0002 1.55417983232415E-0002 1.54312868416172E-0002 1.53213393053434E-0002 - 1.52119540271975E-0002 1.51031293209110E-0002 1.49948635011745E-0002 1.48871548836449E-0002 1.47800017849511E-0002 - 1.46734025226999E-0002 1.45673554154827E-0002 1.44618587828813E-0002 1.43569109454740E-0002 1.42525102248425E-0002 - 1.41486549435773E-0002 1.40453434252844E-0002 1.39425739945914E-0002 1.38403449771536E-0002 1.37386546996609E-0002 - 1.36375014898433E-0002 1.35368836764776E-0002 1.34367995893937E-0002 1.33372475594809E-0002 1.32382259186943E-0002 - 1.31397330000609E-0002 1.30417671376860E-0002 1.29443266667603E-0002 1.28474099235649E-0002 1.27510152454792E-0002 - 1.26551409709862E-0002 1.25597854396794E-0002 1.24649469922693E-0002 1.23706239705897E-0002 1.22768147176042E-0002 - 1.21835175774125E-0002 1.20907308952573E-0002 1.19984530175305E-0002 1.19066822917798E-0002 1.18154170667153E-0002 - 1.17246556922158E-0002 1.16343965193356E-0002 1.15446379003112E-0002 1.14553781885672E-0002 1.13666157387240E-0002 - 1.12783489066033E-0002 1.11905760492354E-0002 1.11032955248659E-0002 1.10165056929614E-0002 1.09302049142177E-0002 - 1.08443915505651E-0002 1.07590639651757E-0002 1.06742205224703E-0002 1.05898595881245E-0002 1.05059795290759E-0002 - 1.04225787135309E-0002 1.03396555109709E-0002 1.02572082921598E-0002 1.01752354291503E-0002 1.00937352952907E-0002 - 1.00127062652320E-0002 9.93214671493436E-0003 9.85205502167434E-0003 9.77242956405137E-0003 9.69326872199471E-0003 - 9.61457087677070E-0003 9.53633441098893E-0003 9.45855770860995E-0003 9.38123915495149E-0003 9.30437713669569E-0003 - 9.22797004189630E-0003 9.15201625998503E-0003 9.07651418177919E-0003 9.00146219948809E-0003 8.92685870672030E-0003 - 8.85270209849091E-0003 8.77899077122792E-0003 8.70572312278001E-0003 8.63289755242300E-0003 8.56051246086710E-0003 - 8.48856625026431E-0003 8.41705732421489E-0003 8.34598408777515E-0003 8.27534494746397E-0003 8.20513831127018E-0003 - 8.13536258865997E-0003 8.06601619058349E-0003 7.99709752948259E-0003 7.92860501929756E-0003 7.86053707547450E-0003 - 7.79289211497276E-0003 7.72566855627174E-0003 7.65886481937835E-0003 7.59247932583450E-0003 7.52651049872380E-0003 - 7.46095676267949E-0003 7.39581654389121E-0003 7.33108827011251E-0003 7.26677037066842E-0003 7.20286127646223E-0003 - 7.13935941998349E-0003 7.07626323531483E-0003 7.01357115813955E-0003 6.95128162574925E-0003 6.88939307705074E-0003 - 6.82790395257399E-0003 6.76681269447912E-0003 6.70611774656404E-0003 6.64581755427212E-0003 6.58591056469917E-0003 - 6.52639522660153E-0003 6.46726999040302E-0003 6.40853330820275E-0003 6.35018363378277E-0003 6.29221942261523E-0003 - 6.23463913187041E-0003 6.17744122042385E-0003 6.12062414886417E-0003 6.06418637950082E-0003 6.00812637637128E-0003 - 5.95244260524919E-0003 5.89713353365154E-0003 5.84219763084655E-0003 5.78763336786151E-0003 5.73343921749011E-0003 - 5.67961365430029E-0003 5.62615515464219E-0003 5.57306219665544E-0003 5.52033326027736E-0003 5.46796682725035E-0003 - 5.41596138112979E-0003 5.36431540729204E-0003 5.31302739294182E-0003 5.26209582712051E-0003 5.21151920071353E-0003 - 5.16129600645841E-0003 5.11142473895279E-0003 5.06190389466192E-0003 5.01273197192696E-0003 4.96390747097254E-0003 - 4.91542889391479E-0003 4.86729474476951E-0003 4.81950352945964E-0003 4.77205375582375E-0003 4.72494393362355E-0003 - 4.67817257455210E-0003 4.63173819224197E-0003 4.58563930227284E-0003 4.53987442218000E-0003 4.49444207146203E-0003 - 4.44934077158899E-0003 4.40456904601066E-0003 4.36012542016429E-0003 4.31600842148310E-0003 4.27221657940402E-0003 - 4.22874842537604E-0003 4.18560249286845E-0003 4.14277731737872E-0003 4.10027143644084E-0003 4.05808338963365E-0003 - 4.01621171858871E-0003 3.97465496699892E-0003 3.93341168062638E-0003 3.89248040731083E-0003 3.85185969697807E-0003 - 3.81154810164782E-0003 3.77154417544252E-0003 3.73184647459522E-0003 3.69245355745805E-0003 3.65336398451078E-0003 - 3.61457631836873E-0003 3.57608912379163E-0003 3.53790096769159E-0003 3.50001041914168E-0003 3.46241604938448E-0003 - 3.42511643184019E-0003 3.38811014211541E-0003 3.35139575801133E-0003 3.31497185953230E-0003 3.27883702889447E-0003 - 3.24298985053397E-0003 3.20742891111580E-0003 3.17215279954205E-0003 3.13716010696057E-0003 3.10244942677367E-0003 - 3.06801935464640E-0003 3.03386848851548E-0003 2.99999542859762E-0003 2.96639877739827E-0003 2.93307713972037E-0003 - 2.90002912267273E-0003 2.86725333567900E-0003 2.83474839048612E-0003 2.80251290117309E-0003 2.77054548415983E-0003 - 2.73884475821567E-0003 2.70740934446819E-0003 2.67623786641214E-0003 2.64532894991791E-0003 2.61468122324063E-0003 - 2.58429331702871E-0003 2.55416386433279E-0003 2.52429150061468E-0003 2.49467486375595E-0003 2.46531259406706E-0003 - 2.43620333429606E-0003 2.40734572963751E-0003 2.37873842774157E-0003 2.35038007872264E-0003 2.32226933516857E-0003 - 2.29440485214944E-0003 2.26678528722657E-0003 2.23940930046164E-0003 2.21227555442545E-0003 2.18538271420723E-0003 - 2.15872944742340E-0003 2.13231442422676E-0003 2.10613631731563E-0003 2.08019380194273E-0003 2.05448555592449E-0003 - 2.02901025964999E-0003 2.00376659609016E-0003 1.97875325080699E-0003 1.95396891196252E-0003 1.92941227032825E-0003 - 1.90508201929407E-0003 1.88097685487763E-0003 1.85709547573360E-0003 1.83343658316273E-0003 1.80999888112123E-0003 - 1.78678107623006E-0003 1.76378187778410E-0003 1.74099999776158E-0003 1.71843415083329E-0003 1.69608305437192E-0003 - 1.67394542846154E-0003 1.65201999590673E-0003 1.63030548224221E-0003 1.60880061574204E-0003 1.58750412742909E-0003 - 1.56641475108455E-0003 1.54553122325721E-0003 1.52485228327309E-0003 1.50437667324477E-0003 1.48410313808091E-0003 - 1.46403042549589E-0003 1.44415728601910E-0003 1.42448247300468E-0003 1.40500474264095E-0003 1.38572285395999E-0003 - 1.36663556884733E-0003 1.34774165205138E-0003 1.32903987119323E-0003 1.31052899677611E-0003 1.29220780219512E-0003 - 1.27407506374695E-0003 1.25612956063942E-0003 1.23837007500132E-0003 1.22079539189202E-0003 1.20340429931121E-0003 - 1.18619558820875E-0003 1.16916805249425E-0003 1.15232048904698E-0003 1.13565169772566E-0003 1.11916048137816E-0003 - 1.10284564585148E-0003 1.08670600000144E-0003 1.07074035570262E-0003 1.05494752785824E-0003 1.03932633440998E-0003 - 1.02387559634800E-0003 1.00859413772072E-0003 9.93480785644850E-0004 9.78534370315349E-0004 9.63753725015321E-0004 - 9.49137686126109E-0004 9.34685093137187E-0004 9.20394788656228E-0004 9.06265618419192E-0004 8.92296431300258E-0004 - 8.78486079322024E-0004 8.64833417665480E-0004 8.51337304680154E-0004 8.37996601894276E-0004 8.24810174024807E-0004 - 8.11776888987704E-0004 7.98895617907986E-0004 7.86165235129959E-0004 7.73584618227463E-0004 7.61152648013978E-0004 - 7.48868208552979E-0004 7.36730187168080E-0004 7.24737474453344E-0004 7.12888964283604E-0004 7.01183553824667E-0004 - 6.89620143543737E-0004 6.78197637219650E-0004 6.66914941953263E-0004 6.55770968177862E-0004 6.44764629669456E-0004 - 6.33894843557221E-0004 6.23160530333952E-0004 6.12560613866401E-0004 6.02094021405827E-0004 5.91759683598375E-0004 - 5.81556534495594E-0004 5.71483511564966E-0004 5.61539555700346E-0004 5.51723611232578E-0004 5.42034625939966E-0004 - 5.32471551058876E-0004 5.23033341294345E-0004 5.13718954830606E-0004 5.04527353341792E-0004 4.95457502002485E-0004 - 4.86508369498406E-0004 4.77678928037107E-0004 4.68968153358582E-0004 4.60375024746049E-0004 4.51898525036594E-0004 - 4.43537640631935E-0004 4.35291361509204E-0004 4.27158681231642E-0004 4.19138596959465E-0004 4.11230109460593E-0004 - 4.03432223121501E-0004 3.95743945958080E-0004 3.88164289626423E-0004 3.80692269433771E-0004 3.73326904349333E-0004 - 3.66067217015219E-0004 3.58912233757381E-0004 3.51860984596507E-0004 3.44912503258993E-0004 3.38065827187945E-0004 - 3.31319997554109E-0004 3.24674059266938E-0004 3.18127060985566E-0004 3.11678055129869E-0004 3.05326097891542E-0004 - 2.99070249245127E-0004 2.92909572959159E-0004 2.86843136607228E-0004 2.80870011579126E-0004 2.74989273092010E-0004 - 2.69200000201517E-0004 2.63501275812994E-0004 2.57892186692652E-0004 2.52371823478791E-0004 2.46939280693057E-0004 - 2.41593656751641E-0004 2.36334053976596E-0004 2.31159578607075E-0004 2.26069340810648E-0004 2.21062454694643E-0004 - 2.16138038317431E-0004 2.11295213699830E-0004 2.06533106836436E-0004 2.01850847707020E-0004 1.97247570287957E-0004 - 1.92722412563605E-0004 1.88274516537790E-0004 1.83903028245223E-0004 1.79607097762994E-0004 1.75385879222079E-0004 - 1.71238530818817E-0004 1.67164214826453E-0004 1.63162097606702E-0004 1.59231349621272E-0004 1.55371145443484E-0004 - 1.51580663769841E-0004 1.47859087431652E-0004 1.44205603406683E-0004 1.40619402830773E-0004 1.37099681009542E-0004 - 1.33645637430045E-0004 1.30256475772489E-0004 1.26931403921966E-0004 1.23669633980167E-0004 1.20470382277170E-0004 - 1.17332869383189E-0004 1.14256320120377E-0004 1.11239963574647E-0004 1.08283033107480E-0004 1.05384766367796E-0004 - 1.02544405303794E-0004 9.97611961748507E-0005 9.70343895634205E-0005 9.43632403869404E-0005 9.17470079097869E-0005 - 8.91849557552095E-0005 8.66763519173119E-0005 8.42204687730513E-0005 8.18165830942255E-0005 7.94639760595224E-0005 - 7.71619332665441E-0005 7.49097447438778E-0005 7.27067049631839E-0005 7.05521128512757E-0005 6.84452718022564E-0005 - 6.63854896896363E-0005 6.43720788784924E-0005 6.24043562376469E-0005 6.04816431518413E-0005 5.86032655339508E-0005 - 5.67685538372163E-0005 5.49768430674721E-0005 5.32274727954251E-0005 5.15197871689194E-0005 4.98531349252414E-0005 - 4.82268694034413E-0005 4.66403485566546E-0005 4.50929349644697E-0005 4.35839958452867E-0005 4.21129030687118E-0005 - 4.06790331679708E-0005 3.92817673523229E-0005 3.79204915195189E-0005 3.65945962682525E-0005 3.53034769106463E-0005 - 3.40465334847565E-0005 3.28231707670800E-0005 3.16327982851029E-0005 3.04748303298453E-0005 2.93486859684392E-0005 - 2.82537890567245E-0005 2.71895682518497E-0005 2.61554570249116E-0005 2.51508936735939E-0005 2.41753213348366E-0005 - 2.32281879975244E-0005 2.23089465151817E-0005 2.14170546187029E-0005 2.05519749290854E-0005 1.97131749701919E-0005 - 1.89001271815304E-0005 1.81123089310449E-0005 1.73492025279332E-0005 1.66102952354827E-0005 1.58950792839167E-0005 - 1.52030518832722E-0005 1.45337152362837E-0005 1.38865765512940E-0005 1.32611480551835E-0005 1.26569470063110E-0005 - 1.20734957074842E-0005 1.15103215189379E-0005 1.09669568713391E-0005 1.04429392788091E-0005 9.93781135195981E-0006 - 9.45112081095702E-0006 8.98242049859409E-0006 8.53126839339030E-0006 8.09722762270786E-0006 7.67986647588266E-0006 - 7.27875841738165E-0006 6.89348209997166E-0006 6.52362137791223E-0006 6.16876532016700E-0006 5.82850822362999E-0006 - 5.50244962637713E-0006 5.19019432093073E-0006 4.89135236754701E-0006 4.60553910752246E-0006 4.33237517651587E-0006 - 4.07148651789450E-0006 3.82250439609446E-0006 3.58506541000347E-0006 3.35881150636250E-0006 3.14338999318387E-0006 - 2.93845355319262E-0006 2.74366025728299E-0006 2.55867357799691E-0006 2.38316240302126E-0006 2.21680104870267E-0006 - 2.05926927358340E-0006 1.91025229195641E-0006 1.76944078743779E-0006 1.63653092656128E-0006 1.51122437238945E-0006 - 1.39322829814592E-0006 1.28225540086673E-0006 1.17802391506979E-0006 1.08025762644564E-0006 9.88685885565703E-0007 - 9.03043621611189E-0007 8.23071356121290E-0007 7.48515216759841E-0007 6.79126951102860E-0007 6.14663940444181E-0007 - 5.54889213621454E-0007 4.99571460861550E-0007 4.48485047644798E-0007 4.01410028589742E-0007 3.58132161356480E-0007 - 3.18442920570190E-0007 2.82139511764137E-0007 2.49024885341830E-0007 2.18907750559434E-0007 1.91602589527166E-0007 - 1.66929671230743E-0007 1.44715065572407E-0007 1.24790657431343E-0007 1.06994160744177E-0007 9.11691326047926E-0008 - 7.71649873840908E-0008 6.48370108694428E-0008 5.40463744237364E-0008 4.46601491643336E-0008 3.65513201617634E-0008 - 2.95988006581015E-0008 2.36874463052992E-0008 1.87080694231910E-0008 1.45574532774232E-0008 1.11383663772096E-0008 - 8.35957679290722E-0009 6.13586649353564E-0009 4.38804570413190E-0009 3.04296728305188E-0009 2.03354111918650E-0009 - 1.29874854910626E-0009 7.83656794181791E-0010 4.39433417659619E-0010 2.23360801735872E-0010 9.88506446295183E-0011 - 3.54584776731726E-0011 8.89820244129931E-0012 1.05664792663584E-0012 8.14778362579703E-0015 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 1.00000000000000E+0012 - 1.00000000000000E+0012 1.00000000000000E+0012 9.35953757140299E+0003 9.30889371647277E+0003 9.25862739664878E+0003 - 9.20873438494922E+0003 9.15921052541882E+0003 9.11005173160411E+0003 9.06125398506483E+0003 9.01281333392052E+0003 - 8.96472589143153E+0003 8.91698783461344E+0003 8.86959540288433E+0003 8.82254489674385E+0003 8.77583267648338E+0003 - 8.72945516092667E+0003 8.68340882620004E+0003 8.63769020453142E+0003 8.59229588307768E+0003 8.54722250277942E+0003 - 8.50246675724264E+0003 8.45802539164646E+0003 8.41389520167660E+0003 8.37007303248353E+0003 8.32655577766518E+0003 - 8.28334037827320E+0003 8.24042382184241E+0003 8.19780314144292E+0003 8.15547541475408E+0003 8.11343776316023E+0003 - 8.07168735086709E+0003 8.03022138403888E+0003 7.98903710995529E+0003 7.94813181618792E+0003 7.90750282979581E+0003 - 7.86714751653945E+0003 7.82706328011293E+0003 7.78724756139370E+0003 7.74769783770968E+0003 7.70841162212303E+0003 - 7.66938646273044E+0003 7.63061994197944E+0003 7.59210967600023E+0003 7.55385331395288E+0003 7.51584853738931E+0003 - 7.47809305962987E+0003 7.44058462515405E+0003 7.40332100900499E+0003 7.36630001620754E+0003 7.32951948119948E+0003 - 7.29297726727552E+0003 7.25667126604395E+0003 7.22059939689544E+0003 7.18475960648385E+0003 7.14914986821863E+0003 - 7.11376818176869E+0003 7.07861257257724E+0003 7.04368109138766E+0003 7.00897181377972E+0003 6.97448283971632E+0003 - 6.94021229310020E+0003 6.90615832134050E+0003 6.87231909492896E+0003 6.83869280702545E+0003 6.80527767305263E+0003 - 6.77207193029961E+0003 6.73907383753426E+0003 6.70628167462406E+0003 6.67369374216518E+0003 6.64130836111982E+0003 - 6.60912387246131E+0003 6.57713863682699E+0003 6.54535103417865E+0003 6.51375946347031E+0003 6.48236234232320E+0003 - 6.45115810670771E+0003 6.42014521063228E+0003 6.38932212583888E+0003 6.35868734150509E+0003 6.32823936395250E+0003 - 6.29797671636138E+0003 6.26789793849141E+0003 6.23800158640833E+0003 6.20828623221639E+0003 6.17875046379647E+0003 - 6.14939288454973E+0003 6.12021211314660E+0003 6.09120678328110E+0003 6.06237554343030E+0003 6.03371705661873E+0003 - 6.00523000018779E+0003 5.97691306556990E+0003 5.94876495806732E+0003 5.92078439663558E+0003 5.89297011367131E+0003 - 5.86532085480451E+0003 5.83783537869499E+0003 5.81051245683306E+0003 5.78335087334418E+0003 5.75634942479765E+0003 - 5.72950692001916E+0003 5.70282217990711E+0003 5.67629403725264E+0003 5.64992133656326E+0003 5.62370293389002E+0003 - 5.59763769665812E+0003 5.57172450350090E+0003 5.54596224409710E+0003 5.52034981901136E+0003 5.49488613953784E+0003 - 5.46957012754691E+0003 5.44440071533486E+0003 5.41937684547650E+0003 5.39449747068068E+0003 5.36976155364858E+0003 - 5.34516806693468E+0003 5.32071599281052E+0003 5.29640432313097E+0003 5.27223205920307E+0003 5.24819821165745E+0003 - 5.22430180032205E+0003 5.20054185409832E+0003 5.17691741083976E+0003 5.15342751723263E+0003 5.13007122867903E+0003 - 5.10684760918204E+0003 5.08375573123304E+0003 5.06079467570113E+0003 5.03796353172450E+0003 5.01526139660391E+0003 - 4.99268737569798E+0003 4.97024058232051E+0003 4.94792013763955E+0003 4.92572517057837E+0003 4.90365481771817E+0003 - 4.88170822320250E+0003 4.85988453864343E+0003 4.83818292302940E+0003 4.81660254263461E+0003 4.79514257093006E+0003 - 4.77380218849617E+0003 4.75258058293688E+0003 4.73147694879523E+0003 4.71049048747042E+0003 4.68962040713633E+0003 - 4.66886592266135E+0003 4.64822625552967E+0003 4.62770063376380E+0003 4.60728829184851E+0003 4.58698847065596E+0003 - 4.56680041737214E+0003 4.54672338542447E+0003 4.52675663441068E+0003 4.50689943002880E+0003 4.48715104400832E+0003 - 4.46751075404249E+0003 4.44797784372168E+0003 4.42855160246788E+0003 4.40923132547015E+0003 4.39001631362127E+0003 - 4.37090587345520E+0003 4.35189931708570E+0003 4.33299596214584E+0003 4.31419513172845E+0003 4.29549615432753E+0003 - 4.27689836378058E+0003 4.25840109921179E+0003 4.24000370497612E+0003 4.22170553060425E+0003 4.20350593074834E+0003 - 4.18540426512864E+0003 4.16739989848088E+0003 4.14949220050447E+0003 4.13168054581147E+0003 4.11396431387631E+0003 - 4.09634288898622E+0003 4.07881566019251E+0003 4.06138202126238E+0003 4.04404137063159E+0003 4.02679311135774E+0003 - 4.00963665107420E+0003 3.99257140194480E+0003 3.97559678061904E+0003 3.95871220818800E+0003 3.94191711014091E+0003 - 3.92521091632222E+0003 3.90859306088940E+0003 3.89206298227119E+0003 3.87562012312653E+0003 3.85926393030403E+0003 - 3.84299385480194E+0003 3.82680935172873E+0003 3.81070988026416E+0003 3.79469490362091E+0003 3.77876388900667E+0003 - 3.76291630758679E+0003 3.74715163444739E+0003 3.73146934855894E+0003 3.71586893274039E+0003 3.70034987362365E+0003 - 3.68491166161866E+0003 3.66955379087879E+0003 3.65427575926677E+0003 3.63907706832101E+0003 3.62395722322236E+0003 - 3.60891573276128E+0003 3.59395210930542E+0003 3.57906586876764E+0003 3.56425653057439E+0003 3.54952361763445E+0003 - 3.53486665630814E+0003 3.52028517637682E+0003 3.50577871101284E+0003 3.49134679674976E+0003 3.47698897345302E+0003 - 3.46270478429089E+0003 3.44849377570581E+0003 3.43435549738604E+0003 3.42028950223769E+0003 3.40629534635699E+0003 - 3.39237258900298E+0003 3.37852079257046E+0003 3.36473952256326E+0003 3.35102834756783E+0003 3.33738683922713E+0003 - 3.32381457221477E+0003 3.31031112420955E+0003 3.29687607587017E+0003 3.28350901081027E+0003 3.27020951557377E+0003 - 3.25697717961046E+0003 3.24381159525186E+0003 3.23071235768732E+0003 3.21767906494044E+0003 3.20471131784574E+0003 - 3.19180872002546E+0003 3.17897087786681E+0003 3.16619740049931E+0003 3.15348789977239E+0003 3.14084199023335E+0003 - 3.12825928910537E+0003 3.11573941626589E+0003 3.10328199422515E+0003 3.09088664810499E+0003 3.07855300561785E+0003 - 3.06628069704595E+0003 3.05406935522081E+0003 3.04191861550278E+0003 3.02982811576100E+0003 3.01779749635337E+0003 - 3.00582640010685E+0003 2.99391447229793E+0003 2.98206136063322E+0003 2.97026671523036E+0003 2.95853018859902E+0003 - 2.94685143562211E+0003 2.93523011353723E+0003 2.92366588191822E+0003 2.91215840265694E+0003 2.90070733994521E+0003 - 2.88931236025696E+0003 2.87797313233048E+0003 2.86668932715090E+0003 2.85546061793286E+0003 2.84428668010324E+0003 - 2.83316719128417E+0003 2.82210183127613E+0003 2.81109028204123E+0003 2.80013222768667E+0003 2.78922735444832E+0003 - 2.77837535067443E+0003 2.76757590680959E+0003 2.75682871537875E+0003 2.74613347097139E+0003 2.73548987022589E+0003 - 2.72489761181398E+0003 2.71435639642542E+0003 2.70386592675269E+0003 2.69342590747594E+0003 2.68303604524803E+0003 - 2.67269604867967E+0003 2.66240562832474E+0003 2.65216449666576E+0003 2.64197236809939E+0003 2.63182895892219E+0003 - 2.62173398731641E+0003 2.61168717333594E+0003 2.60168823889239E+0003 2.59173690774125E+0003 2.58183290546827E+0003 - 2.57197595947583E+0003 2.56216579896953E+0003 2.55240215494483E+0003 2.54268476017386E+0003 2.53301334919229E+0003 - 2.52338765828639E+0003 2.51380742548008E+0003 2.50427239052221E+0003 2.49478229487391E+0003 2.48533688169600E+0003 - 2.47593589583656E+0003 2.46657908381862E+0003 2.45726619382786E+0003 2.44799697570056E+0003 2.43877118091148E+0003 - 2.42958856256201E+0003 2.42044887536830E+0003 2.41135187564952E+0003 2.40229732131624E+0003 2.39328497185891E+0003 - 2.38431458833638E+0003 2.37538593336459E+0003 2.36649877110528E+0003 2.35765286725487E+0003 2.34884798903333E+0003 - 2.34008390517329E+0003 2.33136038590904E+0003 2.32267720296582E+0003 2.31403412954907E+0003 2.30543094033380E+0003 - 2.29686741145405E+0003 2.28834332049245E+0003 2.27985844646984E+0003 2.27141256983497E+0003 2.26300547245432E+0003 - 2.25463693760195E+0003 2.24630674994949E+0003 2.23801469555614E+0003 2.22976056185882E+0003 2.22154413766234E+0003 - 2.21336521312971E+0003 2.20522357977243E+0003 2.19711903044100E+0003 2.18905135931533E+0003 2.18102036189541E+0003 - 2.17302583499188E+0003 2.16506757671682E+0003 2.15714538647450E+0003 2.14925906495229E+0003 2.14140841411157E+0003 - 2.13359323717874E+0003 2.12581333863636E+0003 2.11806852421421E+0003 2.11035860088059E+0003 2.10268337683356E+0003 - 2.09504266149233E+0003 2.08743626548865E+0003 2.07986400065833E+0003 2.07232568003276E+0003 2.06482111783057E+0003 - 2.05735012944929E+0003 2.04991253145709E+0003 2.04250814158461E+0003 2.03513677871683E+0003 2.02779826288501E+0003 - 2.02049241525867E+0003 2.01321905813767E+0003 2.00597801494431E+0003 1.99876911021553E+0003 1.99159216959513E+0003 - 1.98444701982609E+0003 1.97733348874289E+0003 1.97025140526397E+0003 1.96320059938417E+0003 1.95618090216724E+0003 - 1.94919214573850E+0003 1.94223416327740E+0003 1.93530678901025E+0003 1.92840985820297E+0003 1.92154320715391E+0003 - 1.91470667318666E+0003 1.90790009464304E+0003 1.90112331087598E+0003 1.89437616224261E+0003 1.88765849009730E+0003 - 1.88097013678477E+0003 1.87431094563328E+0003 1.86768076094788E+0003 1.86107942800363E+0003 1.85450679303896E+0003 - 1.84796270324904E+0003 1.84144700677922E+0003 1.83495955271847E+0003 1.82850019109291E+0003 1.82206877285941E+0003 - 1.81566514989916E+0003 1.80928917501137E+0003 1.80294070190697E+0003 1.79661958520235E+0003 1.79032568041319E+0003 - 1.78405884394831E+0003 1.77781893310353E+0003 1.77160580605564E+0003 1.76541932185637E+0003 1.75925934042643E+0003 - 1.75312572254955E+0003 1.74701832986666E+0003 1.74093702486998E+0003 1.73488167089724E+0003 1.72885213212595E+0003 - 1.72284827356766E+0003 1.71686996106229E+0003 1.71091706127251E+0003 1.70498944167813E+0003 1.69908697057058E+0003 - 1.69320951704737E+0003 1.68735695100664E+0003 1.68152914314173E+0003 1.67572596493577E+0003 1.66994728865636E+0003 - 1.66419298735024E+0003 1.65846293483802E+0003 1.65275700570895E+0003 1.64707507531570E+0003 1.64141701976924E+0003 - 1.63578271593370E+0003 1.63017204142125E+0003 1.62458487458712E+0003 1.61902109452453E+0003 1.61348058105976E+0003 - 1.60796321474715E+0003 1.60246887686428E+0003 1.59699744940700E+0003 1.59154881508471E+0003 1.58612285731546E+0003 - 1.58071946022123E+0003 1.57533850862323E+0003 1.56997988803714E+0003 1.56464348466850E+0003 1.55932918540804E+0003 - 1.55403687782714E+0003 1.54876645017319E+0003 1.54351779136514E+0003 1.53829079098895E+0003 1.53308533929315E+0003 - 1.52790132718439E+0003 1.52273864622304E+0003 1.51759718861885E+0003 1.51247684722657E+0003 1.50737751554166E+0003 - 1.50229908769602E+0003 1.49724145845374E+0003 1.49220452320688E+0003 1.48718817797127E+0003 1.48219231938240E+0003 - 1.47721684469122E+0003 1.47226165176014E+0003 1.46732663905885E+0003 1.46241170566037E+0003 1.45751675123702E+0003 - 1.45264167605639E+0003 1.44778638097745E+0003 1.44295076744660E+0003 1.43813473749374E+0003 1.43333819372847E+0003 - 1.42856103933617E+0003 1.42380317807425E+0003 1.41906451426833E+0003 1.41434495280847E+0003 1.40964439914547E+0003 - 1.40496275928711E+0003 1.40029993979452E+0003 1.39565584777851E+0003 1.39103039089592E+0003 1.38642347734602E+0003 - 1.38183501586696E+0003 1.37726491573217E+0003 1.37271308674690E+0003 1.36817943924463E+0003 1.36366388408365E+0003 - 1.35916633264360E+0003 1.35468669682203E+0003 1.35022488903098E+0003 1.34578082219362E+0003 1.34135440974089E+0003 - 1.33694556560816E+0003 1.33255420423192E+0003 1.32818024054649E+0003 1.32382358998076E+0003 1.31948416845493E+0003 - 1.31516189237734E+0003 1.31085667864121E+0003 1.30656844462153E+0003 1.30229710817184E+0003 1.29804258762116E+0003 - 1.29380480177085E+0003 1.28958366989155E+0003 1.28537911172009E+0003 1.28119104745644E+0003 1.27701939776074E+0003 - 1.27286408375024E+0003 1.26872502699637E+0003 1.26460214952174E+0003 1.26049537379722E+0003 1.25640462273905E+0003 - 1.25232981970590E+0003 1.24827088849602E+0003 1.24422775334435E+0003 1.24020033891976E+0003 1.23618857032214E+0003 - 1.23219237307967E+0003 1.22821167314601E+0003 1.22424639689755E+0003 1.22029647113068E+0003 1.21636182305905E+0003 - 1.21244238031091E+0003 1.20853807092638E+0003 1.20464882335480E+0003 1.20077456645211E+0003 1.19691522947821E+0003 - 1.19307074209433E+0003 1.18924103436047E+0003 1.18542603673282E+0003 1.18162568006120E+0003 1.17783989558654E+0003 - 1.17406861493831E+0003 1.17031177013211E+0003 1.16656929356710E+0003 1.16284111802356E+0003 1.15912717666049E+0003 - 1.15542740301308E+0003 1.15174173099040E+0003 1.14807009487292E+0003 1.14441242931017E+0003 1.14076866931837E+0003 - 1.13713875027805E+0003 1.13352260793177E+0003 1.12992017838175E+0003 1.12633139808762E+0003 1.12275620386407E+0003 - 1.11919453287865E+0003 1.11564632264948E+0003 1.11211151104300E+0003 1.10859003627179E+0003 1.10508183689231E+0003 - 1.10158685180277E+0003 1.09810502024088E+0003 1.09463628178175E+0003 1.09118057633572E+0003 1.08773784414623E+0003 - 1.08430802578768E+0003 1.08089106216336E+0003 1.07748689450337E+0003 1.07409546436248E+0003 1.07071671361816E+0003 - 1.06735058446847E+0003 1.06399701943004E+0003 1.06065596133608E+0003 1.05732735333433E+0003 1.05401113888514E+0003 - 1.05070726175941E+0003 1.04741566603668E+0003 1.04413629610319E+0003 1.04086909664989E+0003 1.03761401267058E+0003 - 1.03437098945994E+0003 1.03113997261170E+0003 1.02792090801670E+0003 1.02471374186105E+0003 1.02151842062426E+0003 - 1.01833489107739E+0003 1.01516310028124E+0003 1.01200299558452E+0003 1.00885452462203E+0003 1.00571763531287E+0003 - 1.00259227585867E+0003 9.99478394741816E+0002 9.96375940723675E+0002 9.93284862842871E+0002 9.90205110413534E+0002 - 9.87136633023588E+0002 9.84079380533033E+0002 9.81033303072250E+0002 9.77998351040310E+0002 9.74974475103302E+0002 - 9.71961626192663E+0002 9.68959755503532E+0002 9.65968814493100E+0002 9.62988754878983E+0002 9.60019528637603E+0002 - 9.57061088002575E+0002 9.54113385463116E+0002 9.51176373762451E+0002 9.48250005896240E+0002 9.45334235111012E+0002 - 9.42429014902611E+0002 9.39534299014649E+0002 9.36650041436974E+0002 9.33776196404147E+0002 9.30912718393928E+0002 - 9.28059562125772E+0002 9.25216682559339E+0002 9.22384034893008E+0002 9.19561574562407E+0002 9.16749257238948E+0002 - 9.13947038828378E+0002 9.11154875469333E+0002 9.08372723531903E+0002 9.05600539616217E+0002 9.02838280551015E+0002 - 9.00085903392260E+0002 8.97343365421728E+0002 8.94610624145636E+0002 8.91887637293257E+0002 8.89174362815554E+0002 - 8.86470758883826E+0002 8.83776783888358E+0002 8.81092396437080E+0002 8.78417555354241E+0002 8.75752219679081E+0002 - 8.73096348664526E+0002 8.70449901775877E+0002 8.67812838689522E+0002 8.65185119291643E+0002 8.62566703676946E+0002 - 8.59957552147385E+0002 8.57357625210906E+0002 8.54766883580194E+0002 8.52185288171427E+0002 8.49612800103045E+0002 - 8.47049380694520E+0002 8.44494991465138E+0002 8.41949594132790E+0002 8.39413150612767E+0002 8.36885623016565E+0002 - 8.34366973650705E+0002 8.31857165015545E+0002 8.29356159804116E+0002 8.26863920900959E+0002 8.24380411380967E+0002 - 8.21905594508241E+0002 8.19439433734945E+0002 8.16981892700182E+0002 8.14532935228862E+0002 8.12092525330588E+0002 - 8.09660627198551E+0002 8.07237205208419E+0002 8.04822223917249E+0002 8.02415648062396E+0002 8.00017442560436E+0002 - 7.97627572506089E+0002 7.95246003171157E+0002 7.92872700003463E+0002 7.90507628625797E+0002 7.88150754834878E+0002 - 7.85802044600308E+0002 7.83461464063547E+0002 7.81128979536887E+0002 7.78804557502432E+0002 7.76488164611094E+0002 - 7.74179767681581E+0002 7.71879333699406E+0002 7.69586829815893E+0002 7.67302223347194E+0002 7.65025481773312E+0002 - 7.62756572737130E+0002 7.60495464043445E+0002 7.58242123658010E+0002 7.55996519706582E+0002 7.53758620473978E+0002 - 7.51528394403134E+0002 7.49305810094173E+0002 7.47090836303474E+0002 7.44883441942757E+0002 7.42683596078164E+0002 - 7.40491267929350E+0002 7.38306426868585E+0002 7.36129042419850E+0002 7.33959084257951E+0002 7.31796522207631E+0002 - 7.29641326242693E+0002 7.27493466485126E+0002 7.25352913204233E+0002 7.23219636815777E+0002 7.21093607881117E+0002 - 7.18974797106359E+0002 7.16863175341515E+0002 7.14758713579658E+0002 7.12661382956087E+0002 7.10571154747506E+0002 - 7.08488000371193E+0002 7.06411891384183E+0002 7.04342799482460E+0002 7.02280696500145E+0002 7.00225554408696E+0002 - 6.98177345316109E+0002 6.96136041466131E+0002 6.94101615237470E+0002 6.92074039143014E+0002 6.90053285829055E+0002 - 6.88039328074518E+0002 6.86032138790197E+0002 6.84031691017989E+0002 6.82037957930144E+0002 6.80050912828508E+0002 - 6.78070529143779E+0002 6.76096780434769E+0002 6.74129640387658E+0002 6.72169082815273E+0002 6.70215081656355E+0002 - 6.68267610974836E+0002 6.66326644959122E+0002 6.64392157921384E+0002 6.62464124296842E+0002 6.60542518643067E+0002 - 6.58627315639279E+0002 6.56718490085655E+0002 6.54816016902634E+0002 6.52919871130235E+0002 6.51030027927374E+0002 - 6.49146462571187E+0002 6.47269150456359E+0002 6.45398067094452E+0002 6.43533188113246E+0002 6.41674489256075E+0002 - 6.39821946381172E+0002 6.37975535461020E+0002 6.36135232581704E+0002 6.34301013942268E+0002 6.32472855854074E+0002 - 6.30650734740173E+0002 6.28834627134666E+0002 6.27024509682087E+0002 6.25220359136772E+0002 6.23422152362246E+0002 - 6.21629866330607E+0002 6.19843478121914E+0002 6.18062964923580E+0002 6.16288304029774E+0002 6.14519472840815E+0002 - 6.12756448862582E+0002 6.10999209705920E+0002 6.09247733086055E+0002 6.07501996822008E+0002 6.05761978836014E+0002 - 6.04027657152948E+0002 6.02299009899753E+0002 6.00576015304866E+0002 5.98858651697660E+0002 5.97146897507874E+0002 - 5.95440731265062E+0002 5.93740131598035E+0002 5.92045077234307E+0002 5.90355546999551E+0002 5.88671519817058E+0002 - 5.86992974707188E+0002 5.85319890786838E+0002 5.83652247268908E+0002 5.81990023461769E+0002 5.80333198768735E+0002 - 5.78681752687544E+0002 5.77035664809829E+0002 5.75394914820611E+0002 5.73759482497776E+0002 5.72129347711569E+0002 - 5.70504490424088E+0002 5.68884890688773E+0002 5.67270528649912E+0002 5.65661384542141E+0002 5.64057438689946E+0002 - 5.62458671507176E+0002 5.60865063496549E+0002 5.59276595249174E+0002 5.57693247444060E+0002 5.56115000847644E+0002 - 5.54541836313307E+0002 5.52973734780911E+0002 5.51410677276316E+0002 5.49852644910923E+0002 5.48299618881203E+0002 - 5.46751580468238E+0002 5.45208511037263E+0002 5.43670392037208E+0002 5.42137205000243E+0002 5.40608931541335E+0002 - 5.39085553357792E+0002 5.37567052228826E+0002 5.36053410015104E+0002 5.34544608658315E+0002 5.33040630180729E+0002 - 5.31541456684766E+0002 5.30047070352566E+0002 5.28557453445556E+0002 5.27072588304029E+0002 5.25592457346720E+0002 - 5.24117043070384E+0002 5.22646328049380E+0002 5.21180294935254E+0002 5.19718926456330E+0002 5.18262205417295E+0002 - 5.16810114698794E+0002 5.15362637257029E+0002 5.13919756123347E+0002 5.12481454403850E+0002 5.11047715278991E+0002 - 5.09618522003182E+0002 5.08193857904399E+0002 5.06773706383796E+0002 5.05358050915311E+0002 5.03946875045288E+0002 - 5.02540162392086E+0002 5.01137896645705E+0002 4.99740061567405E+0002 4.98346640989328E+0002 4.96957618814129E+0002 - 4.95572979014600E+0002 4.94192705633302E+0002 4.92816782782202E+0002 4.91445194642302E+0002 4.90077925463281E+0002 - 4.88714959563135E+0002 4.87356281327816E+0002 4.86001875210879E+0002 4.84651725733126E+0002 4.83305817482257E+0002 - 4.81964135112518E+0002 4.80626663344358E+0002 4.79293386964079E+0002 4.77964290823495E+0002 4.76639359839594E+0002 - 4.75318578994194E+0002 4.74001933333610E+0002 4.72689407968317E+0002 4.71380988072620E+0002 4.70076658884321E+0002 - 4.68776405704390E+0002 4.67480213896642E+0002 4.66188068887407E+0002 4.64899956165212E+0002 4.63615861280456E+0002 - 4.62335769845097E+0002 4.61059667532327E+0002 4.59787540076266E+0002 4.58519373271640E+0002 4.57255152973477E+0002 - 4.55994865096793E+0002 4.54738495616289E+0002 4.53486030566040E+0002 4.52237456039194E+0002 4.50992758187672E+0002 - 4.49751923221863E+0002 4.48514937410330E+0002 4.47281787079512E+0002 4.46052458613429E+0002 4.44826938453387E+0002 - 4.43605213097690E+0002 4.42387269101350E+0002 4.41173093075798E+0002 4.39962671688595E+0002 4.38755991663157E+0002 - 4.37553039778460E+0002 4.36353802868769E+0002 4.35158267823353E+0002 4.33966421586211E+0002 4.32778251155791E+0002 - 4.31593743584721E+0002 4.30412885979534E+0002 4.29235665500395E+0002 4.28062069360836E+0002 4.26892084827484E+0002 - 4.25725699219795E+0002 4.24562899909791E+0002 4.23403674321798E+0002 4.22248009932179E+0002 4.21095894269080E+0002 - 4.19947314912167E+0002 4.18802259492371E+0002 4.17660715691634E+0002 4.16522671242651E+0002 4.15388113928620E+0002 - 4.14257031582992E+0002 4.13129412089218E+0002 4.12005243380503E+0002 4.10884513439562E+0002 4.09767210298368E+0002 - 4.08653322037916E+0002 4.07542836787975E+0002 4.06435742726848E+0002 4.05332028081136E+0002 4.04231681125496E+0002 - 4.03134690182406E+0002 4.02041043621929E+0002 4.00950729861480E+0002 3.99863737365592E+0002 3.98780054645685E+0002 - 3.97699670259838E+0002 3.96622572812559E+0002 3.95548750954557E+0002 3.94478193382517E+0002 3.93410888838875E+0002 - 3.92346826111596E+0002 3.91285994033950E+0002 3.90228381484292E+0002 3.89173977385843E+0002 3.88122770706473E+0002 - 3.87074750458480E+0002 3.86029905698379E+0002 3.84988225526684E+0002 3.83949699087698E+0002 3.82914315569298E+0002 - 3.81882064202726E+0002 3.80852934262380E+0002 3.79826915065603E+0002 3.78803995972479E+0002 3.77784166385625E+0002 - 3.76767415749987E+0002 3.75753733552637E+0002 3.74743109322568E+0002 3.73735532630496E+0002 3.72730993088659E+0002 - 3.71729480350617E+0002 3.70730984111054E+0002 3.69735494105582E+0002 3.68743000110547E+0002 3.67753491942830E+0002 - 3.66766959459659E+0002 3.65783392558413E+0002 3.64802781176433E+0002 3.63825115290830E+0002 3.62850384918296E+0002 - 3.61878580114921E+0002 3.60909690975997E+0002 3.59943707635841E+0002 3.58980620267604E+0002 3.58020419083092E+0002 - 3.57063094332579E+0002 3.56108636304629E+0002 3.55157035325914E+0002 3.54208281761032E+0002 3.53262366012333E+0002 - 3.52319278519737E+0002 3.51379009760561E+0002 3.50441550249341E+0002 3.49506890537658E+0002 3.48575021213964E+0002 - 3.47645932903412E+0002 3.46719616267678E+0002 3.45796062004799E+0002 3.44875260848996E+0002 3.43957203570506E+0002 - 3.43041880975420E+0002 3.42129283905509E+0002 3.41219403238061E+0002 3.40312229885716E+0002 3.39407754796302E+0002 - 3.38505968952670E+0002 3.37606863372534E+0002 3.36710429108308E+0002 3.35816657246945E+0002 3.34925538909779E+0002 - 3.34037065252365E+0002 3.33151227464320E+0002 3.32268016769170E+0002 3.31387424424189E+0002 3.30509441720246E+0002 - 3.29634059981651E+0002 3.28761270566001E+0002 3.27891064864025E+0002 3.27023434299436E+0002 3.26158370328777E+0002 - 3.25295864441271E+0002 3.24435908158674E+0002 3.23578493035122E+0002 3.22723610656988E+0002 3.21871252642733E+0002 - 3.21021410642756E+0002 3.20174076339256E+0002 3.19329241446082E+0002 3.18486897708591E+0002 3.17647036903504E+0002 - 3.16809650838765E+0002 3.15974731353399E+0002 3.15142270317372E+0002 3.14312259631449E+0002 3.13484691227056E+0002 - 3.12659557066143E+0002 3.11836849141044E+0002 3.11016559474342E+0002 3.10198680118731E+0002 3.09383203156882E+0002 - 3.08570120701308E+0002 3.07759424894228E+0002 3.06951107907438E+0002 3.06145161942174E+0002 3.05341579228982E+0002 - 3.04540352027589E+0002 3.03741472626768E+0002 3.02944933344213E+0002 3.02150726526405E+0002 3.01358844548489E+0002 - 3.00569279814142E+0002 2.99782024755449E+0002 2.98997071832775E+0002 2.98214413534639E+0002 2.97434042377591E+0002 - 2.96655950906087E+0002 2.95880131692364E+0002 2.95106577336318E+0002 2.94335280465382E+0002 2.93566233734405E+0002 - 2.92799429825529E+0002 2.92034861448070E+0002 2.91272521338397E+0002 2.90512402259817E+0002 2.89754497002451E+0002 - 2.88998798383117E+0002 2.88245299245219E+0002 2.87493992458622E+0002 2.86744870919540E+0002 2.85997927550423E+0002 - 2.85253155299838E+0002 2.84510547142356E+0002 2.83770096078439E+0002 2.83031795134329E+0002 2.82295637361932E+0002 - 2.81561615838708E+0002 2.80829723667559E+0002 2.80099953976721E+0002 2.79372299919650E+0002 2.78646754674916E+0002 - 2.77923311446092E+0002 2.77201963461647E+0002 2.76482703974835E+0002 2.75765526263595E+0002 2.75050423630435E+0002 - 2.74337389402335E+0002 2.73626416930634E+0002 2.72917499590929E+0002 2.72210630782971E+0002 2.71505803930558E+0002 - 2.70803012481434E+0002 2.70102249907188E+0002 2.69403509703145E+0002 2.68706785388272E+0002 2.68012070505072E+0002 - 2.67319358619485E+0002 2.66628643320788E+0002 2.65939918221493E+0002 2.65253176957252E+0002 2.64568413186753E+0002 - 2.63885620591628E+0002 2.63204792876348E+0002 2.62525923768135E+0002 2.61849007016856E+0002 2.61174036394933E+0002 - 2.60501005697246E+0002 2.59829908741035E+0002 2.59160739365810E+0002 2.58493491433253E+0002 2.57828158827126E+0002 - 2.57164735453177E+0002 2.56503215239048E+0002 2.55843592134182E+0002 2.55185860109731E+0002 2.54530013158466E+0002 - 2.53876045294684E+0002 2.53223950554119E+0002 2.52573722993852E+0002 2.51925356692221E+0002 2.51278845748731E+0002 - 2.50634184283968E+0002 2.49991366439507E+0002 2.49350386377828E+0002 2.48711238282227E+0002 2.48073916356728E+0002 - 2.47438414825999E+0002 2.46804727935264E+0002 2.46172849950217E+0002 2.45542775156941E+0002 2.44914497861818E+0002 - 2.44288012391447E+0002 2.43663313092560E+0002 2.43040394331940E+0002 2.42419250496335E+0002 2.41799875992377E+0002 - 2.41182265246502E+0002 2.40566412704862E+0002 2.39952312833251E+0002 2.39339960117019E+0002 2.38729349060992E+0002 - 2.38120474189394E+0002 2.37513330045764E+0002 2.36907911192882E+0002 2.36304212212683E+0002 2.35702227706184E+0002 - 2.35101952293400E+0002 2.34503380613275E+0002 2.33906507323594E+0002 2.33311327100915E+0002 2.32717834640487E+0002 - 2.32126024656173E+0002 2.31535891880379E+0002 2.30947431063975E+0002 2.30360636976218E+0002 2.29775504404682E+0002 - 2.29192028155180E+0002 2.28610203051690E+0002 2.28030023936283E+0002 2.27451485669049E+0002 2.26874583128021E+0002 - 2.26299311209108E+0002 2.25725664826017E+0002 2.25153638910185E+0002 2.24583228410706E+0002 2.24014428294258E+0002 - 2.23447233545035E+0002 2.22881639164675E+0002 2.22317640172189E+0002 2.21755231603892E+0002 2.21194408513333E+0002 - 2.20635165971227E+0002 2.20077499065384E+0002 2.19521402900642E+0002 2.18966872598797E+0002 2.18413903298539E+0002 - 2.17862490155378E+0002 2.17312628341583E+0002 2.16764313046111E+0002 2.16217539474543E+0002 2.15672302849016E+0002 - 2.15128598408156E+0002 2.14586421407016E+0002 2.14045767117007E+0002 2.13506630825834E+0002 2.12969007837432E+0002 - 2.12432893471901E+0002 2.11898283065443E+0002 2.11365171970295E+0002 2.10833555554668E+0002 2.10303429202686E+0002 - 2.09774788314317E+0002 2.09247628305315E+0002 2.08721944607157E+0002 2.08197732666978E+0002 2.07674987947515E+0002 - 2.07153705927040E+0002 2.06633882099301E+0002 2.06115511973462E+0002 2.05598591074039E+0002 2.05083114940846E+0002 - 2.04569079128927E+0002 2.04056479208503E+0002 2.03545310764910E+0002 2.03035569398537E+0002 2.02527250724772E+0002 - 2.02020350373941E+0002 2.01514863991248E+0002 2.01010787236721E+0002 2.00508115785149E+0002 2.00006845326030E+0002 - 1.99506971563508E+0002 1.99008490216322E+0002 1.98511397017743E+0002 1.98015687715523E+0002 1.97521358071835E+0002 - 1.97028403863219E+0002 1.96536820880525E+0002 1.96046604928859E+0002 1.95557751827526E+0002 1.95070257409977E+0002 - 1.94584117523753E+0002 1.94099328030430E+0002 1.93615884805567E+0002 1.93133783738650E+0002 1.92653020733040E+0002 - 1.92173591705916E+0002 1.91695492588226E+0002 1.91218719324634E+0002 1.90743267873462E+0002 1.90269134206645E+0002 - 1.89796314309672E+0002 1.89324804181537E+0002 1.88854599834690E+0002 1.88385697294979E+0002 1.87918092601605E+0002 - 1.87451781807067E+0002 1.86986760977111E+0002 1.86523026190683E+0002 1.86060573539877E+0002 1.85599399129880E+0002 - 1.85139499078932E+0002 1.84680869518265E+0002 1.84223506592064E+0002 1.83767406457410E+0002 1.83312565284235E+0002 - 1.82858979255271E+0002 1.82406648735785E+0002 1.81955696452256E+0002 1.81506176463385E+0002 1.81058083412041E+0002 - 1.80611411963281E+0002 1.80166156804249E+0002 1.79722312644077E+0002 1.79279874213789E+0002 1.78838836266201E+0002 - 1.78399193575826E+0002 1.77960940938774E+0002 1.77524073172660E+0002 1.77088585116505E+0002 1.76654471630640E+0002 - 1.76221727596613E+0002 1.75790347917096E+0002 1.75360327515785E+0002 1.74931661337314E+0002 1.74504344347154E+0002 - 1.74078371531528E+0002 1.73653737897312E+0002 1.73230438471946E+0002 1.72808468303345E+0002 1.72387822459802E+0002 - 1.71968496029902E+0002 1.71550484122432E+0002 1.71133781866287E+0002 1.70718384410386E+0002 1.70304286923579E+0002 - 1.69891484594560E+0002 1.69479972631779E+0002 1.69069746263354E+0002 1.68660800736984E+0002 1.68253131319863E+0002 - 1.67846733298589E+0002 1.67441601979087E+0002 1.67037732686511E+0002 1.66635120765172E+0002 1.66233761578441E+0002 - 1.65833650508675E+0002 1.65434782957125E+0002 1.65037154343856E+0002 1.64640760107663E+0002 1.64245595705989E+0002 - 1.63851656614840E+0002 1.63458938328707E+0002 1.63067436360481E+0002 1.62677146241370E+0002 1.62288063520824E+0002 - 1.61900183766448E+0002 1.61513502563925E+0002 1.61128015516939E+0002 1.60743718247089E+0002 1.60360606393812E+0002 - 1.59978675614310E+0002 1.59597921583462E+0002 1.59218339993755E+0002 1.58839926555200E+0002 1.58462676995259E+0002 - 1.58086587058763E+0002 1.57711652507842E+0002 1.57337869121844E+0002 1.56965232697260E+0002 1.56593739047649E+0002 - 1.56223384003564E+0002 1.55854163412476E+0002 1.55486073138698E+0002 1.55119109063315E+0002 1.54753267084105E+0002 - 1.54388543115471E+0002 1.54024933088362E+0002 1.53662432950208E+0002 1.53301038664839E+0002 1.52940746212419E+0002 - 1.52581551589373E+0002 1.52223450808313E+0002 1.51866439897971E+0002 1.51510514903124E+0002 1.51155671884529E+0002 - 1.50801906918845E+0002 1.50449216098572E+0002 1.50097595531977E+0002 1.49747041343023E+0002 1.49397549671305E+0002 - 1.49049116671979E+0002 1.48701738515693E+0002 1.48355411388522E+0002 1.48010131491895E+0002 1.47665895042537E+0002 - 1.47322698272392E+0002 1.46980537428563E+0002 1.46639408773245E+0002 1.46299308583655E+0002 1.45960233151972E+0002 - 1.45622178785266E+0002 1.45285141805439E+0002 1.44949118549155E+0002 1.44614105367778E+0002 1.44280098627308E+0002 - 1.43947094708316E+0002 1.43615090005882E+0002 1.43284080929529E+0002 1.42954063903165E+0002 1.42625035365013E+0002 - 1.42296991767557E+0002 1.41969929577474E+0002 1.41643845275573E+0002 1.41318735356735E+0002 1.40994596329852E+0002 - 1.40671424717766E+0002 1.40349217057204E+0002 1.40027969898724E+0002 1.39707679806653E+0002 1.39388343359023E+0002 - 1.39069957147517E+0002 1.38752517777408E+0002 1.38436021867496E+0002 1.38120466050057E+0002 1.37805846970777E+0002 - 1.37492161288698E+0002 1.37179405676160E+0002 1.36867576818741E+0002 1.36556671415202E+0002 1.36246686177430E+0002 - 1.35937617830376E+0002 1.35629463112007E+0002 1.35322218773243E+0002 1.35015881577903E+0002 1.34710448302651E+0002 - 1.34405915736936E+0002 1.34102280682941E+0002 1.33799539955526E+0002 1.33497690382174E+0002 1.33196728802935E+0002 - 1.32896652070374E+0002 1.32597457049514E+0002 1.32299140617786E+0002 1.32001699664970E+0002 1.31705131093150E+0002 - 1.31409431816650E+0002 1.31114598761993E+0002 1.30820628867838E+0002 1.30527519084935E+0002 1.30235266376068E+0002 - 1.29943867716008E+0002 1.29653320091458E+0002 1.29363620500999E+0002 1.29074765955047E+0002 1.28786753475795E+0002 - 1.28499580097164E+0002 1.28213242864756E+0002 1.27927738835796E+0002 1.27643065079093E+0002 1.27359218674981E+0002 - 1.27076196715273E+0002 1.26793996303212E+0002 1.26512614553421E+0002 1.26232048591856E+0002 1.25952295555754E+0002 - 1.25673352593587E+0002 1.25395216865016E+0002 1.25117885540837E+0002 1.24841355802940E+0002 1.24565624844256E+0002 - 1.24290689868712E+0002 1.24016548091186E+0002 1.23743196737455E+0002 1.23470633044156E+0002 1.23198854258729E+0002 - 1.22927857639382E+0002 1.22657640455038E+0002 1.22388199985290E+0002 1.22119533520356E+0002 1.21851638361038E+0002 - 1.21584511818668E+0002 1.21318151215071E+0002 1.21052553882516E+0002 1.20787717163672E+0002 1.20523638411565E+0002 - 1.20260314989534E+0002 1.19997744271185E+0002 1.19735923640349E+0002 1.19474850491036E+0002 1.19214522227396E+0002 - 1.18954936263672E+0002 1.18696090024160E+0002 1.18437980943162E+0002 1.18180606464947E+0002 1.17923964043711E+0002 - 1.17668051143526E+0002 1.17412865238307E+0002 1.17158403811767E+0002 1.16904664357375E+0002 1.16651644378312E+0002 - 1.16399341387436E+0002 1.16147752907236E+0002 1.15896876469794E+0002 1.15646709616739E+0002 1.15397249899216E+0002 - 1.15148494877837E+0002 1.14900442122644E+0002 1.14653089213070E+0002 1.14406433737899E+0002 1.14160473295225E+0002 - 1.13915205492414E+0002 1.13670627946064E+0002 1.13426738281967E+0002 1.13183534135066E+0002 1.12941013149426E+0002 - 1.12699172978183E+0002 1.12458011283516E+0002 1.12217525736602E+0002 1.11977714017584E+0002 1.11738573815527E+0002 - 1.11500102828384E+0002 1.11262298762959E+0002 1.11025159334868E+0002 1.10788682268501E+0002 1.10552865296989E+0002 - 1.10317706162163E+0002 1.10083202614519E+0002 1.09849352413184E+0002 1.09616153325873E+0002 1.09383603128861E+0002 - 1.09151699606942E+0002 1.08920440553394E+0002 1.08689823769944E+0002 1.08459847066732E+0002 1.08230508262277E+0002 - 1.08001805183439E+0002 1.07773735665388E+0002 1.07546297551566E+0002 1.07319488693652E+0002 1.07093306951531E+0002 - 1.06867750193256E+0002 1.06642816295016E+0002 1.06418503141099E+0002 1.06194808623863E+0002 1.05971730643698E+0002 - 1.05749267108994E+0002 1.05527415936107E+0002 1.05306175049326E+0002 1.05085542380840E+0002 1.04865515870707E+0002 - 1.04646093466815E+0002 1.04427273124857E+0002 1.04209052808293E+0002 1.03991430488319E+0002 1.03774404143835E+0002 - 1.03557971761415E+0002 1.03342131335272E+0002 1.03126880867225E+0002 1.02912218366672E+0002 1.02698141850555E+0002 - 1.02484649343330E+0002 1.02271738876935E+0002 1.02059408490757E+0002 1.01847656231607E+0002 1.01636480153682E+0002 - 1.01425878318538E+0002 1.01215848795062E+0002 1.01006389659434E+0002 1.00797498995105E+0002 1.00589174892760E+0002 - 1.00381415450294E+0002 1.00174218772777E+0002 9.99675829724262E+0001 9.97615061685785E+0001 9.95559864876571E+0001 - 9.93510220631457E+0001 9.91466110355561E+0001 9.89427515524019E+0001 9.87394417681678E+0001 9.85366798442811E+0001 - 9.83344639490835E+0001 9.81327922578016E+0001 9.79316629525195E+0001 9.77310742221500E+0001 9.75310242624060E+0001 - 9.73315112757728E+0001 9.71325334714804E+0001 9.69340890654753E+0001 9.67361762803928E+0001 9.65387933455296E+0001 - 9.63419384968165E+0001 9.61456099767901E+0001 9.59498060345674E+0001 9.57545249258166E+0001 9.55597649127318E+0001 - 9.53655242640052E+0001 9.51718012548009E+0001 9.49785941667278E+0001 9.47859012878138E+0001 9.45937209124785E+0001 - 9.44020513415076E+0001 9.42108908820266E+0001 9.40202378474750E+0001 9.38300905575800E+0001 9.36404473383306E+0001 - 9.34513065219527E+0001 9.32626664468825E+0001 9.30745254577419E+0001 9.28868819053126E+0001 9.26997341465118E+0001 - 9.25130805443649E+0001 9.23269194679837E+0001 9.21412492925385E+0001 9.19560683992354E+0001 9.17713751752904E+0001 - 9.15871680139053E+0001 9.14034453142434E+0001 9.12202054814047E+0001 9.10374469264024E+0001 9.08551680661376E+0001 - 9.06733673233766E+0001 9.04920431267261E+0001 9.03111939106096E+0001 9.01308181152438E+0001 8.99509141866148E+0001 - 8.97714805764549E+0001 8.95925157422188E+0001 8.94140181470613E+0001 8.92359862598120E+0001 8.90584185549549E+0001 - 8.88813135126033E+0001 8.87046696184780E+0001 8.85284853638840E+0001 8.83527592456884E+0001 8.81774897662971E+0001 - 8.80026754336329E+0001 8.78283147611128E+0001 8.76544062676257E+0001 8.74809484775107E+0001 8.73079399205341E+0001 - 8.71353791318685E+0001 8.69632646520698E+0001 8.67915950270565E+0001 8.66203688080869E+0001 8.64495845517388E+0001 - 8.62792408198859E+0001 8.61093361796795E+0001 8.59398692035237E+0001 8.57708384690571E+0001 8.56022425591297E+0001 - 8.54340800617828E+0001 8.52663495702281E+0001 8.50990496828260E+0001 8.49321790030659E+0001 8.47657361395447E+0001 - 8.45997197059468E+0001 8.44341283210233E+0001 8.42689606085713E+0001 8.41042151974144E+0001 8.39398907213815E+0001 - 8.37759858192877E+0001 8.36124991349135E+0001 8.34494293169847E+0001 8.32867750191536E+0001 8.31245348999773E+0001 - 8.29627076229004E+0001 8.28012918562337E+0001 8.26402862731348E+0001 8.24796895515895E+0001 8.23195003743915E+0001 - 8.21597174291239E+0001 8.20003394081392E+0001 8.18413650085413E+0001 8.16827929321653E+0001 8.15246218855593E+0001 - 8.13668505799650E+0001 8.12094777312999E+0001 8.10525020601373E+0001 8.08959222916887E+0001 8.07397371557848E+0001 - 8.05839453868572E+0001 8.04285457239199E+0001 8.02735369105513E+0001 8.01189176948754E+0001 7.99646868295446E+0001 - 7.98108430717206E+0001 7.96573851830569E+0001 7.95043119296815E+0001 7.93516220821780E+0001 7.91993144155684E+0001 - 7.90473877092957E+0001 7.88958407472058E+0001 7.87446723175299E+0001 7.85938812128683E+0001 7.84434662301710E+0001 - 7.82934261707221E+0001 7.81437598401221E+0001 7.79944660482702E+0001 7.78455436093486E+0001 7.76969913418034E+0001 - 7.75488080683301E+0001 7.74009926158550E+0001 7.72535438155189E+0001 7.71064605026607E+0001 7.69597415168007E+0001 - 7.68133857016239E+0001 7.66673919049633E+0001 7.65217589787840E+0001 7.63764857791667E+0001 7.62315711662912E+0001 - 7.60870140044205E+0001 7.59428131618842E+0001 7.57989675110632E+0001 7.56554759283733E+0001 7.55123372942485E+0001 - 7.53695504931274E+0001 7.52271144134340E+0001 7.50850279475662E+0001 7.49432899918756E+0001 7.48018994466561E+0001 - 7.46608552161253E+0001 7.45201562084107E+0001 7.43798013355340E+0001 7.42397895133954E+0001 7.41001196617587E+0001 - 7.39607907042361E+0001 7.38218015682733E+0001 7.36831511851335E+0001 7.35448384898836E+0001 7.34068624213788E+0001 - 7.32692219222477E+0001 7.31319159388771E+0001 7.29949434213982E+0001 7.28583033236713E+0001 7.27219946032713E+0001 - 7.25860162214731E+0001 7.24503671432374E+0001 7.23150463371961E+0001 7.21800527756377E+0001 7.20453854344936E+0001 - 7.19110432933230E+0001 7.17770253353001E+0001 7.16433305471981E+0001 7.15099579193772E+0001 7.13769064457689E+0001 - 7.12441751238632E+0001 7.11117629546940E+0001 7.09796689428257E+0001 7.08478920963396E+0001 7.07164314268197E+0001 - 7.05852859493393E+0001 7.04544546824476E+0001 7.03239366481558E+0001 7.01937308719241E+0001 7.00638363826483E+0001 - 6.99342522126456E+0001 6.98049773976425E+0001 6.96760109767605E+0001 6.95473519925040E+0001 6.94189994907460E+0001 - 6.92909525207160E+0001 6.91632101349870E+0001 6.90357713894614E+0001 6.89086353433594E+0001 6.87818010592057E+0001 - 6.86552676028163E+0001 6.85290340432863E+0001 6.84030994529772E+0001 6.82774629075039E+0001 6.81521234857227E+0001 - 6.80270802697179E+0001 6.79023323447902E+0001 6.77778787994443E+0001 6.76537187253754E+0001 6.75298512174583E+0001 - 6.74062753737346E+0001 6.72829902953998E+0001 6.71599950867925E+0001 6.70372888553811E+0001 6.69148707117526E+0001 - 6.67927397695999E+0001 6.66708951457104E+0001 6.65493359599540E+0001 6.64280613352709E+0001 6.63070703976602E+0001 - 6.61863622761679E+0001 6.60659361028757E+0001 6.59457910128884E+0001 6.58259261443236E+0001 6.57063406382984E+0001 - 6.55870336389200E+0001 6.54680042932727E+0001 6.53492517514067E+0001 6.52307751663276E+0001 6.51125736939841E+0001 - 6.49946464932574E+0001 6.48769927259496E+0001 6.47596115567726E+0001 6.46425021533374E+0001 6.45256636861424E+0001 - 6.44090953285628E+0001 6.42927962568397E+0001 6.41767656500684E+0001 6.40610026901885E+0001 6.39455065619728E+0001 - 6.38302764530159E+0001 6.37153115537242E+0001 6.36006110573049E+0001 6.34861741597551E+0001 6.33720000598518E+0001 - 6.32580879591407E+0001 6.31444370619261E+0001 6.30310465752601E+0001 6.29179157089323E+0001 6.28050436754597E+0001 - 6.26924296900759E+0001 6.25800729707207E+0001 6.24679727380309E+0001 6.23561282153284E+0001 6.22445386286114E+0001 - 6.21332032065439E+0001 6.20221211804451E+0001 6.19112917842800E+0001 6.18007142546492E+0001 6.16903878307788E+0001 - 6.15803117545103E+0001 6.14704852702915E+0001 6.13609076251657E+0001 6.12515780687624E+0001 6.11424958532877E+0001 - 6.10336602335141E+0001 6.09250704667711E+0001 6.08167258129358E+0001 6.07086255344227E+0001 6.06007688961749E+0001 - 6.04931551656536E+0001 6.03857836128298E+0001 6.02786535101739E+0001 6.01717641326467E+0001 6.00651147576901E+0001 - 5.99587046652175E+0001 5.98525331376049E+0001 5.97465994596815E+0001 5.96409029187204E+0001 5.95354428044292E+0001 - 5.94302184089415E+0001 5.93252290268073E+0001 5.92204739549844E+0001 5.91159524928285E+0001 5.90116639420855E+0001 - 5.89076076068814E+0001 5.88037827937142E+0001 5.87001888114447E+0001 5.85968249712874E+0001 5.84936905868022E+0001 - 5.83907849738854E+0001 5.82881074507612E+0001 5.81856573379725E+0001 5.80834339583727E+0001 5.79814366371175E+0001 - 5.78796647016547E+0001 5.77781174817179E+0001 5.76767943093160E+0001 5.75756945187262E+0001 5.74748174464848E+0001 - 5.73741624313784E+0001 5.72737288144369E+0001 5.71735159389238E+0001 5.70735231503288E+0001 5.69737497963589E+0001 - 5.68741952269305E+0001 5.67748587941615E+0001 5.66757398523625E+0001 5.65768377580288E+0001 5.64781518698331E+0001 - 5.63796815486161E+0001 5.62814261573802E+0001 5.61833850612790E+0001 5.60855576276125E+0001 5.59879432258164E+0001 - 5.58905412274557E+0001 5.57933510062165E+0001 5.56963719378980E+0001 5.55996034004049E+0001 5.55030447737396E+0001 - 5.54066954399942E+0001 5.53105547833434E+0001 5.52146221900363E+0001 5.51188970483887E+0001 5.50233787487759E+0001 - 5.49280666836250E+0001 5.48329602474071E+0001 5.47380588366303E+0001 5.46433618498314E+0001 5.45488686875691E+0001 - 5.44545787524168E+0001 5.43604914489540E+0001 5.42666061837608E+0001 5.41729223654086E+0001 5.40794394044542E+0001 - 5.39861567134318E+0001 5.38930737068462E+0001 5.38001898011650E+0001 5.37075044148126E+0001 5.36150169681614E+0001 - 5.35227268835259E+0001 5.34306335851553E+0001 5.33387364992260E+0001 5.32470350538353E+0001 5.31555286789940E+0001 - 5.30642168066190E+0001 5.29730988705273E+0001 5.28821743064281E+0001 5.27914425519169E+0001 5.27009030464673E+0001 - 5.26105552314257E+0001 5.25203985500034E+0001 5.24304324472701E+0001 5.23406563701474E+0001 5.22510697674015E+0001 - 5.21616720896371E+0001 5.20724627892906E+0001 5.19834413206232E+0001 5.18946071397142E+0001 5.18059597044550E+0001 - 5.17174984745420E+0001 5.16292229114702E+0001 5.15411324785266E+0001 5.14532266407838E+0001 5.13655048650936E+0001 - 5.12779666200809E+0001 5.11906113761364E+0001 5.11034386054106E+0001 5.10164477818080E+0001 5.09296383809803E+0001 - 5.08430098803198E+0001 5.07565617589536E+0001 5.06702934977374E+0001 5.05842045792487E+0001 5.04982944877810E+0001 - 5.04125627093379E+0001 5.03270087316261E+0001 5.02416320440506E+0001 5.01564321377069E+0001 5.00714085053761E+0001 - 4.99865606415186E+0001 4.99018880422683E+0001 4.98173902054257E+0001 4.97330666304528E+0001 4.96489168184672E+0001 - 4.95649402722355E+0001 4.94811364961674E+0001 4.93975049963105E+0001 4.93140452803444E+0001 4.92307568575738E+0001 - 4.91476392389238E+0001 4.90646919369336E+0001 4.89819144657510E+0001 4.88993063411264E+0001 4.88168670804071E+0001 - 4.87345962025317E+0001 4.86524932280245E+0001 4.85705576789896E+0001 4.84887890791052E+0001 4.84071869536188E+0001 - 4.83257508293404E+0001 4.82444802346380E+0001 4.81633746994311E+0001 4.80824337551861E+0001 4.80016569349102E+0001 - 4.79210437731459E+0001 4.78405938059662E+0001 4.77603065709685E+0001 4.76801816072692E+0001 4.76002184554985E+0001 - 4.75204166577955E+0001 4.74407757578020E+0001 4.73612953006578E+0001 4.72819748329947E+0001 4.72028139029321E+0001 - 4.71238120600713E+0001 4.70449688554902E+0001 4.69662838417381E+0001 4.68877565728304E+0001 4.68093866042441E+0001 - 4.67311734929117E+0001 4.66531167972163E+0001 4.65752160769872E+0001 4.64974708934940E+0001 4.64198808094415E+0001 - 4.63424453889654E+0001 4.62651641976267E+0001 4.61880368024067E+0001 4.61110627717016E+0001 4.60342416753190E+0001 - 4.59575730844711E+0001 4.58810565717712E+0001 4.58046917112277E+0001 4.57284780782398E+0001 4.56524152495930E+0001 - 4.55765028034531E+0001 4.55007403193623E+0001 4.54251273782340E+0001 4.53496635623485E+0001 4.52743484553473E+0001 - 4.51991816422289E+0001 4.51241627093443E+0001 4.50492912443918E+0001 4.49745668364123E+0001 4.48999890757849E+0001 - 4.48255575542223E+0001 4.47512718647657E+0001 4.46771316017806E+0001 4.46031363609517E+0001 4.45292857392789E+0001 - 4.44555793350724E+0001 4.43820167479479E+0001 4.43085975788225E+0001 4.42353214299102E+0001 4.41621879047166E+0001 - 4.40891966080357E+0001 4.40163471459439E+0001 4.39436391257974E+0001 4.38710721562259E+0001 4.37986458471290E+0001 - 4.37263598096724E+0001 4.36542136562825E+0001 4.35822070006425E+0001 4.35103394576878E+0001 4.34386106436025E+0001 - 4.33670201758135E+0001 4.32955676729883E+0001 4.32242527550286E+0001 4.31530750430671E+0001 4.30820341594637E+0001 - 4.30111297278004E+0001 4.29403613728770E+0001 4.28697287207079E+0001 4.27992313985173E+0001 4.27288690347344E+0001 - 4.26586412589904E+0001 4.25885477021139E+0001 4.25185879961267E+0001 4.24487617742392E+0001 4.23790686708475E+0001 - 4.23095083215284E+0001 4.22400803630359E+0001 4.21707844332962E+0001 4.21016201714052E+0001 4.20325872176228E+0001 - 4.19636852133707E+0001 4.18949138012265E+0001 4.18262726249214E+0001 4.17577613293355E+0001 4.16893795604935E+0001 - 4.16211269655616E+0001 4.15530031928431E+0001 4.14850078917749E+0001 4.14171407129228E+0001 4.13494013079787E+0001 - 4.12817893297562E+0001 4.12143044321866E+0001 4.11469462703156E+0001 4.10797145002989E+0001 4.10126087793993E+0001 - 4.09456287659821E+0001 4.08787741195113E+0001 4.08120445005468E+0001 4.07454395707395E+0001 4.06789589928288E+0001 - 4.06126024306379E+0001 4.05463695490703E+0001 4.04802600141066E+0001 4.04142734928009E+0001 4.03484096532761E+0001 - 4.02826681647214E+0001 4.02170486973886E+0001 4.01515509225875E+0001 4.00861745126837E+0001 4.00209191410941E+0001 - 3.99557844822837E+0001 3.98907702117616E+0001 3.98258760060780E+0001 3.97611015428210E+0001 3.96964465006119E+0001 - 3.96319105591032E+0001 3.95674933989737E+0001 3.95031947019256E+0001 3.94390141506821E+0001 3.93749514289821E+0001 - 3.93110062215779E+0001 3.92471782142321E+0001 3.91834670937129E+0001 3.91198725477921E+0001 3.90563942652409E+0001 - 3.89930319358271E+0001 3.89297852503108E+0001 3.88666539004424E+0001 3.88036375789583E+0001 3.87407359795780E+0001 - 3.86779487970007E+0001 3.86152757269016E+0001 3.85527164659297E+0001 3.84902707117036E+0001 3.84279381628087E+0001 - 3.83657185187934E+0001 3.83036114801668E+0001 3.82416167483950E+0001 3.81797340258976E+0001 3.81179630160449E+0001 - 3.80563034231550E+0001 3.79947549524899E+0001 3.79333173102530E+0001 3.78719902035855E+0001 3.78107733405640E+0001 - 3.77496664301963E+0001 3.76886691824192E+0001 3.76277813080951E+0001 3.75670025190090E+0001 3.75063325278656E+0001 - 3.74457710482851E+0001 3.73853177948021E+0001 3.73249724828613E+0001 3.72647348288145E+0001 3.72046045499179E+0001 - 3.71445813643293E+0001 3.70846649911046E+0001 3.70248551501952E+0001 3.69651515624449E+0001 3.69055539495871E+0001 - 3.68460620342415E+0001 3.67866755399117E+0001 3.67273941909818E+0001 3.66682177127137E+0001 3.66091458312444E+0001 - 3.65501782735829E+0001 3.64913147676070E+0001 3.64325550420611E+0001 3.63738988265531E+0001 3.63153458515515E+0001 - 3.62568958483821E+0001 3.61985485492261E+0001 3.61403036871170E+0001 3.60821609959370E+0001 3.60241202104155E+0001 - 3.59661810661254E+0001 3.59083432994805E+0001 3.58506066477331E+0001 3.57929708489709E+0001 3.57354356421144E+0001 - 3.56780007669142E+0001 3.56206659639478E+0001 3.55634309746183E+0001 3.55062955411497E+0001 3.54492594065859E+0001 - 3.53923223147872E+0001 3.53354840104276E+0001 3.52787442389927E+0001 3.52221027467767E+0001 3.51655592808793E+0001 - 3.51091135892040E+0001 3.50527654204552E+0001 3.49965145241349E+0001 3.49403606505408E+0001 3.48843035507639E+0001 - 3.48283429766852E+0001 3.47724786809735E+0001 3.47167104170830E+0001 3.46610379392509E+0001 3.46054610024938E+0001 - 3.45499793626062E+0001 3.44945927761584E+0001 3.44393010004922E+0001 3.43841037937204E+0001 3.43290009147230E+0001 - 3.42739921231448E+0001 3.42190771793940E+0001 3.41642558446384E+0001 3.41095278808036E+0001 3.40548930505706E+0001 - 3.40003511173734E+0001 3.39459018453959E+0001 3.38915449995705E+0001 3.38372803455749E+0001 3.37831076498301E+0001 - 3.37290266794977E+0001 3.36750372024778E+0001 3.36211389874066E+0001 3.35673318036540E+0001 3.35136154213209E+0001 - 3.34599896112373E+0001 3.34064541449599E+0001 3.33530087947697E+0001 3.32996533336692E+0001 3.32463875353811E+0001 - 3.31932111743451E+0001 3.31401240257160E+0001 3.30871258653613E+0001 3.30342164698589E+0001 3.29813956164951E+0001 - 3.29286630832618E+0001 3.28760186488546E+0001 3.28234620926708E+0001 3.27709931948068E+0001 3.27186117360552E+0001 - 3.26663174979044E+0001 3.26141102625345E+0001 3.25619898128164E+0001 3.25099559323085E+0001 3.24580084052555E+0001 - 3.24061470165857E+0001 3.23543715519089E+0001 3.23026817975144E+0001 3.22510775403682E+0001 3.21995585681119E+0001 - 3.21481246690599E+0001 3.20967756321971E+0001 3.20455112471768E+0001 3.19943313043198E+0001 3.19432355946102E+0001 - 3.18922239096947E+0001 3.18412960418806E+0001 3.17904517841329E+0001 3.17396909300724E+0001 3.16890132739743E+0001 - 3.16384186107654E+0001 3.15879067360223E+0001 3.15374774459695E+0001 3.14871305374769E+0001 3.14368658080582E+0001 - 3.13866830558688E+0001 3.13365820797036E+0001 3.12865626789949E+0001 3.12366246538109E+0001 3.11867678048533E+0001 - 3.11369919334550E+0001 3.10872968415787E+0001 3.10376823318150E+0001 3.09881482073797E+0001 3.09386942721121E+0001 - 3.08893203304736E+0001 3.08400261875454E+0001 3.07908116490259E+0001 3.07416765212298E+0001 3.06926206110857E+0001 - 3.06436437261339E+0001 3.05947456745249E+0001 3.05459262650175E+0001 3.04971853069766E+0001 3.04485226103712E+0001 - 3.03999379857733E+0001 3.03514312443550E+0001 3.03030021978871E+0001 3.02546506587374E+0001 3.02063764398687E+0001 - 3.01581793548364E+0001 3.01100592177878E+0001 3.00620158434592E+0001 3.00140490471741E+0001 2.99661586448426E+0001 - 2.99183444529577E+0001 2.98706062885953E+0001 2.98229439694108E+0001 2.97753573136387E+0001 2.97278461400896E+0001 - 2.96804102681492E+0001 2.96330495177763E+0001 2.95857637095006E+0001 2.95385526644218E+0001 2.94914162042070E+0001 - 2.94443541510893E+0001 2.93973663278658E+0001 2.93504525578965E+0001 2.93036126651018E+0001 2.92568464739609E+0001 - 2.92101538095106E+0001 2.91635344973429E+0001 2.91169883636037E+0001 2.90705152349909E+0001 2.90241149387527E+0001 - 2.89777873026863E+0001 2.89315321551351E+0001 2.88853493249886E+0001 2.88392386416792E+0001 2.87931999351816E+0001 - 2.87472330360104E+0001 2.87013377752189E+0001 2.86555139843975E+0001 2.86097614956714E+0001 2.85640801416995E+0001 - 2.85184697556727E+0001 2.84729301713123E+0001 2.84274612228679E+0001 2.83820627451163E+0001 2.83367345733598E+0001 - 2.82914765434245E+0001 2.82462884916583E+0001 2.82011702549299E+0001 2.81561216706270E+0001 2.81111425766547E+0001 - 2.80662328114337E+0001 2.80213922138990E+0001 2.79766206234978E+0001 2.79319178801892E+0001 2.78872838244408E+0001 - 2.78427182972288E+0001 2.77982211400354E+0001 2.77537921948476E+0001 2.77094313041557E+0001 2.76651383109516E+0001 - 2.76209130587276E+0001 2.75767553914743E+0001 2.75326651536795E+0001 2.74886421903270E+0001 2.74446863468938E+0001 - 2.74007974693504E+0001 2.73569754041573E+0001 2.73132199982656E+0001 2.72695310991139E+0001 2.72259085546272E+0001 - 2.71823522132160E+0001 2.71388619237740E+0001 2.70954375356771E+0001 2.70520788987822E+0001 2.70087858634249E+0001 - 2.69655582804186E+0001 2.69223960010533E+0001 2.68792988770934E+0001 2.68362667607766E+0001 2.67932995048132E+0001 - 2.67503969623830E+0001 2.67075589871356E+0001 2.66647854331879E+0001 2.66220761551231E+0001 2.65794310079892E+0001 - 2.65368498472972E+0001 2.64943325290206E+0001 2.64518789095931E+0001 2.64094888459077E+0001 2.63671621953150E+0001 - 2.63248988156222E+0001 2.62826985650912E+0001 2.62405613024379E+0001 2.61984868868298E+0001 2.61564751778860E+0001 - 2.61145260356746E+0001 2.60726393207117E+0001 2.60308148939607E+0001 2.59890526168300E+0001 2.59473523511722E+0001 - 2.59057139592825E+0001 2.58641373038976E+0001 2.58226222481942E+0001 2.57811686557878E+0001 2.57397763907311E+0001 - 2.56984453175130E+0001 2.56571753010570E+0001 2.56159662067203E+0001 2.55748179002918E+0001 2.55337302479915E+0001 - 2.54927031164690E+0001 2.54517363728018E+0001 2.54108298844944E+0001 2.53699835194772E+0001 2.53291971461046E+0001 - 2.52884706331544E+0001 2.52478038498256E+0001 2.52071966657384E+0001 2.51666489509319E+0001 2.51261605758632E+0001 - 2.50857314114061E+0001 2.50453613288500E+0001 2.50050501998983E+0001 2.49647978966678E+0001 2.49246042916863E+0001 - 2.48844692578927E+0001 2.48443926686351E+0001 2.48043743976690E+0001 2.47644143191576E+0001 2.47245123076689E+0001 - 2.46846682381756E+0001 2.46448819860536E+0001 2.46051534270804E+0001 2.45654824374346E+0001 2.45258688936938E+0001 - 2.44863126728342E+0001 2.44468136522293E+0001 2.44073717096481E+0001 2.43679867232545E+0001 2.43286585716060E+0001 - 2.42893871336523E+0001 2.42501722887345E+0001 2.42110139165834E+0001 2.41719118973188E+0001 2.41328661114480E+0001 - 2.40938764398652E+0001 2.40549427638495E+0001 2.40160649650644E+0001 2.39772429255562E+0001 2.39384765277535E+0001 - 2.38997656544651E+0001 2.38611101888798E+0001 2.38225100145648E+0001 2.37839650154644E+0001 2.37454750758993E+0001 - 2.37070400805651E+0001 2.36686599145313E+0001 2.36303344632407E+0001 2.35920636125071E+0001 2.35538472485152E+0001 - 2.35156852578194E+0001 2.34775775273420E+0001 2.34395239443730E+0001 2.34015243965682E+0001 2.33635787719488E+0001 - 2.33256869588996E+0001 2.32878488461686E+0001 2.32500643228655E+0001 2.32123332784606E+0001 2.31746556027840E+0001 - 2.31370311860243E+0001 2.30994599187274E+0001 2.30619416917962E+0001 2.30244763964880E+0001 2.29870639244152E+0001 - 2.29497041675430E+0001 2.29123970181891E+0001 2.28751423690219E+0001 2.28379401130601E+0001 2.28007901436715E+0001 - 2.27636923545717E+0001 2.27266466398233E+0001 2.26896528938346E+0001 2.26527110113592E+0001 2.26158208874940E+0001 - 2.25789824176792E+0001 2.25421954976963E+0001 2.25054600236679E+0001 2.24687758920562E+0001 2.24321429996620E+0001 - 2.23955612436239E+0001 2.23590305214174E+0001 2.23225507308534E+0001 2.22861217700775E+0001 2.22497435375690E+0001 - 2.22134159321400E+0001 2.21771388529342E+0001 2.21409121994259E+0001 2.21047358714194E+0001 2.20686097690473E+0001 - 2.20325337927701E+0001 2.19965078433754E+0001 2.19605318219760E+0001 2.19246056300098E+0001 2.18887291692385E+0001 - 2.18529023417467E+0001 2.18171250499409E+0001 2.17813971965484E+0001 2.17457186846164E+0001 2.17100894175115E+0001 - 2.16745092989180E+0001 2.16389782328376E+0001 2.16034961235877E+0001 2.15680628758013E+0001 2.15326783944255E+0001 - 2.14973425847208E+0001 2.14620553522600E+0001 2.14268166029275E+0001 2.13916262429180E+0001 2.13564841787361E+0001 - 2.13213903171946E+0001 2.12863445654144E+0001 2.12513468308233E+0001 2.12163970211545E+0001 2.11814950444467E+0001 - 2.11466408090422E+0001 2.11118342235871E+0001 2.10770751970288E+0001 2.10423636386170E+0001 2.10076994579011E+0001 - 2.09730825647305E+0001 2.09385128692531E+0001 2.09039902819143E+0001 2.08695147134565E+0001 2.08350860749184E+0001 - 2.08007042776333E+0001 2.07663692332286E+0001 2.07320808536255E+0001 2.06978390510371E+0001 2.06636437379683E+0001 - 2.06294948272147E+0001 2.05953922318616E+0001 2.05613358652831E+0001 2.05273256411415E+0001 2.04933614733863E+0001 - 2.04594432762532E+0001 2.04255709642632E+0001 2.03917444522224E+0001 2.03579636552201E+0001 2.03242284886288E+0001 - 2.02905388681029E+0001 2.02568947095780E+0001 2.02232959292701E+0001 2.01897424436746E+0001 2.01562341695656E+0001 - 2.01227710239949E+0001 2.00893529242915E+0001 2.00559797880604E+0001 2.00226515331817E+0001 1.99893680778104E+0001 - 1.99561293403748E+0001 1.99229352395761E+0001 1.98897856943874E+0001 1.98566806240533E+0001 1.98236199480884E+0001 - 1.97906035862770E+0001 1.97576314586720E+0001 1.97247034855944E+0001 1.96918195876321E+0001 1.96589796856393E+0001 - 1.96261837007358E+0001 1.95934315543060E+0001 1.95607231679981E+0001 1.95280584637235E+0001 1.94954373636558E+0001 - 1.94628597902303E+0001 1.94303256661424E+0001 1.93978349143481E+0001 1.93653874580620E+0001 1.93329832207572E+0001 - 1.93006221261647E+0001 1.92683040982714E+0001 1.92360290613207E+0001 1.92037969398115E+0001 1.91716076584965E+0001 - 1.91394611423823E+0001 1.91073573167283E+0001 1.90752961070464E+0001 1.90432774390990E+0001 1.90113012388999E+0001 - 1.89793674327122E+0001 1.89474759470483E+0001 1.89156267086684E+0001 1.88838196445810E+0001 1.88520546820407E+0001 - 1.88203317485484E+0001 1.87886507718502E+0001 1.87570116799365E+0001 1.87254144010418E+0001 1.86938588636436E+0001 - 1.86623449964611E+0001 1.86308727284556E+0001 1.85994419888291E+0001 1.85680527070235E+0001 1.85367048127201E+0001 - 1.85053982358384E+0001 1.84741329065363E+0001 1.84429087552086E+0001 1.84117257124862E+0001 1.83805837092360E+0001 - 1.83494826765596E+0001 1.83184225457929E+0001 1.82874032485052E+0001 1.82564247164986E+0001 1.82254868818074E+0001 - 1.81945896766968E+0001 1.81637330336629E+0001 1.81329168854317E+0001 1.81021411649583E+0001 1.80714058054264E+0001 - 1.80407107402471E+0001 1.80100559030590E+0001 1.79794412277269E+0001 1.79488666483409E+0001 1.79183320992165E+0001 - 1.78878375148934E+0001 1.78573828301348E+0001 1.78269679799264E+0001 1.77965928994767E+0001 1.77662575242151E+0001 - 1.77359617897922E+0001 1.77057056320784E+0001 1.76754889871637E+0001 1.76453117913567E+0001 1.76151739811841E+0001 - 1.75850754933900E+0001 1.75550162649349E+0001 1.75249962329958E+0001 1.74950153349646E+0001 1.74650735084480E+0001 - 1.74351706912665E+0001 1.74053068214544E+0001 1.73754818372580E+0001 1.73456956771358E+0001 1.73159482797579E+0001 - 1.72862395840046E+0001 1.72565695289664E+0001 1.72269380539431E+0001 1.71973450984429E+0001 1.71677906021825E+0001 - 1.71382745050852E+0001 1.71087967472816E+0001 1.70793572691081E+0001 1.70499560111065E+0001 1.70205929140232E+0001 - 1.69912679188087E+0001 1.69619809666170E+0001 1.69327319988050E+0001 1.69035209569313E+0001 1.68743477827563E+0001 - 1.68452124182413E+0001 1.68161148055476E+0001 1.67870548870361E+0001 1.67580326052668E+0001 1.67290479029978E+0001 - 1.67001007231849E+0001 1.66711910089810E+0001 1.66423187037352E+0001 1.66134837509928E+0001 1.65846860944935E+0001 - 1.65559256781723E+0001 1.65272024461574E+0001 1.64985163427710E+0001 1.64698673125271E+0001 1.64412553001324E+0001 - 1.64126802504846E+0001 1.63841421086723E+0001 1.63556408199743E+0001 1.63271763298589E+0001 1.62987485839833E+0001 - 1.62703575281931E+0001 1.62420031085215E+0001 1.62136852711890E+0001 1.61854039626023E+0001 1.61571591293542E+0001 - 1.61289507182228E+0001 1.61007786761706E+0001 1.60726429503445E+0001 1.60445434880747E+0001 1.60164802368742E+0001 - 1.59884531444384E+0001 1.59604621586445E+0001 1.59325072275505E+0001 1.59045882993950E+0001 1.58767053225966E+0001 - 1.58488582457528E+0001 1.58210470176406E+0001 1.57932715872141E+0001 1.57655319036058E+0001 1.57378279161246E+0001 - 1.57101595742562E+0001 1.56825268276615E+0001 1.56549296261772E+0001 1.56273679198143E+0001 1.55998416587576E+0001 - 1.55723507933660E+0001 1.55448952741706E+0001 1.55174750518754E+0001 1.54900900773554E+0001 1.54627403016576E+0001 - 1.54354256759989E+0001 1.54081461517666E+0001 1.53809016805171E+0001 1.53536922139760E+0001 1.53265177040371E+0001 - 1.52993781027618E+0001 1.52722733623788E+0001 1.52452034352834E+0001 1.52181682740368E+0001 1.51911678313661E+0001 - 1.51642020601627E+0001 1.51372709134829E+0001 1.51103743445465E+0001 1.50835123067367E+0001 1.50566847535992E+0001 - 1.50298916388422E+0001 1.50031329163352E+0001 1.49764085401088E+0001 1.49497184643541E+0001 1.49230626434221E+0001 - 1.48964410318233E+0001 1.48698535842269E+0001 1.48433002554606E+0001 1.48167810005095E+0001 1.47902957745163E+0001 - 1.47638445327802E+0001 1.47374272307564E+0001 1.47110438240560E+0001 1.46846942684448E+0001 1.46583785198433E+0001 - 1.46320965343258E+0001 1.46058482681207E+0001 1.45796336776082E+0001 1.45534527193218E+0001 1.45273053499463E+0001 - 1.45011915263182E+0001 1.44751112054244E+0001 1.44490643444024E+0001 1.44230509005392E+0001 1.43970708312711E+0001 - 1.43711240941829E+0001 1.43452106470078E+0001 1.43193304476264E+0001 1.42934834540667E+0001 1.42676696245029E+0001 - 1.42418889172555E+0001 1.42161412907906E+0001 1.41904267037191E+0001 1.41647451147966E+0001 1.41390964829225E+0001 - 1.41134807671400E+0001 1.40878979266349E+0001 1.40623479207357E+0001 1.40368307089128E+0001 1.40113462507779E+0001 - 1.39858945060839E+0001 1.39604754347237E+0001 1.39350889967305E+0001 1.39097351522768E+0001 1.38844138616738E+0001 - 1.38591250853715E+0001 1.38338687839571E+0001 1.38086449181561E+0001 1.37834534488301E+0001 1.37582943369774E+0001 - 1.37331675437325E+0001 1.37080730303647E+0001 1.36830107582785E+0001 1.36579806890128E+0001 1.36329827842405E+0001 - 1.36080170057677E+0001 1.35830833155334E+0001 1.35581816756093E+0001 1.35333120481990E+0001 1.35084743956371E+0001 - 1.34836686803898E+0001 1.34588948650531E+0001 1.34341529123537E+0001 1.34094427851471E+0001 1.33847644464184E+0001 - 1.33601178592809E+0001 1.33355029869761E+0001 1.33109197928727E+0001 1.32863682404670E+0001 1.32618482933817E+0001 - 1.32373599153654E+0001 1.32129030702927E+0001 1.31884777221632E+0001 1.31640838351012E+0001 1.31397213733551E+0001 - 1.31153903012973E+0001 1.30910905834233E+0001 1.30668221843514E+0001 1.30425850688223E+0001 1.30183792016985E+0001 - 1.29942045479639E+0001 1.29700610727233E+0001 1.29459487412020E+0001 1.29218675187452E+0001 1.28978173708178E+0001 - 1.28737982630035E+0001 1.28498101610048E+0001 1.28258530306421E+0001 1.28019268378538E+0001 1.27780315486951E+0001 - 1.27541671293383E+0001 1.27303335460718E+0001 1.27065307652999E+0001 1.26827587535421E+0001 1.26590174774330E+0001 - 1.26353069037215E+0001 1.26116269992708E+0001 1.25879777310573E+0001 1.25643590661706E+0001 1.25407709718130E+0001 - 1.25172134152989E+0001 1.24936863640546E+0001 1.24701897856175E+0001 1.24467236476359E+0001 1.24232879178686E+0001 - 1.23998825641842E+0001 1.23765075545608E+0001 1.23531628570858E+0001 1.23298484399548E+0001 1.23065642714720E+0001 - 1.22833103200489E+0001 1.22600865542046E+0001 1.22368929425650E+0001 1.22137294538623E+0001 1.21905960569346E+0001 - 1.21674927207258E+0001 1.21444194142845E+0001 1.21213761067643E+0001 1.20983627674228E+0001 1.20753793656217E+0001 - 1.20524258708254E+0001 1.20295022526019E+0001 1.20066084806214E+0001 1.19837445246560E+0001 1.19609103545796E+0001 - 1.19381059403673E+0001 1.19153312520949E+0001 1.18925862599385E+0001 1.18698709341743E+0001 1.18471852451775E+0001 - 1.18245291634230E+0001 1.18019026594839E+0001 1.17793057040316E+0001 1.17567382678351E+0001 1.17342003217613E+0001 - 1.17116918367735E+0001 1.16892127839317E+0001 1.16667631343919E+0001 1.16443428594061E+0001 1.16219519303211E+0001 - 1.15995903185789E+0001 1.15772579957157E+0001 1.15549549333620E+0001 1.15326811032416E+0001 1.15104364771714E+0001 - 1.14882210270616E+0001 1.14660347249141E+0001 1.14438775428232E+0001 1.14217494529744E+0001 1.13996504276448E+0001 - 1.13775804392017E+0001 1.13555394601030E+0001 1.13335274628963E+0001 1.13115444202189E+0001 1.12895903047971E+0001 - 1.12676650894457E+0001 1.12457687470682E+0001 1.12239012506554E+0001 1.12020625732862E+0001 1.11802526881260E+0001 - 1.11584715684270E+0001 1.11367191875281E+0001 1.11149955188536E+0001 1.10933005359131E+0001 1.10716342123019E+0001 - 1.10499965216995E+0001 1.10283874378698E+0001 1.10068069346605E+0001 1.09852549860030E+0001 1.09637315659114E+0001 - 1.09422366484830E+0001 1.09207702078968E+0001 1.08993322184143E+0001 1.08779226543781E+0001 1.08565414902122E+0001 - 1.08351887004211E+0001 1.08138642595897E+0001 1.07925681423831E+0001 1.07713003235456E+0001 1.07500607779010E+0001 - 1.07288494803517E+0001 1.07076664058785E+0001 1.06865115295405E+0001 1.06653848264741E+0001 1.06442862718932E+0001 - 1.06232158410884E+0001 1.06021735094271E+0001 1.05811592523524E+0001 1.05601730453834E+0001 1.05392148641146E+0001 - 1.05182846842153E+0001 1.04973824814296E+0001 1.04765082315757E+0001 1.04556619105456E+0001 1.04348434943048E+0001 - 1.04140529588922E+0001 1.03932902804190E+0001 1.03725554350690E+0001 1.03518483990979E+0001 1.03311691488330E+0001 - 1.03105176606729E+0001 1.02898939110871E+0001 1.02692978766154E+0001 1.02487295338679E+0001 1.02281888595246E+0001 - 1.02076758303345E+0001 1.01871904231161E+0001 1.01667326147561E+0001 1.01463023822099E+0001 1.01258997025005E+0001 - 1.01055245527188E+0001 1.00851769100227E+0001 1.00648567516369E+0001 1.00445640548528E+0001 1.00242987970277E+0001 - 1.00040609555849E+0001 9.98385050801300E+0000 9.96366743186539E+0000 9.94351170476059E+0000 9.92338330438122E+0000 - 9.90328220847388E+0000 9.88320839484890E+0000 9.86316184137975E+0000 9.84314252600298E+0000 9.82315042671741E+0000 - 9.80318552158442E+0000 9.78324778872700E+0000 9.76333720632982E+0000 9.74345375263857E+0000 9.72359740595973E+0000 - 9.70376814466048E+0000 9.68396594716783E+0000 9.66419079196859E+0000 9.64444265760921E+0000 9.62472152269501E+0000 - 9.60502736589005E+0000 9.58536016591684E+0000 9.56571990155589E+0000 9.54610655164549E+0000 9.52652009508108E+0000 - 9.50696051081538E+0000 9.48742777785745E+0000 9.46792187527310E+0000 9.44844278218373E+0000 9.42899047776664E+0000 - 9.40956494125435E+0000 9.39016615193445E+0000 9.37079408914902E+0000 9.35144873229450E+0000 9.33213006082148E+0000 - 9.31283805423392E+0000 9.29357269208916E+0000 9.27433395399765E+0000 9.25512181962234E+0000 9.23593626867852E+0000 - 9.21677728093347E+0000 9.19764483620608E+0000 9.17853891436666E+0000 9.15945949533638E+0000 9.14040655908709E+0000 - 9.12138008564108E+0000 9.10238005507055E+0000 9.08340644749737E+0000 9.06445924309290E+0000 9.04553842207734E+0000 - 9.02664396471972E+0000 9.00777585133745E+0000 8.98893406229597E+0000 8.97011857800853E+0000 8.95132937893569E+0000 - 8.93256644558525E+0000 8.91382975851163E+0000 8.89511929831586E+0000 8.87643504564506E+0000 8.85777698119222E+0000 - 8.83914508569569E+0000 8.82053933993924E+0000 8.80195972475133E+0000 8.78340622100515E+0000 8.76487880961801E+0000 - 8.74637747155134E+0000 8.72790218780992E+0000 8.70945293944217E+0000 8.69102970753925E+0000 8.67263247323518E+0000 - 8.65426121770632E+0000 8.63591592217113E+0000 8.61759656788986E+0000 8.59930313616408E+0000 8.58103560833675E+0000 - 8.56279396579147E+0000 8.54457818995262E+0000 8.52638826228453E+0000 8.50822416429183E+0000 8.49008587751844E+0000 - 8.47197338354781E+0000 8.45388666400246E+0000 8.43582570054354E+0000 8.41779047487062E+0000 8.39978096872150E+0000 - 8.38179716387179E+0000 8.36383904213462E+0000 8.34590658536035E+0000 8.32799977543635E+0000 8.31011859428657E+0000 - 8.29226302387134E+0000 8.27443304618707E+0000 8.25662864326593E+0000 8.23884979717560E+0000 8.22109649001878E+0000 - 8.20336870393335E+0000 8.18566642109153E+0000 8.16798962370001E+0000 8.15033829399939E+0000 8.13271241426414E+0000 - 8.11511196680206E+0000 8.09753693395411E+0000 8.07998729809424E+0000 8.06246304162882E+0000 8.04496414699677E+0000 - 8.02749059666875E+0000 8.01004237314728E+0000 7.99261945896638E+0000 7.97522183669120E+0000 7.95784948891771E+0000 - 7.94050239827268E+0000 7.92318054741295E+0000 7.90588391902567E+0000 7.88861249582752E+0000 7.87136626056488E+0000 - 7.85414519601323E+0000 7.83694928497700E+0000 7.81977851028933E+0000 7.80263285481168E+0000 7.78551230143379E+0000 - 7.76841683307305E+0000 7.75134643267442E+0000 7.73430108321037E+0000 7.71728076768022E+0000 7.70028546911008E+0000 - 7.68331517055253E+0000 7.66636985508644E+0000 7.64946599442103E+0000 7.63265374636426E+0000 7.61593605068358E+0000 - 7.59931232808492E+0000 7.58278200190773E+0000 7.56634449805117E+0000 7.54999924499869E+0000 7.53374567382376E+0000 - 7.51758321816622E+0000 7.50151131422750E+0000 7.48552940074480E+0000 7.46963691901562E+0000 7.45383331287815E+0000 - 7.43811802869173E+0000 7.42249051535709E+0000 7.40695022427572E+0000 7.39149660935954E+0000 7.37612912702385E+0000 - 7.36084723618647E+0000 7.34565039824801E+0000 7.33053807709310E+0000 7.31550973906630E+0000 7.30056485298808E+0000 - 7.28570289014334E+0000 7.27092332425939E+0000 7.25622563151338E+0000 7.24160929051447E+0000 7.22707378229219E+0000 - 7.21261859032500E+0000 7.19824320048856E+0000 7.18394710106936E+0000 7.16972978275310E+0000 7.15559073862354E+0000 - 7.14152946414442E+0000 7.12754545718155E+0000 7.11363821794027E+0000 7.09980724901500E+0000 7.08605205534567E+0000 - 7.07237214423125E+0000 7.05876702531578E+0000 7.04523621057859E+0000 7.03177921432020E+0000 7.01839555316525E+0000 - 7.00508474607595E+0000 6.99184631429766E+0000 6.97867978139989E+0000 6.96558467322182E+0000 6.95256051789840E+0000 - 6.93960684585887E+0000 6.92672318979767E+0000 6.91390908468138E+0000 6.90116406771956E+0000 6.88848767838225E+0000 - 6.87587945839634E+0000 6.86333895172050E+0000 6.85086570454566E+0000 6.83845926528276E+0000 6.82611918455675E+0000 - 6.81384501522198E+0000 6.80163631232210E+0000 6.78949263310966E+0000 6.77741353701232E+0000 6.76539858564604E+0000 - 6.75344734281326E+0000 6.74155937447546E+0000 6.72973424876626E+0000 6.71797153596823E+0000 6.70627080850667E+0000 - 6.69463164096699E+0000 6.68305361005215E+0000 6.67153629461922E+0000 6.66007927561319E+0000 6.64868213611854E+0000 - 6.63734446131438E+0000 6.62606583849384E+0000 6.61484585704492E+0000 6.60368410842912E+0000 6.59258018619860E+0000 - 6.58153368597913E+0000 6.57054420546364E+0000 6.55961134442081E+0000 6.54873470464997E+0000 6.53791389000470E+0000 - 6.52714850638414E+0000 6.51643816172433E+0000 6.50578246598958E+0000 6.49518103116152E+0000 6.48463347123258E+0000 - 6.47413940220363E+0000 6.46369844208600E+0000 6.45331021088193E+0000 6.44297433056924E+0000 6.43269042512916E+0000 - 6.42245812048785E+0000 6.41227704457222E+0000 6.40214682725574E+0000 6.39206710035814E+0000 6.38203749766880E+0000 - 6.37205765489250E+0000 6.36212720968788E+0000 6.35224580164766E+0000 6.34241307227017E+0000 6.33262866498270E+0000 - 6.32289222510214E+0000 6.31320339987351E+0000 6.30356183843268E+0000 6.29396719179076E+0000 6.28441911285743E+0000 - 6.27491725640574E+0000 6.26546127909108E+0000 6.25605083943334E+0000 6.24668559780978E+0000 6.23736521644147E+0000 - 6.22808935938618E+0000 6.21885769256809E+0000 6.20966988372946E+0000 6.20052560243214E+0000 6.19142452006989E+0000 - 6.18236630982751E+0000 6.17335064672035E+0000 6.16437720756426E+0000 6.15544567095849E+0000 6.14655571728604E+0000 - 6.13770702871615E+0000 6.12889928920243E+0000 6.12013218446569E+0000 6.11140540198225E+0000 6.10271863098528E+0000 - 6.09407156245626E+0000 6.08546388913616E+0000 6.07689530548197E+0000 6.06836550771164E+0000 6.05987419373875E+0000 - 6.05142106320430E+0000 6.04300581747688E+0000 6.03462815961452E+0000 6.02628779439214E+0000 6.01798442827099E+0000 - 6.00971776938672E+0000 6.00148752758771E+0000 5.99329341437162E+0000 5.98513514292594E+0000 5.97701242809515E+0000 - 5.96892498637301E+0000 5.96087253591240E+0000 5.95285479651874E+0000 5.94487148963672E+0000 5.93692233832946E+0000 - 5.92900706729918E+0000 5.92112540286959E+0000 5.91327707298248E+0000 5.90546180718986E+0000 5.89767933664179E+0000 - 5.88992939408503E+0000 5.88221171385962E+0000 5.87452603190527E+0000 5.86687208572375E+0000 5.85924961440065E+0000 - 5.85165835858205E+0000 5.84409806048195E+0000 5.83656846387099E+0000 5.82906931407618E+0000 5.82160035795192E+0000 - 5.81416134391055E+0000 5.80675202187684E+0000 5.79937214331847E+0000 5.79202146123138E+0000 5.78469973010073E+0000 - 5.77740670594579E+0000 5.77014214626982E+0000 5.76290581008839E+0000 5.75569745791235E+0000 5.74851685172086E+0000 - 5.74136375499301E+0000 5.73423793266085E+0000 5.72713915114871E+0000 5.72006717833847E+0000 5.71302178355788E+0000 - 5.70600273759888E+0000 5.69900981268493E+0000 5.69204278250144E+0000 5.68510142215644E+0000 5.67818550819106E+0000 - 5.67129481856225E+0000 5.66442913264774E+0000 5.65758823124316E+0000 5.65077189655032E+0000 5.64397991217430E+0000 - 5.63721206310279E+0000 5.63046813571981E+0000 5.62374791779837E+0000 5.61705119849531E+0000 5.61037776832940E+0000 - 5.60372741918839E+0000 5.59709994431715E+0000 5.59049513833799E+0000 5.58391279720204E+0000 5.57735271822295E+0000 - 5.57081470004491E+0000 5.56429854263955E+0000 5.55780404732517E+0000 5.55133101673245E+0000 5.54487925481919E+0000 - 5.53844856684489E+0000 5.53203875937762E+0000 5.52564964029876E+0000 5.51928101877410E+0000 5.51293270527750E+0000 - 5.50660451154639E+0000 5.50029625060647E+0000 5.49400773677075E+0000 5.48773878560389E+0000 5.48148921395703E+0000 - 5.47525883992085E+0000 5.46904748284134E+0000 5.46285496331877E+0000 5.45668110320105E+0000 5.45052572557479E+0000 - 5.44438865474856E+0000 5.43826971625627E+0000 5.43216873686502E+0000 5.42608554455718E+0000 5.42001996853375E+0000 - 5.41397183918179E+0000 5.40794098810694E+0000 5.40192724809629E+0000 5.39593045314645E+0000 5.38995043843539E+0000 - 5.38398704030885E+0000 5.37804009629485E+0000 5.37210944509350E+0000 5.36619492657236E+0000 5.36029638176069E+0000 - 5.35441365283019E+0000 5.34854658312185E+0000 5.34269501709962E+0000 5.33685880037951E+0000 5.33103777972493E+0000 - 5.32523180300248E+0000 5.31944071922239E+0000 5.31366437849989E+0000 5.30790263208096E+0000 5.30215533231726E+0000 - 5.29642233265344E+0000 5.29070348765173E+0000 5.28499865294645E+0000 5.27930768528443E+0000 5.27363044248739E+0000 - 5.26796678346067E+0000 5.26231656817598E+0000 5.25667965767664E+0000 5.25105591407731E+0000 5.24544520055794E+0000 - 5.23984738134644E+0000 5.23426232171600E+0000 5.22868988798810E+0000 5.22312994753101E+0000 5.21758236875143E+0000 - 5.21204702108157E+0000 5.20652377498100E+0000 5.20101250192032E+0000 5.19551307440226E+0000 5.19002536594307E+0000 - 5.18454925105840E+0000 5.17908460526736E+0000 5.17363130507835E+0000 5.16818922801133E+0000 5.16275825256207E+0000 - 5.15733825821975E+0000 5.15192912544143E+0000 5.14653073565720E+0000 5.14114297128211E+0000 5.13576571568031E+0000 - 5.13039885319296E+0000 5.12504226909889E+0000 5.11969584963219E+0000 5.11435948198739E+0000 5.10903305427765E+0000 - 5.10371645558448E+0000 5.09840957589420E+0000 5.09311230612588E+0000 5.08782453813638E+0000 5.08254616468428E+0000 - 5.07727707946116E+0000 5.07201717705435E+0000 5.06676635295654E+0000 5.06152450356614E+0000 5.05629152617749E+0000 - 5.05106731898807E+0000 5.04585178106119E+0000 5.04064481235265E+0000 5.03544631369512E+0000 5.03025618680656E+0000 - 5.02507433426649E+0000 5.01990065951634E+0000 5.01473506686095E+0000 5.00957746145858E+0000 5.00442774932929E+0000 - 4.99928583734262E+0000 4.99415163318917E+0000 4.98902504542574E+0000 4.98390598342044E+0000 4.97879435739090E+0000 - 4.97369007837584E+0000 4.96859305822723E+0000 4.96350320962787E+0000 4.95842044605817E+0000 4.95334468181721E+0000 - 4.94827583201830E+0000 4.94321381255583E+0000 4.93815854013196E+0000 4.93310993223262E+0000 4.92806790714273E+0000 - 4.92303238393250E+0000 4.91800328243458E+0000 4.91298052327303E+0000 4.90796402783005E+0000 4.90295371826689E+0000 - 4.89794951750553E+0000 4.89295134922417E+0000 4.88795913785740E+0000 4.88297280857662E+0000 4.87799228731908E+0000 - 4.87301750075906E+0000 4.86804837631146E+0000 4.86308484211334E+0000 4.85812682703670E+0000 4.85317426068748E+0000 - 4.84822707338930E+0000 4.84328519618594E+0000 4.83834856083315E+0000 4.83341709978489E+0000 4.82849074622108E+0000 - 4.82356943402105E+0000 4.81865309775069E+0000 4.81374167267994E+0000 4.80883509475485E+0000 4.80393330062900E+0000 - 4.79903622762276E+0000 4.79414381374769E+0000 4.78925599767978E+0000 4.78437271875939E+0000 4.77949391700978E+0000 - 4.77461953311153E+0000 4.76974950840591E+0000 4.76488378488432E+0000 4.76002230518826E+0000 4.75516501261849E+0000 - 4.75031185110471E+0000 4.74546276523805E+0000 4.74061770022314E+0000 4.73577660190135E+0000 4.73093941675649E+0000 - 4.72610609188549E+0000 4.72127657502045E+0000 4.71645081449111E+0000 4.71162875925156E+0000 4.70681035886725E+0000 - 4.70199556350541E+0000 4.69718432395602E+0000 4.69237659157420E+0000 4.68757231833274E+0000 4.68277145678792E+0000 - 4.67797396009809E+0000 4.67317978199176E+0000 4.66838887678739E+0000 4.66360119936845E+0000 4.65881670520201E+0000 - 4.65403535032559E+0000 4.64925709134925E+0000 4.64448188542716E+0000 4.63970969029259E+0000 4.63494046422002E+0000 - 4.63017416604957E+0000 4.62541075516438E+0000 4.62065019148914E+0000 4.61589243549922E+0000 4.61113744819681E+0000 - 4.60638519112948E+0000 4.60163562638041E+0000 4.59688871654455E+0000 4.59214442475773E+0000 4.58740271465979E+0000 - 4.58266355042724E+0000 4.57792689674700E+0000 4.57319271880542E+0000 4.56846098230794E+0000 4.56373165345636E+0000 - 4.55900469896024E+0000 4.55428008602823E+0000 4.54955778236067E+0000 4.54483775614322E+0000 4.54011997604767E+0000 - 4.53540441124690E+0000 4.53069103138137E+0000 4.52597980657880E+0000 4.52127070742653E+0000 4.51656370499123E+0000 - 4.51185877080894E+0000 4.50715587689062E+0000 4.50245499568848E+0000 4.49775610012518E+0000 4.49305916357321E+0000 - 4.48836415986506E+0000 4.48367106327145E+0000 4.47897984852339E+0000 4.47429049078079E+0000 4.46960296564270E+0000 - 4.46491724915629E+0000 4.46023331778667E+0000 4.45555114844844E+0000 4.45087071846716E+0000 4.44619200558597E+0000 - 4.44151498799357E+0000 4.43683964427138E+0000 4.43216595343820E+0000 4.42749389490328E+0000 4.42282344849074E+0000 - 4.41815459444020E+0000 4.41348731337766E+0000 4.40882158634827E+0000 4.40415739477528E+0000 4.39949472047727E+0000 - 4.39483354567241E+0000 4.39017385296112E+0000 4.38551562533743E+0000 4.38085884615856E+0000 4.37620349917294E+0000 - 4.37154956850287E+0000 4.36689703864156E+0000 4.36224589446083E+0000 4.35759612118420E+0000 4.35294770440901E+0000 - 4.34830063008896E+0000 4.34365488454191E+0000 4.33901045444443E+0000 4.33436732681200E+0000 4.32972548901985E+0000 - 4.32508492878800E+0000 4.32044563417696E+0000 4.31580759360621E+0000 4.31117079580683E+0000 4.30653522986751E+0000 - 4.30190088519074E+0000 4.29726775153045E+0000 4.29263581895896E+0000 4.28800507786987E+0000 4.28337551898091E+0000 - 4.27874713332607E+0000 4.27411991226806E+0000 4.26949384747718E+0000 4.26486893092697E+0000 4.26024515491031E+0000 - 4.25562251201584E+0000 4.25100099515004E+0000 4.24638059750887E+0000 4.24176131259501E+0000 4.23714313419905E+0000 - 4.23252605639515E+0000 4.22791007357275E+0000 4.22329518039607E+0000 4.21868137181176E+0000 4.21406864305172E+0000 - 4.20945698962027E+0000 4.20484640731504E+0000 4.20023689219849E+0000 4.19562844061393E+0000 4.19102104915821E+0000 - 4.18641471470502E+0000 4.18180943439686E+0000 4.17720520563817E+0000 4.17260202608966E+0000 4.16799989366871E+0000 - 4.16339880654370E+0000 4.15879876314766E+0000 4.15419976215446E+0000 4.14960180249857E+0000 4.14500488333906E+0000 - 4.14040900408660E+0000 4.13581416440261E+0000 4.13122036417177E+0000 4.12662760353503E+0000 4.12203588283910E+0000 - 4.11744520267675E+0000 4.11285556387625E+0000 4.10826696747866E+0000 4.10367941476240E+0000 4.09909290721567E+0000 - 4.09450744654649E+0000 4.08992303469147E+0000 4.08533967379312E+0000 4.08075736621223E+0000 4.07617611451362E+0000 - 4.07159592147133E+0000 4.06701679006520E+0000 4.06243872348365E+0000 4.05786172512153E+0000 4.05328579855726E+0000 - 4.04871094757139E+0000 4.04413717614442E+0000 4.03956448844613E+0000 4.03499288884684E+0000 4.03042238188836E+0000 - 4.02585297230626E+0000 4.02128466501914E+0000 4.01671746513008E+0000 4.01215137792815E+0000 4.00758640886302E+0000 - 4.00302256357448E+0000 3.99845984786586E+0000 3.99389826772134E+0000 3.98933782929400E+0000 3.98477853889500E+0000 - 3.98022040300856E+0000 3.97566342827130E+0000 3.97110762149704E+0000 3.96655298965612E+0000 3.96199953985855E+0000 - 3.95744727939215E+0000 3.95289621567989E+0000 3.94834635630586E+0000 3.94379770900440E+0000 3.93925028165055E+0000 - 3.93470408227000E+0000 3.93015911902339E+0000 3.92561540022243E+0000 3.92107293431659E+0000 3.91653172989085E+0000 - 3.91199179566465E+0000 3.90745314048713E+0000 3.90291577334718E+0000 3.89837970336376E+0000 3.89384493978364E+0000 - 3.88931149197045E+0000 3.88477936941844E+0000 3.88024858174522E+0000 3.87571913869564E+0000 3.87119105012223E+0000 - 3.86666432599770E+0000 3.86213897640641E+0000 3.85761501155817E+0000 3.85309244176733E+0000 3.84857127745550E+0000 - 3.84405152915528E+0000 3.83953320749940E+0000 3.83501632323929E+0000 3.83050088721439E+0000 3.82598691038069E+0000 - 3.82147440378121E+0000 3.81696337855228E+0000 3.81245384594225E+0000 3.80794581728312E+0000 3.80343930400803E+0000 - 3.79893431762908E+0000 3.79443086975105E+0000 3.78992897207650E+0000 3.78542863638353E+0000 3.78092987453960E+0000 - 3.77643269849163E+0000 3.77193712026990E+0000 3.76744315197942E+0000 3.76295080581120E+0000 3.75846009403244E+0000 - 3.75397102897669E+0000 3.74948362305263E+0000 3.74499788874290E+0000 3.74051383860419E+0000 3.73603148526239E+0000 - 3.73155084140023E+0000 3.72707191976851E+0000 3.72259473318622E+0000 3.71811929453686E+0000 3.71364561676481E+0000 - 3.70917371286418E+0000 3.70470359589380E+0000 3.70023527896862E+0000 3.69576877525848E+0000 3.69130409799318E+0000 - 3.68684126044010E+0000 3.68238027593046E+0000 3.67792115783316E+0000 3.67346391957604E+0000 3.66900857463099E+0000 - 3.66455513650773E+0000 3.66010361876885E+0000 3.65565403500615E+0000 3.65120639886686E+0000 3.64676072403499E+0000 - 3.64231702422140E+0000 3.63787531318623E+0000 3.63343560471530E+0000 3.62899791263633E+0000 3.62456225081023E+0000 - 3.62012863312240E+0000 3.61569707349149E+0000 3.61126758586067E+0000 3.60684018421143E+0000 3.60241488254356E+0000 - 3.59799169488646E+0000 3.59357063528662E+0000 3.58915171781140E+0000 3.58473495655654E+0000 3.58032036564496E+0000 - 3.57590795920045E+0000 3.57149775137770E+0000 3.56708975632979E+0000 3.56268398824952E+0000 3.55828046133058E+0000 - 3.55387918977880E+0000 3.54948018781470E+0000 3.54508346965587E+0000 3.54068904955466E+0000 3.53629694174796E+0000 - 3.53190716049862E+0000 3.52751972005776E+0000 3.52313463468486E+0000 3.51875191865403E+0000 3.51437158622763E+0000 - 3.50999365168137E+0000 3.50561812928544E+0000 3.50124503330198E+0000 3.49687437800015E+0000 3.49250617764607E+0000 - 3.48814044650024E+0000 3.48377719881503E+0000 3.47941644883465E+0000 3.47505821080141E+0000 3.47070249894814E+0000 - 3.46634932749818E+0000 3.46199871066280E+0000 3.45765066264117E+0000 3.45330519761657E+0000 3.44896232976895E+0000 - 3.44462207325977E+0000 3.44028444223193E+0000 3.43594945080724E+0000 3.43161711309772E+0000 3.42728744319929E+0000 - 3.42296045518537E+0000 3.41863616310809E+0000 3.41431458098942E+0000 3.40999572284643E+0000 3.40567960266212E+0000 - 3.40136623440312E+0000 3.39705563200061E+0000 3.39274780936804E+0000 3.38844278038710E+0000 3.38414055891660E+0000 - 3.37984115878984E+0000 3.37554459379807E+0000 3.37125087771708E+0000 3.36696002427671E+0000 3.36267204718740E+0000 - 3.35838696012751E+0000 3.35410477673175E+0000 3.34982551060770E+0000 3.34554917532299E+0000 3.34127578441289E+0000 - 3.33700535137773E+0000 3.33273788967641E+0000 3.32847341273277E+0000 3.32421193392145E+0000 3.31995346659336E+0000 - 3.31569802405009E+0000 3.31144561955278E+0000 3.30719626631822E+0000 3.30294997751879E+0000 3.29870676629512E+0000 - 3.29446664572797E+0000 3.29022962886623E+0000 3.28599572870260E+0000 3.28176495818499E+0000 3.27753733022155E+0000 - 3.27331285766785E+0000 3.26909155333443E+0000 3.26487342997270E+0000 3.26065850028889E+0000 3.25644677694528E+0000 - 3.25223827254857E+0000 3.24803299965242E+0000 3.24383097076113E+0000 3.23963219831426E+0000 3.23543669471594E+0000 - 3.23124447230156E+0000 3.22705554336322E+0000 3.22286992012667E+0000 3.21868761476139E+0000 3.21450863939337E+0000 - 3.21033300607555E+0000 3.20616072681589E+0000 3.20199181355489E+0000 3.19782627817314E+0000 3.19366413249899E+0000 - 3.18950538829623E+0000 3.18535005727169E+0000 3.18119815106685E+0000 3.17704968125512E+0000 3.17290465936361E+0000 - 3.16876309684287E+0000 3.16462500508924E+0000 3.16049039543064E+0000 3.15635927912775E+0000 3.15223166737777E+0000 - 3.14810757132013E+0000 3.14398700202286E+0000 3.13986997048702E+0000 3.13575648764465E+0000 3.13164656436445E+0000 - 3.12754021144595E+0000 3.12343743962835E+0000 3.11933825956793E+0000 3.11524268186305E+0000 3.11115071703277E+0000 - 3.10706237553676E+0000 3.10297766776555E+0000 3.09889660402678E+0000 3.09481919456781E+0000 3.09074544955615E+0000 - 3.08667537909362E+0000 3.08260899321428E+0000 3.07854630186820E+0000 3.07448731493943E+0000 3.07043204223425E+0000 - 3.06638049349015E+0000 3.06233267837375E+0000 3.05828860646650E+0000 3.05424828728330E+0000 3.05021173025882E+0000 - 3.04617894475775E+0000 3.04214994006887E+0000 3.03812472540041E+0000 3.03410330988640E+0000 3.03008570258140E+0000 - 3.02607191246816E+0000 3.02206194845492E+0000 3.01805581936561E+0000 3.01405353394743E+0000 3.01005510086564E+0000 - 3.00606052871706E+0000 3.00206982601762E+0000 2.99808300120092E+0000 2.99410006262013E+0000 2.99012101854717E+0000 - 2.98614587718434E+0000 2.98217464664989E+0000 2.97820733497988E+0000 2.97424395013064E+0000 2.97028449997346E+0000 - 2.96632899230883E+0000 2.96237743484937E+0000 2.95842983523339E+0000 2.95448620100920E+0000 2.95054653964272E+0000 - 2.94661085853312E+0000 2.94267916498002E+0000 2.93875146621606E+0000 2.93482776938065E+0000 2.93090808153093E+0000 - 2.92699240965218E+0000 2.92308076063478E+0000 2.91917314130092E+0000 2.91526955837310E+0000 2.91137001849824E+0000 - 2.90747452824489E+0000 2.90358309408945E+0000 2.89969572243761E+0000 2.89581241959611E+0000 2.89193319179619E+0000 - 2.88805804518299E+0000 2.88418698582397E+0000 2.88032001969899E+0000 2.87645715270147E+0000 2.87259839063696E+0000 - 2.86874373923750E+0000 2.86489320414510E+0000 2.86104679092142E+0000 2.85720450503593E+0000 2.85336635187818E+0000 - 2.84953233675382E+0000 2.84570246488444E+0000 2.84187674140818E+0000 2.83805517137756E+0000 2.83423775975222E+0000 - 2.83042451141911E+0000 2.82661543117537E+0000 2.82281052373737E+0000 2.81900979373074E+0000 2.81521324570015E+0000 - 2.81142088410061E+0000 2.80763271330923E+0000 2.80384873762118E+0000 2.80006896123308E+0000 2.79629338827256E+0000 - 2.79252202276714E+0000 2.78875486867317E+0000 2.78499192986056E+0000 2.78123321010471E+0000 2.77747871310754E+0000 - 2.77372844248022E+0000 2.76998240174968E+0000 2.76624059436839E+0000 2.76250302368847E+0000 2.75876969299071E+0000 - 2.75504060546194E+0000 2.75131576421280E+0000 2.74759517226902E+0000 2.74387883257067E+0000 2.74016674797072E+0000 - 2.73645892124156E+0000 2.73275535507089E+0000 2.72905605206696E+0000 2.72536101475314E+0000 2.72167024556451E+0000 - 2.71798374685370E+0000 2.71430152089546E+0000 2.71062356987988E+0000 2.70694989591434E+0000 2.70328050102002E+0000 - 2.69961538713383E+0000 2.69595455611958E+0000 2.69229800974928E+0000 2.68864574972365E+0000 2.68499777764741E+0000 - 2.68135409505112E+0000 2.67771470338508E+0000 2.67407960401529E+0000 2.67044879822726E+0000 2.66682228722665E+0000 - 2.66320007212983E+0000 2.65958215398503E+0000 2.65596853374902E+0000 2.65235921230760E+0000 2.64875419046022E+0000 - 2.64515346892049E+0000 2.64155704833614E+0000 2.63796492926221E+0000 2.63437711218699E+0000 2.63079359750656E+0000 - 2.62721438554340E+0000 2.62363947654023E+0000 2.62006887066265E+0000 2.61650256800168E+0000 2.61294056856165E+0000 - 2.60938287227282E+0000 2.60582947898523E+0000 2.60228038847598E+0000 2.59873560044583E+0000 2.59519511451235E+0000 - 2.59165893021523E+0000 2.58812704702421E+0000 2.58459946433027E+0000 2.58107618145158E+0000 2.57755719762337E+0000 - 2.57404251200721E+0000 2.57053212369022E+0000 2.56702603168907E+0000 2.56352423494247E+0000 2.56002673231040E+0000 - 2.55653352258681E+0000 2.55304460448071E+0000 2.54955997663893E+0000 2.54607963763192E+0000 2.54260358595097E+0000 - 2.53913182002224E+0000 2.53566433819191E+0000 2.53220113874086E+0000 2.52874221987854E+0000 2.52528757973616E+0000 - 2.52183721637941E+0000 2.51839112779756E+0000 2.51494931191557E+0000 2.51151176658518E+0000 2.50807848959296E+0000 - 2.50464947864541E+0000 2.50122473138567E+0000 2.49780424538947E+0000 2.49438801816434E+0000 2.49097604714750E+0000 - 2.48756832970716E+0000 2.48416486314039E+0000 2.48076564468858E+0000 2.47737067151645E+0000 2.47397994073086E+0000 - 2.47059344935912E+0000 2.46721119437124E+0000 2.46383317267237E+0000 2.46045938110280E+0000 2.45708981643578E+0000 - 2.45372447537954E+0000 2.45036335457583E+0000 2.44700645061340E+0000 2.44365376000489E+0000 2.44030527921117E+0000 - 2.43696100462297E+0000 2.43362093256689E+0000 2.43028505931824E+0000 2.42695338107993E+0000 2.42362589400615E+0000 - 2.42030259417720E+0000 2.41698347761776E+0000 2.41366854029680E+0000 2.41035777812142E+0000 2.40705118694086E+0000 - 2.40374876254370E+0000 2.40045050065784E+0000 2.39715639695991E+0000 2.39386644706367E+0000 2.39058064653285E+0000 - 2.38729899086820E+0000 2.38402147551149E+0000 2.38074809585702E+0000 2.37747884723930E+0000 2.37421372494323E+0000 - 2.37095272419108E+0000 2.36769584015403E+0000 2.36444306795209E+0000 2.36119440265067E+0000 2.35794983926457E+0000 - 2.35470937275389E+0000 2.35147299802393E+0000 2.34824070993197E+0000 2.34501250328723E+0000 2.34178837284672E+0000 - 2.33856831331243E+0000 2.33535231934362E+0000 2.33214038554376E+0000 2.32893250647140E+0000 2.32572867664015E+0000 - 2.32252889051042E+0000 2.31933314249551E+0000 2.31614142696228E+0000 2.31295373823243E+0000 2.30977007058658E+0000 - 2.30659041824782E+0000 2.30341477540629E+0000 2.30024313619446E+0000 2.29707549471178E+0000 2.29391184501505E+0000 - 2.29075218110738E+0000 2.28759649696080E+0000 2.28444478649083E+0000 2.28129704358456E+0000 2.27815326208487E+0000 - 2.27501343579032E+0000 2.27187755845930E+0000 2.26874562380995E+0000 2.26561762552289E+0000 2.26249355724186E+0000 - 2.25937341257161E+0000 2.25625718507379E+0000 2.25314486827238E+0000 2.25003645566256E+0000 2.24693194069700E+0000 - 2.24383131679541E+0000 2.24073457733831E+0000 2.23764171566911E+0000 2.23455272510434E+0000 2.23146759892334E+0000 - 2.22838633037235E+0000 2.22530891265898E+0000 2.22223533896111E+0000 2.21916560243172E+0000 2.21609969618231E+0000 - 2.21303761330147E+0000 2.20997934683972E+0000 2.20692488981842E+0000 2.20387423523667E+0000 2.20082737605540E+0000 - 2.19778430521666E+0000 2.19474501562364E+0000 2.19170950015644E+0000 2.18867775167212E+0000 2.18564976299568E+0000 - 2.18262552693246E+0000 2.17960503625226E+0000 2.17658828370656E+0000 2.17357526201957E+0000 2.17056596389715E+0000 - 2.16756038201646E+0000 2.16455850903283E+0000 2.16156033757493E+0000 2.15856586025444E+0000 2.15557506966185E+0000 - 2.15258795836860E+0000 2.14960451891867E+0000 2.14662474383695E+0000 2.14364862563473E+0000 2.14067615679931E+0000 - 2.13770732980579E+0000 2.13474213710456E+0000 2.13178057112754E+0000 2.12882262429581E+0000 2.12586828900919E+0000 - 2.12291755766151E+0000 2.11997042261629E+0000 2.11702687623316E+0000 2.11408691084835E+0000 2.11115051879351E+0000 - 2.10821769238592E+0000 2.10528842392436E+0000 2.10236270569885E+0000 2.09944052998502E+0000 2.09652188905113E+0000 - 2.09360677515598E+0000 2.09069518054052E+0000 2.08778709744460E+0000 2.08488251808954E+0000 2.08198143469764E+0000 - 2.07908383948105E+0000 2.07618972463549E+0000 2.07329908236327E+0000 2.07041190484537E+0000 2.06752818426939E+0000 - 2.06464791281281E+0000 2.06177108264716E+0000 2.05889768593802E+0000 2.05602771484717E+0000 2.05316116153813E+0000 - 2.05029801816576E+0000 2.04743827688736E+0000 2.04458192985301E+0000 2.04172896921105E+0000 2.03887938711170E+0000 - 2.03603317571048E+0000 2.03319032715362E+0000 2.03035083359059E+0000 2.02751468717136E+0000 2.02468188005062E+0000 - 2.02185240438285E+0000 2.01902625232871E+0000 2.01620341604448E+0000 2.01338388769613E+0000 2.01056765945165E+0000 - 2.00775472348380E+0000 2.00494507197512E+0000 2.00213869710528E+0000 1.99933559106233E+0000 1.99653574604905E+0000 - 1.99373915426331E+0000 1.99094580792409E+0000 1.98815569924688E+0000 1.98536882045710E+0000 1.98258516379571E+0000 - 1.97980472150941E+0000 1.97702748585771E+0000 1.97425344910660E+0000 1.97148260353563E+0000 1.96871494143231E+0000 - 1.96595045510407E+0000 1.96318913686778E+0000 1.96043097905046E+0000 1.95767597399140E+0000 1.95492411404997E+0000 - 1.95217539159578E+0000 1.94942979901929E+0000 1.94668732871842E+0000 1.94394797310988E+0000 1.94121172462923E+0000 - 1.93847857572804E+0000 1.93574851887820E+0000 1.93302154656419E+0000 1.93029765128942E+0000 1.92757682557705E+0000 - 1.92485906197561E+0000 1.92214435304775E+0000 1.91943269137456E+0000 1.91672406956331E+0000 1.91401848023624E+0000 - 1.91131591604543E+0000 1.90861636966079E+0000 1.90591983377226E+0000 1.90322630109903E+0000 1.90053576437541E+0000 - 1.89784821637004E+0000 1.89516364987241E+0000 1.89248205769154E+0000 1.88980343266876E+0000 1.88712776766639E+0000 - 1.88445505557702E+0000 1.88178528932004E+0000 1.87911846184021E+0000 1.87645456611128E+0000 1.87379359512896E+0000 - 1.87113554192866E+0000 1.86848039956856E+0000 1.86582816113813E+0000 1.86317881975394E+0000 1.86053236856325E+0000 - 1.85788880074692E+0000 1.85524810951873E+0000 1.85261028812045E+0000 1.84997532982619E+0000 1.84734322794099E+0000 - 1.84471397580870E+0000 1.84208756680140E+0000 1.83946399433079E+0000 1.83684325183547E+0000 1.83422533279092E+0000 - 1.83161023071030E+0000 1.82899793914164E+0000 1.82638845167003E+0000 1.82378176191343E+0000 1.82117786352551E+0000 - 1.81857675020505E+0000 1.81597841567955E+0000 1.81338285372312E+0000 1.81079005814086E+0000 1.80820002277463E+0000 - 1.80561274151662E+0000 1.80302820828736E+0000 1.80044641705784E+0000 1.79786736183103E+0000 1.79529103664910E+0000 - 1.79271743560487E+0000 1.79014655282335E+0000 1.78757838248246E+0000 1.78501291878883E+0000 1.78245015599931E+0000 - 1.77989008841314E+0000 1.77733271037349E+0000 1.77477801626747E+0000 1.77222600052478E+0000 1.76967665761923E+0000 - 1.76712998206806E+0000 1.76458596843988E+0000 1.76204461134545E+0000 1.75950590544132E+0000 1.75696984542555E+0000 - 1.75443642605003E+0000 1.75190564211262E+0000 1.74937748845722E+0000 1.74685195997169E+0000 1.74432905160011E+0000 - 1.74180875832348E+0000 1.73929107518059E+0000 1.73677599726166E+0000 1.73426351969613E+0000 1.73175363767006E+0000 - 1.72924634641535E+0000 1.72674164121701E+0000 1.72423951741470E+0000 1.72173997038983E+0000 1.71924299558074E+0000 - 1.71674858847412E+0000 1.71425674461375E+0000 1.71176745959119E+0000 1.70928072905162E+0000 1.70679654869391E+0000 - 1.70431491426420E+0000 1.70183582157183E+0000 1.69935926647285E+0000 1.69688524488088E+0000 1.69441375275926E+0000 - 1.69194478612692E+0000 1.68947834105913E+0000 1.68701441368976E+0000 1.68455300020126E+0000 1.68209409683555E+0000 - 1.67963769988397E+0000 1.67718380570328E+0000 1.67473241070342E+0000 1.67228351134762E+0000 1.66983710415893E+0000 - 1.66739318571239E+0000 1.66495175264809E+0000 1.66251280165898E+0000 1.66007632949670E+0000 1.65764233297241E+0000 - 1.65521080894814E+0000 1.65278175435431E+0000 1.65035516617233E+0000 1.64793104145217E+0000 1.64550937729061E+0000 - 1.64309017084731E+0000 1.64067341934923E+0000 1.63825912007472E+0000 1.63584727036600E+0000 1.63343786762409E+0000 - 1.63103090930455E+0000 1.62862639293573E+0000 1.62622431609631E+0000 1.62382467643212E+0000 1.62142747164527E+0000 - 1.61903269949789E+0000 1.61664035782168E+0000 1.61425044450193E+0000 1.61186295749005E+0000 1.60947789479628E+0000 - 1.60709525449420E+0000 1.60471503471716E+0000 1.60233723366632E+0000 1.59996184960206E+0000 1.59758888084621E+0000 - 1.59521832578357E+0000 1.59285018286274E+0000 1.59048445059474E+0000 1.58812112755601E+0000 1.58576021238410E+0000 - 1.58340170377628E+0000 1.58104560049989E+0000 1.57869190138138E+0000 1.57634060531453E+0000 1.57399171125312E+0000 - 1.57164521821693E+0000 1.56930112528523E+0000 1.56695943160922E+0000 1.56462013640052E+0000 1.56228323893262E+0000 - 1.55994873854687E+0000 1.55761663464154E+0000 1.55528692669060E+0000 1.55295961422620E+0000 1.55063469684316E+0000 - 1.54831217420749E+0000 1.54599204603957E+0000 1.54367431213332E+0000 1.54135897234784E+0000 1.53904602659981E+0000 - 1.53673547487600E+0000 1.53442731722493E+0000 1.53212155376062E+0000 1.52981818466818E+0000 1.52751721018957E+0000 - 1.52521863063358E+0000 1.52292244637262E+0000 1.52062865784829E+0000 1.51833726556598E+0000 1.51604827009454E+0000 - 1.51376167206748E+0000 1.51147747218087E+0000 1.50919567119961E+0000 1.50691626995425E+0000 1.50463926933885E+0000 - 1.50236467030846E+0000 1.50009247388436E+0000 1.49782268115637E+0000 1.49555529327663E+0000 1.49329031146267E+0000 - 1.49102773699337E+0000 1.48876757121279E+0000 1.48650981553500E+0000 1.48425447142867E+0000 1.48200154043819E+0000 - 1.47975102416345E+0000 1.47750292426838E+0000 1.47525724248659E+0000 1.47301398061110E+0000 1.47077314050254E+0000 - 1.46853472408147E+0000 1.46629873332992E+0000 1.46406517030108E+0000 1.46183403710426E+0000 1.45960533591929E+0000 - 1.45737906898155E+0000 1.45515523859193E+0000 1.45293384711399E+0000 1.45071489697663E+0000 1.44849839067082E+0000 - 1.44628433074634E+0000 1.44407271981629E+0000 1.44186356055719E+0000 1.43965685570716E+0000 1.43745260806862E+0000 - 1.43525082049982E+0000 1.43305149592307E+0000 1.43085463732148E+0000 1.42866024774125E+0000 1.42646833028876E+0000 - 1.42427888812883E+0000 1.42209192448658E+0000 1.41990744264718E+0000 1.41772544595962E+0000 1.41554593783193E+0000 - 1.41336892172460E+0000 1.41119440116620E+0000 1.40902237973530E+0000 1.40685286107758E+0000 1.40468584889702E+0000 - 1.40252134694664E+0000 1.40035935904754E+0000 1.39819988907187E+0000 1.39604294095106E+0000 1.39388851867960E+0000 - 1.39173662629878E+0000 1.38958726791307E+0000 1.38744044767943E+0000 1.38529616981366E+0000 1.38315443858977E+0000 - 1.38101525832960E+0000 1.37887863341624E+0000 1.37674456828335E+0000 1.37461306742192E+0000 1.37248413537770E+0000 - 1.37035777674863E+0000 1.36823399618498E+0000 1.36611279838930E+0000 1.36399418811957E+0000 1.36187817018693E+0000 - 1.35976474945320E+0000 1.35765393083013E+0000 1.35554571927911E+0000 1.35344011981720E+0000 1.35133713751086E+0000 - 1.34923677747706E+0000 1.34713904487707E+0000 1.34504394492576E+0000 1.34295148288650E+0000 1.34086166407119E+0000 - 1.33877449384215E+0000 1.33668997760288E+0000 1.33460812080777E+0000 1.33252892895883E+0000 1.33045240760163E+0000 - 1.32837856233353E+0000 1.32630739878956E+0000 1.32423892264993E+0000 1.32217313964719E+0000 1.32011005554980E+0000 - 1.31804967617645E+0000 1.31599200738177E+0000 1.31393705506511E+0000 1.31188482517238E+0000 1.30983532368375E+0000 - 1.30778855662869E+0000 1.30574453006839E+0000 1.30370325010928E+0000 1.30166472289447E+0000 1.29962895460866E+0000 - 1.29759595147595E+0000 1.29556571975381E+0000 1.29353826573730E+0000 1.29151359576023E+0000 1.28949171619368E+0000 - 1.28747263344342E+0000 1.28545635394766E+0000 1.28344288418125E+0000 1.28143223065083E+0000 1.27942439989973E+0000 - 1.27741939850312E+0000 1.27541723306541E+0000 1.27341791022216E+0000 1.27142143664236E+0000 1.26942781902398E+0000 - 1.26743706409771E+0000 1.26544917861761E+0000 1.26346416936865E+0000 1.26148204316185E+0000 1.25950280683732E+0000 - 1.25752646726277E+0000 1.25555303132637E+0000 1.25358250594584E+0000 1.25161489805940E+0000 1.24965021463182E+0000 - 1.24768846265071E+0000 1.24572964912384E+0000 1.24377378108184E+0000 1.24182086557331E+0000 1.23987090967048E+0000 - 1.23792392046546E+0000 1.23597990506535E+0000 1.23403887059753E+0000 1.23210082420174E+0000 1.23016577304107E+0000 - 1.22823372429214E+0000 1.22630468514356E+0000 1.22437866279940E+0000 1.22245566447650E+0000 1.22053569740451E+0000 - 1.21861876882780E+0000 1.21670488599785E+0000 1.21479405617517E+0000 1.21288628663273E+0000 1.21098158465026E+0000 - 1.20907995751653E+0000 1.20718141252709E+0000 1.20528595698123E+0000 1.20339359818384E+0000 1.20150434344624E+0000 - 1.19961820008079E+0000 1.19773517540589E+0000 1.19585527673757E+0000 1.19397851139176E+0000 1.19210488669158E+0000 - 1.19023440995011E+0000 1.18836708848686E+0000 1.18650292961358E+0000 1.18464194063583E+0000 1.18278412886208E+0000 - 1.18092950158927E+0000 1.17907806611303E+0000 1.17722982971663E+0000 1.17538479967443E+0000 1.17354298325754E+0000 - 1.17170438772201E+0000 1.16986902031642E+0000 1.16803688827351E+0000 1.16620799881124E+0000 1.16438235913929E+0000 - 1.16255997644992E+0000 1.16074085791978E+0000 1.15892501070650E+0000 1.15711244194901E+0000 1.15530315876908E+0000 - 1.15349716826859E+0000 1.15169447753029E+0000 1.14989509360971E+0000 1.14809902354128E+0000 1.14630627433405E+0000 - 1.14451685297554E+0000 1.14273076642475E+0000 1.14094802161143E+0000 1.13916862543866E+0000 1.13739258477787E+0000 - 1.13561990647184E+0000 1.13385059733357E+0000 1.13208466413656E+0000 1.13032211362713E+0000 1.12856295251051E+0000 - 1.12680718745962E+0000 1.12505482511087E+0000 1.12330587205750E+0000 1.12156033485687E+0000 1.11981822002159E+0000 - 1.11807953402749E+0000 1.11634428330403E+0000 1.11461247423648E+0000 1.11288411316477E+0000 1.11115920637955E+0000 - 1.10943776012869E+0000 1.10771978060838E+0000 1.10600527396345E+0000 1.10429424628921E+0000 1.10258670362257E+0000 - 1.10088265195351E+0000 1.09918209721538E+0000 1.09748504528294E+0000 1.09579150197108E+0000 1.09410147303944E+0000 - 1.09241496418573E+0000 1.09073198104880E+0000 1.08905252920157E+0000 1.08737661415255E+0000 1.08570424134416E+0000 - 1.08403541615581E+0000 1.08237014389644E+0000 1.08070842980677E+0000 1.07905027905381E+0000 1.07739569673428E+0000 - 1.07574468787369E+0000 1.07409725741939E+0000 1.07245341024541E+0000 1.07081315114783E+0000 1.06917648483958E+0000 - 1.06754341595929E+0000 1.06591394906074E+0000 1.06428808861897E+0000 1.06266583901817E+0000 1.06104720455856E+0000 - 1.05943218945783E+0000 1.05782079783906E+0000 1.05621303374143E+0000 1.05460890110738E+0000 1.05300840378747E+0000 - 1.05141154553803E+0000 1.04981833002256E+0000 1.04822876080619E+0000 1.04664284135170E+0000 1.04506057502368E+0000 - 1.04348196508609E+0000 1.04190701469941E+0000 1.04033572692133E+0000 1.03876810469845E+0000 1.03720415087240E+0000 - 1.03564386817540E+0000 1.03408725922903E+0000 1.03253432654525E+0000 1.03098507251693E+0000 1.02943949942472E+0000 - 1.02789760942997E+0000 1.02635940457919E+0000 1.02482488679853E+0000 1.02329405788819E+0000 1.02176691952848E+0000 - 1.02024347327389E+0000 1.01872372055212E+0000 1.01720766266673E+0000 1.01569530078486E+0000 1.01418663594764E+0000 - 1.01268166905952E+0000 1.01118040089319E+0000 1.00968283208551E+0000 1.00818896313311E+0000 1.00669879439494E+0000 - 1.00521232608511E+0000 1.00372955828052E+0000 1.00225049091135E+0000 1.00077512375973E+0000 9.99303456461135E-0001 - 9.97835488499545E-0001 9.96371219211179E-0001 9.94910647776910E-0001 9.93453773224053E-0001 9.92000594422286E-0001 - 9.90551110080736E-0001 9.89105318753294E-0001 9.87663218829041E-0001 9.86224808536388E-0001 9.84790085933494E-0001 - 9.83359048913181E-0001 9.81931695202360E-0001 9.80508022354412E-0001 9.79088027752522E-0001 9.77671708602839E-0001 - 9.76259061934669E-0001 9.74850084602256E-0001 9.73444773280272E-0001 9.72043124460880E-0001 9.70645134450793E-0001 - 9.69250799372643E-0001 9.67860115164000E-0001 9.66473077569321E-0001 9.65089682146813E-0001 9.63709924258413E-0001 - 9.62333799070364E-0001 9.60961301556544E-0001 9.59592426489219E-0001 9.58227168442371E-0001 9.56865521784006E-0001 - 9.55507480680272E-0001 9.54153039092092E-0001 9.52802190770224E-0001 9.51454929257006E-0001 9.50111247881020E-0001 - 9.48771139756467E-0001 9.47434597782943E-0001 9.46101614641669E-0001 9.44772182794861E-0001 9.43446294481562E-0001 - 9.42123941715824E-0001 9.40805116284899E-0001 9.39489809752944E-0001 9.38178013450132E-0001 9.36869718476352E-0001 - 9.35564915693074E-0001 9.34263595729812E-0001 9.32965748977956E-0001 9.31671365587756E-0001 9.30380435466098E-0001 - 9.29092948274270E-0001 9.27808893429682E-0001 9.26528260100476E-0001 9.25251037204470E-0001 9.23977213404153E-0001 - 9.22706777109581E-0001 9.21439716470603E-0001 9.20176019380934E-0001 9.18915673475128E-0001 9.17658666116419E-0001 - 9.16404984408725E-0001 9.15154615185681E-0001 9.13907545010753E-0001 9.12663760178148E-0001 9.11423246703817E-0001 - 9.10185990328334E-0001 9.08951976513045E-0001 9.07721190440573E-0001 9.06493617008183E-0001 9.05269240828672E-0001 - 9.04048046227307E-0001 9.02830017235166E-0001 9.01615137598373E-0001 9.00403390764299E-0001 8.99194759885222E-0001 - 8.97989227813660E-0001 8.96786777097687E-0001 8.95587389987378E-0001 8.94391048426555E-0001 8.93197734047296E-0001 - 8.92007428174396E-0001 8.90820111820673E-0001 8.89635765820393E-0001 8.88454371049670E-0001 8.87275908466350E-0001 - 8.86100359111720E-0001 8.84927704108619E-0001 8.83757924667926E-0001 8.82591002079110E-0001 8.81426917717109E-0001 - 8.80265653037265E-0001 8.79107189575024E-0001 8.77951508955223E-0001 8.76798592875446E-0001 8.75648423123282E-0001 - 8.74500981562074E-0001 8.73356250136607E-0001 8.72214210875614E-0001 8.71074845887090E-0001 8.69938137361593E-0001 - 8.68804067565959E-0001 8.67672618848601E-0001 8.66543773640811E-0001 8.65417514451672E-0001 8.64293823870162E-0001 - 8.63172684564054E-0001 8.62054079280024E-0001 8.60937990844949E-0001 8.59824402164017E-0001 8.58713296221625E-0001 - 8.57604656081086E-0001 8.56498464879517E-0001 8.55394705836762E-0001 8.54293362249876E-0001 8.53194417493636E-0001 - 8.52097855018233E-0001 8.51003658351373E-0001 8.49911811098784E-0001 8.48822296943511E-0001 8.47735099645615E-0001 - 8.46650203039065E-0001 8.45567591035846E-0001 8.44487247622446E-0001 8.43409156864371E-0001 8.42333302900223E-0001 - 8.41259669944605E-0001 8.40188242287816E-0001 8.39119004292337E-0001 8.38051940400154E-0001 8.36987035127234E-0001 - 8.35924273059198E-0001 8.34863638862269E-0001 8.33805117270500E-0001 8.32748693097133E-0001 8.31694351227453E-0001 - 8.30642076619281E-0001 8.29591854304282E-0001 8.28543669386038E-0001 8.27497507043367E-0001 8.26453352526794E-0001 - 8.25411191160654E-0001 8.24371008339159E-0001 8.23332789527291E-0001 8.22296520266945E-0001 8.21262186170570E-0001 - 8.20229772919242E-0001 8.19199266267597E-0001 8.18170652039076E-0001 8.17143916132883E-0001 8.16119044514788E-0001 - 8.15096023223269E-0001 8.14074838366381E-0001 8.13055476121429E-0001 8.12037922737492E-0001 8.11022164534696E-0001 - 8.10008187899054E-0001 8.08995979289826E-0001 8.07985525230714E-0001 8.06976812321272E-0001 8.05969827222837E-0001 - 8.04964556673180E-0001 8.03960987472026E-0001 8.02959106488830E-0001 8.01958900664075E-0001 8.00960357002884E-0001 - 7.99963462581985E-0001 7.98968204542106E-0001 7.97974570091296E-0001 7.96982546507847E-0001 7.95992121135111E-0001 - 7.95003281384422E-0001 7.94016014732746E-0001 7.93030308721951E-0001 7.92046150964574E-0001 7.91063529134973E-0001 - 7.90082430977123E-0001 7.89102844298206E-0001 7.88124756970716E-0001 7.87148156933358E-0001 7.86173032190723E-0001 - 7.85199370813370E-0001 7.84227160933840E-0001 7.83256390749585E-0001 7.82287048524263E-0001 7.81319122585386E-0001 - 7.80352601325208E-0001 7.79387473198772E-0001 7.78423726723173E-0001 7.77461350481711E-0001 7.76500333121524E-0001 - 7.75540663351836E-0001 7.74582329943424E-0001 7.73625321732564E-0001 7.72669627615407E-0001 7.71715236552129E-0001 - 7.70762137567418E-0001 7.69810319743619E-0001 7.68859772228355E-0001 7.67910484227463E-0001 7.66962445012415E-0001 - 7.66015643915705E-0001 7.65070070327653E-0001 7.64125713702401E-0001 7.63182563553093E-0001 7.62240609455617E-0001 - 7.61299841046236E-0001 7.60360248019004E-0001 7.59421820131355E-0001 7.58484547196818E-0001 7.57548419092863E-0001 - 7.56613425754633E-0001 7.55679557177880E-0001 7.54746803414129E-0001 7.53815154577498E-0001 7.52884600839866E-0001 - 7.51955132432165E-0001 7.51026739643639E-0001 7.50099412821503E-0001 7.49173142372036E-0001 7.48247918758402E-0001 - 7.47323732503381E-0001 7.46400574185753E-0001 7.45478434442827E-0001 7.44557303967638E-0001 7.43637173513119E-0001 - 7.42718033886841E-0001 7.41799875954973E-0001 7.40882690638252E-0001 7.39966468915744E-0001 7.39051201822039E-0001 - 7.38136880447727E-0001 7.37223495939262E-0001 7.36311039500263E-0001 7.35399502387882E-0001 7.34488875916158E-0001 - 7.33579151454234E-0001 7.32670320425191E-0001 7.31762374308786E-0001 7.30855304638022E-0001 7.29949103001683E-0001 - 7.29043761042340E-0001 7.28139270457242E-0001 7.27235622996731E-0001 7.26332810466367E-0001 7.25430824724730E-0001 - 7.24529657683682E-0001 7.23629301309267E-0001 7.22729747620321E-0001 7.21830988688953E-0001 7.20933016639990E-0001 - 7.20035823650833E-0001 7.19139401952136E-0001 7.18243743826224E-0001 7.17348841608181E-0001 7.16454687685295E-0001 - 7.15561274495469E-0001 7.14668594529554E-0001 7.13776640330376E-0001 7.12885404490940E-0001 7.11994879656349E-0001 - 7.11105058522210E-0001 7.10215933835525E-0001 7.09327498393715E-0001 7.08439745045300E-0001 7.07552666688305E-0001 - 7.06666256271765E-0001 7.05780506794755E-0001 7.04895411306444E-0001 7.04010962904913E-0001 7.03127154738457E-0001 - 7.02243980005021E-0001 7.01361431951430E-0001 7.00479503873652E-0001 6.99598189117274E-0001 6.98717481075484E-0001 - 6.97837373190578E-0001 6.96957858954434E-0001 6.96078931905667E-0001 6.95200585631753E-0001 6.94322813768056E-0001 - 6.93445609998501E-0001 6.92568968052725E-0001 6.91692881710078E-0001 6.90817344796148E-0001 6.89942351183856E-0001 - 6.89067894793507E-0001 6.88193969591393E-0001 6.87320569591304E-0001 6.86447688853745E-0001 6.85575321484540E-0001 - 6.84703461637588E-0001 6.83832103510546E-0001 6.82961241349463E-0001 6.82090869443420E-0001 6.81220982130410E-0001 - 6.80351573790943E-0001 6.79482638851630E-0001 6.78614171786074E-0001 6.77746167109712E-0001 6.76878619385703E-0001 - 6.76011523219558E-0001 6.75144873263988E-0001 6.74278664212907E-0001 6.73412890806490E-0001 6.72547547829138E-0001 - 6.71682630107857E-0001 6.70818132514606E-0001 6.69954049963841E-0001 6.69090377414446E-0001 6.68227109868110E-0001 - 6.67364242369377E-0001 6.66501770006949E-0001 6.65639687911230E-0001 6.64777991254579E-0001 6.63916675254080E-0001 - 6.63055735167826E-0001 6.62195166296849E-0001 6.61334963982659E-0001 6.60475123610638E-0001 6.59615640606322E-0001 - 6.58756510438586E-0001 6.57897728616137E-0001 6.57039290689859E-0001 6.56181192252026E-0001 6.55323428935088E-0001 - 6.54465996412770E-0001 6.53608890400324E-0001 6.52752106652059E-0001 6.51895640963489E-0001 6.51039489170743E-0001 - 6.50183647149984E-0001 6.49328110816406E-0001 6.48472876126166E-0001 6.47617939074963E-0001 6.46763295697237E-0001 - 6.45908942067690E-0001 6.45054874299225E-0001 6.44201088545722E-0001 6.43347580997462E-0001 6.42494347886001E-0001 - 6.41641385480432E-0001 6.40788690087640E-0001 6.39936258054021E-0001 6.39084085763850E-0001 6.38232169639109E-0001 - 6.37380506140791E-0001 6.36529091766003E-0001 6.35677923050733E-0001 6.34826996568850E-0001 6.33976308929615E-0001 - 6.33125856782141E-0001 6.32275636809966E-0001 6.31425645736143E-0001 6.30575880318018E-0001 6.29726337351482E-0001 - 6.28877013668487E-0001 6.28027906136027E-0001 6.27179011659764E-0001 6.26330327178800E-0001 6.25481849670142E-0001 - 6.24633576145997E-0001 6.23785503653187E-0001 6.22937629275921E-0001 6.22089950132466E-0001 6.21242463376657E-0001 - 6.20395166197518E-0001 6.19548055819087E-0001 6.18701129500031E-0001 6.17854384533476E-0001 6.17007818247464E-0001 - 6.16161428004781E-0001 6.15315211201518E-0001 6.14469165269003E-0001 6.13623287671098E-0001 6.12777575906981E-0001 - 6.11932027508856E-0001 6.11086640042414E-0001 6.10241411106868E-0001 6.09396338335204E-0001 6.08551419392730E-0001 - 6.07706651978389E-0001 6.06862033824153E-0001 6.06017562694216E-0001 6.05173236385239E-0001 6.04329052726808E-0001 - 6.03485009581685E-0001 6.02641104843084E-0001 6.01797336437460E-0001 6.00953702323065E-0001 6.00110200489341E-0001 - 5.99266828958441E-0001 5.98423585783567E-0001 5.97580469048574E-0001 5.96737476869922E-0001 5.95894607394367E-0001 - 5.95051858800700E-0001 5.94209229296372E-0001 5.93366717122213E-0001 5.92524320547779E-0001 5.91682037874580E-0001 - 5.90839867433132E-0001 5.89997807584481E-0001 5.89155856720659E-0001 5.88314013262799E-0001 5.87472275662238E-0001 - 5.86630642399688E-0001 5.85789111986125E-0001 5.84947682960906E-0001 5.84106353893070E-0001 5.83265123381801E-0001 - 5.82423990054544E-0001 5.81582952566813E-0001 5.80742009605004E-0001 5.79901159881725E-0001 5.79060402140524E-0001 - 5.78219735151652E-0001 5.77379157714652E-0001 5.76538668655826E-0001 5.75698266831472E-0001 5.74857951124707E-0001 - 5.74017720446351E-0001 5.73177573734528E-0001 5.72337509955980E-0001 5.71497528104598E-0001 5.70657627200810E-0001 - 5.69817806292464E-0001 5.68978064454855E-0001 5.68138400789690E-0001 5.67298814425749E-0001 5.66459304518708E-0001 - 5.65619870249874E-0001 5.64780510827719E-0001 5.63941225487046E-0001 5.63102013488588E-0001 5.62262874118398E-0001 - 5.61423806690440E-0001 5.60584810541905E-0001 5.59745885037525E-0001 5.58907029566596E-0001 5.58068243544939E-0001 - 5.57229526412131E-0001 5.56390877633897E-0001 5.55552296700845E-0001 5.54713783128494E-0001 5.53875336457298E-0001 - 5.53036956252460E-0001 5.52198642103738E-0001 5.51360393624400E-0001 5.50522210453826E-0001 5.49684092253880E-0001 - 5.48846038711729E-0001 5.48008049537933E-0001 5.47170124466468E-0001 5.46332263256474E-0001 5.45494465690126E-0001 - 5.44656731571368E-0001 5.43819060730455E-0001 5.42981453018814E-0001 5.42143908311432E-0001 5.41306426506881E-0001 - 5.40469007526268E-0001 5.39631651313467E-0001 5.38794357835363E-0001 5.37957127080365E-0001 5.37119959061231E-0001 - 5.36282853810994E-0001 5.35445811386218E-0001 5.34608831865081E-0001 5.33771915348479E-0001 5.32935061957451E-0001 - 5.32098271836878E-0001 5.31261545151614E-0001 5.30424882089101E-0001 5.29588282858095E-0001 5.28751747687606E-0001 - 5.27915276829299E-0001 5.27078870555133E-0001 5.26242529158037E-0001 5.25406252951493E-0001 5.24570042270424E-0001 - 5.23733897470568E-0001 5.22897818926764E-0001 5.22061807035571E-0001 5.21225862213558E-0001 5.20389984897105E-0001 - 5.19554175542859E-0001 5.18718434627967E-0001 5.17882762648153E-0001 5.17047160120110E-0001 5.16211627579582E-0001 - 5.15376165581588E-0001 5.14540774701318E-0001 5.13705455532847E-0001 5.12870208689153E-0001 5.12035034802572E-0001 - 5.11199934524382E-0001 5.10364908524822E-0001 5.09529957492893E-0001 5.08695082136159E-0001 5.07860283180332E-0001 - 5.07025561370376E-0001 5.06190917468569E-0001 5.05356352256693E-0001 5.04521866533231E-0001 5.03687461115770E-0001 - 5.02853136839064E-0001 5.02018894555707E-0001 5.01184735137665E-0001 5.00350659471084E-0001 4.99516668462604E-0001 - 4.98682763035467E-0001 4.97848944128879E-0001 4.97015212701074E-0001 4.96181569726065E-0001 4.95348016194965E-0001 - 4.94514553116877E-0001 4.93681181515642E-0001 4.92847902433776E-0001 4.92014716929002E-0001 4.91181626075350E-0001 - 4.90348630964923E-0001 4.89515732703765E-0001 4.88682932415151E-0001 4.87850231239165E-0001 4.87017630330095E-0001 - 4.86185130859508E-0001 4.85352734013858E-0001 4.84520440995598E-0001 4.83688253022537E-0001 4.82856171327854E-0001 - 4.82024197159896E-0001 4.81192331782629E-0001 4.80360576475212E-0001 4.79528932531144E-0001 4.78697401259364E-0001 - 4.77865983983393E-0001 4.77034682041350E-0001 4.76203496787055E-0001 4.75372429587422E-0001 4.74541481824221E-0001 - 4.73710654894089E-0001 4.72879950206579E-0001 4.72049369187231E-0001 4.71218913274308E-0001 4.70388583919897E-0001 - 4.69558382591022E-0001 4.68728310767247E-0001 4.67898369942874E-0001 4.67068561624334E-0001 4.66238887333042E-0001 - 4.65409348603001E-0001 4.64579946980814E-0001 4.63750684027888E-0001 4.62921561316938E-0001 4.62092580435727E-0001 - 4.61263742982032E-0001 4.60435050569581E-0001 4.59606504821917E-0001 4.58778107377024E-0001 4.57949859885355E-0001 - 4.57121764008313E-0001 4.56293821421334E-0001 4.55466033811262E-0001 4.54638402876359E-0001 4.53810930328295E-0001 - 4.52983617890402E-0001 4.52156467296360E-0001 4.51329480293733E-0001 4.50502658640674E-0001 4.49676004106818E-0001 - 4.48849518473294E-0001 4.48023203533171E-0001 4.47197061090370E-0001 4.46371092959896E-0001 4.45545300967623E-0001 - 4.44719686952289E-0001 4.43894252760880E-0001 4.43069000253042E-0001 4.42243931298894E-0001 4.41419047778588E-0001 - 4.40594351583648E-0001 4.39769844615431E-0001 4.38945528786242E-0001 4.38121406018459E-0001 4.37297478244100E-0001 - 4.36473747406817E-0001 4.35650215458598E-0001 4.34826884362642E-0001 4.34003756091381E-0001 4.33180832627372E-0001 - 4.32358115962641E-0001 4.31535608098916E-0001 4.30713311047630E-0001 4.29891226829271E-0001 4.29069357474050E-0001 - 4.28247705021466E-0001 4.27426271519652E-0001 4.26605059026711E-0001 4.25784069608951E-0001 4.24963305341999E-0001 - 4.24142768310367E-0001 4.23322460607017E-0001 4.22502384334473E-0001 4.21682541602174E-0001 4.20862934530463E-0001 - 4.20043565245505E-0001 4.19224435883941E-0001 4.18405548589129E-0001 4.17586905513593E-0001 4.16768508817694E-0001 - 4.15950360669858E-0001 4.15132463245924E-0001 4.14314818730250E-0001 4.13497429314617E-0001 4.12680297198677E-0001 - 4.11863424589513E-0001 4.11046813702091E-0001 4.10230466757712E-0001 4.09414385987126E-0001 4.08598573626539E-0001 - 4.07783031919396E-0001 4.06967763117722E-0001 4.06152769479013E-0001 4.05338053268688E-0001 4.04523616758540E-0001 - 4.03709462228069E-0001 4.02895591961605E-0001 4.02082008252753E-0001 4.01268713399510E-0001 4.00455709707048E-0001 - 3.99642999487162E-0001 3.98830585058056E-0001 3.98018468743785E-0001 3.97206652875157E-0001 3.96395139788506E-0001 - 3.95583931826369E-0001 3.94773031337268E-0001 3.93962440675933E-0001 3.93152162202195E-0001 3.92342198282550E-0001 - 3.91532551288266E-0001 3.90723223596283E-0001 3.89914217589657E-0001 3.89105535656566E-0001 3.88297180190199E-0001 - 3.87489153589093E-0001 3.86681458257920E-0001 3.85874096604924E-0001 3.85067071044601E-0001 3.84260383996140E-0001 - 3.83454037882982E-0001 3.82648035134830E-0001 3.81842378184190E-0001 3.81037069470623E-0001 3.80232111435825E-0001 - 3.79427506527882E-0001 3.78623257198365E-0001 3.77819365903673E-0001 3.77015835104256E-0001 3.76212667265283E-0001 - 3.75409864855420E-0001 3.74607430348397E-0001 3.73805366220656E-0001 3.73003674953936E-0001 3.72202359033026E-0001 - 3.71401420947010E-0001 3.70600863188250E-0001 3.69800688252957E-0001 3.69000898641749E-0001 3.68201496857409E-0001 - 3.67402485407585E-0001 3.66603866802093E-0001 3.65805643554827E-0001 3.65007818182980E-0001 3.64210393206477E-0001 - 3.63413371148883E-0001 3.62616754536496E-0001 3.61820545898809E-0001 3.61024747768052E-0001 3.60229362679536E-0001 - 3.59434393171427E-0001 3.58639841784301E-0001 3.57845711061364E-0001 3.57052003549133E-0001 3.56258721795859E-0001 - 3.55465868352204E-0001 3.54673445772370E-0001 3.53881456611841E-0001 3.53089903428293E-0001 3.52298788782153E-0001 - 3.51508115235809E-0001 3.50717885354068E-0001 3.49928101702347E-0001 3.49138766850283E-0001 3.48349883367563E-0001 - 3.47561453826626E-0001 3.46773480800414E-0001 3.45985966865638E-0001 3.45198914598832E-0001 3.44412326578610E-0001 - 3.43626205386003E-0001 3.42840553601862E-0001 3.42055373809909E-0001 3.41270668593800E-0001 3.40486440539832E-0001 - 3.39702692234463E-0001 3.38919426266001E-0001 3.38136645222913E-0001 3.37354351695741E-0001 3.36572548275185E-0001 - 3.35791237553341E-0001 3.35010422122574E-0001 3.34230104576532E-0001 3.33450287509467E-0001 3.32670973515896E-0001 - 3.31892165191504E-0001 3.31113865132124E-0001 3.30336075933853E-0001 3.29558800193949E-0001 3.28782040509027E-0001 - 3.28005799476863E-0001 3.27230079694696E-0001 3.26454883761041E-0001 3.25680214273305E-0001 3.24906073829487E-0001 - 3.24132465027839E-0001 3.23359390465725E-0001 3.22586852741664E-0001 3.21814854453062E-0001 3.21043398197113E-0001 - 3.20272486570915E-0001 3.19502122171577E-0001 3.18732307594975E-0001 3.17963045437445E-0001 3.17194338294314E-0001 - 3.16426188760231E-0001 3.15658599429735E-0001 3.14891572895665E-0001 3.14125111751543E-0001 3.13359218589407E-0001 - 3.12593895999933E-0001 3.11829146573445E-0001 3.11064972899464E-0001 3.10301377566137E-0001 3.09538363160914E-0001 - 3.08775932269636E-0001 3.08014087477787E-0001 3.07252831368439E-0001 3.06492166524415E-0001 3.05732095526919E-0001 - 3.04972620955644E-0001 3.04213745388777E-0001 3.03455471403215E-0001 3.02697801574567E-0001 3.01940738476127E-0001 - 3.01184284680233E-0001 3.00428442757129E-0001 2.99673215275644E-0001 2.98918604802619E-0001 2.98164613902790E-0001 - 2.97411245139468E-0001 2.96658501073624E-0001 2.95906384264912E-0001 2.95154897269957E-0001 2.94404042644172E-0001 - 2.93653822939931E-0001 2.92904240708395E-0001 2.92155298497904E-0001 2.91406998854551E-0001 2.90659344322171E-0001 - 2.89912337442001E-0001 2.89165980753129E-0001 2.88420276792038E-0001 2.87675228092823E-0001 2.86930837186738E-0001 - 2.86187106602417E-0001 2.85444038865981E-0001 2.84701636500700E-0001 2.83959902027092E-0001 2.83218837963274E-0001 - 2.82478446823573E-0001 2.81738731120249E-0001 2.80999693361994E-0001 2.80261336054965E-0001 2.79523661702089E-0001 - 2.78786672803173E-0001 2.78050371855017E-0001 2.77314761350832E-0001 2.76579843781045E-0001 2.75845621632713E-0001 - 2.75112097389180E-0001 2.74379273530760E-0001 2.73647152534502E-0001 2.72915736873839E-0001 2.72185029018360E-0001 - 2.71455031434601E-0001 2.70725746585243E-0001 2.69997176929334E-0001 2.69269324922630E-0001 2.68542193016438E-0001 - 2.67815783659111E-0001 2.67090099294427E-0001 2.66365142362510E-0001 2.65640915300511E-0001 2.64917420540304E-0001 - 2.64194660510323E-0001 2.63472637635669E-0001 2.62751354336035E-0001 2.62030813028004E-0001 2.61311016123775E-0001 - 2.60591966031160E-0001 2.59873665154038E-0001 2.59156115892006E-0001 2.58439320640025E-0001 2.57723281789226E-0001 - 2.57008001725745E-0001 2.56293482831763E-0001 2.55579727484688E-0001 2.54866738057613E-0001 2.54154516919310E-0001 - 2.53443066433417E-0001 2.52732388959125E-0001 2.52022486851286E-0001 2.51313362459834E-0001 2.50605018129777E-0001 - 2.49897456201767E-0001 2.49190679011058E-0001 2.48484688888769E-0001 2.47779488160378E-0001 2.47075079146868E-0001 - 2.46371464164265E-0001 2.45668645523742E-0001 2.44966625530690E-0001 2.44265406486449E-0001 2.43564990686331E-0001 - 2.42865380420776E-0001 2.42166577975806E-0001 2.41468585630821E-0001 2.40771405661021E-0001 2.40075040336015E-0001 - 2.39379491919929E-0001 2.38684762671746E-0001 2.37990854844837E-0001 2.37297770687420E-0001 2.36605512441856E-0001 - 2.35914082345108E-0001 2.35223482628850E-0001 2.34533715519229E-0001 2.33844783236162E-0001 2.33156687994608E-0001 - 2.32469432003282E-0001 2.31783017465813E-0001 2.31097446579571E-0001 2.30412721536133E-0001 2.29728844521849E-0001 - 2.29045817716681E-0001 2.28363643294539E-0001 2.27682323424208E-0001 2.27001860267714E-0001 2.26322255981592E-0001 - 2.25643512716190E-0001 2.24965632616001E-0001 2.24288617818967E-0001 2.23612470457747E-0001 2.22937192657969E-0001 - 2.22262786539497E-0001 2.21589254216315E-0001 2.20916597795819E-0001 2.20244819379039E-0001 2.19573921060873E-0001 - 2.18903904930072E-0001 2.18234773068658E-0001 2.17566527552843E-0001 2.16899170451629E-0001 2.16232703828544E-0001 - 2.15567129739541E-0001 2.14902450235089E-0001 2.14238667358530E-0001 2.13575783146895E-0001 2.12913799630422E-0001 - 2.12252718833373E-0001 2.11592542772273E-0001 2.10933273457887E-0001 2.10274912893930E-0001 2.09617463077292E-0001 - 2.08960925998499E-0001 2.08305303640772E-0001 2.07650597981069E-0001 2.06996810989028E-0001 2.06343944628012E-0001 - 2.05692000853697E-0001 2.05040981615234E-0001 2.04390888855481E-0001 2.03741724509114E-0001 2.03093490504502E-0001 - 2.02446188763225E-0001 2.01799821199132E-0001 2.01154389719623E-0001 2.00509896224469E-0001 1.99866342606741E-0001 - 1.99223730752218E-0001 1.98582062539498E-0001 1.97941339839870E-0001 1.97301564517779E-0001 1.96662738429526E-0001 - 1.96024863425489E-0001 1.95387941347420E-0001 1.94751974030665E-0001 1.94116963302981E-0001 1.93482910984533E-0001 - 1.92849818888118E-0001 1.92217688819274E-0001 1.91586522576041E-0001 1.90956321949301E-0001 1.90327088721838E-0001 - 1.89698824669379E-0001 1.89071531560004E-0001 1.88445211154138E-0001 1.87819865204660E-0001 1.87195495457365E-0001 - 1.86572103649312E-0001 1.85949691510931E-0001 1.85328260764604E-0001 1.84707813125012E-0001 1.84088350299362E-0001 - 1.83469873986671E-0001 1.82852385878468E-0001 1.82235887658782E-0001 1.81620381003431E-0001 1.81005867580485E-0001 - 1.80392349050609E-0001 1.79779827065880E-0001 1.79168303271074E-0001 1.78557779303067E-0001 1.77948256790360E-0001 - 1.77339737354129E-0001 1.76732222607155E-0001 1.76125714154527E-0001 1.75520213592925E-0001 1.74915722511553E-0001 - 1.74312242490956E-0001 1.73709775104659E-0001 1.73108321917159E-0001 1.72507884485091E-0001 1.71908464357105E-0001 - 1.71310063073858E-0001 1.70712682167653E-0001 1.70116323162899E-0001 1.69520987575164E-0001 1.68926676912815E-0001 - 1.68333392675241E-0001 1.67741136354028E-0001 1.67149909432120E-0001 1.66559713384757E-0001 1.65970549678525E-0001 - 1.65382419771463E-0001 1.64795325114000E-0001 1.64209267147766E-0001 1.63624247306059E-0001 1.63040267014187E-0001 - 1.62457327688634E-0001 1.61875430737410E-0001 1.61294577560865E-0001 1.60714769550267E-0001 1.60136008088615E-0001 - 1.59558294550521E-0001 1.58981630302077E-0001 1.58406016700969E-0001 1.57831455096346E-0001 1.57257946828581E-0001 - 1.56685493230088E-0001 1.56114095624483E-0001 1.55543755326581E-0001 1.54974473643095E-0001 1.54406251871799E-0001 - 1.53839091301992E-0001 1.53272993214140E-0001 1.52707958880691E-0001 1.52143989564885E-0001 1.51581086521692E-0001 - 1.51019250997215E-0001 1.50458484228913E-0001 1.49898787445478E-0001 1.49340161867183E-0001 1.48782608705397E-0001 - 1.48226129162578E-0001 1.47670724433215E-0001 1.47116395702155E-0001 1.46563144145904E-0001 1.46010970932141E-0001 - 1.45459877219830E-0001 1.44909864158976E-0001 1.44360932891088E-0001 1.43813084548817E-0001 1.43266320255351E-0001 - 1.42720641126194E-0001 1.42176048267132E-0001 1.41632542775417E-0001 1.41090125739162E-0001 1.40548798237808E-0001 - 1.40008561342241E-0001 1.39469416113940E-0001 1.38931363605573E-0001 1.38394404861223E-0001 1.37858540915784E-0001 - 1.37323772795430E-0001 1.36790101516774E-0001 1.36257528088405E-0001 1.35726053509216E-0001 1.35195678769464E-0001 - 1.34666404850646E-0001 1.34138232724775E-0001 1.33611163355083E-0001 1.33085197696137E-0001 1.32560336692636E-0001 - 1.32036581281551E-0001 1.31513932389248E-0001 1.30992390934712E-0001 1.30471957826663E-0001 1.29952633965346E-0001 - 1.29434420241804E-0001 1.28917317538227E-0001 1.28401326727107E-0001 1.27886448672668E-0001 1.27372684229418E-0001 - 1.26860034243339E-0001 1.26348499550922E-0001 1.25838080979637E-0001 1.25328779348165E-0001 1.24820595465188E-0001 - 1.24313530131424E-0001 1.23807584137696E-0001 1.23302758266125E-0001 1.22799053289341E-0001 1.22296469970835E-0001 - 1.21795009065433E-0001 1.21294671318323E-0001 1.20795457465831E-0001 1.20297368234689E-0001 1.19800404343294E-0001 - 1.19304566500068E-0001 1.18809855404421E-0001 1.18316271746977E-0001 1.17823816208906E-0001 1.17332489462099E-0001 - 1.16842292169455E-0001 1.16353224984336E-0001 1.15865288551640E-0001 1.15378483506229E-0001 1.14892810474303E-0001 - 1.14408270072430E-0001 1.13924862908685E-0001 1.13442589581069E-0001 1.12961450678893E-0001 1.12481446782041E-0001 - 1.12002578461390E-0001 1.11524846278373E-0001 1.11048250785339E-0001 1.10572792525178E-0001 1.10098472031980E-0001 - 1.09625289830059E-0001 1.09153246435092E-0001 1.08682342353267E-0001 1.08212578080971E-0001 1.07743954106354E-0001 - 1.07276470907629E-0001 1.06810128953908E-0001 1.06344928705316E-0001 1.05880870612382E-0001 1.05417955116567E-0001 - 1.04956182650202E-0001 1.04495553636116E-0001 1.04036068487867E-0001 1.03577727610341E-0001 1.03120531398474E-0001 - 1.02664480238152E-0001 1.02209574506197E-0001 1.01755814570127E-0001 1.01303200788077E-0001 1.00851733508982E-0001 - 1.00401413072742E-0001 9.99522398096758E-0002 9.95042140411748E-0002 9.90573360789707E-0002 9.86116062260351E-0002 - 9.81670247757838E-0002 9.77235920125540E-0002 9.72813082112323E-0002 9.68401736377927E-0002 9.64001885485609E-0002 - 9.59613531909338E-0002 9.55236678030079E-0002 9.50871326135715E-0002 9.46517478422786E-0002 9.42175136995195E-0002 - 9.37844303864739E-0002 9.33524980949813E-0002 9.29217170079584E-0002 9.24920872984802E-0002 9.20636091311686E-0002 - 9.16362826610314E-0002 9.12101080338788E-0002 9.07850853863160E-0002 9.03612148457352E-0002 8.99384965305511E-0002 - 8.95169305495241E-0002 8.90965170027865E-0002 8.86772559807397E-0002 8.82591475649590E-0002 8.78421918276382E-0002 - 8.74263888320687E-0002 8.70117386320233E-0002 8.65982412721134E-0002 8.61858967881465E-0002 8.57747052065100E-0002 - 8.53646665443459E-0002 8.49557808097258E-0002 8.45480480016432E-0002 8.41414681099451E-0002 8.37360411152632E-0002 - 8.33317669891893E-0002 8.29286456939016E-0002 8.25266771828890E-0002 8.21258614001505E-0002 8.17261982809198E-0002 - 8.13276877508034E-0002 8.09303297268101E-0002 8.05341241167336E-0002 8.01390708189618E-0002 7.97451697233233E-0002 - 7.93524207100428E-0002 7.89608236505877E-0002 7.85703784072335E-0002 7.81810848333006E-0002 7.77929427729635E-0002 - 7.74059520613041E-0002 7.70201125244883E-0002 7.66354239796356E-0002 7.62518862346286E-0002 7.58694990886558E-0002 - 7.54882623315926E-0002 7.51081757444835E-0002 7.47292390993508E-0002 7.43514521591262E-0002 7.39748146777658E-0002 - 7.35993264006101E-0002 7.32249870633361E-0002 7.28517963933577E-0002 7.24797541085329E-0002 7.21088599183201E-0002 - 7.17391135227904E-0002 7.13705146134172E-0002 7.10030628725176E-0002 7.06367579735507E-0002 7.02715995812341E-0002 - 6.99075873512294E-0002 6.95447209301353E-0002 6.91829999560935E-0002 6.88224240580458E-0002 6.84629928563403E-0002 - 6.81047059621103E-0002 6.77475629777587E-0002 6.73915634973190E-0002 6.70367071051585E-0002 6.66829933776913E-0002 - 6.63304218819582E-0002 6.59789921762955E-0002 6.56287038103278E-0002 6.52795563250224E-0002 6.49315492523754E-0002 - 6.45846821157118E-0002 6.42389544296167E-0002 6.38943656998675E-0002 6.35509154234878E-0002 6.32086030891102E-0002 - 6.28674281762923E-0002 6.25273901558785E-0002 6.21884884903019E-0002 6.18507226332688E-0002 6.15140920295059E-0002 - 6.11785961155540E-0002 6.08442343189605E-0002 6.05110060587651E-0002 6.01789107452470E-0002 5.98479477804107E-0002 - 5.95181165574868E-0002 5.91894164608627E-0002 5.88618468668164E-0002 5.85354071427082E-0002 5.82100966475284E-0002 - 5.78859147316446E-0002 5.75628607367946E-0002 5.72409339965736E-0002 5.69201338356251E-0002 5.66004595704370E-0002 - 5.62819105088408E-0002 5.59644859501904E-0002 5.56481851854173E-0002 5.53330074972712E-0002 5.50189521595100E-0002 - 5.47060184381297E-0002 5.43942055900594E-0002 5.40835128643914E-0002 5.37739395016948E-0002 5.34654847338233E-0002 - 5.31581477847128E-0002 5.28519278697566E-0002 5.25468241961699E-0002 5.22428359626745E-0002 5.19399623597394E-0002 - 5.16382025696369E-0002 5.13375557662501E-0002 5.10380211153765E-0002 5.07395977744119E-0002 5.04422848924682E-0002 - 5.01460816107384E-0002 4.98509870617474E-0002 4.95570003703369E-0002 4.92641206527917E-0002 4.89723470175152E-0002 - 4.86816785645273E-0002 4.83921143857686E-0002 4.81036535652178E-0002 4.78162951786379E-0002 4.75300382935697E-0002 - 4.72448819698846E-0002 4.69608252589095E-0002 4.66778672042897E-0002 4.63960068413620E-0002 4.61152431976457E-0002 - 4.58355752926500E-0002 4.55570021378685E-0002 4.52795227367726E-0002 4.50031360848681E-0002 4.47278411699381E-0002 - 4.44536369716014E-0002 4.41805224615557E-0002 4.39084966039449E-0002 4.36375583545446E-0002 4.33677066615646E-0002 - 4.30989404654573E-0002 4.28312586985998E-0002 4.25646602857870E-0002 4.22991441439139E-0002 4.20347091819077E-0002 - 4.17713543013452E-0002 4.15090783956995E-0002 4.12478803507077E-0002 4.09877590448645E-0002 4.07287133483565E-0002 - 4.04707421240543E-0002 4.02138442270076E-0002 3.99580185048145E-0002 3.97032637971788E-0002 3.94495789364039E-0002 - 3.91969627470123E-0002 3.89454140462403E-0002 3.86949316432825E-0002 3.84455143403484E-0002 3.81971609315326E-0002 - 3.79498702039961E-0002 3.77036409369616E-0002 3.74584719025198E-0002 3.72143618650001E-0002 3.69713095814018E-0002 - 3.67293138014516E-0002 3.64883732672236E-0002 3.62484867134458E-0002 3.60096528677458E-0002 3.57718704500199E-0002 - 3.55351381731154E-0002 3.52994547423258E-0002 3.50648188559479E-0002 3.48312292046516E-0002 3.45986844721628E-0002 - 3.43671833345694E-0002 3.41367244612562E-0002 3.39073065140852E-0002 3.36789281475156E-0002 3.34515880093511E-0002 - 3.32252847397943E-0002 3.30000169721318E-0002 3.27757833326034E-0002 3.25525824401464E-0002 3.23304129067672E-0002 - 3.21092733372851E-0002 3.18891623296412E-0002 3.16700784747054E-0002 3.14520203560833E-0002 3.12349865509897E-0002 - 3.10189756289888E-0002 3.08039861532449E-0002 3.05900166795753E-0002 3.03770657573255E-0002 3.01651319286102E-0002 - 2.99542137288743E-0002 2.97443096863853E-0002 2.95354183231713E-0002 2.93275381538853E-0002 2.91206676866173E-0002 - 2.89148054228272E-0002 2.87099498569629E-0002 2.85060994769586E-0002 2.83032527639160E-0002 2.81014081923515E-0002 - 2.79005642297507E-0002 2.77007193376346E-0002 2.75018719703587E-0002 2.73040205758009E-0002 2.71071635951687E-0002 - 2.69112994633723E-0002 2.67164266085794E-0002 2.65225434524001E-0002 2.63296484098188E-0002 2.61377398899472E-0002 - 2.59468162945064E-0002 2.57568760195882E-0002 2.55679174543898E-0002 2.53799389819662E-0002 2.51929389787846E-0002 - 2.50069158149724E-0002 2.48218678545026E-0002 2.46377934548106E-0002 2.44546909671061E-0002 2.42725587365582E-0002 - 2.40913951016599E-0002 2.39111983949819E-0002 2.37319669426634E-0002 2.35536990649132E-0002 2.33763930754371E-0002 - 2.32000472821295E-0002 2.30246599864367E-0002 2.28502294840490E-0002 2.26767540642010E-0002 2.25042320104266E-0002 - 2.23326615997959E-0002 2.21620411039244E-0002 2.19923687877025E-0002 2.18236429107481E-0002 2.16558617264535E-0002 - 2.14890234817908E-0002 2.13231264187655E-0002 2.11581687728290E-0002 2.09941487736987E-0002 2.08310646452269E-0002 - 2.06689146055884E-0002 2.05076968669588E-0002 2.03474096360190E-0002 2.01880511132535E-0002 2.00296194938984E-0002 - 1.98721129671134E-0002 1.97155297166124E-0002 1.95598679200891E-0002 1.94051257501653E-0002 1.92513013732453E-0002 - 1.90983929505277E-0002 1.89463986374312E-0002 1.87953165839080E-0002 1.86451449343141E-0002 1.84958818275958E-0002 - 1.83475253970330E-0002 1.82000737708074E-0002 1.80535250711731E-0002 1.79078774151523E-0002 1.77631289146598E-0002 - 1.76192776757998E-0002 1.74763217995626E-0002 1.73342593816305E-0002 1.71930885122475E-0002 1.70528072764705E-0002 - 1.69134137541029E-0002 1.67749060196913E-0002 1.66372821423312E-0002 1.65005401865562E-0002 1.63646782110606E-0002 - 1.62296942696519E-0002 1.60955864113119E-0002 1.59623526793015E-0002 1.58299911123686E-0002 1.56984997440441E-0002 - 1.55678766025754E-0002 1.54381197116249E-0002 1.53092270895653E-0002 1.51811967499876E-0002 1.50540267014428E-0002 - 1.49277149475669E-0002 1.48022594872696E-0002 1.46776583144123E-0002 1.45539094182526E-0002 1.44310107829303E-0002 - 1.43089603879125E-0002 1.41877562080540E-0002 1.40673962133400E-0002 1.39478783688828E-0002 1.38292006353671E-0002 - 1.37113609689192E-0002 1.35943573205937E-0002 1.34781876370097E-0002 1.33628498601566E-0002 1.32483419277759E-0002 - 1.31346617724628E-0002 1.30218073228792E-0002 1.29097765028241E-0002 1.27985672316788E-0002 1.26881774243724E-0002 - 1.25786049916362E-0002 1.24698478394245E-0002 1.23619038695210E-0002 1.22547709794085E-0002 1.21484470619143E-0002 - 1.20429300061047E-0002 1.19382176962581E-0002 1.18343080127278E-0002 1.17311988313946E-0002 1.16288880239540E-0002 - 1.15273734581377E-0002 1.14266529972633E-0002 1.13267245007130E-0002 1.12275858236751E-0002 1.11292348172378E-0002 - 1.10316693282598E-0002 1.09348872000091E-0002 1.08388862712313E-0002 1.07436643770134E-0002 1.06492193484618E-0002 - 1.05555490126037E-0002 1.04626511926098E-0002 1.03705237076967E-0002 1.02791643734458E-0002 1.01885710013844E-0002 - 1.00987413992405E-0002 1.00096733709734E-0002 9.92136471693317E-0003 9.83381323350456E-0003 9.74701671345960E-0003 - 9.66097294585928E-0003 9.57567971618070E-0003 9.49113480612234E-0003 9.40733599389217E-0003 9.32428105401300E-0003 - 9.24196775754626E-0003 9.16039387196179E-0003 9.07955716113622E-0003 8.99945538557709E-0003 8.92008630226029E-0003 - 8.84144766475756E-0003 8.76353722320284E-0003 8.68635272441990E-0003 8.60989191169522E-0003 8.53415252513140E-0003 - 8.45913230158143E-0003 8.38482897432472E-0003 8.31124027361432E-0003 8.23836392644988E-0003 8.16619765654410E-0003 - 8.09473918445067E-0003 8.02398622762766E-0003 7.95393650021035E-0003 7.88458771359142E-0003 7.81593757554771E-0003 - 7.74798379127291E-0003 7.68072406273034E-0003 7.61415608887808E-0003 7.54827756557095E-0003 7.48308618604447E-0003 - 7.41857964023495E-0003 7.35475561545755E-0003 7.29161179595260E-0003 7.22914586317580E-0003 7.16735549570024E-0003 - 7.10623836950691E-0003 7.04579215749825E-0003 6.98601452998292E-0003 6.92690315457789E-0003 6.86845569594858E-0003 - 6.81066981658546E-0003 6.75354317576675E-0003 6.69707343046476E-0003 6.64125823505369E-0003 6.58609524121169E-0003 - 6.53158209811469E-0003 6.47771645243578E-0003 6.42449594837706E-0003 6.37191822747444E-0003 6.31998092914851E-0003 - 6.26868169015254E-0003 6.21801814489640E-0003 6.16798792547851E-0003 6.11858866165297E-0003 6.06981798073166E-0003 - 6.02167350784356E-0003 5.97415286586944E-0003 5.92725367544149E-0003 5.88097355478048E-0003 5.83531012028023E-0003 - 5.79026098589002E-0003 5.74582376350413E-0003 5.70199606292916E-0003 5.65877549188376E-0003 5.61615965599838E-0003 - 5.57414615878255E-0003 5.53273260204754E-0003 5.49191658512545E-0003 5.45169570587764E-0003 5.41206756004391E-0003 - 5.37302974133994E-0003 5.33457984171757E-0003 5.29671545133234E-0003 5.25943415838053E-0003 5.22273354929456E-0003 - 5.18661120887337E-0003 5.15106471998922E-0003 5.11609166375055E-0003 5.08168961982806E-0003 5.04785616596590E-0003 - 5.01458887824242E-0003 4.98188533136394E-0003 4.94974309833877E-0003 4.91815975037943E-0003 4.88713285749015E-0003 - 4.85665998794500E-0003 4.82673870854920E-0003 4.79736658473731E-0003 4.76854118037764E-0003 4.74026005803378E-0003 - 4.71252077883427E-0003 4.68532090244028E-0003 4.65865798740534E-0003 4.63252959075097E-0003 4.60693326839193E-0003 - 4.58186657474441E-0003 4.55732706328217E-0003 4.53331228594858E-0003 4.50981979384376E-0003 4.48684713666914E-0003 - 4.46439186302234E-0003 4.44245152052863E-0003 4.42102365561248E-0003 4.40010581359623E-0003 4.37969553892993E-0003 - 4.35979037496279E-0003 4.34038786404205E-0003 4.32148554764465E-0003 4.30308096624695E-0003 4.28517165948922E-0003 - 4.26775516607808E-0003 4.25082902388557E-0003 4.23439076998273E-0003 4.21843794064039E-0003 4.20296807126438E-0003 - 4.18797869669157E-0003 4.17346735089552E-0003 4.15943156724980E-0003 4.14586887836486E-0003 4.13277681608882E-0003 - 4.12015291206653E-0003 4.10799469698554E-0003 4.09629970097090E-0003 4.08506545384899E-0003 4.07428948478729E-0003 - 4.06396932226246E-0003 4.05410249475140E-0003 4.04468652984521E-0003 4.03571895487454E-0003 4.02719729697661E-0003 - 4.01911908253743E-0003 4.01148183798205E-0003 4.00428308921678E-0003 3.99752036186055E-0003 3.99119118131191E-0003 - 3.98529307275036E-0003 3.97982356113754E-0003 3.97478017121855E-0003 3.97016042762203E-0003 3.96596185476263E-0003 - 3.96218197703999E-0003 3.95881831870835E-0003 3.95586840410856E-0003 3.95332975714226E-0003 3.95119990222888E-0003 - 3.94947636351625E-0003 3.94815666507971E-0003 3.94723833141811E-0003 3.94671888682893E-0003 3.94659585580539E-0003 - 3.94686676303810E-0003 3.94752913328457E-0003 3.94858049160181E-0003 3.95001836321593E-0003 3.95184027358973E-0003 - 3.95404374852337E-0003 3.95662631395799E-0003 3.95958549620835E-0003 3.96291882216291E-0003 3.96662381875694E-0003 - 3.97069801346976E-0003 3.97513893412823E-0003 3.97994410913992E-0003 3.98511106729659E-0003 3.99063733777589E-0003 - 3.99652045044082E-0003 4.00275793567625E-0003 4.00934732435770E-0003 4.01628614805169E-0003 4.02357193878603E-0003 - 4.03120222931642E-0003 4.03917455319466E-0003 4.04748644447270E-0003 4.05613543800251E-0003 4.06511906937187E-0003 - 4.07443487493952E-0003 4.08408039180403E-0003 4.09405315803778E-0003 4.10435071232459E-0003 4.11497059435935E-0003 - 4.12591034471766E-0003 4.13716750485793E-0003 4.14873961715663E-0003 4.16062422504313E-0003 4.17281887286925E-0003 - 4.18532110594452E-0003 4.19812847073755E-0003 4.21123851461272E-0003 4.22464878623074E-0003 4.23835683521899E-0003 - 4.25236021240620E-0003 4.26665646969189E-0003 4.28124316018150E-0003 4.29611783835492E-0003 4.31127805963689E-0003 - 4.32672138099748E-0003 4.34244536038950E-0003 4.35844755731595E-0003 4.37472553263308E-0003 4.39127684818702E-0003 - 4.40809906761426E-0003 4.42518975574563E-0003 4.44254647887479E-0003 4.46016680479409E-0003 4.47804830256410E-0003 - 4.49618854308196E-0003 4.51458509848486E-0003 4.53323554251872E-0003 4.55213745054084E-0003 4.57128839955584E-0003 - 4.59068596795182E-0003 4.61032773613595E-0003 4.63021128577084E-0003 4.65033420047697E-0003 4.67069406550218E-0003 - 4.69128846775765E-0003 4.71211499605406E-0003 4.73317124083757E-0003 4.75445479452609E-0003 4.77596325121193E-0003 - 4.79769420686463E-0003 4.81964525940065E-0003 4.84181400858603E-0003 4.86419805610599E-0003 4.88679500560123E-0003 - 4.90960246267078E-0003 4.93261803490830E-0003 4.95583933197181E-0003 4.97926396548643E-0003 5.00288954914754E-0003 - 5.02671369879058E-0003 5.05073403222691E-0003 5.07494816961454E-0003 5.09935373305998E-0003 5.12394834698905E-0003 - 5.14872963788237E-0003 5.17369523457950E-0003 5.19884276814822E-0003 5.22416987178718E-0003 5.24967418119721E-0003 - 5.27535333414926E-0003 5.30120497095623E-0003 5.32722673424181E-0003 5.35341626901062E-0003 5.37977122258439E-0003 - 5.40628924477261E-0003 5.43296798790934E-0003 5.45980510662187E-0003 5.48679825820258E-0003 5.51394510241115E-0003 - 5.54124330147783E-0003 5.56869052034145E-0003 5.59628442645157E-0003 5.62402268963755E-0003 5.65190298278283E-0003 - 5.67992298109028E-0003 5.70808036268949E-0003 5.73637280806967E-0003 5.76479800078788E-0003 5.79335362693542E-0003 - 5.82203737544337E-0003 5.85084693795176E-0003 5.87978000904812E-0003 5.90883428593509E-0003 5.93800746887060E-0003 - 5.96729726086905E-0003 5.99670136794008E-0003 6.02621749882315E-0003 6.05584336536093E-0003 6.08557668230115E-0003 - 6.11541516736744E-0003 6.14535654126288E-0003 6.17539852780828E-0003 6.20553885367653E-0003 6.23577524886743E-0003 - 6.26610544627385E-0003 6.29652718188723E-0003 6.32703819500342E-0003 6.35763622792328E-0003 6.38831902612474E-0003 - 6.41908433826657E-0003 6.44992991639423E-0003 6.48085351557306E-0003 6.51185289426267E-0003 6.54292581411855E-0003 - 6.57407004016435E-0003 6.60528334066092E-0003 6.63656348727864E-0003 6.66790825500015E-0003 6.69931542232662E-0003 - 6.73078277094419E-0003 6.76230808606525E-0003 6.79388915639863E-0003 6.82552377408604E-0003 6.85720973473970E-0003 - 6.88894483748003E-0003 6.92072688490583E-0003 6.95255368323336E-0003 6.98442304223273E-0003 7.01633277526571E-0003 - 7.04828069928969E-0003 7.08026463486173E-0003 7.11228240624394E-0003 7.14433184132305E-0003 7.17641077166514E-0003 - 7.20851703263809E-0003 7.24064846324659E-0003 7.27280290623761E-0003 7.30497820818914E-0003 7.33717221939588E-0003 - 7.36938279405949E-0003 7.40160779003887E-0003 7.43384506929442E-0003 7.46609249741818E-0003 7.49834794401048E-0003 - 7.53060928253178E-0003 7.56287439044233E-0003 7.59514114902003E-0003 7.62740744361884E-0003 7.65967116353743E-0003 - 7.69193020198949E-0003 7.72418245643016E-0003 7.75642582818729E-0003 7.78865822266916E-0003 7.82087754931788E-0003 - 7.85308172183430E-0003 7.88526865792782E-0003 7.91743627943946E-0003 7.94958251238019E-0003 7.98170528696921E-0003 - 8.01380253755343E-0003 8.04587220274770E-0003 8.07791222537125E-0003 8.10992055252005E-0003 8.14189513553726E-0003 - 8.17383393001759E-0003 8.20573489596477E-0003 8.23759599755794E-0003 8.26941520351319E-0003 8.30119048666292E-0003 - 8.33291982440241E-0003 8.36460119849028E-0003 8.39623259507001E-0003 8.42781200469141E-0003 8.45933742245128E-0003 - 8.49080684779374E-0003 8.52221828477009E-0003 8.55356974178798E-0003 8.58485923192243E-0003 8.61608477273317E-0003 - 8.64724438632025E-0003 8.67833609939679E-0003 8.70935794325953E-0003 8.74030795375932E-0003 8.77118417137394E-0003 - 8.80198464136612E-0003 8.83270741354960E-0003 8.86335054239601E-0003 8.89391208712480E-0003 8.92439011162264E-0003 - 8.95478268466993E-0003 8.98508787955305E-0003 9.01530377444442E-0003 9.04542845235606E-0003 9.07546000099073E-0003 - 9.10539651293439E-0003 9.13523608557559E-0003 9.16497682116146E-0003 9.19461682681958E-0003 9.22415421457979E-0003 - 9.25358710120813E-0003 9.28291360870718E-0003 9.31213186373987E-0003 9.34123999801020E-0003 9.37023614811423E-0003 - 9.39911845575014E-0003 9.42788506762045E-0003 9.45653413526582E-0003 9.48506381546332E-0003 9.51347226988914E-0003 - 9.54175766538017E-0003 9.56991817376768E-0003 9.59795197200203E-0003 9.62585724227748E-0003 9.65363217164321E-0003 - 9.68127495247060E-0003 9.70878378235546E-0003 9.73615686384884E-0003 9.76339240487312E-0003 9.79048861845286E-0003 - 9.81744372290826E-0003 9.84425594170581E-0003 9.87092350361761E-0003 9.89744464267489E-0003 9.92381759817299E-0003 - 9.95004061469353E-0003 9.97611194217804E-0003 1.00020298358128E-0002 1.00277925561713E-0002 1.00533983692362E-0002 - 1.00788455461987E-0002 1.01041323637722E-0002 1.01292571040431E-0002 1.01542180544586E-0002 1.01790135079695E-0002 - 1.02036417628798E-0002 1.02281011229903E-0002 1.02523898976200E-0002 1.02765064014743E-0002 1.03004489548389E-0002 - 1.03242158834817E-0002 1.03478055186237E-0002 1.03712161972021E-0002 1.03944462615140E-0002 1.04174940595659E-0002 - 1.04403579448548E-0002 1.04630362765459E-0002 1.04855274193396E-0002 1.05078297435976E-0002 1.05299416253131E-0002 - 1.05518614461510E-0002 1.05735875934182E-0002 1.05951184601036E-0002 1.06164524448313E-0002 1.06375879519865E-0002 - 1.06585233917208E-0002 1.06792571797504E-0002 1.06997877377066E-0002 1.07201134928643E-0002 1.07402328783376E-0002 - 1.07601443329471E-0002 1.07798463013626E-0002 1.07993372340398E-0002 1.08186155872253E-0002 1.08376798230828E-0002 - 1.08565284094914E-0002 1.08751598202921E-0002 1.08935725351555E-0002 1.09117650396382E-0002 1.09297358251027E-0002 - 1.09474833889980E-0002 1.09650062345030E-0002 1.09823028708768E-0002 1.09993718131704E-0002 1.10162115824915E-0002 - 1.10328207059056E-0002 1.10491977163902E-0002 1.10653411529948E-0002 1.10812495607089E-0002 1.10969214904837E-0002 - 1.11123554994286E-0002 1.11275501505735E-0002 1.11425040130132E-0002 1.11572156619472E-0002 1.11716836785292E-0002 - 1.11859066501493E-0002 1.11998831701629E-0002 1.12136118380687E-0002 1.12270912594450E-0002 1.12403200460590E-0002 - 1.12532968157336E-0002 1.12660201924569E-0002 1.12784888063873E-0002 1.12907012938245E-0002 1.13026562973014E-0002 - 1.13143524654337E-0002 1.13257884531157E-0002 1.13369629213354E-0002 1.13478745375091E-0002 1.13585219750358E-0002 - 1.13689039136848E-0002 1.13790190394616E-0002 1.13888660445273E-0002 1.13984436275331E-0002 1.14077504931403E-0002 - 1.14167853523899E-0002 1.14255469227257E-0002 1.14340339277393E-0002 1.14422450974355E-0002 1.14501791680476E-0002 - 1.14578348822680E-0002 1.14652109890105E-0002 1.14723062435900E-0002 1.14791194076928E-0002 1.14856492493298E-0002 - 1.14918945429120E-0002 1.14978540692382E-0002 1.15035266155181E-0002 1.15089109753429E-0002 1.15140059486385E-0002 - 1.15188103419147E-0002 1.15233229680098E-0002 1.15275426461654E-0002 1.15314682021538E-0002 1.15350984681272E-0002 - 1.15384322827793E-0002 1.15414684911599E-0002 1.15442059448888E-0002 1.15466435020920E-0002 1.15487800272678E-0002 - 1.15506143915360E-0002 1.15521454724346E-0002 1.15533721541344E-0002 1.15542933272003E-0002 1.15549078887712E-0002 - 1.15552147426007E-0002 1.15552127988877E-0002 1.15549009744394E-0002 1.15542781925718E-0002 1.15533433833074E-0002 - 1.15520954830664E-0002 1.15505334349343E-0002 1.15486561885971E-0002 1.15464627003299E-0002 1.15439519330024E-0002 - 1.15411228560839E-0002 1.15379744456494E-0002 1.15345056844723E-0002 1.15307155618899E-0002 1.15266030738444E-0002 - 1.15221672230102E-0002 1.15174070186425E-0002 1.15123214766877E-0002 1.15069096197014E-0002 1.15011704769761E-0002 - 1.14951030844251E-0002 1.14887064846745E-0002 1.14819797269994E-0002 1.14749218674170E-0002 1.14675319685865E-0002 - 1.14598090998677E-0002 1.14517523373966E-0002 1.14433607639153E-0002 1.14346334690233E-0002 1.14255695488848E-0002 - 1.14161681065150E-0002 1.14064282516277E-0002 1.13963491006230E-0002 1.13859297766986E-0002 1.13751694098198E-0002 - 1.13640671366377E-0002 1.13526221006348E-0002 1.13408334519902E-0002 1.13287003476555E-0002 1.13162219513953E-0002 - 1.13033974337926E-0002 1.12902259720791E-0002 1.12767067503863E-0002 1.12628389595404E-0002 1.12486217972608E-0002 - 1.12340544679377E-0002 1.12191361829710E-0002 1.12038661602840E-0002 1.11882436248564E-0002 1.11722678083776E-0002 - 1.11559379493057E-0002 1.11392532930485E-0002 1.11222130916348E-0002 1.11048166041421E-0002 1.10870630963681E-0002 - 1.10689518409592E-0002 1.10504821173455E-0002 1.10316532119224E-0002 1.10124644177923E-0002 1.09929150349809E-0002 - 1.09730043703198E-0002 1.09527317375576E-0002 1.09320964572245E-0002 1.09110978567961E-0002 1.08897352704527E-0002 - 1.08680080394014E-0002 1.08459155116354E-0002 1.08234570420272E-0002 1.08006319922990E-0002 1.07774397310636E-0002 - 1.07538796338120E-0002 1.07299510829011E-0002 1.07056534675420E-0002 1.06809861838935E-0002 1.06559486348908E-0002 - 1.06305402304807E-0002 1.06047603873977E-0002 1.05786085292398E-0002 1.05520840865975E-0002 1.05251864968477E-0002 - 1.04979152043533E-0002 1.04702696603270E-0002 1.04422493227665E-0002 1.04138536567248E-0002 1.03850821341213E-0002 - 1.03559342336940E-0002 1.03264094411114E-0002 1.02965072489067E-0002 1.02662271566606E-0002 1.02355686706347E-0002 - 1.02045313041137E-0002 1.01731145772863E-0002 1.01413180172156E-0002 1.01091411578800E-0002 1.00765835401074E-0002 - 1.00436447116162E-0002 1.00103242271802E-0002 9.97662164831512E-0003 9.94253654347855E-0003 9.90806848798717E-0003 - 9.87321706421681E-0003 9.83798186121797E-0003 9.80236247511112E-0003 9.76635850886166E-0003 9.72996957230294E-0003 - 9.69319528217711E-0003 9.65603526214046E-0003 9.61848914280428E-0003 9.58055656151838E-0003 9.54223716267809E-0003 - 9.50353059748116E-0003 9.46443652408392E-0003 9.42495460742021E-0003 9.38508451947304E-0003 9.34482593897800E-0003 - 9.30417855162394E-0003 9.26314204996943E-0003 9.22171613344810E-0003 9.17990050838276E-0003 9.13769488798184E-0003 - 9.09509899227354E-0003 9.05211254831556E-0003 9.00873528983590E-0003 8.96496695761151E-0003 8.92080729913566E-0003 - 8.87625606890776E-0003 8.83131302823408E-0003 8.78597794520624E-0003 8.74025059491110E-0003 8.69413075923134E-0003 - 8.64761822685957E-0003 8.60071279341032E-0003 8.55341426133629E-0003 8.50572243992464E-0003 8.45763714527541E-0003 - 8.40915820039584E-0003 8.36028543505407E-0003 8.31101868590018E-0003 8.26135779641788E-0003 8.21130261690293E-0003 - 8.16085300447724E-0003 8.11000882309400E-0003 8.05876994347148E-0003 8.00713624324981E-0003 7.95510760677311E-0003 - 7.90268392522843E-0003 7.84986509662409E-0003 7.79665102574129E-0003 7.74304162415700E-0003 7.68903681024913E-0003 - 7.63463650918372E-0003 7.57984065289326E-0003 7.52464918009067E-0003 7.46906203627442E-0003 7.41307917370674E-0003 - 7.35670055138297E-0003 7.29992613506340E-0003 7.24275589734089E-0003 7.18518981745817E-0003 7.12722788141123E-0003 - 7.06887008200796E-0003 7.01011641872116E-0003 6.95096689779192E-0003 6.89142153214517E-0003 6.83148034147515E-0003 - 6.77114335209834E-0003 6.71041059719998E-0003 6.64928211645426E-0003 6.58775795642304E-0003 6.52583817024756E-0003 - 6.46352281776970E-0003 6.40081196554588E-0003 6.33770568679830E-0003 6.27420406134812E-0003 6.21030717577270E-0003 - 6.14601512323130E-0003 6.08132800357750E-0003 6.01624592325651E-0003 5.95076899541765E-0003 5.88489733977574E-0003 - 5.81863108271458E-0003 5.75197035716627E-0003 5.68491530274158E-0003 5.61746606563617E-0003 5.54962279859943E-0003 - 5.48138566102910E-0003 5.41275481884142E-0003 5.34373044456567E-0003 5.27431271732205E-0003 5.20450182271870E-0003 - 5.13429795294626E-0003 5.06370130678264E-0003 4.99271208948097E-0003 4.92133051284622E-0003 4.84955679518603E-0003 - 4.77739116139629E-0003 4.70483384276813E-0003 4.63188507717239E-0003 4.55854510892946E-0003 4.48481418884995E-0003 - 4.41069257423930E-0003 4.33618052883955E-0003 4.26127832284295E-0003 4.18598623295059E-0003 4.11030454221507E-0003 - 4.03423354018910E-0003 3.95777352280410E-0003 3.88092479243784E-0003 3.80368765785598E-0003 3.72606243421667E-0003 - 3.64804944307511E-0003 3.56964901239715E-0003 3.49086147643765E-0003 3.41168717588025E-0003 3.33212645772469E-0003 - 3.25217967532743E-0003 3.17184718838809E-0003 3.09112936289988E-0003 3.01002657117212E-0003 2.92853919187983E-0003 - 2.84666760989676E-0003 2.76441221639010E-0003 2.68177340891518E-0003 2.59875159115816E-0003 2.51534717314808E-0003 - 2.43156057108069E-0003 2.34739220745833E-0003 2.26284251098595E-0003 2.17791191654837E-0003 2.09260086525984E-0003 - 2.00690980441421E-0003 1.92083918754346E-0003 1.83438947424132E-0003 1.74756113036643E-0003 1.66035462786588E-0003 - 1.57277044487894E-0003 1.48480906560576E-0003 1.39647098041108E-0003 1.30775668575617E-0003 1.21866668416691E-0003 - 1.12920148431040E-0003 1.03936160088156E-0003 9.49147554643586E-0004 8.58559872404948E-0004 7.67599087050819E-0004 - 6.76265737456684E-0004 5.84560368492510E-0004 4.92483531090330E-0004 4.00035782094379E-0004 3.07217684419283E-0004 - 2.14029806909206E-0004 1.20472724314757E-0004 2.65470173786735E-0005 -6.77467272235241E-0005 -1.62407916897584E-0004 --2.57435953180880E-0004 -3.52830231665784E-0004 -4.48590142113554E-0004 -5.44715068350487E-0004 -6.41204388418165E-0004 --7.38057474478701E-0004 -8.35273692865193E-0004 -9.32852404114058E-0004 -1.03079296291565E-0003 -1.12909471820114E-0003 --1.22775701311128E-0003 -1.32677918505609E-0003 -1.42616056562007E-0003 -1.52590048072187E-0003 -1.62599825049220E-0003 --1.72645318939725E-0003 -1.82726460619844E-0003 -1.92843180396674E-0003 -2.02995408006974E-0003 -2.13183072627697E-0003 --2.23406102865597E-0003 -2.33664426768682E-0003 -2.43957971819461E-0003 -2.54286664948219E-0003 -2.64650432513527E-0003 --2.75049200329171E-0003 -2.85482893645578E-0003 -2.95951437160362E-0003 -3.06454755019778E-0003 -3.16992770814708E-0003 --3.27565407593960E-0003 -3.38172587845674E-0003 -3.48814233519738E-0003 -3.59490266019225E-0003 -3.70200606196378E-0003 --3.80945174369573E-0003 -3.91723890311108E-0003 -4.02536673255046E-0003 -4.13383441894124E-0003 -4.24264114386694E-0003 --4.35178608356365E-0003 -4.46126840893482E-0003 -4.57108728551116E-0003 -4.68124187359319E-0003 -4.79173132814736E-0003 --4.90255479885734E-0003 -5.01371143016617E-0003 -5.12520036124546E-0003 -5.23702072609243E-0003 -5.34917165342594E-0003 --5.46165226682020E-0003 -5.57446168465568E-0003 -5.68759902010653E-0003 -5.80106338129269E-0003 -5.91485387108448E-0003 --6.02896958732790E-0003 -6.14340962272242E-0003 -6.25817306490912E-0003 -6.37325899643995E-0003 -6.48866649482937E-0003 --6.60439463257852E-0003 -6.72044247710792E-0003 -6.83680909091896E-0003 -6.95349353146258E-0003 -7.07049485127332E-0003 --7.18781209789297E-0003 -7.30544431396804E-0003 -7.42339053720087E-0003 -7.54164980041975E-0003 -7.66022113154830E-0003 --7.77910355365734E-0003 -7.89829608497096E-0003 -8.01779773890009E-0003 -8.13760752400279E-0003 -8.25772444408199E-0003 --8.37814749813667E-0003 -8.49887568043218E-0003 -8.61990798047887E-0003 -8.74124338306583E-0003 -8.86288086825786E-0003 --8.98481941146599E-0003 -9.10705798341694E-0003 -9.22959555017777E-0003 -9.35243107318046E-0003 -9.47556350924659E-0003 --9.59899181062120E-0003 -9.72271492493314E-0003 -9.84673179527493E-0003 -9.97104136020910E-0003 -1.00956425537102E-0002 --1.02205343053366E-0002 -1.03457155401177E-0002 -1.04711851785688E-0002 -1.05969421368548E-0002 -1.07229853266487E-0002 --1.08493136551845E-0002 -1.09759260253740E-0002 -1.11028213357029E-0002 -1.12299984803291E-0002 -1.13574563490712E-0002 --1.14851938274148E-0002 -1.16132097965746E-0002 -1.17415031334635E-0002 -1.18700727107554E-0002 -1.19989173968633E-0002 --1.21280360560020E-0002 -1.22574275481663E-0002 -1.23870907291937E-0002 -1.25170244507708E-0002 -1.26472275603844E-0002 --1.27776989014395E-0002 -1.29084373132563E-0002 -1.30394416310494E-0002 -1.31707106859716E-0002 -1.33022433051484E-0002 --1.34340383116847E-0002 -1.35660945246347E-0002 -1.36984107591565E-0002 -1.38309858263804E-0002 -1.39638185335084E-0002 --1.40969076838484E-0002 -1.42302520768029E-0002 -1.43638505078298E-0002 -1.44977017686430E-0002 -1.46318046470351E-0002 --1.47661579269949E-0002 -1.49007603887240E-0002 -1.50356108086340E-0002 -1.51707079594281E-0002 -1.53060506100248E-0002 --1.54416375256202E-0002 -1.55774674677601E-0002 -1.57135391943102E-0002 -1.58498514594721E-0002 -1.59864030138002E-0002 --1.61231926042917E-0002 -1.62602189742925E-0002 -1.63974808636518E-0002 -1.65349770086330E-0002 -1.66727061419665E-0002 --1.68106669929130E-0002 -1.69488582872333E-0002 -1.70872787472425E-0002 -1.72259270918123E-0002 -1.73648020363828E-0002 --1.75039022930307E-0002 -1.76432265704621E-0002 -1.77827735739882E-0002 -1.79225420056616E-0002 -1.80625305641454E-0002 --1.82027379449152E-0002 -1.83431628400949E-0002 -1.84838039386217E-0002 -1.86246599262031E-0002 -1.87657294853564E-0002 --1.89070112954119E-0002 -1.90485040325574E-0002 -1.91902063698508E-0002 -1.93321169772457E-0002 -1.94742345216041E-0002 --1.96165576667691E-0002 -1.97590850734466E-0002 -1.99018153994552E-0002 -2.00447472995292E-0002 -2.01878794254377E-0002 --2.03312104260716E-0002 -2.04747389473023E-0002 -2.06184636321618E-0002 -2.07623831207900E-0002 -2.09064960504654E-0002 --2.10508010556368E-0002 -2.11952967679352E-0002 -2.13399818162100E-0002 -2.14848548265505E-0002 -2.16299144222848E-0002 --2.17751592240530E-0002 -2.19205878497819E-0002 -2.20661989147402E-0002 -2.22119910315230E-0002 -2.23579628101249E-0002 --2.25041128579573E-0002 -2.26504397797961E-0002 -2.27969421779060E-0002 -2.29436186520256E-0002 -2.30904677993471E-0002 --2.32374882146413E-0002 -2.33846784901677E-0002 -2.35320372157478E-0002 -2.36795629788391E-0002 -2.38272543644678E-0002 --2.39751099553079E-0002 -2.41231283317025E-0002 -2.42713080716871E-0002 -2.44196477509456E-0002 -2.45681459429825E-0002 --2.47168012189863E-0002 -2.48656121479545E-0002 -2.50145772967115E-0002 -2.51636952298562E-0002 -2.53129645098962E-0002 --2.54623836971493E-0002 -2.56119513499288E-0002 -2.57616660243798E-0002 -2.59115262746507E-0002 -2.60615306528410E-0002 --2.62116777090803E-0002 -2.63619659914801E-0002 -2.65123940462318E-0002 -2.66629604175868E-0002 -2.68136636478981E-0002 --2.69645022776379E-0002 -2.71154748454162E-0002 -2.72665798880213E-0002 -2.74178159404483E-0002 -2.75691815359300E-0002 --2.77206752058764E-0002 -2.78722954800421E-0002 -2.80240408864225E-0002 -2.81759099513990E-0002 -2.83279011996302E-0002 --2.84800131541730E-0002 -2.86322443364873E-0002 -2.87845932664585E-0002 -2.89370584623970E-0002 -2.90896384410848E-0002 --2.92423317178404E-0002 -2.93951368064576E-0002 -2.95480522192847E-0002 -2.97010764672708E-0002 -2.98542080599331E-0002 --3.00074455054309E-0002 -3.01607873105470E-0002 -3.03142319807856E-0002 -3.04677780202878E-0002 -3.06214239319574E-0002 --3.07751682174615E-0002 -3.09290093772061E-0002 -3.10829459104206E-0002 -3.12369763151763E-0002 -3.13910990883347E-0002 --3.15453127257348E-0002 -3.16996157220196E-0002 -3.18540065708331E-0002 -3.20084837647211E-0002 -3.21630457952775E-0002 --3.23176911530401E-0002 -3.24724183276040E-0002 -3.26272258076303E-0002 -3.27821120808559E-0002 -3.29370756341356E-0002 --3.30921149534518E-0002 -3.32472285239470E-0002 -3.34024148299664E-0002 -3.35576723550582E-0002 -3.37129995820344E-0002 --3.38683949929336E-0002 -3.40238570691055E-0002 -3.41793842912445E-0002 -3.43349751393656E-0002 -3.44906280928289E-0002 --3.46463416304427E-0002 -3.48021142304219E-0002 -3.49579443704301E-0002 -3.51138305275850E-0002 -3.52697711785432E-0002 --3.54257647994534E-0002 -3.55818098660512E-0002 -3.57379048536449E-0002 -3.58940482371349E-0002 -3.60502384910755E-0002 --3.62064740896891E-0002 -3.63627535068435E-0002 -3.65190752161505E-0002 -3.66754376909864E-0002 -3.68318394044349E-0002 --3.69882788294104E-0002 -3.71447544386543E-0002 -3.73012647047161E-0002 -3.74578081000626E-0002 -3.76143830970456E-0002 --3.77709881679023E-0002 -3.79276217848834E-0002 -3.80842824201783E-0002 -3.82409685460006E-0002 -3.83976786345980E-0002 --3.85544111582487E-0002 -3.87111645893705E-0002 -3.88679374004127E-0002 -3.90247280640509E-0002 -3.91815350530646E-0002 --3.93383568404562E-0002 -3.94951918994328E-0002 -3.96520387034735E-0002 -3.98088957262779E-0002 -3.99657614418947E-0002 --4.01226343246847E-0002 -4.02795128493690E-0002 -4.04363954910018E-0002 -4.05932807251031E-0002 -4.07501670276131E-0002 --4.09070528749069E-0002 -4.10639367438617E-0002 -4.12208171118722E-0002 -4.13776924568848E-0002 -4.15345612573841E-0002 --4.16914219924938E-0002 -4.18482731418921E-0002 -4.20051131859695E-0002 -4.21619406057633E-0002 -4.23187538830061E-0002 --4.24755515002079E-0002 -4.26323319405524E-0002 -4.27890936880787E-0002 -4.29458352276113E-0002 -4.31025550447990E-0002 --4.32592516261689E-0002 -4.34159234591507E-0002 -4.35725690320594E-0002 -4.37291868341676E-0002 -4.38857753557494E-0002 --4.40423330880251E-0002 -4.41988585233095E-0002 -4.43553501548898E-0002 -4.45118064771787E-0002 -4.46682259857163E-0002 --4.48246071771237E-0002 -4.49809485492280E-0002 -4.51372486010113E-0002 -4.52935058326886E-0002 -4.54497187457088E-0002 --4.56058858427994E-0002 -4.57620056279630E-0002 -4.59180766065504E-0002 -4.60740972852426E-0002 -4.62300661721008E-0002 --4.63859817766004E-0002 -4.65418426096427E-0002 -4.66976471835706E-0002 -4.68533940122321E-0002 -4.70090816109773E-0002 --4.71647084966836E-0002 -4.73202731878149E-0002 -4.74757742044088E-0002 -4.76312100681500E-0002 -4.77865793023240E-0002 --4.79418804319240E-0002 -4.80971119836288E-0002 -4.82522724858428E-0002 -4.84073604687452E-0002 -4.85623744642588E-0002 --4.87173130061469E-0002 -4.88721746299822E-0002 -4.90269578732149E-0002 -4.91816612751703E-0002 -4.93362833771126E-0002 --4.94908227222134E-0002 -4.96452778556252E-0002 -4.97996473245074E-0002 -4.99539296780138E-0002 -5.01081234673996E-0002 --5.02622272459234E-0002 -5.04162395690116E-0002 -5.05701589941645E-0002 -5.07239840810782E-0002 -5.08777133916087E-0002 --5.10313454898401E-0002 -5.11848789420637E-0002 -5.13383123168562E-0002 -5.14916441850769E-0002 -5.16448731198895E-0002 --5.17979976968213E-0002 -5.19510164937513E-0002 -5.21039280909504E-0002 -5.22567310711367E-0002 -5.24094240194296E-0002 --5.25620055234716E-0002 -5.27144741733784E-0002 -5.28668285617936E-0002 -5.30190672839436E-0002 -5.31711889376019E-0002 --5.33231921231534E-0002 -5.34750754436212E-0002 -5.36268375047021E-0002 -5.37784769147643E-0002 -5.39299922848692E-0002 --5.40813822288744E-0002 -5.42326453633307E-0002 -5.43837803076378E-0002 -5.45347856839752E-0002 -5.46856601173718E-0002 --5.48364022357658E-0002 -5.49870106699210E-0002 -5.51374840535925E-0002 -5.52878210234286E-0002 -5.54380202190835E-0002 --5.55880802832107E-0002 -5.57379998614605E-0002 -5.58877776025644E-0002 -5.60374121583330E-0002 -5.61869021836563E-0002 --5.63362463365783E-0002 -5.64854432782829E-0002 -5.66344916731376E-0002 -5.67833901887181E-0002 -5.69321374958438E-0002 --5.70807322685818E-0002 -5.72291731842729E-0002 -5.73774589235873E-0002 -5.75255881705231E-0002 -5.76735596124425E-0002 --5.78213719400818E-0002 -5.79690238476050E-0002 -5.81165140325994E-0002 -5.82638411961384E-0002 -5.84110040427464E-0002 --5.85580012805024E-0002 -5.87048316209950E-0002 -5.88514937793880E-0002 -5.89979864744328E-0002 -5.91443084285126E-0002 --5.92904583676090E-0002 -5.94364350214161E-0002 -5.95822371232857E-0002 -5.97278634103000E-0002 -5.98733126232822E-0002 --6.00185835068016E-0002 -6.01636748092447E-0002 -6.03085852827962E-0002 -6.04533136834836E-0002 -6.05978587712110E-0002 --6.07422193097389E-0002 -6.08863940667856E-0002 -6.10303818139779E-0002 -6.11741813269095E-0002 -6.13177913851804E-0002 --6.14612107723713E-0002 -6.16044382761410E-0002 -6.17474726881692E-0002 -6.18903128042469E-0002 -6.20329574242673E-0002 --6.21754053522513E-0002 -6.23176553963962E-0002 -6.24597063690650E-0002 -6.26015570868331E-0002 -6.27432063705085E-0002 --6.28846530451522E-0002 -6.30258959400960E-0002 -6.31669338890018E-0002 -6.33077657298282E-0002 -6.34483903048927E-0002 --6.35888064608989E-0002 -6.37290130489229E-0002 -6.38690089245019E-0002 -6.40087929475769E-0002 -6.41483639825836E-0002 --6.42877208984410E-0002 -6.44268625685868E-0002 -6.45657878709928E-0002 -6.47044956881880E-0002 -6.48429849073105E-0002 --6.49812544200823E-0002 -6.51193031228705E-0002 -6.52571299166820E-0002 -6.53947337072220E-0002 -6.55321134048887E-0002 --6.56692679247983E-0002 -6.58061961868133E-0002 -6.59428971155676E-0002 -6.60793696404972E-0002 -6.62156126958341E-0002 --6.63516252206705E-0002 -6.64874061589289E-0002 -6.66229544594386E-0002 -6.67582690759172E-0002 -6.68933489670308E-0002 --6.70281930963633E-0002 -6.71628004324935E-0002 -6.72971699489766E-0002 -6.74313006244092E-0002 -6.75651914423865E-0002 --6.76988413916039E-0002 -6.78322494658019E-0002 -6.79654146638386E-0002 -6.80983359897055E-0002 -6.82310124525338E-0002 --6.83634430666007E-0002 -6.84956268514017E-0002 -6.86275628316371E-0002 -6.87592500372162E-0002 -6.88906875033295E-0002 --6.90218742704208E-0002 -6.91528093842398E-0002 -6.92834918958538E-0002 -6.94139208616488E-0002 -6.95440953433850E-0002 --6.96740144082029E-0002 -6.98036771286278E-0002 -6.99330825826199E-0002 -7.00622298535636E-0002 -7.01911180303230E-0002 --7.03197462072214E-0002 -7.04481134841042E-0002 -7.05762189663108E-0002 -7.07040617647598E-0002 -7.08316409958894E-0002 --7.09589557817637E-0002 -7.10860052500068E-0002 -7.12127885338868E-0002 -7.13393047723106E-0002 -7.14655531098329E-0002 --7.15915326967092E-0002 -7.17172426888778E-0002 -7.18426822479936E-0002 -7.19678505414642E-0002 -7.20927467424413E-0002 --7.22173700298550E-0002 -7.23417195884372E-0002 -7.24657946087330E-0002 -7.25895942871130E-0002 -7.27131178257890E-0002 --7.28363644328725E-0002 -7.29593333223474E-0002 -7.30820237140933E-0002 -7.32044348339344E-0002 -7.33265659136240E-0002 --7.34484161908904E-0002 -7.35699849094293E-0002 -7.36912713189370E-0002 -7.38122746751350E-0002 -7.39329942397640E-0002 --7.40534292806180E-0002 -7.41735790715830E-0002 -7.42934428925801E-0002 -7.44130200296872E-0002 -7.45323097750803E-0002 --7.46513114270620E-0002 -7.47700242901101E-0002 -7.48884476748554E-0002 -7.50065808981275E-0002 -7.51244232829690E-0002 --7.52419741586209E-0002 -7.53592328605851E-0002 -7.54761987306102E-0002 -7.55928711167076E-0002 -7.57092493732003E-0002 --7.58253328606786E-0002 -7.59411209460779E-0002 -7.60566130026689E-0002 -7.61718084100591E-0002 -7.62867065542325E-0002 --7.64013068275559E-0002 -7.65156086287887E-0002 -7.66296113631047E-0002 -7.67433144421040E-0002 -7.68567172838370E-0002 --7.69698193128071E-0002 -7.70826199599893E-0002 -7.71951186628502E-0002 -7.73073148653549E-0002 -7.74192080179860E-0002 --7.75307975777709E-0002 -7.76420830082540E-0002 -7.77530637795707E-0002 -7.78637393684122E-0002 -7.79741092580550E-0002 --7.80841729383878E-0002 -7.81939299059183E-0002 -7.83033796637610E-0002 -7.84125217216984E-0002 -7.85213555961509E-0002 --7.86298808102141E-0002 -7.87380968936728E-0002 -7.88460033829862E-0002 -7.89535998213470E-0002 -7.90608857586513E-0002 --7.91678607515281E-0002 -7.92745243633564E-0002 -7.93808761642773E-0002 -7.94869157311936E-0002 -7.95926426477947E-0002 --7.96980565045560E-0002 -7.98031568987760E-0002 -7.99079434345511E-0002 -8.00124157228129E-0002 -8.01165733813474E-0002 --8.02204160347629E-0002 -8.03239433145566E-0002 -8.04271548590869E-0002 -8.05300503136034E-0002 -8.06326293302413E-0002 --8.07348915680463E-0002 -8.08368366929842E-0002 -8.09384643779456E-0002 -8.10397743027512E-0002 -8.11407661541780E-0002 --8.12414396259549E-0002 -8.13417944187675E-0002 -8.14418302403018E-0002 -8.15415468052030E-0002 -8.16409438351266E-0002 --8.17400210587261E-0002 -8.18387782116729E-0002 -8.19372150366510E-0002 -8.20353312833890E-0002 -8.21331267086354E-0002 --8.22306010762081E-0002 -8.23277541569593E-0002 -8.24245857288252E-0002 -8.25210955767984E-0002 -8.26172834929629E-0002 --8.27131492764836E-0002 -8.28086927336164E-0002 -8.29039136777377E-0002 -8.29988119293099E-0002 -8.30933873159280E-0002 --8.31876396723047E-0002 -8.32815688402954E-0002 -8.33751746688656E-0002 -8.34684570141553E-0002 -8.35614157394321E-0002 --8.36540507151376E-0002 -8.37463618188607E-0002 -8.38383489353644E-0002 -8.39300119565834E-0002 -8.40213507816362E-0002 --8.41123653168304E-0002 -8.42030554756423E-0002 -8.42934211787666E-0002 -8.43834623540843E-0002 -8.44731789366845E-0002 --8.45625708688722E-0002 -8.46516381001479E-0002 -8.47403805872503E-0002 -8.48287982941233E-0002 -8.49168911919487E-0002 --8.50046592591284E-0002 -8.50921024813041E-0002 -8.51792208513455E-0002 -8.52660143693714E-0002 -8.53524830427320E-0002 --8.54386268860369E-0002 -8.55244459211252E-0002 -8.56099401771114E-0002 -8.56951096903333E-0002 -8.57799545044024E-0002 --8.58644746701856E-0002 -8.59486702458061E-0002 -8.60325412966446E-0002 -8.61160878953477E-0002 -8.61993101218270E-0002 --8.62822080632484E-0002 -8.63647818140562E-0002 -8.64470314759512E-0002 -8.65289571578975E-0002 -8.66105589761466E-0002 --8.66918370541842E-0002 -8.67727915227919E-0002 -8.68534225200102E-0002 -8.69337301911353E-0002 -8.70137146887380E-0002 --8.70933761726584E-0002 -8.71727148099909E-0002 -8.72517307751015E-0002 -8.73304242496109E-0002 -8.74087954224040E-0002 --8.74868444896276E-0002 -8.75645716546805E-0002 -8.76419771282175E-0002 -8.77190611281435E-0002 -8.77958238796173E-0002 --8.78722656150481E-0002 -8.79483865740770E-0002 -8.80241870035986E-0002 -8.80996671577431E-0002 -8.81748272978749E-0002 --8.82496676925858E-0002 -8.83241886176990E-0002 -8.83983903562635E-0002 -8.84722731985376E-0002 -8.85458374420101E-0002 --8.86190833913661E-0002 -8.86920113584993E-0002 -8.87646216625041E-0002 -8.88369146296742E-0002 -8.89088905934872E-0002 --8.89805498946070E-0002 -8.90518928808719E-0002 -8.91229199073006E-0002 -8.91936313360672E-0002 -8.92640275365129E-0002 --8.93341088851285E-0002 -8.94038757655499E-0002 -8.94733285685470E-0002 -8.95424676920304E-0002 -8.96112935410273E-0002 --8.96798065276851E-0002 -8.97480070712507E-0002 -8.98158955980829E-0002 -8.98834725416253E-0002 -8.99507383423935E-0002 --9.00176934480026E-0002 -9.00843383131048E-0002 -9.01506733994242E-0002 -9.02166991757303E-0002 -9.02824161178184E-0002 --9.03478247085229E-0002 -9.04129254376833E-0002 -9.04777188021545E-0002 -9.05422053057728E-0002 -9.06063854593777E-0002 --9.06702597807666E-0002 -9.07338287947035E-0002 -9.07970930329005E-0002 -9.08600530340130E-0002 -9.09227093436265E-0002 --9.09850625142224E-0002 -9.10471131052061E-0002 -9.11088616828610E-0002 -9.11703088203459E-0002 -9.12314550976863E-0002 --9.12923011017586E-0002 -9.13528474262699E-0002 -9.14130946717582E-0002 -9.14730434455603E-0002 -9.15326943618122E-0002 --9.15920480414276E-0002 -9.16511051120888E-0002 -9.17098662082215E-0002 -9.17683319709900E-0002 -9.18265030482761E-0002 --9.18843800946623E-0002 -9.19419637714232E-0002 -9.19992547464949E-0002 -9.20562536944824E-0002 -9.21129612966137E-0002 --9.21693782407455E-0002 -9.22255052213304E-0002 -9.22813429394175E-0002 -9.23368921026113E-0002 -9.23921534250782E-0002 --9.24471276275103E-0002 -9.25018154371106E-0002 -9.25562175875807E-0002 -9.26103348190960E-0002 -9.26641678782894E-0002 --9.27177175182263E-0002 -9.27709844983951E-0002 -9.28239695846754E-0002 -9.28766735493299E-0002 -9.29290971709674E-0002 --9.29812412345461E-0002 -9.30331065313217E-0002 -9.30846938588550E-0002 -9.31360040209733E-0002 -9.31870378277561E-0002 --9.32377960955042E-0002 -9.32882796467304E-0002 -9.33384893101231E-0002 -9.33884259205377E-0002 -9.34380903189573E-0002 --9.34874833524800E-0002 -9.35366058742999E-0002 -9.35854587436657E-0002 -9.36340428258699E-0002 -9.36823589922305E-0002 --9.37304081200372E-0002 -9.37781910925655E-0002 -9.38257087990183E-0002 -9.38729621345245E-0002 -9.39199520000896E-0002 --9.39666793025941E-0002 -9.40131449547450E-0002 -9.40593498750673E-0002 -9.41052949878639E-0002 -9.41509812231980E-0002 --9.41964095168469E-0002 -9.42415808103098E-0002 -9.42864960507358E-0002 -9.43311561909331E-0002 -9.43755621893177E-0002 --9.44197150098923E-0002 -9.44636156222063E-0002 -9.45072650013594E-0002 -9.45506641279244E-0002 -9.45938139879479E-0002 --9.46367155729206E-0002 -9.46793698797259E-0002 -9.47217779106293E-0002 -9.47639406732388E-0002 -9.48058591804682E-0002 --9.48475344505178E-0002 -9.48889675068307E-0002 -9.49301593780588E-0002 -9.49711110980473E-0002 -9.50118237057852E-0002 --9.50522982453720E-0002 -9.50925357659928E-0002 -9.51325373218828E-0002 -9.51723039722774E-0002 -9.52118367814022E-0002 --9.52511368184240E-0002 -9.52902051574169E-0002 -9.53290428773268E-0002 -9.53676510619287E-0002 -9.54060307998119E-0002 --9.54441831843178E-0002 -9.54821093135260E-0002 -9.55198102901914E-0002 -9.55572872217300E-0002 -9.55945412201707E-0002 --9.56315734021242E-0002 -9.56683848887290E-0002 -9.57049768056339E-0002 -9.57413502829349E-0002 -9.57775064551615E-0002 --9.58134464612206E-0002 -9.58491714443560E-0002 -9.58846825521197E-0002 -9.59199809363167E-0002 -9.59550677529786E-0002 --9.59899441623054E-0002 -9.60246113286483E-0002 -9.60590704204415E-0002 -9.60933226101700E-0002 -9.61273690743419E-0002 --9.61612109934187E-0002 -9.61948495517884E-0002 -9.62282859377271E-0002 -9.62615213433397E-0002 -9.62945569645175E-0002 --9.63273940009162E-0002 -9.63600336558762E-0002 -9.63924771364067E-0002 -9.64247256531217E-0002 -9.64567804202008E-0002 --9.64886426553532E-0002 -9.65203135797452E-0002 -9.65517944179783E-0002 -9.65830863980358E-0002 -9.66141907512196E-0002 --9.66451087121277E-0002 -9.66758415185797E-0002 -9.67063904115961E-0002 -9.67367566353189E-0002 -9.67669414369900E-0002 --9.67969460668798E-0002 -9.68267717782547E-0002 -9.68564198273094E-0002 -9.68858914731287E-0002 -9.69151879776406E-0002 --9.69443106055435E-0002 -9.69732606242732E-0002 -9.70020393039529E-0002 -9.70306479173220E-0002 -9.70590877396987E-0002 --9.70873600489225E-0002 -9.71154661253025E-0002 -9.71434072515571E-0002 -9.71711847127638E-0002 -9.71987997963113E-0002 --9.72262537918274E-0002 -9.72535479911395E-0002 -9.72806836882187E-0002 -9.73076621791050E-0002 -9.73344847618715E-0002 --9.73611527365627E-0002 -9.73876674051218E-0002 -9.74140300713610E-0002 -9.74402420408794E-0002 -9.74663046210131E-0002 --9.74922191207742E-0002 -9.75179868508053E-0002 -9.75436091232900E-0002 -9.75690872519288E-0002 -9.75944225518496E-0002 --9.76196163395697E-0002 -9.76446699329123E-0002 -9.76695846509617E-0002 -9.76943618139993E-0002 -9.77190027434341E-0002 --9.77435087617484E-0002 -9.77678811924276E-0002 -9.77921213599014E-0002 -9.78162305894794E-0002 -9.78402102072836E-0002 --9.78640615401946E-0002 -9.78877859157648E-0002 -9.79113846621801E-0002 -9.79348591081742E-0002 -9.79582105829716E-0002 --9.79814404162168E-0002 -9.80045499379165E-0002 -9.80275404783526E-0002 -9.80504133680338E-0002 -9.80731699376268E-0002 --9.80958115178721E-0002 -9.81183394395278E-0002 -9.81407550332987E-0002 -9.81630596297654E-0002 -9.81852545593100E-0002 --9.82073411520571E-0002 -9.82293207377856E-0002 -9.82511946458743E-0002 -9.82729642052210E-0002 -9.82946307441677E-0002 --9.83161955904390E-0002 -9.83376600710597E-0002 -9.83590255122844E-0002 -9.83802932395194E-0002 -9.84014645772623E-0002 --9.84225408490074E-0002 -9.84435233771876E-0002 -9.84644134830868E-0002 -9.84852124867761E-0002 -9.85059217070242E-0002 --9.85265424612300E-0002 -9.85470760653409E-0002 -9.85675238337804E-0002 -9.85878870793616E-0002 -9.86081671132187E-0002 --9.86283652447177E-0002 -9.86484827813850E-0002 -9.86685210288250E-0002 -9.86884812906404E-0002 -9.87083648683476E-0002 --9.87281730613063E-0002 -9.87479071666218E-0002 -9.87675684790780E-0002 -9.87871582910465E-0002 -9.88066778924081E-0002 --9.88261285704661E-0002 -9.88455116098659E-0002 -9.88648282925090E-0002 -9.88840798974643E-0002 -9.89032677008964E-0002 --9.89223929759630E-0002 -9.89414569927395E-0002 -9.89604610181320E-0002 -9.89794063157886E-0002 -9.89982941460100E-0002 --9.90171257656663E-0002 -9.90359024281042E-0002 -9.90546253830626E-0002 -9.90732958765837E-0002 -9.90919151509173E-0002 --9.91104844444368E-0002 -9.91290049915474E-0002 -9.91474780225964E-0002 -9.91659047637751E-0002 -9.91842864370359E-0002 --9.92026242599968E-0002 -9.92209194458435E-0002 -9.92391732032464E-0002 -9.92573867362553E-0002 -9.92755612442165E-0002 --9.92936979216688E-0002 -9.93117979582550E-0002 -9.93298625386228E-0002 -9.93478928423270E-0002 -9.93658900437408E-0002 --9.93838553119484E-0002 -9.94017898106569E-0002 -9.94196946980928E-0002 -9.94375711269011E-0002 -9.94554202440597E-0002 --9.94732431907594E-0002 -9.94910411023243E-0002 -9.95088151080968E-0002 -9.95265663313443E-0002 -9.95442958891580E-0002 --9.95620048923439E-0002 -9.95796944453316E-0002 -9.95973656460627E-0002 -9.96150195858889E-0002 -9.96326573494692E-0002 --9.96502800146743E-0002 -9.96678886524645E-0002 -9.96854843267953E-0002 -9.97030680945152E-0002 -9.97206410052498E-0002 --9.97382041013003E-0002 -9.97557584175359E-0002 -9.97733049812868E-0002 -9.97908448122332E-0002 -9.98083789222980E-0002 --9.98259083155412E-0002 -9.98434339880441E-0002 -9.98609569278002E-0002 -9.98784781146094E-0002 -9.98959985199614E-0002 --9.99135191069269E-0002 -9.99310408300421E-0002 -9.99485646352004E-0002 -9.99660914595330E-0002 -9.99836222313034E-0002 --1.00001157869788E-0001 -1.00018699285157E-0001 -1.00036247378366E-0001 -1.00053803041041E-0001 -1.00071367155355E-0001 --1.00088940593913E-0001 -1.00106524219642E-0001 -1.00124118885660E-0001 -1.00141725435174E-0001 -1.00159344701343E-0001 --1.00176977507168E-0001 -1.00194624665378E-0001 -1.00212286978295E-0001 -1.00229965237723E-0001 -1.00247660224819E-0001 --1.00265372709986E-0001 -1.00283103452728E-0001 -1.00300853201541E-0001 -1.00318622693791E-0001 -1.00336412655579E-0001 --1.00354223801624E-0001 -1.00372056835134E-0001 -1.00389912447684E-0001 -1.00407791319085E-0001 -1.00425694117255E-0001 --1.00443621498103E-0001 -1.00461574105384E-0001 -1.00479552570585E-0001 -1.00497557512789E-0001 -1.00515589538540E-0001 --1.00533649241723E-0001 -1.00551737203429E-0001 -1.00569853991819E-0001 -1.00588000161998E-0001 -1.00606176255882E-0001 --1.00624382802055E-0001 -1.00642620315653E-0001 -1.00660889298212E-0001 -1.00679190237543E-0001 -1.00697523607597E-0001 --1.00715889868321E-0001 -1.00734289465528E-0001 -1.00752722830760E-0001 -1.00771190381150E-0001 -1.00789692519277E-0001 --1.00808229633039E-0001 -1.00826802095498E-0001 -1.00845410264758E-0001 -1.00864054483810E-0001 -1.00882735080397E-0001 --1.00901452366872E-0001 -1.00920206640056E-0001 -1.00938998181086E-0001 -1.00957827255289E-0001 -1.00976694112025E-0001 --1.00995598984545E-0001 -1.01014542089847E-0001 -1.01033523628528E-0001 -1.01052543784637E-0001 -1.01071602725536E-0001 --1.01090700601739E-0001 -1.01109837546776E-0001 -1.01129013677039E-0001 -1.01148229091628E-0001 -1.01167483872208E-0001 --1.01186778082860E-0001 -1.01206111769921E-0001 -1.01225484961834E-0001 -1.01244897669008E-0001 -1.01264349883645E-0001 --1.01283841579602E-0001 -1.01303372712233E-0001 -1.01322943218228E-0001 -1.01342553015465E-0001 -1.01362202002849E-0001 --1.01381890060160E-0001 -1.01401617047889E-0001 -1.01421382807088E-0001 -1.01441187159205E-0001 -1.01461029905926E-0001 --1.01480910829019E-0001 -1.01500829690172E-0001 -1.01520786230826E-0001 -1.01540780172023E-0001 -1.01560811214237E-0001 --1.01580879037213E-0001 -1.01600983299804E-0001 -1.01621123639807E-0001 -1.01641299673795E-0001 -1.01661510996958E-0001 --1.01681757182929E-0001 -1.01702037783624E-0001 -1.01722352329072E-0001 -1.01742700327245E-0001 -1.01763081263896E-0001 --1.01783494602377E-0001 -1.01803939783485E-0001 -1.01824416225280E-0001 -1.01844923322920E-0001 -1.01865460448484E-0001 --1.01886026950803E-0001 -1.01906622155285E-0001 -1.01927245363747E-0001 -1.01947895854230E-0001 -1.01968572880833E-0001 --1.01989275673534E-0001 -1.02010003438012E-0001 -1.02030755355474E-0001 -1.02051530582474E-0001 -1.02072328250734E-0001 --1.02093147466969E-0001 -1.02113987312702E-0001 -1.02134846844090E-0001 -1.02155725091737E-0001 -1.02176621060514E-0001 --1.02197533729383E-0001 -1.02218462051199E-0001 -1.02239404952546E-0001 -1.02260361333534E-0001 -1.02281330067628E-0001 --1.02302310001453E-0001 -1.02323299954613E-0001 -1.02344298719503E-0001 -1.02365305061118E-0001 -1.02386317716869E-0001 --1.02407335396391E-0001 -1.02428356781353E-0001 -1.02449380525272E-0001 -1.02470405253316E-0001 -1.02491429562114E-0001 --1.02512452019564E-0001 -1.02533471164644E-0001 -1.02554485507208E-0001 -1.02575493527802E-0001 -1.02596493677460E-0001 --1.02617484377516E-0001 -1.02638464019400E-0001 -1.02659430964446E-0001 -1.02680383543689E-0001 -1.02701320057674E-0001 --1.02722238776245E-0001 -1.02743137938358E-0001 -1.02764015751866E-0001 -1.02784870393330E-0001 -1.02805700007811E-0001 --1.02826502708663E-0001 -1.02847276577341E-0001 -1.02868019663179E-0001 -1.02888729983203E-0001 -1.02909405521915E-0001 --1.02930044231087E-0001 -1.02950644029555E-0001 -1.02971202803012E-0001 -1.02991718403796E-0001 -1.03012188650684E-0001 --1.03032611328680E-0001 -1.03052984188807E-0001 -1.03073304947888E-0001 -1.03093571288340E-0001 -1.03113780857961E-0001 --1.03133931269712E-0001 -1.03154020101504E-0001 -1.03174044895985E-0001 -1.03194003160322E-0001 -1.03213892365983E-0001 --1.03233709948521E-0001 -1.03253453307356E-0001 -1.03273119805555E-0001 -1.03292706769612E-0001 -1.03312211489226E-0001 --1.03331631217087E-0001 -1.03350963168644E-0001 -1.03370204521888E-0001 -1.03389352417127E-0001 -1.03408403956762E-0001 --1.03427356205062E-0001 -1.03446206187937E-0001 -1.03464950892714E-0001 -1.03483587267908E-0001 -1.03502112222992E-0001 --1.03520522628184E-0001 -1.03538815320815E-0001 -1.03556987140607E-0001 -1.03575034949509E-0001 -1.03592955632404E-0001 --1.03610746097013E-0001 -1.03628403273829E-0001 -1.03645924116027E-0001 -1.03663305599392E-0001 -1.03680544722236E-0001 --1.03697638505321E-0001 -1.03714583991773E-0001 -1.03731378247018E-0001 -1.03748018358685E-0001 -1.03764501436543E-0001 --1.03780824612415E-0001 -1.03796985040100E-0001 -1.03812979895297E-0001 -1.03828806375527E-0001 -1.03844461700053E-0001 --1.03859943109807E-0001 -1.03875247867305E-0001 -1.03890373256579E-0001 -1.03905316583092E-0001 -1.03920075173667E-0001 --1.03934646376405E-0001 -1.03949027560611E-0001 -1.03963216116718E-0001 -1.03977209456211E-0001 -1.03991005011549E-0001 --1.04004600236086E-0001 -1.04017992604004E-0001 -1.04031179610231E-0001 -1.04044158770363E-0001 -1.04056927620594E-0001 --1.04069483717640E-0001 -1.04081824638659E-0001 -1.04093947981183E-0001 -1.04105851363038E-0001 -1.04117532422269E-0001 --1.04128988817070E-0001 -1.04140218225705E-0001 -1.04151218346437E-0001 -1.04161986897452E-0001 -1.04172521616785E-0001 --1.04182820262247E-0001 -1.04192880611350E-0001 -1.04202700461237E-0001 -1.04212277628604E-0001 -1.04221609949631E-0001 --1.04230695279904E-0001 -1.04239531494347E-0001 -1.04248116487147E-0001 -1.04256448171679E-0001 -1.04264524480441E-0001 --1.04272343364973E-0001 -1.04279902795788E-0001 -1.04287200762303E-0001 -1.04294235272764E-0001 -1.04301004354174E-0001 --1.04307506052224E-0001 -1.04313738431216E-0001 -1.04319699573999E-0001 -1.04325387581895E-0001 -1.04330800574625E-0001 --1.04335936690241E-0001 -1.04340794085055E-0001 -1.04345370933570E-0001 -1.04349665428404E-0001 -1.04353675780228E-0001 --1.04357400217688E-0001 -1.04360836987341E-0001 -1.04363984353580E-0001 -1.04366840598570E-0001 -1.04369404022171E-0001 --1.04371672941877E-0001 -1.04373645692743E-0001 -1.04375320627311E-0001 -1.04376696115550E-0001 -1.04377770544783E-0001 --1.04378542319614E-0001 -1.04379009861868E-0001 -1.04379171610515E-0001 -1.04379026021607E-0001 -1.04378571568209E-0001 --1.04377806740326E-0001 -1.04376730044843E-0001 -1.04375340005451E-0001 -1.04373635162584E-0001 -1.04371614073348E-0001 --1.04369275311455E-0001 -1.04366617467160E-0001 -1.04363639147184E-0001 -1.04360338974658E-0001 -1.04356715589052E-0001 --1.04352767646107E-0001 -1.04348493817770E-0001 -1.04343892792127E-0001 -1.04338963273339E-0001 -1.04333703981574E-0001 --1.04328113652943E-0001 -1.04322191039432E-0001 -1.04315934908837E-0001 -1.04309344044702E-0001 -1.04302417246248E-0001 --1.04295153328313E-0001 -1.04287551121285E-0001 -1.04279609471036E-0001 -1.04271327238861E-0001 -1.04262703301407E-0001 --1.04253736550616E-0001 -1.04244425893657E-0001 -1.04234770252860E-0001 -1.04224768565658E-0001 -1.04214419784516E-0001 --1.04203722876873E-0001 -1.04192676825077E-0001 -1.04181280626317E-0001 -1.04169533292566E-0001 -1.04157433850518E-0001 --1.04144981341517E-0001 -1.04132174821505E-0001 -1.04119013360950E-0001 -1.04105496044790E-0001 -1.04091621972366E-0001 --1.04077390257363E-0001 -1.04062800027746E-0001 -1.04047850425698E-0001 -1.04032540607561E-0001 -1.04016869743767E-0001 --1.04000837018787E-0001 -1.03984441631059E-0001 -1.03967682792935E-0001 -1.03950559730615E-0001 -1.03933071684087E-0001 --1.03915217907066E-0001 -1.03896997666935E-0001 -1.03878410244683E-0001 -1.03859454934842E-0001 -1.03840131045432E-0001 --1.03820437897896E-0001 -1.03800374827044E-0001 -1.03779941180989E-0001 -1.03759136321088E-0001 -1.03737959621887E-0001 --1.03716410471057E-0001 -1.03694488269333E-0001 -1.03672192430458E-0001 -1.03649522381125E-0001 -1.03626477560915E-0001 --1.03603057422238E-0001 -1.03579261430278E-0001 -1.03555089062931E-0001 -1.03530539810746E-0001 -1.03505613176870E-0001 --1.03480308676987E-0001 -1.03454625839263E-0001 -1.03428564204284E-0001 -1.03402123325001E-0001 -1.03375302766670E-0001 --1.03348102106800E-0001 -1.03320520935088E-0001 -1.03292558853368E-0001 -1.03264215475551E-0001 -1.03235490427568E-0001 --1.03206383347313E-0001 -1.03176893884589E-0001 -1.03147021701047E-0001 -1.03116766470135E-0001 -1.03086127877036E-0001 --1.03055105618617E-0001 -1.03023699403367E-0001 -1.02991908951347E-0001 -1.02959733994133E-0001 -1.02927174274757E-0001 --1.02894229547655E-0001 -1.02860899578608E-0001 -1.02827184144694E-0001 -1.02793083034223E-0001 -1.02758596046689E-0001 --1.02723722992714E-0001 -1.02688463693991E-0001 -1.02652817983234E-0001 -1.02616785704115E-0001 -1.02580366711221E-0001 --1.02543560869990E-0001 -1.02506368056663E-0001 -1.02468788158227E-0001 -1.02430821072364E-0001 -1.02392466707392E-0001 --1.02353724982220E-0001 -1.02314595826284E-0001 -1.02275079179504E-0001 -1.02235174992226E-0001 -1.02194883225166E-0001 --1.02154203849363E-0001 -1.02113136846122E-0001 -1.02071682206967E-0001 -1.02029839933578E-0001 -1.01987610037751E-0001 --1.01944992541338E-0001 -1.01901987476195E-0001 -1.01858594884135E-0001 -1.01814814816870E-0001 -1.01770647335967E-0001 --1.01726092512785E-0001 -1.01681150428436E-0001 -1.01635821173726E-0001 -1.01590104849105E-0001 -1.01544001564619E-0001 --1.01497511439854E-0001 -1.01450634603890E-0001 -1.01403371195246E-0001 -1.01355721361836E-0001 -1.01307685260910E-0001 --1.01259263059010E-0001 -1.01210454931916E-0001 -1.01161261064601E-0001 -1.01111681651175E-0001 -1.01061716894839E-0001 --1.01011367007835E-0001 -1.00960632211395E-0001 -1.00909512735692E-0001 -1.00858008819793E-0001 -1.00806120711605E-0001 --1.00753848667832E-0001 -1.00701192953921E-0001 -1.00648153844015E-0001 -1.00594731620908E-0001 -1.00540926575987E-0001 --1.00486739009196E-0001 -1.00432169228977E-0001 -1.00377217552228E-0001 -1.00321884304251E-0001 -1.00266169818710E-0001 --1.00210074437575E-0001 -1.00153598511083E-0001 -1.00096742397683E-0001 -1.00039506463994E-0001 -9.99818910847530E-0002 --9.99238966427728E-0002 -9.98655235288919E-0002 -9.98067721419273E-0002 -9.97476428886294E-0002 -9.96881361836338E-0002 --9.96282524494163E-0002 -9.95679921162448E-0002 -9.95073556221349E-0002 -9.94463434128017E-0002 -9.93849559416150E-0002 --9.93231936695528E-0002 -9.92610570651566E-0002 -9.91985466044840E-0002 -9.91356627710637E-0002 -9.90724060558515E-0002 --9.90087769571832E-0002 -9.89447759807301E-0002 -9.88804036394526E-0002 -9.88156604535585E-0002 -9.87505469504553E-0002 --9.86850636647061E-0002 -9.86192111379843E-0002 -9.85529899190323E-0002 -9.84864005636131E-0002 -9.84194436344682E-0002 --9.83521197012732E-0002 -9.82844293405940E-0002 -9.82163731358412E-0002 -9.81479516772309E-0002 -9.80791655617349E-0002 --9.80100153930417E-0002 -9.79405017815106E-0002 -9.78706253441308E-0002 -9.78003867044764E-0002 -9.77297864926637E-0002 --9.76588253453081E-0002 -9.75875039054827E-0002 -9.75158228226724E-0002 -9.74437827527372E-0002 -9.73713843578625E-0002 --9.72986283065222E-0002 -9.72255152734341E-0002 -9.71520459395179E-0002 -9.70782209918548E-0002 -9.70040411236436E-0002 --9.69295070341601E-0002 -9.68546194287153E-0002 -9.67793790186141E-0002 -9.67037865211131E-0002 -9.66278426593807E-0002 --9.65515481624533E-0002 -9.64749037651992E-0002 -9.63979102082722E-0002 -9.63205682380734E-0002 -9.62428786067114E-0002 --9.61648420719600E-0002 -9.60864593972179E-0002 -9.60077313514701E-0002 -9.59286587092450E-0002 -9.58492422505772E-0002 --9.57694827609645E-0002 -9.56893810313307E-0002 -9.56089378579847E-0002 -9.55281540425802E-0002 -9.54470303920768E-0002 --9.53655677187019E-0002 -9.52837668399084E-0002 -9.52016285783382E-0002 -9.51191537617829E-0002 -9.50363432231419E-0002 --9.49531978003881E-0002 -9.48697183365254E-0002 -9.47859056795523E-0002 -9.47017606824216E-0002 -9.46172842030048E-0002 --9.45324771040504E-0002 -9.44473402531484E-0002 -9.43618745226906E-0002 -9.42760807898338E-0002 -9.41899599364615E-0002 --9.41035128491455E-0002 -9.40167404191108E-0002 -9.39296435421935E-0002 -9.38422231188088E-0002 -9.37544800539103E-0002 --9.36664152569533E-0002 -9.35780296418588E-0002 -9.34893241269757E-0002 -9.34002996350442E-0002 -9.33109570931598E-0002 --9.32212974327353E-0002 -9.31313215894655E-0002 -9.30410305032908E-0002 -9.29504251183591E-0002 -9.28595063829929E-0002 --9.27682752496510E-0002 -9.26767326748927E-0002 -9.25848796193428E-0002 -9.24927170476546E-0002 -9.24002459284766E-0002 --9.23074672344140E-0002 -9.22143819419965E-0002 -9.21209910316402E-0002 -9.20272954876145E-0002 -9.19332962980055E-0002 --9.18389944546825E-0002 -9.17443909532621E-0002 -9.16494867930743E-0002 -9.15542829771266E-0002 -9.14587805120714E-0002 --9.13629804081698E-0002 -9.12668836792585E-0002 -9.11704913427151E-0002 -9.10738044194235E-0002 -9.09768239337422E-0002 --9.08795509134669E-0002 -9.07819863897999E-0002 -9.06841313973152E-0002 -9.05859869739241E-0002 -9.04875541608436E-0002 --9.03888340025621E-0002 -9.02898275468057E-0002 -9.01905358445060E-0002 -9.00909599497669E-0002 -8.99911009198318E-0002 --8.98909598150495E-0002 -8.97905376988436E-0002 -8.96898356376791E-0002 -8.95888547010289E-0002 -8.94875959613429E-0002 --8.93860604940155E-0002 -8.92842493773516E-0002 -8.91821636925383E-0002 -8.90798045236089E-0002 -8.89771729574138E-0002 --8.88742700835879E-0002 -8.87710969945183E-0002 -8.86676547853141E-0002 -8.85639445537742E-0002 -8.84599674003555E-0002 --8.83557244281436E-0002 -8.82512167428189E-0002 -8.81464454526282E-0002 -8.80414116683520E-0002 -8.79361165032756E-0002 --8.78305610731557E-0002 -8.77247464961917E-0002 -8.76186738929963E-0002 -8.75123443865618E-0002 -8.74057591022326E-0002 --8.72989191676746E-0002 -8.71918257128440E-0002 -8.70844798699581E-0002 -8.69768827734654E-0002 -8.68690355600161E-0002 --8.67609393684318E-0002 -8.66525953396764E-0002 -8.65440046168262E-0002 -8.64351683450415E-0002 -8.63260876715364E-0002 --8.62167637455494E-0002 -8.61071977183156E-0002 -8.59973907430370E-0002 -8.58873439748539E-0002 -8.57770585708149E-0002 --8.56665356898507E-0002 -8.55557764927428E-0002 -8.54447821420980E-0002 -8.53335538023167E-0002 -8.52220926395678E-0002 --8.51103998217587E-0002 -8.49984765185071E-0002 -8.48863239011154E-0002 -8.47739431425392E-0002 -8.46613354173620E-0002 --8.45485019017683E-0002 -8.44354437735129E-0002 -8.43221622118969E-0002 -8.42086583977381E-0002 -8.40949335133437E-0002 --8.39809887424854E-0002 -8.38668252703695E-0002 -8.37524442836117E-0002 -8.36378469702106E-0002 -8.35230345195183E-0002 --8.34080081222174E-0002 -8.32927689702917E-0002 -8.31773182570001E-0002 -8.30616571768518E-0002 -8.29457869255784E-0002 --8.28297087001086E-0002 -8.27134236985415E-0002 -8.25969331201206E-0002 -8.24802381652090E-0002 -8.23633400352621E-0002 --8.22462399328034E-0002 -8.21289390613977E-0002 -8.20114386256255E-0002 -8.18937398310590E-0002 -8.17758438842354E-0002 --8.16577519926322E-0002 -8.15394653646426E-0002 -8.14209852095491E-0002 -8.13023127374996E-0002 -8.11834491594827E-0002 --8.10643956873031E-0002 -8.09451535335549E-0002 -8.08257239115997E-0002 -8.07061080355416E-0002 -8.05863071202007E-0002 --8.04663223810916E-0002 -8.03461550343979E-0002 -8.02258062969478E-0002 -8.01052773861910E-0002 -7.99845695201742E-0002 --7.98636839175176E-0002 -7.97426217973907E-0002 -7.96213843794893E-0002 -7.94999728840119E-0002 -7.93783885316355E-0002 --7.92566325434936E-0002 -7.91347061411517E-0002 -7.90126105465844E-0002 -7.88903469821535E-0002 -7.87679166705833E-0002 --7.86453208349386E-0002 -7.85225606986025E-0002 -7.83996374852520E-0002 -7.82765524188376E-0002 -7.81533067235587E-0002 --7.80299016238428E-0002 -7.79063383443220E-0002 -7.77826181098114E-0002 -7.76587421452873E-0002 -7.75347116758639E-0002 --7.74105279267722E-0002 -7.72861921233385E-0002 -7.71617054909618E-0002 -7.70370692550924E-0002 -7.69122846412102E-0002 --7.67873528748037E-0002 -7.66622751813477E-0002 -7.65370527862830E-0002 -7.64116869149941E-0002 -7.62861787927886E-0002 --7.61605296448762E-0002 -7.60347406963475E-0002 -7.59088131721532E-0002 -7.57827482970835E-0002 -7.56565472957468E-0002 --7.55302113925494E-0002 -7.54037418116753E-0002 -7.52771397770657E-0002 -7.51504065123975E-0002 -7.50235432410647E-0002 --7.48965511861570E-0002 -7.47694315704404E-0002 -7.46421856163367E-0002 -7.45148145459039E-0002 -7.43873195808161E-0002 --7.42597019423439E-0002 -7.41319628513351E-0002 -7.40041035281940E-0002 -7.38761251928633E-0002 -7.37480290648038E-0002 --7.36198163629753E-0002 -7.34914883058177E-0002 -7.33630461112307E-0002 -7.32344909965563E-0002 -7.31058241785594E-0002 --7.29770468734073E-0002 -7.28481602966535E-0002 -7.27191656632175E-0002 -7.25900641873652E-0002 -7.24608570826928E-0002 --7.23315455621065E-0002 -7.22021308378044E-0002 -7.20726141212591E-0002 -7.19429966231979E-0002 -7.18132795535862E-0002 --7.16834641216087E-0002 -7.15535515356517E-0002 -7.14235430032847E-0002 -7.12934397312434E-0002 -7.11632429254117E-0002 --7.10329537908030E-0002 -7.09025735315453E-0002 -7.07721033508603E-0002 -7.06415444510487E-0002 -7.05108980334718E-0002 --7.03801652985346E-0002 -7.02493474456679E-0002 -7.01184456733128E-0002 -6.99874611789018E-0002 -6.98563951588440E-0002 --6.97252488085062E-0002 -6.95940233221975E-0002 -6.94627198931528E-0002 -6.93313397135148E-0002 -6.91998839743199E-0002 --6.90683538654788E-0002 -6.89367505757628E-0002 -6.88050752927865E-0002 -6.86733292029910E-0002 -6.85415134916295E-0002 --6.84096293427495E-0002 -6.82776779391775E-0002 -6.81456604625044E-0002 -6.80135780930677E-0002 -6.78814320099376E-0002 --6.77492233909000E-0002 -6.76169534124416E-0002 -6.74846232497351E-0002 -6.73522340766222E-0002 -6.72197870656005E-0002 --6.70872833878064E-0002 -6.69547242130003E-0002 -6.68221107095531E-0002 -6.66894440444292E-0002 -6.65567253831728E-0002 --6.64239558898927E-0002 -6.62911367272474E-0002 -6.61582690564316E-0002 -6.60253540371597E-0002 -6.58923928276526E-0002 --6.57593865846235E-0002 -6.56263364632625E-0002 -6.54932436172231E-0002 -6.53601091986079E-0002 -6.52269343579540E-0002 --6.50937202442201E-0002 -6.49604680047706E-0002 -6.48271787853643E-0002 -6.46938537301381E-0002 -6.45604939815946E-0002 --6.44271006805891E-0002 -6.42936749663135E-0002 -6.41602179762861E-0002 -6.40267308463354E-0002 -6.38932147105879E-0002 --6.37596707014554E-0002 -6.36260999496206E-0002 -6.34925035840247E-0002 -6.33588827318543E-0002 -6.32252385185279E-0002 --6.30915720676842E-0002 -6.29578845011670E-0002 -6.28241769390157E-0002 -6.26904504994499E-0002 -6.25567062988570E-0002 --6.24229454517819E-0002 -6.22891690709118E-0002 -6.21553782670657E-0002 -6.20215741491811E-0002 -6.18877578243022E-0002 --6.17539303975675E-0002 -6.16200929721982E-0002 -6.14862466494848E-0002 -6.13523925287775E-0002 -6.12185317074717E-0002 --6.10846652809986E-0002 -6.09507943428113E-0002 -6.08169199843746E-0002 -6.06830432951533E-0002 -6.05491653625996E-0002 --6.04152872721432E-0002 -6.02814101071785E-0002 -6.01475349490543E-0002 -6.00136628770623E-0002 -5.98797949684251E-0002 --5.97459322982870E-0002 -5.96120759397009E-0002 -5.94782269636182E-0002 -5.93443864388792E-0002 -5.92105554321995E-0002 --5.90767350081622E-0002 -5.89429262292050E-0002 -5.88091301556107E-0002 -5.86753478454971E-0002 -5.85415803548047E-0002 --5.84078287372887E-0002 -5.82740940445066E-0002 -5.81403773258092E-0002 -5.80066796283305E-0002 -5.78730019969760E-0002 --5.77393454744152E-0002 -5.76057111010692E-0002 -5.74720999151020E-0002 -5.73385129524108E-0002 -5.72049512466156E-0002 --5.70714158290502E-0002 -5.69379077287517E-0002 -5.68044279724514E-0002 -5.66709775845657E-0002 -5.65375575871861E-0002 --5.64041690000696E-0002 -5.62708128406306E-0002 -5.61374901239301E-0002 -5.60042018626680E-0002 -5.58709490671725E-0002 --5.57377327453923E-0002 -5.56045539028876E-0002 -5.54714135428200E-0002 -5.53383126659453E-0002 -5.52052522706033E-0002 --5.50722333527100E-0002 -5.49392569057485E-0002 -5.48063239207607E-0002 -5.46734353863389E-0002 -5.45405922886169E-0002 --5.44077956112618E-0002 -5.42750463354662E-0002 -5.41423454399390E-0002 -5.40096939008985E-0002 -5.38770926920626E-0002 --5.37445427846424E-0002 -5.36120451473331E-0002 -5.34796007463069E-0002 -5.33472105452044E-0002 -5.32148755051272E-0002 --5.30825965846299E-0002 -5.29503747397133E-0002 -5.28182109238153E-0002 -5.26861060878046E-0002 -5.25540611799731E-0002 --5.24220771460273E-0002 -5.22901549290830E-0002 -5.21582954696559E-0002 -5.20264997056556E-0002 -5.18947685723786E-0002 --5.17631030025002E-0002 -5.16315039260684E-0002 -5.14999722704964E-0002 -5.13685089605555E-0002 -5.12371149183692E-0002 --5.11057910634053E-0002 -5.09745383124701E-0002 -5.08433575797009E-0002 -5.07122497765595E-0002 -5.05812158118269E-0002 --5.04502565915947E-0002 -5.03193730192609E-0002 -5.01885659955215E-0002 -5.00578364183655E-0002 -4.99271851830687E-0002 --4.97966131821864E-0002 -4.96661213055485E-0002 -4.95357104402528E-0002 -4.94053814706587E-0002 -4.92751352783825E-0002 --4.91449727422898E-0002 -4.90148947384912E-0002 -4.88849021403357E-0002 -4.87549958184048E-0002 -4.86251766405078E-0002 --4.84954454716752E-0002 -4.83658031741540E-0002 -4.82362506074015E-0002 -4.81067886280802E-0002 -4.79774180900526E-0002 --4.78481398443758E-0002 -4.77189547392959E-0002 -4.75898636202436E-0002 -4.74608673298280E-0002 -4.73319667078329E-0002 --4.72031625912102E-0002 -4.70744558140762E-0002 -4.69458472077064E-0002 -4.68173376005299E-0002 -4.66889278181261E-0002 --4.65606186832184E-0002 -4.64324110156703E-0002 -4.63043056324812E-0002 -4.61763033477808E-0002 -4.60484049728256E-0002 --4.59206113159938E-0002 -4.57929231827809E-0002 -4.56653413757961E-0002 -4.55378666947569E-0002 -4.54104999364861E-0002 --4.52832418949065E-0002 -4.51560933610374E-0002 -4.50290551229907E-0002 -4.49021279659662E-0002 -4.47753126722485E-0002 --4.46486100212024E-0002 -4.45220207892692E-0002 -4.43955457499637E-0002 -4.42691856738689E-0002 -4.41429413286342E-0002 --4.40168134789698E-0002 -4.38908028866449E-0002 -4.37649103104831E-0002 -4.36391365063592E-0002 -4.35134822271962E-0002 --4.33879482229612E-0002 -4.32625352406625E-0002 -4.31372440243466E-0002 -4.30120753150944E-0002 -4.28870298510183E-0002 --4.27621083672598E-0002 -4.26373115959851E-0002 -4.25126402663833E-0002 -4.23880951046628E-0002 -4.22636768340485E-0002 --4.21393861747796E-0002 -4.20152238441055E-0002 -4.18911905562845E-0002 -4.17672870225803E-0002 -4.16435139512592E-0002 --4.15198720475886E-0002 -4.13963620138328E-0002 -4.12729845492524E-0002 -4.11497403501003E-0002 -4.10266301096200E-0002 --4.09036545180436E-0002 -4.07808142625887E-0002 -4.06581100274571E-0002 -4.05355424938317E-0002 -4.04131123398748E-0002 --4.02908202407267E-0002 -4.01686668685021E-0002 -4.00466528922898E-0002 -3.99247789781497E-0002 -3.98030457891109E-0002 --3.96814539851708E-0002 -3.95600042232922E-0002 -3.94386971574025E-0002 -3.93175334383914E-0002 -3.91965137141091E-0002 --3.90756386293659E-0002 -3.89549088259289E-0002 -3.88343249425220E-0002 -3.87138876148238E-0002 -3.85935974754661E-0002 --3.84734551540330E-0002 -3.83534612770592E-0002 -3.82336164680287E-0002 -3.81139213473741E-0002 -3.79943765324749E-0002 --3.78749826376568E-0002 -3.77557402741901E-0002 -3.76366500502891E-0002 -3.75177125711115E-0002 -3.73989284387562E-0002 --3.72802982522640E-0002 -3.71618226076155E-0002 -3.70435020977307E-0002 -3.69253373124691E-0002 -3.68073288386272E-0002 --3.66894772599399E-0002 -3.65717831570781E-0002 -3.64542471076493E-0002 -3.63368696861969E-0002 -3.62196514641989E-0002 --3.61025930100689E-0002 -3.59856948891544E-0002 -3.58689576637370E-0002 -3.57523818930325E-0002 -3.56359681331897E-0002 --3.55197169372913E-0002 -3.54036288553526E-0002 -3.52877044343223E-0002 -3.51719442180821E-0002 -3.50563487474466E-0002 --3.49409185601632E-0002 -3.48256541909127E-0002 -3.47105561713084E-0002 -3.45956250298977E-0002 -3.44808612921608E-0002 --3.43662654805116E-0002 -3.42518381142984E-0002 -3.41375797098032E-0002 -3.40234907802432E-0002 -3.39095718357702E-0002 --3.37958233834713E-0002 -3.36822459273701E-0002 -3.35688399684261E-0002 -3.34556060045363E-0002 -3.33425445305350E-0002 --3.32296560381947E-0002 -3.31169410162273E-0002 -3.30043999502839E-0002 -3.28920333229566E-0002 -3.27798416137783E-0002 --3.26678252992241E-0002 -3.25559848527125E-0002 -3.24443207446055E-0002 -3.23328334422104E-0002 -3.22215234097802E-0002 --3.21103911085149E-0002 -3.19994369965630E-0002 -3.18886615290217E-0002 -3.17780651579390E-0002 -3.16676483323143E-0002 --3.15574114980999E-0002 -3.14473550982025E-0002 -3.13374795724839E-0002 -3.12277853577633E-0002 -3.11182728878178E-0002 --3.10089425933840E-0002 -3.08997949021606E-0002 -3.07908302388081E-0002 -3.06820490249517E-0002 -3.05734516791827E-0002 --3.04650386170596E-0002 -3.03568102511105E-0002 -3.02487669908340E-0002 -3.01409092427017E-0002 -3.00332374101598E-0002 --2.99257518936304E-0002 -2.98184530905144E-0002 -2.97113413951921E-0002 -2.96044171990261E-0002 -2.94976808903633E-0002 --2.93911328545363E-0002 -2.92847734738659E-0002 -2.91786031276630E-0002 -2.90726221922306E-0002 -2.89668310408667E-0002 --2.88612300438651E-0002 -2.87558195685194E-0002 -2.86505999791237E-0002 -2.85455716369756E-0002 -2.84407349003788E-0002 --2.83360901246448E-0002 -2.82316376620959E-0002 -2.81273778620673E-0002 -2.80233110709096E-0002 -2.79194376319917E-0002 --2.78157578857027E-0002 -2.77122721694552E-0002 -2.76089808176871E-0002 -2.75058841618651E-0002 -2.74029825304869E-0002 --2.73002762490840E-0002 -2.71977656402241E-0002 -2.70954510235152E-0002 -2.69933327156064E-0002 -2.68914110301926E-0002 --2.67896862780164E-0002 -2.66881587668710E-0002 -2.65868288016039E-0002 -2.64856966841190E-0002 -2.63847627133803E-0002 --2.62840271854146E-0002 -2.61834903933144E-0002 -2.60831526272419E-0002 -2.59830141744309E-0002 -2.58830753191911E-0002 --2.57833363429107E-0002 -2.56837975240595E-0002 -2.55844591381931E-0002 -2.54853214579550E-0002 -2.53863847530811E-0002 --2.52876492904021E-0002 -2.51891153338473E-0002 -2.50907831444487E-0002 -2.49926529803429E-0002 -2.48947250967764E-0002 --2.47969997461078E-0002 -2.46994771778119E-0002 -2.46021576384834E-0002 -2.45050413718402E-0002 -2.44081286187274E-0002 --2.43114196171207E-0002 -2.42149146021300E-0002 -2.41186138060040E-0002 -2.40225174581327E-0002 -2.39266257850519E-0002 --2.38309390104476E-0002 -2.37354573551586E-0002 -2.36401810371814E-0002 -2.35451102716736E-0002 -2.34502452709580E-0002 --2.33555862445269E-0002 -2.32611333990453E-0002 -2.31668869383561E-0002 -2.30728470634831E-0002 -2.29790139726355E-0002 --2.28853878612123E-0002 -2.27919689218059E-0002 -2.26987573442071E-0002 -2.26057533154081E-0002 -2.25129570196077E-0002 --2.24203686382158E-0002 -2.23279883498564E-0002 -2.22358163303732E-0002 -2.21438527528334E-0002 -2.20520977875318E-0002 --2.19605516019961E-0002 -2.18692143609902E-0002 -2.17780862265197E-0002 -2.16871673578355E-0002 -2.15964579114389E-0002 --2.15059580410861E-0002 -2.14156678977922E-0002 -2.13255876298366E-0002 -2.12357173827671E-0002 -2.11460572994044E-0002 --2.10566075198475E-0002 -2.09673681814774E-0002 -2.08783394189628E-0002 -2.07895213642640E-0002 -2.07009141466381E-0002 --2.06125178926441E-0002 -2.05243327261470E-0002 -2.04363587683228E-0002 -2.03485961376642E-0002 -2.02610449499843E-0002 --2.01737053184226E-0002 -2.00865773534489E-0002 -1.99996611628690E-0002 -1.99129568518296E-0002 -1.98264645228230E-0002 --1.97401842756927E-0002 -1.96541162076377E-0002 -1.95682604132180E-0002 -1.94826169843602E-0002 -1.93971860103615E-0002 --1.93119675778960E-0002 -1.92269617710191E-0002 -1.91421686711729E-0002 -1.90575883571920E-0002 -1.89732209053077E-0002 --1.88890663891542E-0002 -1.88051248797733E-0002 -1.87213964456201E-0002 -1.86378811525683E-0002 -1.85545790639151E-0002 --1.84714902403873E-0002 -1.83886147401462E-0002 -1.83059526187930E-0002 -1.82235039293749E-0002 -1.81412687223897E-0002 --1.80592470457918E-0002 -1.79774389449978E-0002 -1.78958444628915E-0002 -1.78144636398303E-0002 -1.77332965136498E-0002 --1.76523431196701E-0002 -1.75716034907014E-0002 -1.74910776570492E-0002 -1.74107656465204E-0002 -1.73306674844288E-0002 --1.72507831936005E-0002 -1.71711127943805E-0002 -1.70916563046374E-0002 -1.70124137397699E-0002 -1.69333851127123E-0002 --1.68545704339402E-0002 -1.67759697114768E-0002 -1.66975829508978E-0002 -1.66194101553387E-0002 -1.65414513254992E-0002 --1.64637064596499E-0002 -1.63861755536383E-0002 -1.63088586008942E-0002 -1.62317555924363E-0002 -1.61548665168777E-0002 --1.60781913604319E-0002 -1.60017301069193E-0002 -1.59254827377726E-0002 -1.58494492320434E-0002 -1.57736295664078E-0002 --1.56980237151728E-0002 -1.56226316502823E-0002 -1.55474533413233E-0002 -1.54724887555320E-0002 -1.53977378577998E-0002 --1.53232006106797E-0002 -1.52488769743924E-0002 -1.51747669068326E-0002 -1.51008703635748E-0002 -1.50271872978805E-0002 --1.49537176607033E-0002 -1.48804614006960E-0002 -1.48074184642166E-0002 -1.47345887953345E-0002 -1.46619723358372E-0002 --1.45895690252362E-0002 -1.45173788007737E-0002 -1.44454015974288E-0002 -1.43736373479239E-0002 -1.43020859827313E-0002 --1.42307474300792E-0002 -1.41596216159587E-0002 -1.40887084641299E-0002 -1.40180078961282E-0002 -1.39475198312714E-0002 --1.38772441866655E-0002 -1.38071808772118E-0002 -1.37373298156130E-0002 -1.36676909123799E-0002 -1.35982640758382E-0002 --1.35290492121345E-0002 -1.34600462252436E-0002 -1.33912550169746E-0002 -1.33226754869775E-0002 -1.32543075327503E-0002 --1.31861510496451E-0002 -1.31182059308752E-0002 -1.30504720675214E-0002 -1.29829493485390E-0002 -1.29156376607642E-0002 --1.28485368889212E-0002 -1.27816469156285E-0002 -1.27149676214061E-0002 -1.26484988846816E-0002 -1.25822405817979E-0002 --1.25161925870190E-0002 -1.24503547725374E-0002 -1.23847270084809E-0002 -1.23193091629189E-0002 -1.22541011018700E-0002 --1.21891026893083E-0002 -1.21243137871702E-0002 -1.20597342553618E-0002 -1.19953639517651E-0002 -1.19312027322455E-0002 --1.18672504506584E-0002 -1.18035069588559E-0002 -1.17399721066943E-0002 -1.16766457420406E-0002 -1.16135277107794E-0002 --1.15506178568204E-0002 -1.14879160221045E-0002 -1.14254220466117E-0002 -1.13631357683673E-0002 -1.13010570234497E-0002 --1.12391856459967E-0002 -1.11775214682128E-0002 -1.11160643203765E-0002 -1.10548140308466E-0002 -1.09937704260704E-0002 --1.09329333305896E-0002 -1.08723025670481E-0002 -1.08118779561989E-0002 -1.07516593169110E-0002 -1.06916464661771E-0002 --1.06318392191197E-0002 -1.05722373889992E-0002 -1.05128407872207E-0002 -1.04536492233409E-0002 -1.03946625050754E-0002 --1.03358804383063E-0002 -1.02773028270886E-0002 -1.02189294736579E-0002 -1.01607601784374E-0002 -1.01027947400452E-0002 --1.00450329553015E-0002 -9.98747461923559E-0003 -9.93011952509350E-0003 -9.87296746434478E-0003 -9.81601822668992E-0003 --9.75927160006784E-0003 -9.70272737066264E-0003 -9.64638532291138E-0003 -9.59024523951095E-0003 -9.53430690142548E-0003 --9.47857008789385E-0003 -9.42303457643655E-0003 -9.36770014286342E-0003 -9.31256656128061E-0003 -9.25763360409798E-0003 --9.20290104203671E-0003 -9.14836864413609E-0003 -9.09403617776145E-0003 -9.03990340861098E-0003 -8.98597010072332E-0003 --8.93223601648508E-0003 -8.87870091663776E-0003 -8.82536456028561E-0003 -8.77222670490260E-0003 -8.71928710633993E-0003 --8.66654551883365E-0003 -8.61400169501165E-0003 -8.56165538590127E-0003 -8.50950634093682E-0003 -8.45755430796663E-0003 --8.40579903326094E-0003 -8.35424026151884E-0003 -8.30287773587592E-0003 -8.25171119791189E-0003 -8.20074038765751E-0003 --8.14996504360263E-0003 -8.09938490270310E-0003 -8.04899970038848E-0003 -7.99880917056959E-0003 -7.94881304564564E-0003 --7.89901105651210E-0003 -7.84940293256775E-0003 -7.79998840172237E-0003 -7.75076719040434E-0003 -7.70173902356774E-0003 --7.65290362470031E-0003 -7.60426071583046E-0003 -7.55581001753499E-0003 -7.50755124894675E-0003 -7.45948412776173E-0003 --7.41160837024699E-0003 -7.36392369124778E-0003 -7.31642980419521E-0003 -7.26912642111397E-0003 -7.22201325262936E-0003 --7.17509000797535E-0003 -7.12835639500161E-0003 -7.08181212018128E-0003 -7.03545688861859E-0003 -6.98929040405604E-0003 --6.94331236888238E-0003 -6.89752248413970E-0003 -6.85192044953115E-0003 -6.80650596342865E-0003 -6.76127872288010E-0003 --6.71623842361705E-0003 -6.67138476006244E-0003 -6.62671742533771E-0003 -6.58223611127084E-0003 -6.53794050840346E-0003 --6.49383030599859E-0003 -6.44990519204831E-0003 -6.40616485328099E-0003 -6.36260897516919E-0003 -6.31923724193693E-0003 --6.27604933656731E-0003 -6.23304494081027E-0003 -6.19022373518975E-0003 -6.14758539901169E-0003 -6.10512961037120E-0003 --6.06285604616027E-0003 -6.02076438207544E-0003 -5.97885429262508E-0003 -5.93712545113729E-0003 -5.89557752976712E-0003 --5.85421019950425E-0003 -5.81302313018072E-0003 -5.77201599047817E-0003 -5.73118844793568E-0003 -5.69054016895709E-0003 --5.65007081881866E-0003 -5.60978006167674E-0003 -5.56966756057502E-0003 -5.52973297745247E-0003 -5.48997597315050E-0003 --5.45039620742072E-0003 -5.41099333893259E-0003 -5.37176702528069E-0003 -5.33271692299240E-0003 -5.29384268753560E-0003 --5.25514397332588E-0003 -5.21662043373445E-0003 -5.17827172109536E-0003 -5.14009748671316E-0003 -5.10209738087059E-0003 --5.06427105283579E-0003 -5.02661815087020E-0003 -4.98913832223577E-0003 -4.95183121320261E-0003 -4.91469646905666E-0003 --4.87773373410692E-0003 -4.84094265169328E-0003 -4.80432286419379E-0003 -4.76787401303223E-0003 -4.73159573868584E-0003 --4.69548768069245E-0003 -4.65954947765839E-0003 -4.62378076726566E-0003 -4.58818118627956E-0003 -4.55275037055633E-0003 --4.51748795505035E-0003 -4.48239357382195E-0003 -4.44746686004462E-0003 -4.41270744601261E-0003 -4.37811496314854E-0003 --4.34368904201059E-0003 -4.30942931230031E-0003 -4.27533540286977E-0003 -4.24140694172919E-0003 -4.20764355605450E-0003 --4.17404487219454E-0003 -4.14061051567869E-0003 -4.10734011122437E-0003 -4.07423328274425E-0003 -4.04128965335399E-0003 --4.00850884537940E-0003 -3.97589048036401E-0003 -3.94343417907657E-0003 -3.91113956151824E-0003 -3.87900624693030E-0003 --3.84703385380130E-0003 -3.81522199987455E-0003 -3.78357030215568E-0003 -3.75207837691974E-0003 -3.72074583971890E-0003 --3.68957230538959E-0003 -3.65855738805996E-0003 -3.62770070115737E-0003 -3.59700185741556E-0003 -3.56646046888220E-0003 --3.53607614692609E-0003 -3.50584850224455E-0003 -3.47577714487092E-0003 -3.44586168418163E-0003 -3.41610172890380E-0003 --3.38649688712238E-0003 -3.35704676628747E-0003 -3.32775097322184E-0003 -3.29860911412796E-0003 -3.26962079459553E-0003 --3.24078561960863E-0003 -3.21210319355302E-0003 -3.18357312022355E-0003 -3.15519500283122E-0003 -3.12696844401071E-0003 --3.09889304582736E-0003 -3.07096840978459E-0003 -3.04319413683119E-0003 -3.01556982736840E-0003 -2.98809508125719E-0003 --2.96076949782562E-0003 -2.93359267587585E-0003 -2.90656421369153E-0003 -2.87968370904484E-0003 -2.85295075920375E-0003 --2.82636496093932E-0003 -2.79992591053262E-0003 -2.77363320378219E-0003 -2.74748643601094E-0003 -2.72148520207345E-0003 --2.69562909636315E-0003 -2.66991771281926E-0003 -2.64435064493419E-0003 -2.61892748576039E-0003 -2.59364782791760E-0003 --2.56851126360003E-0003 -2.54351738458322E-0003 -2.51866578223137E-0003 -2.49395604750424E-0003 -2.46938777096427E-0003 --2.44496054278371E-0003 -2.42067395275152E-0003 -2.39652759028058E-0003 -2.37252104441457E-0003 -2.34865390383502E-0003 --2.32492575686845E-0003 -2.30133619149318E-0003 -2.27788479534647E-0003 -2.25457115573142E-0003 -2.23139485962391E-0003 --2.20835549367975E-0003 -2.18545264424137E-0003 -2.16268589734493E-0003 -2.14005483872726E-0003 -2.11755905383266E-0003 --2.09519812781997E-0003 -2.07297164556931E-0003 -2.05087919168906E-0003 -2.02892035052280E-0003 -2.00709470615601E-0003 --1.98540184242313E-0003 -1.96384134291424E-0003 -1.94241279098195E-0003 -1.92111576974833E-0003 -1.89994986211154E-0003 --1.87891465075284E-0003 -1.85800971814321E-0003 -1.83723464655020E-0003 -1.81658901804478E-0003 -1.79607241450793E-0003 --1.77568441763760E-0003 -1.75542460895525E-0003 -1.73529256981268E-0003 -1.71528788139880E-0003 -1.69541012474615E-0003 --1.67565888073784E-0003 -1.65603373011401E-0003 -1.63653425347858E-0003 -1.61716003130601E-0003 -1.59791064394772E-0003 --1.57878567163900E-0003 -1.55978469450537E-0003 -1.54090729256934E-0003 -1.52215304575702E-0003 -1.50352153390459E-0003 --1.48501233676496E-0003 -1.46662503401435E-0003 -1.44835920525874E-0003 -1.43021443004052E-0003 -1.41219028784491E-0003 --1.39428635810651E-0003 -1.37650222021587E-0003 -1.35883745352581E-0003 -1.34129163735809E-0003 -1.32386435100968E-0003 --1.30655517375932E-0003 -1.28936368487396E-0003 -1.27228946361508E-0003 -1.25533208924524E-0003 -1.23849114103432E-0003 --1.22176619826597E-0003 -1.20515684024405E-0003 -1.18866264629883E-0003 -1.17228319579349E-0003 -1.15601806813029E-0003 --1.13986684275696E-0003 -1.12382909917307E-0003 -1.10790441693615E-0003 -1.09209237566812E-0003 -1.07639255506142E-0003 --1.06080453488532E-0003 -1.04532789499218E-0003 -1.02996221532354E-0003 -1.01470707591650E-0003 -9.99562056909727E-0004 --9.84526738549708E-0004 -9.69600701196966E-0004 -9.54783525332071E-0004 -9.40074791561906E-0004 -9.25474080625663E-0004 --9.10980973400990E-0004 -8.96595050910129E-0004 -8.82315894325892E-0004 -8.68143084977745E-0004 -8.54076204357924E-0004 --8.40114834127319E-0004 -8.26258556121639E-0004 -8.12506952357279E-0004 -7.98859605037347E-0004 -7.85316096557689E-0004 --7.71876009512706E-0004 -7.58538926701444E-0004 -7.45304431133378E-0004 -7.32172106034370E-0004 -7.19141534852606E-0004 --7.06212301264365E-0004 -6.93383989179988E-0004 -6.80656182749613E-0004 -6.68028466369060E-0004 -6.55500424685670E-0004 --6.43071642604004E-0004 -6.30741705291729E-0004 -6.18510198185296E-0004 -6.06376706995709E-0004 -5.94340817714315E-0004 --5.82402116618407E-0004 -5.70560190277039E-0004 -5.58814625556609E-0004 -5.47165009626572E-0004 -5.35610929965120E-0004 --5.24151974364724E-0004 -5.12787730937860E-0004 -5.01517788122514E-0004 -4.90341734687802E-0004 -4.79259159739581E-0004 --4.68269652725918E-0004 -4.57372803442660E-0004 -4.46568202038988E-0004 -4.35855439022843E-0004 -4.25234105266481E-0004 --4.14703792011878E-0004 -4.04264090876201E-0004 -3.93914593857280E-0004 -3.83654893338940E-0004 -3.73484582096494E-0004 --3.63403253302035E-0004 -3.53410500529841E-0004 -3.43505917761752E-0004 -3.33689099392420E-0004 -3.23959640234706E-0004 --3.14317135524902E-0004 -3.04761180928032E-0004 -2.95291372543154E-0004 -2.85907306908511E-0004 -2.76608581006854E-0004 --2.67394792270563E-0004 -2.58265538586872E-0004 -2.49220418303066E-0004 -2.40259030231558E-0004 -2.31380973655118E-0004 --2.22585848331904E-0004 -2.13873254500594E-0004 -2.05242792885500E-0004 -1.96694064701554E-0004 -1.88226671659436E-0004 --1.79840215970530E-0004 -1.71534300351955E-0004 -1.63308528031589E-0004 -1.55162502752981E-0004 -1.47095828780329E-0004 --1.39108110903440E-0004 -1.31198954442585E-0004 -1.23367965253469E-0004 -1.15614749732042E-0004 -1.07938914819382E-0004 --1.00340068006572E-0004 -9.28178173394542E-0005 -8.53717714234973E-0005 -7.80015394285354E-0005 -7.07067310935425E-0005 --6.34869567314156E-0005 -5.63418272336367E-0005 -4.92709540750501E-0005 -4.22739493184961E-0005 -3.53504256195046E-0005 --2.84999962309657E-0005 -2.17222750077160E-0005 -1.50168764112008E-0005 -8.38341551402421E-0006 -1.82150800454067E-0006 - 4.66922980856496E-0006 1.10891809917963E-0005 1.74387279822726E-0005 2.37182525832767E-0005 2.99281359597671E-0005 - 3.60687586338842E-0005 4.21405004805794E-0005 4.81437407231298E-0005 5.40788579287948E-0005 5.99462300044100E-0005 - 6.57462341920146E-0005 7.14792470645586E-0005 7.71456445215284E-0005 8.27458017846961E-0005 8.82800933938185E-0005 - 9.37488932023612E-0005 9.91525743732979E-0005 1.04491509374870E-0004 1.09766069976373E-0004 1.14976627244014E-0004 - 1.20123551536715E-0004 1.25207212502008E-0004 1.30227979071902E-0004 1.35186219458768E-0004 1.40082301151304E-0004 - 1.44916590910427E-0004 1.49689454765286E-0004 1.54401258009215E-0004 1.59052365195734E-0004 1.63643140134607E-0004 - 1.68173945887841E-0004 1.72645144765796E-0004 1.77057098323252E-0004 1.81410167355501E-0004 1.85704711894513E-0004 - 1.89941091205044E-0004 1.94119663780840E-0004 1.98240787340810E-0004 2.02304818825229E-0004 2.06312114392001E-0004 - 2.10263029412875E-0004 2.14157918469747E-0004 2.17997135350949E-0004 2.21781033047547E-0004 2.25509963749711E-0004 - 2.29184278843038E-0004 2.32804328904963E-0004 2.36370463701142E-0004 2.39883032181871E-0004 2.43342382478544E-0004 - 2.46748861900109E-0004 2.50102816929542E-0004 2.53404593220385E-0004 2.56654535593236E-0004 2.59852988032331E-0004 - 2.63000293682102E-0004 2.66096794843756E-0004 2.69142832971923E-0004 2.72138748671253E-0004 2.75084881693103E-0004 - 2.77981570932206E-0004 2.80829154423357E-0004 2.83627969338161E-0004 2.86378351981753E-0004 2.89080637789581E-0004 - 2.91735161324187E-0004 2.94342256272003E-0004 2.96902255440206E-0004 2.99415490753546E-0004 3.01882293251240E-0004 - 3.04302993083859E-0004 3.06677919510238E-0004 3.09007400894436E-0004 3.11291764702673E-0004 3.13531337500337E-0004 - 3.15726444948979E-0004 3.17877411803332E-0004 3.19984561908383E-0004 3.22048218196416E-0004 3.24068702684138E-0004 - 3.26046336469770E-0004 3.27981439730194E-0004 3.29874331718117E-0004 3.31725330759245E-0004 3.33534754249498E-0004 - 3.35302918652233E-0004 3.37030139495484E-0004 3.38716731369249E-0004 3.40363007922780E-0004 3.41969281861883E-0004 - 3.43535864946286E-0004 3.45063067986969E-0004 3.46551200843573E-0004 3.48000572421791E-0004 3.49411490670799E-0004 - 3.50784262580710E-0004 3.52119194180046E-0004 3.53416590533231E-0004 3.54676755738115E-0004 3.55899992923507E-0004 - 3.57086604246748E-0004 3.58236890891286E-0004 3.59351153064296E-0004 3.60429689994306E-0004 3.61472799928845E-0004 - 3.62480780132133E-0004 3.63453926882767E-0004 3.64392535471454E-0004 3.65296900198749E-0004 3.66167314372821E-0004 - 3.67004070307253E-0004 3.67807459318843E-0004 3.68577771725450E-0004 3.69315296843848E-0004 3.70020322987605E-0004 - 3.70693137464995E-0004 3.71334026576916E-0004 3.71943275614850E-0004 3.72521168858828E-0004 3.73067989575430E-0004 - 3.73584020015804E-0004 3.74069541413708E-0004 3.74524833983569E-0004 3.74950176918582E-0004 3.75345848388812E-0004 - 3.75712125539331E-0004 3.76049284488376E-0004 3.76357600325525E-0004 3.76637347109905E-0004 3.76888797868413E-0004 - 3.77112224593972E-0004 3.77307898243796E-0004 3.77476088737689E-0004 3.77617064956364E-0004 3.77731094739782E-0004 - 3.77818444885520E-0004 3.77879381147158E-0004 3.77914168232687E-0004 3.77923069802949E-0004 3.77906348470086E-0004 - 3.77864265796032E-0004 3.77797082291008E-0004 3.77705057412050E-0004 3.77588449561563E-0004 3.77447516085895E-0004 - 3.77282513273927E-0004 3.77093696355700E-0004 3.76881319501057E-0004 3.76645635818307E-0004 3.76386897352917E-0004 - 3.76105355086226E-0004 3.75801258934177E-0004 3.75474857746084E-0004 3.75126399303409E-0004 3.74756130318570E-0004 - 3.74364296433775E-0004 3.73951142219868E-0004 3.73516911175210E-0004 3.73061845724580E-0004 3.72586187218093E-0004 - 3.72090175930151E-0004 3.71574051058413E-0004 3.71038050722786E-0004 3.70482411964443E-0004 3.69907370744859E-0004 - 3.69313161944884E-0004 3.68700019363820E-0004 3.68068175718537E-0004 3.67417862642604E-0004 3.66749310685445E-0004 - 3.66062749311526E-0004 3.65358406899549E-0004 3.64636510741689E-0004 3.63897287042837E-0004 3.63140960919876E-0004 - 3.62367756400984E-0004 3.61577896424948E-0004 3.60771602840512E-0004 3.59949096405741E-0004 3.59110596787418E-0004 - 3.58256322560455E-0004 3.57386491207330E-0004 3.56501319117553E-0004 3.55601021587146E-0004 3.54685812818151E-0004 - 3.53755905918170E-0004 3.52811512899908E-0004 3.51852844680763E-0004 3.50880111082420E-0004 3.49893520830477E-0004 - 3.48893281554102E-0004 3.47879599785693E-0004 3.46852680960584E-0004 3.45812729416760E-0004 3.44759948394596E-0004 - 3.43694540036630E-0004 3.42616705387348E-0004 3.41526644392994E-0004 3.40424555901415E-0004 3.39310637661907E-0004 - 3.38185086325116E-0004 3.37048097442924E-0004 3.35899865468392E-0004 3.34740583755711E-0004 3.33570444560174E-0004 - 3.32389639038180E-0004 3.31198357247255E-0004 3.29996788146094E-0004 3.28785119594644E-0004 3.27563538354179E-0004 - 3.26332230087432E-0004 3.25091379358725E-0004 3.23841169634134E-0004 3.22581783281681E-0004 3.21313401571531E-0004 - 3.20036204676241E-0004 3.18750371671002E-0004 3.17456080533924E-0004 3.16153508146342E-0004 3.14842830293134E-0004 - 3.13524221663078E-0004 3.12197855849219E-0004 3.10863905349263E-0004 3.09522541566006E-0004 3.08173934807761E-0004 - 3.06818254288834E-0004 3.05455668130010E-0004 3.04086343359060E-0004 3.02710445911283E-0004 3.01328140630055E-0004 - 2.99939591267415E-0004 2.98544960484671E-0004 2.97144409853019E-0004 2.95738099854204E-0004 2.94326189881181E-0004 - 2.92908838238820E-0004 2.91486202144624E-0004 2.90058437729464E-0004 2.88625700038358E-0004 2.87188143031243E-0004 - 2.85745919583797E-0004 2.84299181488273E-0004 2.82848079454348E-0004 2.81392763110015E-0004 2.79933381002473E-0004 - 2.78470080599060E-0004 2.77003008288206E-0004 2.75532309380391E-0004 2.74058128109157E-0004 2.72580607632108E-0004 - 2.71099890031961E-0004 2.69616116317607E-0004 2.68129426425193E-0004 2.66639959219235E-0004 2.65147852493745E-0004 - 2.63653242973385E-0004 2.62156266314650E-0004 2.60657057107058E-0004 2.59155748874374E-0004 2.57652474075864E-0004 - 2.56147364107546E-0004 2.54640549303495E-0004 2.53132158937143E-0004 2.51622321222620E-0004 2.50111163316114E-0004 - 2.48598811317241E-0004 2.47085390270459E-0004 2.45571024166484E-0004 2.44055835943738E-0004 2.42539947489828E-0004 - 2.41023479643020E-0004 2.39506552193774E-0004 2.37989283886265E-0004 2.36471792419947E-0004 2.34954194451140E-0004 - 2.33436605594621E-0004 2.31919140425264E-0004 2.30401912479675E-0004 2.28885034257871E-0004 2.27368617224971E-0004 - 2.25852771812905E-0004 2.24337607422158E-0004 2.22823232423523E-0004 2.21309754159883E-0004 2.19797278948017E-0004 - 2.18285912080419E-0004 2.16775757827152E-0004 2.15266919437709E-0004 2.13759499142906E-0004 2.12253598156800E-0004 - 2.10749316678613E-0004 2.09246753894701E-0004 2.07746007980517E-0004 2.06247176102622E-0004 2.04750354420703E-0004 - 2.03255638089616E-0004 2.01763121261446E-0004 2.00272897087606E-0004 1.98785057720929E-0004 1.97299694317812E-0004 - 1.95816897040356E-0004 1.94336755058544E-0004 1.92859356552439E-0004 1.91384788714388E-0004 1.89913137751272E-0004 - 1.88444488886756E-0004 1.86978926363569E-0004 1.85516533445812E-0004 1.84057392421271E-0004 1.82601584603768E-0004 - 1.81149190335523E-0004 1.79700288989534E-0004 1.78254958971998E-0004 1.76813277724725E-0004 1.75375321727599E-0004 - 1.73941166501035E-0004 1.72510886608482E-0004 1.71084555658933E-0004 1.69662246309451E-0004 1.68244030267732E-0004 - 1.66829978294676E-0004 1.65420160206977E-0004 1.64014644879753E-0004 1.62613500249169E-0004 1.61216793315106E-0004 - 1.59824590143831E-0004 1.58436955870697E-0004 1.57053954702873E-0004 1.55675649922071E-0004 1.54302103887309E-0004 - 1.52933378037705E-0004 1.51569532895258E-0004 1.50210628067690E-0004 1.48856722251271E-0004 1.47507873233692E-0004 - 1.46164137896949E-0004 1.44825572220234E-0004 1.43492231282874E-0004 1.42164169267262E-0004 1.40841439461822E-0004 - 1.39524094264001E-0004 1.38212185183261E-0004 1.36905762844109E-0004 1.35604876989139E-0004 1.34309576482089E-0004 - 1.33019909310936E-0004 1.31735922590987E-0004 1.30457662568006E-0004 1.29185174621356E-0004 1.27918503267157E-0004 - 1.26657692161474E-0004 1.25402784103508E-0004 1.24153821038827E-0004 1.22910844062596E-0004 1.21673893422836E-0004 - 1.20443008523714E-0004 1.19218227928824E-0004 1.17999589364518E-0004 1.16787129723229E-0004 1.15580885066835E-0004 - 1.14380890630034E-0004 1.13187180823728E-0004 1.11999789238440E-0004 1.10818748647752E-0004 1.09644091011740E-0004 - 1.08475847480458E-0004 1.07314048397415E-0004 1.06158723303082E-0004 1.05009900938426E-0004 1.03867609248440E-0004 - 1.02731875385718E-0004 1.01602725714025E-0004 1.00480185811902E-0004 9.93642804762833E-0005 9.82550337261277E-0005 - 9.71524688060806E-0005 9.60566081901377E-0005 9.49674735853392E-0005 9.38850859354828E-0005 9.28094654248407E-0005 - 9.17406314819155E-0005 9.06786027831931E-0005 8.96233972569280E-0005 8.85750320869448E-0005 8.75335237164463E-0005 - 8.64988878518570E-0005 8.54711394666666E-0005 8.44502928053025E-0005 8.34363613870210E-0005 8.24293580098027E-0005 - 8.14292947542841E-0005 8.04361829876885E-0005 7.94500333677862E-0005 7.84708558468717E-0005 7.74986596757469E-0005 - 7.65334534077380E-0005 7.55752449027133E-0005 7.46240413311285E-0005 7.36798491780897E-0005 7.27426742474227E-0005 - 7.18125216657692E-0005 7.08893958867001E-0005 6.99733006948345E-0005 6.90642392099911E-0005 6.81622138913408E-0005 - 6.72672265415860E-0005 6.63792783111568E-0005 6.54983697024122E-0005 6.46245005738747E-0005 6.37576701444642E-0005 - 6.28978769977593E-0005 6.20451190862744E-0005 6.11993937357428E-0005 6.03606976494309E-0005 5.95290269124533E-0005 - 5.87043769961138E-0005 5.78867427622623E-0005 5.70761184676571E-0005 5.62724977683583E-0005 5.54758737241216E-0005 - 5.46862388028178E-0005 5.39035848848670E-0005 5.31279032676797E-0005 5.23591846701266E-0005 5.15974192370099E-0005 - 5.08425965435592E-0005 5.00947055999422E-0005 4.93537348557816E-0005 4.86196722047004E-0005 4.78925049888689E-0005 - 4.71722200035750E-0005 4.64588035018095E-0005 4.57522411988585E-0005 4.50525182769176E-0005 4.43596193897211E-0005 - 4.36735286671775E-0005 4.29942297200309E-0005 4.23217056445251E-0005 4.16559390270907E-0005 4.09969119490447E-0005 - 4.03446059912977E-0005 3.96990022390866E-0005 3.90600812867092E-0005 3.84278232422804E-0005 3.78022077325029E-0005 - 3.71832139074435E-0005 3.65708204453337E-0005 3.59650055573745E-0005 3.53657469925601E-0005 3.47730220425163E-0005 - 3.41868075463444E-0005 3.36070798954895E-0005 3.30338150386109E-0005 3.24669884864731E-0005 3.19065753168497E-0005 - 3.13525501794327E-0005 3.08048873007663E-0005 3.02635604891818E-0005 2.97285431397531E-0005 2.91998082392639E-0005 - 2.86773283711820E-0005 2.81610757206542E-0005 2.76510220795059E-0005 2.71471388512576E-0005 2.66493970561547E-0005 - 2.61577673362034E-0005 2.56722199602243E-0005 2.51927248289179E-0005 2.47192514799363E-0005 2.42517690929749E-0005 - 2.37902464948678E-0005 2.33346521647002E-0005 2.28849542389325E-0005 2.24411205165299E-0005 2.20031184641123E-0005 - 2.15709152211068E-0005 2.11444776049171E-0005 2.07237721161034E-0005 2.03087649435694E-0005 1.98994219697663E-0005 - 1.94957087759013E-0005 1.90975906471617E-0005 1.87050325779488E-0005 1.83179992771189E-0005 1.79364551732407E-0005 - 1.75603644198568E-0005 1.71896909007601E-0005 1.68243982352801E-0005 1.64644497835754E-0005 1.61098086519420E-0005 - 1.57604376981261E-0005 1.54162995366501E-0005 1.50773565441494E-0005 1.47435708647136E-0005 1.44149044152443E-0005 - 1.40913188908157E-0005 1.37727757700496E-0005 1.34592363204984E-0005 1.31506616040344E-0005 1.28470124822536E-0005 - 1.25482496218830E-0005 1.22543335002008E-0005 1.19652244104643E-0005 1.16808824673454E-0005 1.14012676123755E-0005 - 1.11263396194011E-0005 1.08560581000430E-0005 1.05903825091698E-0005 1.03292721503741E-0005 1.00726861814603E-0005 - 9.82058361994093E-0006 9.57292334853710E-0006 9.32966412069194E-0006 9.09076456608718E-0006 8.85618319617030E-0006 - 8.62587840968929E-0006 8.39980849823215E-0006 8.17793165177780E-0006 7.96020596425028E-0006 7.74658943908287E-0006 - 7.53703999478909E-0006 7.33151547053835E-0006 7.12997363174206E-0006 6.93237217564294E-0006 6.73866873691344E-0006 - 6.54882089326061E-0006 6.36278617103522E-0006 6.18052205085065E-0006 6.00198597320470E-0006 5.82713534410970E-0006 - 5.65592754072873E-0006 5.48831991701570E-0006 5.32426980936427E-0006 5.16373454225963E-0006 5.00667143393780E-0006 - 4.85303780205044E-0006 4.70279096933346E-0006 4.55588826928258E-0006 4.41228705183407E-0006 4.27194468904884E-0006 - 4.13481858080418E-0006 4.00086616048772E-0006 3.87004490069801E-0006 3.74231231894958E-0006 3.61762598338109E-0006 - 3.49594351847022E-0006 3.37722261075068E-0006 3.26142101453484E-0006 3.14849655764058E-0006 3.03840714712065E-0006 - 2.93111077499808E-0006 2.82656552400331E-0006 2.72472957331632E-0006 2.62556120431234E-0006 2.52901880630974E-0006 - 2.43506088232309E-0006 2.34364605481771E-0006 2.25473307146843E-0006 2.16828081092136E-0006 2.08424828855750E-0006 - 2.00259466226064E-0006 1.92327923818643E-0006 1.84626147653497E-0006 1.77150099732582E-0006 1.69895758617438E-0006 - 1.62859120007180E-0006 1.56036197316572E-0006 1.49423022254378E-0006 1.43015645401890E-0006 1.36810136791571E-0006 - 1.30802586485914E-0006 1.24989105156462E-0006 1.19365824662882E-0006 1.13928898632273E-0006 1.08674503038491E-0006 - 1.03598836781632E-0006 9.86981222676072E-0007 9.39686059877353E-0007 8.94065590984879E-0007 8.50082780012005E-0007 - 8.07700849218815E-0007 7.66883284910474E-0007 7.27593843235242E-0007 6.89796555983268E-0007 6.53455736384577E-0007 - 6.18535984907337E-0007 5.85002195055753E-0007 5.52819559167116E-0007 5.21953574208867E-0007 4.92370047574380E-0007 - 4.64035102878296E-0007 4.36915185750883E-0007 4.10977069630993E-0007 3.86187861558292E-0007 3.62515007963696E-0007 - 3.39926300458652E-0007 3.18389881622815E-0007 2.97874250789750E-0007 2.78348269831185E-0007 2.59781168938914E-0007 - 2.42142552404845E-0007 2.25402404398817E-0007 2.09531094743841E-0007 1.94499384689168E-0007 1.80278432680443E-0007 - 1.66839800127311E-0007 1.54155457168117E-0007 1.42197788431473E-0007 1.30939598794822E-0007 1.20354119139715E-0007 - 1.10415012103557E-0007 1.01096377828016E-0007 9.23727597035572E-0008 8.42191501103199E-0008 7.66109961550292E-0008 - 6.95242054037519E-0008 6.29351516105832E-0008 5.68206804418617E-0008 5.11581151959981E-0008 4.59252625186816E-0008 - 4.11004181132793E-0008 3.66623724464466E-0008 3.25904164486295E-0008 2.88643472094703E-0008 2.54644736679135E-0008 - 2.23716222968396E-0008 1.95671427821928E-0008 1.70329136963429E-0008 1.47513481656412E-0008 1.27053995319858E-0008 - 1.08785670082381E-0008 9.25490132741344E-0009 7.81901038543281E-0009 6.55606487735346E-0009 5.45180392691020E-0009 - 4.49254070921713E-0009 3.66516806652169E-0009 2.95716411683005E-0009 2.35659785529261E-0009 1.85213474819201E-0009 - 1.43304231938749E-0009 1.08919572908469E-0009 8.11083344778362E-0010 5.89812304222458E-0010 4.17114070291669E-0010 - 2.85349977579572E-0010 1.87516770595818E-0010 1.17252133412875E-0010 6.88402106163626E-0011 3.72171194148893E-0011 - 1.79764527601180E-0011 7.37477333181816E-0012 2.33709823949355E-0012 4.62374292984783E-0013 2.89436940290008E-0014 diff --git a/examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs b/examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs new file mode 120000 index 00000000000..f8b779307d0 --- /dev/null +++ b/examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs @@ -0,0 +1 @@ +../../../potentials/Zr_mm.eam.fs \ No newline at end of file diff --git a/examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential b/examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential deleted file mode 100644 index ea87e0e5ca4..00000000000 --- a/examples/PACKAGES/sna_nnn_slcsa/dir.inputs/Zr.potential +++ /dev/null @@ -1,3 +0,0 @@ -pair_style hybrid/overlay zero 9.0 eam/fs -pair_coeff * * zero -pair_coeff * * eam/fs dir.inputs/Zr_2.eam.fs Zr \ No newline at end of file diff --git a/examples/PACKAGES/sna_nnn_slcsa/in.slcsa b/examples/PACKAGES/sna_nnn_slcsa/in.slcsa index 9e65afefda3..31a8189da38 100644 --- a/examples/PACKAGES/sna_nnn_slcsa/in.slcsa +++ b/examples/PACKAGES/sna_nnn_slcsa/in.slcsa @@ -27,7 +27,7 @@ change_box all triclinic pair_style hybrid/overlay zero 9.0 eam/fs pair_coeff * * zero -pair_coeff * * eam/fs Zr_2.eam.fs Zr +pair_coeff * * eam/fs Zr_mm.eam.fs Zr timestep 0.002 diff --git a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 index 38b1f112514..58c2f40684e 100644 --- a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 +++ b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1 @@ -43,7 +43,8 @@ Changing box ... pair_style hybrid/overlay zero 9.0 eam/fs pair_coeff * * zero -pair_coeff * * eam/fs Zr_2.eam.fs Zr +pair_coeff * * eam/fs Zr_mm.eam.fs Zr +Reading eam/fs potential file Zr_mm.eam.fs with DATE: 2007-06-11 timestep 0.002 @@ -60,6 +61,48 @@ compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 # 2nd step : perform dimension reduction + logistic regression compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] +Files used: + database mean descriptor: dir.slcsa/mean_descriptor.dat + lda scalings : dir.slcsa/lda_scalings.dat + lr decision : dir.slcsa/lr_decision.dat + lr bias : dir.slcsa/lr_bias.dat + maha stats : dir.slcsa/mahalanobis_file.dat +For class 0 maha threshold = 5.054 + mean B: + -23.8329 + 4.6638 + 3.9805 + icov: + 1.1377 0.1077 -0.0171 + 0.1077 0.8846 -0.2577 + -0.0171 -0.2577 0.6783 +For class 1 maha threshold = 5.234 + mean B: + -21.2853 + -6.1583 + 1.7948 + icov: + 1.7124 0.0341 0.1966 + 0.0341 0.6453 0.288 + 0.1966 0.288 1.8991 +For class 2 maha threshold = 5.036 + mean B: + -23.1593 + 1.3059 + -5.7549 + icov: + 0.7496 -0.0806 -0.1101 + -0.0806 1.1178 0.1667 + -0.1101 0.1667 0.6711 +For class 3 maha threshold = 7.994 + mean B: + 68.1971 + 0.1604 + -0.0067 + icov: + 0.9663 -0.1846 0.6622 + -0.1846 8.2371 0.9841 + 0.6622 0.9841 5.9601 #dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*] @@ -101,37 +144,37 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 31.9 | 31.9 | 31.9 Mbytes Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5] - 0 -139689.93 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 - 50 -138733.53 1165.0291 417.29048 8.2778907 18.221432 3.019507 113.65218 2 5.2735872 10.834132 0.042702874 108.2674 2 - 100 -138821.33 1442.648 516.7281 8.3357676 17.470311 2.7073063 113.39999 2 6.145345 12.307441 0.034372881 108.61824 2 - 150 -138607.9 1435.9634 514.33383 8.3817341 17.984657 2.892662 113.40287 2 5.3635301 10.064171 0.030283213 107.5829 2 - 200 -138494.56 1560.9093 559.08699 8.5615388 18.429835 2.8130845 114.31517 2 5.4711815 11.113891 0.074490923 107.87418 2 -Loop time of 36.3263 on 1 procs for 200 steps with 21600 atoms - -Performance: 0.951 ns/day, 25.227 hours/ns, 5.506 timesteps/s, 118.922 katom-step/s + 0 -143297.23 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 + 50 -142154.08 1007.7164 360.9442 8.8091564 19.23244 4.2093382 113.87959 2 5.0327148 9.6817454 0.02610585 106.71863 2 + 100 -142365.33 1406.6559 503.83647 8.6272189 17.908949 2.9294666 113.75167 2 6.2058895 11.913521 0.033775944 108.66893 2 + 150 -142188.18 1432.0075 512.91691 8.6441961 18.176321 2.9277374 114.27958 2 5.5899425 10.521867 0.014919473 108.14526 2 + 200 -142000.4 1481.7247 530.72462 8.5895692 18.65646 3.1725758 114.55015 2 5.5955774 10.776385 0.061469343 108.35384 2 +Loop time of 36.3759 on 1 procs for 200 steps with 21600 atoms + +Performance: 0.950 ns/day, 25.261 hours/ns, 5.498 timesteps/s, 118.760 katom-step/s 99.8% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 9.012 | 9.012 | 9.012 | 0.0 | 24.81 -Neigh | 0.67881 | 0.67881 | 0.67881 | 0.0 | 1.87 -Comm | 0.045066 | 0.045066 | 0.045066 | 0.0 | 0.12 -Output | 26.422 | 26.422 | 26.422 | 0.0 | 72.74 -Modify | 0.14726 | 0.14726 | 0.14726 | 0.0 | 0.41 -Other | | 0.02121 | | | 0.06 +Pair | 9.0837 | 9.0837 | 9.0837 | 0.0 | 24.97 +Neigh | 0.52896 | 0.52896 | 0.52896 | 0.0 | 1.45 +Comm | 0.045416 | 0.045416 | 0.045416 | 0.0 | 0.12 +Output | 26.548 | 26.548 | 26.548 | 0.0 | 72.98 +Modify | 0.1493 | 0.1493 | 0.1493 | 0.0 | 0.41 +Other | | 0.02088 | | | 0.06 Nlocal: 21600 ave 21600 max 21600 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 36652 ave 36652 max 36652 min +Nghost: 36674 ave 36674 max 36674 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 2.5961e+06 ave 2.5961e+06 max 2.5961e+06 min +Neighs: 2.61729e+06 ave 2.61729e+06 max 2.61729e+06 min Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 5.19109e+06 ave 5.19109e+06 max 5.19109e+06 min +FullNghs: 5.24007e+06 ave 5.24007e+06 max 5.24007e+06 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 5191091 -Ave neighs/atom = 240.32829 -Neighbor list builds = 5 +Total # of neighbors = 5240069 +Ave neighs/atom = 242.59579 +Neighbor list builds = 4 Dangerous builds = 0 Total wall time: 0:00:43 diff --git a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 index bda7ee0f39d..6436eabe2b4 100644 --- a/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 +++ b/examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4 @@ -43,7 +43,8 @@ Changing box ... pair_style hybrid/overlay zero 9.0 eam/fs pair_coeff * * zero -pair_coeff * * eam/fs Zr_2.eam.fs Zr +pair_coeff * * eam/fs Zr_mm.eam.fs Zr +Reading eam/fs potential file Zr_mm.eam.fs with DATE: 2007-06-11 timestep 0.002 @@ -60,6 +61,48 @@ compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 # 2nd step : perform dimension reduction + logistic regression compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*] +Files used: + database mean descriptor: dir.slcsa/mean_descriptor.dat + lda scalings : dir.slcsa/lda_scalings.dat + lr decision : dir.slcsa/lr_decision.dat + lr bias : dir.slcsa/lr_bias.dat + maha stats : dir.slcsa/mahalanobis_file.dat +For class 0 maha threshold = 5.054 + mean B: + -23.8329 + 4.6638 + 3.9805 + icov: + 1.1377 0.1077 -0.0171 + 0.1077 0.8846 -0.2577 + -0.0171 -0.2577 0.6783 +For class 1 maha threshold = 5.234 + mean B: + -21.2853 + -6.1583 + 1.7948 + icov: + 1.7124 0.0341 0.1966 + 0.0341 0.6453 0.288 + 0.1966 0.288 1.8991 +For class 2 maha threshold = 5.036 + mean B: + -23.1593 + 1.3059 + -5.7549 + icov: + 0.7496 -0.0806 -0.1101 + -0.0806 1.1178 0.1667 + -0.1101 0.1667 0.6711 +For class 3 maha threshold = 7.994 + mean B: + 68.1971 + 0.1604 + -0.0067 + icov: + 0.9663 -0.1846 0.6622 + -0.1846 8.2371 0.9841 + 0.6622 0.9841 5.9601 #dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*] @@ -101,37 +144,37 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 11.26 | 11.45 | 11.64 Mbytes Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5] - 0 -139689.93 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 - 50 -138733.53 1165.0291 417.29048 8.2778907 18.221432 3.019507 113.65218 2 5.2735872 10.834132 0.042702874 108.2674 2 - 100 -138821.33 1442.648 516.7281 8.3357676 17.470311 2.7073063 113.39999 2 6.145345 12.307441 0.034372881 108.61824 2 - 150 -138607.9 1435.9634 514.33383 8.3817341 17.984657 2.892662 113.40287 2 5.3635301 10.064171 0.030283213 107.5829 2 - 200 -138494.56 1560.9093 559.08699 8.5615388 18.429835 2.8130845 114.31517 2 5.4711815 11.113891 0.074490923 107.87418 2 -Loop time of 9.89929 on 4 procs for 200 steps with 21600 atoms + 0 -143297.23 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2 + 50 -142154.08 1007.7164 360.9442 8.8091564 19.23244 4.2093382 113.87959 2 5.0327148 9.6817454 0.02610585 106.71863 2 + 100 -142365.33 1406.6559 503.83647 8.6272189 17.908949 2.9294666 113.75167 2 6.2058895 11.913521 0.033775944 108.66893 2 + 150 -142188.18 1432.0075 512.91691 8.6441961 18.176321 2.9277374 114.27958 2 5.5899425 10.521867 0.014919473 108.14526 2 + 200 -142000.4 1481.7247 530.72462 8.5895692 18.65646 3.1725758 114.55015 2 5.5955774 10.776385 0.061469343 108.35384 2 +Loop time of 9.81677 on 4 procs for 200 steps with 21600 atoms -Performance: 3.491 ns/day, 6.875 hours/ns, 20.203 timesteps/s, 436.395 katom-step/s -99.8% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 3.521 ns/day, 6.817 hours/ns, 20.373 timesteps/s, 440.063 katom-step/s +99.7% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.61 | 2.618 | 2.622 | 0.3 | 26.45 -Neigh | 0.19338 | 0.19618 | 0.19967 | 0.5 | 1.98 -Comm | 0.051086 | 0.055818 | 0.065206 | 2.4 | 0.56 -Output | 6.9725 | 6.9725 | 6.9725 | 0.0 | 70.43 -Modify | 0.04635 | 0.046617 | 0.046825 | 0.1 | 0.47 -Other | | 0.01018 | | | 0.10 - -Nlocal: 5400 ave 5431 max 5376 min -Histogram: 1 1 0 0 0 0 1 0 0 1 -Nghost: 12889.2 ave 12909 max 12847 min -Histogram: 1 0 0 0 0 0 0 0 1 2 -Neighs: 649026 ave 652559 max 642783 min -Histogram: 1 0 0 0 0 0 1 0 1 1 -FullNghs: 1.29777e+06 ave 1.30656e+06 max 1.29086e+06 min -Histogram: 1 1 0 0 0 0 1 0 0 1 - -Total # of neighbors = 5191084 -Ave neighs/atom = 240.32796 -Neighbor list builds = 5 +Pair | 2.6508 | 2.6589 | 2.6698 | 0.5 | 27.09 +Neigh | 0.1516 | 0.15276 | 0.15406 | 0.3 | 1.56 +Comm | 0.047132 | 0.058969 | 0.066095 | 3.2 | 0.60 +Output | 6.8886 | 6.8886 | 6.8886 | 0.0 | 70.17 +Modify | 0.046437 | 0.04661 | 0.046825 | 0.1 | 0.47 +Other | | 0.01091 | | | 0.11 + +Nlocal: 5400 ave 5416 max 5393 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Nghost: 12902.8 ave 12911 max 12888 min +Histogram: 1 0 0 0 0 0 1 0 0 2 +Neighs: 654322 ave 655602 max 650912 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +FullNghs: 1.31002e+06 ave 1.31507e+06 max 1.30683e+06 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 5240065 +Ave neighs/atom = 242.5956 +Neighbor list builds = 4 Dangerous builds = 0 Total wall time: 0:00:11 diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp index 70bc5442a16..1cc11d4fb2e 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -38,20 +38,25 @@ using namespace LAMMPS_NS; static const char cite_compute_slcsa_atom_c[] = - "compute slcsa/atom command: doi:10.1088/0965-0393/21/5/055020\n\n" - "@Article{Lafourcade2023,\n" - " author = {P. Lafourcade and J.-B. Maillet and C. Denoual and E. Duval and A. Allera and A. M. Goryaeva and M.-C. Marinica},\n" - " title = {Robust crystal structure identification at extreme conditions using a density-independent spectral descriptor and supervised learning},\n" - " journal = {Computational Materials Science},\n" - " year = 2023,\n" - " volume = XX,\n" - " pages = {XXXXXX}\n" - "}\n\n"; + "compute slcsa/atom command: doi:10.1088/0965-0393/21/5/055020\n\n" + "@Article{Lafourcade2023,\n" + " author = {P. Lafourcade and J.-B. Maillet and C. Denoual and E. Duval and A. Allera and A. " + "M. Goryaeva and M.-C. Marinica},\n" + " title = {Robust crystal structure identification at extreme conditions using a " + "density-independent spectral descriptor and supervised learning},\n" + " journal = {Computational Materials Science},\n" + " year = 2023,\n" + " volume = XX,\n" + " pages = {XXXXXX}\n" + "}\n\n"; /* ---------------------------------------------------------------------- */ - ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), list(nullptr), classification(nullptr) + Compute(lmp, narg, arg), list(nullptr), lda_scalings(nullptr), + database_mean_descriptor(nullptr), lr_bias(nullptr), lr_decision(nullptr), icov_list(nullptr), + mean_projected_descriptors(nullptr), maha_thresholds(nullptr), full_descriptor(nullptr), + projected_descriptor(nullptr), scores(nullptr), probas(nullptr), prodright(nullptr), + dmaha(nullptr), classification(nullptr) { // command : compute c1 all slcsa/atom jmax nclasses parameters_file.dat // example : compute c1 all slcsa/atom 8 4 slcsa_parameters.dat @@ -74,14 +79,16 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : // # LR bias vector // vector with 1 row x nclasses cols - if (narg != 11) error->all(FLERR, "Illegal compute slcsa/atom command; wrong numer of arguments"); + if (narg != 11) utils::missing_cmd_args(FLERR, "compute slcsa/atom", error); int twojmax = utils::inumeric(FLERR, arg[3], false, lmp); - if (twojmax < 0) error->all(FLERR, "Illegal compute slcsa/atom command: twojmax should be a non-negative integer"); + if (twojmax < 0) + error->all(FLERR, "Illegal compute slcsa/atom command: twojmax must be a non-negative integer"); ncomps = compute_ncomps(twojmax); nclasses = utils::inumeric(FLERR, arg[4], false, lmp); - if (nclasses < 2) error->all(FLERR, "Illegal compute slcsa/atom command: nclasses should be strictly greater than 1"); + if (nclasses < 2) + error->all(FLERR, "Illegal compute slcsa/atom command: nclasses must be greater than 1"); database_mean_descriptor_file = arg[5]; lda_scalings_file = arg[6]; @@ -89,11 +96,14 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : lr_bias_file = arg[8]; maha_file = arg[9]; - std::cout << " file database mean descriptor : " << database_mean_descriptor_file << std::endl; - std::cout << " file lda scalings : " << lda_scalings_file << std::endl; - std::cout << " file lr decision : " << lr_decision_file << std::endl; - std::cout << " file lr bias : " << lr_bias_file << std::endl; - std::cout << " file maha stats : " << maha_file << std::endl; + if (comm->me == 0) { + auto mesg = fmt::format( + "Files used:\n {:24}: {}\n {:24}: {}\n {:24}: {}\n {:24}: {}\n {:24}: {}\n", + "database mean descriptor", database_mean_descriptor_file, "lda scalings", + lda_scalings_file, "lr decision", lr_decision_file, "lr bias", lr_bias_file, "maha stats", + maha_file); + utils::logmesg(lmp, mesg); + } int expand = 0; char **earg; @@ -108,7 +118,8 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : val.which = argi.get_type(); val.argindex = argi.get_index1(); val.id = argi.get_name(); - if ((val.which == ArgInfo::FIX) || (val.which == ArgInfo::VARIABLE) || (val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1)) + if ((val.which == ArgInfo::FIX) || (val.which == ArgInfo::VARIABLE) || + (val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1)) error->all(FLERR, "Invalid compute slcsa/atom argument: {}", arg[0]); // if wildcard expansion occurred, free earg memory from exapnd_args() @@ -119,123 +130,126 @@ ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) : } val.val.c = modify->get_compute_by_id(val.id); - if (!val.val.c) error->all(FLERR,"Compute ID {} for fix slcsa/atom does not exist", val.id); + if (!val.val.c) error->all(FLERR, "Compute ID {} for fix slcsa/atom does not exist", val.id); if (val.val.c->peratom_flag == 0) error->all(FLERR, "Compute slcsa/atom compute {} does not calculate per-atom values", val.id); if (val.argindex == 0 && val.val.c->size_peratom_cols != 0) - error->all(FLERR,"Compute slcsa/atom compute {} does not calculate a per-atom vector", val.id); + error->all(FLERR, "Compute slcsa/atom compute {} does not calculate a per-atom vector", val.id); if (val.argindex && val.val.c->size_peratom_cols == 0) - error->all(FLERR,"Compute slcsa/atom compute {} does not calculate a per-atom array", val.id); + error->all(FLERR, "Compute slcsa/atom compute {} does not calculate a per-atom array", val.id); if (val.argindex && val.argindex > val.val.c->size_peratom_cols) - error->all(FLERR,"Compute slcsa/atom compute {} array is accessed out-of-range", val.id); + error->all(FLERR, "Compute slcsa/atom compute {} array is accessed out-of-range", val.id); descriptorval = val; memory->create(database_mean_descriptor, ncomps, "slcsa/atom:database_mean_descriptor"); - memory->create(lda_scalings, ncomps, nclasses-1, "slcsa/atom:lda_scalings"); - memory->create(lr_decision, nclasses, nclasses-1, "slcsa/atom:lr_decision"); + memory->create(lda_scalings, ncomps, nclasses - 1, "slcsa/atom:lda_scalings"); + memory->create(lr_decision, nclasses, nclasses - 1, "slcsa/atom:lr_decision"); memory->create(lr_bias, nclasses, "slcsa/atom:lr_bias"); memory->create(maha_thresholds, nclasses, "slcsa/atom:maha_thresholds"); - memory->create(icov_list, nclasses, nclasses-1, nclasses-1, "slcsa/atom:icov_list"); - memory->create(mean_projected_descriptors, nclasses, nclasses-1, "slcsa/atom:mean_projected_descriptors"); + memory->create(icov_list, nclasses, nclasses - 1, nclasses - 1, "slcsa/atom:icov_list"); + memory->create(mean_projected_descriptors, nclasses, nclasses - 1, + "slcsa/atom:mean_projected_descriptors"); if (comm->me == 0) { - if (strcmp(database_mean_descriptor_file,"NULL") == 0) { - error->one(FLERR,"Cannot open database mean descriptor file {}: ", database_mean_descriptor_file, utils::getsyserror()); + if (strcmp(database_mean_descriptor_file, "NULL") == 0) { + error->one(FLERR, + "Cannot open database mean descriptor file {}: ", database_mean_descriptor_file, + utils::getsyserror()); } else { - PotentialFileReader reader(lmp,database_mean_descriptor_file, "database mean descriptor file"); - int nread=0; - while (nreadone(FLERR,"Cannot open database linear discriminant analysis scalings file {}: ", lda_scalings_file, utils::getsyserror()); + if (strcmp(lda_scalings_file, "NULL") == 0) { + error->one(FLERR, "Cannot open database linear discriminant analysis scalings file {}: ", + lda_scalings_file, utils::getsyserror()); } else { - PotentialFileReader reader(lmp,lda_scalings_file, "lda scalings file"); - int nread=0; - while (nreadone(FLERR,"Cannot open logistic regression decision file {}: ", lr_decision_file, utils::getsyserror()); + if (strcmp(lr_decision_file, "NULL") == 0) { + error->one(FLERR, "Cannot open logistic regression decision file {}: ", lr_decision_file, + utils::getsyserror()); } else { - PotentialFileReader reader(lmp,lr_decision_file, "lr decision file"); - int nread=0; - while (nreadone(FLERR,"Cannot open logistic regression bias file {}: ", lr_bias_file, utils::getsyserror()); + if (strcmp(lr_bias_file, "NULL") == 0) { + error->one(FLERR, "Cannot open logistic regression bias file {}: ", lr_bias_file, + utils::getsyserror()); } else { - PotentialFileReader reader(lmp,lr_bias_file, "lr bias file"); + PotentialFileReader reader(lmp, lr_bias_file, "lr bias file"); auto values = reader.next_values(nclasses); - lr_bias[0]=values.next_double(); - lr_bias[1]=values.next_double(); - lr_bias[2]=values.next_double(); - lr_bias[3]=values.next_double(); + lr_bias[0] = values.next_double(); + lr_bias[1] = values.next_double(); + lr_bias[2] = values.next_double(); + lr_bias[3] = values.next_double(); } - if (strcmp(maha_file,"NULL") == 0) { - error->one(FLERR,"Cannot open mahalanobis stats file {}: ", maha_file, utils::getsyserror()); + if (strcmp(maha_file, "NULL") == 0) { + error->one(FLERR, "Cannot open mahalanobis stats file {}: ", maha_file, utils::getsyserror()); } else { - PotentialFileReader reader(lmp,maha_file, "mahalanobis stats file"); - int nvalues = nclasses*((nclasses-1)*(nclasses-1)+nclasses); + PotentialFileReader reader(lmp, maha_file, "mahalanobis stats file"); + int nvalues = nclasses * ((nclasses - 1) * (nclasses - 1) + nclasses); auto values = reader.next_values(nvalues); - for(int i=0;idestroy(projected_descriptor); memory->destroy(scores); memory->destroy(probas); + memory->destroy(prodright); + memory->destroy(dmaha); } /* ---------------------------------------------------------------------- */ @@ -296,76 +312,69 @@ void ComputeSLCSAAtom::compute_peratom() descriptorval.val.c->compute_peratom(); descriptorval.val.c->invoked_flag |= Compute::INVOKED_PERATOM; } - compute_array = descriptorval.val.c->array_atom; + compute_array = descriptorval.val.c->array_atom; } memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor"); - memory->create(projected_descriptor, nclasses-1, "slcsa/atom:reduced descriptor"); - memory->create(scores, nclasses, "slcsa/atom:probas"); + memory->create(projected_descriptor, nclasses - 1, "slcsa/atom:reduced descriptor"); + memory->create(scores, nclasses, "slcsa/atom:scores"); memory->create(probas, nclasses, "slcsa/atom:probas"); - memory->create(prodright, nclasses-1, "slcsa/atom:prodright"); + memory->create(prodright, nclasses - 1, "slcsa/atom:prodright"); memory->create(dmaha, nclasses, "slcsa/atom:prodright"); for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - for (int j = 0; j < ncomps; j++) { - full_descriptor[j] = compute_array[i][j]; - } + for (int j = 0; j < ncomps; j++) { full_descriptor[j] = compute_array[i][j]; } // Here comes the LDA + LR process // 1st step : Retrieve mean database descriptor - for (int j = 0; j < ncomps; j++) { - full_descriptor[j] -= database_mean_descriptor[j]; - } + for (int j = 0; j < ncomps; j++) { full_descriptor[j] -= database_mean_descriptor[j]; } // 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1 - for (int j = 0; j < nclasses-1; j++) { + for (int j = 0; j < nclasses - 1; j++) { projected_descriptor[j] = 0.; for (int k = 0; k < ncomps; k++) { - projected_descriptor[j] += full_descriptor[k]*lda_scalings[k][j]; + projected_descriptor[j] += full_descriptor[k] * lda_scalings[k][j]; } } // 3rd step : Matrix multiplication for (int j = 0; j < nclasses; j++) { scores[j] = lr_bias[j]; - for (int k = 0; k < nclasses-1; k++) { + for (int k = 0; k < nclasses - 1; k++) { scores[j] += lr_decision[j][k] * projected_descriptor[k]; } } // 4th step : Matrix multiplication - double sumexpscores=0.; + double sumexpscores = 0.; for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]); - for (int j = 0; j < nclasses; j++) { - probas[j] = exp(scores[j])/sumexpscores; - } + for (int j = 0; j < nclasses; j++) { probas[j] = exp(scores[j]) / sumexpscores; } - classification[i][nclasses]=argmax(probas,nclasses); + classification[i][nclasses] = argmax(probas, nclasses); // 5th step : Mahalanobis distance for (int j = 0; j < nclasses; j++) { - prodright[0]=0.; - prodright[1]=0.; - prodright[2]=0.; - for (int k = 0; k < nclasses-1; k++) { - for (int l = 0; l < nclasses-1; l++) { - prodright[k] += (icov_list[j][k][l] * (projected_descriptor[k]-mean_projected_descriptors[j][k])); + prodright[0] = 0.; + prodright[1] = 0.; + prodright[2] = 0.; + for (int k = 0; k < nclasses - 1; k++) { + for (int l = 0; l < nclasses - 1; l++) { + prodright[k] += + (icov_list[j][k][l] * (projected_descriptor[k] - mean_projected_descriptors[j][k])); } } - double prodleft=0.; - for (int k = 0; k < nclasses-1; k++) { - prodleft += (prodright[k]*(projected_descriptor[k]-mean_projected_descriptors[j][k])); + double prodleft = 0.; + for (int k = 0; k < nclasses - 1; k++) { + prodleft += (prodright[k] * (projected_descriptor[k] - mean_projected_descriptors[j][k])); } - classification[i][j]=sqrt(prodleft); + classification[i][j] = sqrt(prodleft); } // 6th step : Sanity check - int locclass=classification[i][nclasses]; + int locclass = classification[i][nclasses]; - if (classification[i][locclass]>maha_thresholds[locclass]){ - classification[i][nclasses]=-1.; + if (classification[i][locclass] > maha_thresholds[locclass]) { + classification[i][nclasses] = -1.; } } else { - for (int j = 0; j < ncols; j++) { - classification[i][j] = -1.; - } + for (int j = 0; j < ncols; j++) { classification[i][j] = -1.; } } } memory->destroy(full_descriptor); @@ -373,7 +382,6 @@ void ComputeSLCSAAtom::compute_peratom() memory->destroy(scores); memory->destroy(probas); memory->destroy(prodright); - } int ComputeSLCSAAtom::compute_ncomps(int twojmax) @@ -384,24 +392,24 @@ int ComputeSLCSAAtom::compute_ncomps(int twojmax) for (int j1 = 0; j1 <= twojmax; j1++) for (int j2 = 0; j2 <= j1; j2++) - for (int j = j1 - j2; - j <= MIN(twojmax, j1 + j2); j += 2) + for (int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) if (j >= j1) ncount++; return ncount; } -int ComputeSLCSAAtom::argmax(double arr[], int size) { - int maxIndex = 0; // Initialize the index of the maximum value to the first element. - double maxValue = arr[0]; // Initialize the maximum value to the first element. - - for (int i = 1; i < size; ++i) { - if (arr[i] > maxValue) { - // If a greater value is found, update the maxIndex and maxValue. - maxIndex = i; - maxValue = arr[i]; - } +int ComputeSLCSAAtom::argmax(double arr[], int size) +{ + int maxIndex = 0; // Initialize the index of the maximum value to the first element. + double maxValue = arr[0]; // Initialize the maximum value to the first element. + + for (int i = 1; i < size; ++i) { + if (arr[i] > maxValue) { + // If a greater value is found, update the maxIndex and maxValue. + maxIndex = i; + maxValue = arr[i]; } + } - return maxIndex; + return maxIndex; } diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.h b/src/EXTRA-COMPUTE/compute_slcsa_atom.h index 41b64d5b229..6d7cd90c313 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.h +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.h @@ -38,6 +38,7 @@ class ComputeSLCSAAtom : public Compute { // double memory_usage() override; int compute_ncomps(int); int argmax(double *, int); + private: struct value_t { int which; // type of data: COMPUTE, FIX, VARIABLE @@ -86,7 +87,6 @@ class ComputeSLCSAAtom : public Compute { // Output array double **classification; - }; } // namespace LAMMPS_NS From 569c23a1e60fd6cb447e26df5360cf59de3d4653 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 12 Dec 2023 22:54:50 -0600 Subject: [PATCH 214/300] Fixed typo with the kernel names in lj/cut/coul/cut/soft --- lib/gpu/lal_lj_coul_soft.cpp | 2 +- lib/gpu/lal_lj_coul_soft.cu | 4 ++-- lib/gpu/lal_lj_coul_soft_ext.cpp | 2 +- src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/gpu/lal_lj_coul_soft.cpp b/lib/gpu/lal_lj_coul_soft.cpp index 96bcf41aa36..9ee6486817e 100644 --- a/lib/gpu/lal_lj_coul_soft.cpp +++ b/lib/gpu/lal_lj_coul_soft.cpp @@ -56,7 +56,7 @@ int LJCoulSoftT::init(const int ntypes, double *host_special_coul, const double qqrd2e) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, - _screen,lj_coul_soft,"lj_coul_soft"); + _screen,lj_coul_soft,"k_lj_coul_soft"); if (success!=0) return success; diff --git a/lib/gpu/lal_lj_coul_soft.cu b/lib/gpu/lal_lj_coul_soft.cu index 74da36e2c17..1fc564bde67 100644 --- a/lib/gpu/lal_lj_coul_soft.cu +++ b/lib/gpu/lal_lj_coul_soft.cu @@ -225,7 +225,7 @@ __kernel void k_lj_coul_soft_fast(const __global numtyp4 *restrict x_, numtyp forcecoul, force_lj, force; numtyp r4sig6, denlj, denc; - if (rsq < lj1[mtype].z) { + if (rsq < lj1[mtype].z) { // cut_ljsq[itype][jtype] r4sig6 = rsq*rsq / lj1[mtype].y; denlj = lj3[mtype].x + rsq*r4sig6; force_lj = lj1[mtype].x * lj3[mtype].w * @@ -234,7 +234,7 @@ __kernel void k_lj_coul_soft_fast(const __global numtyp4 *restrict x_, } else force_lj = (numtyp)0.0; - if (rsq < lj1[mtype].w) { + if (rsq < lj1[mtype].w) { // cut_coulsq[itype][jtype] fetch(forcecoul,j,q_tex); denc = sqrt(lj3[mtype].y + rsq); forcecoul *= qqrd2e * lj1[mtype].x * qtmp / (denc*denc*denc); diff --git a/lib/gpu/lal_lj_coul_soft_ext.cpp b/lib/gpu/lal_lj_coul_soft_ext.cpp index 8c10db14f69..02d367b3c74 100644 --- a/lib/gpu/lal_lj_coul_soft_ext.cpp +++ b/lib/gpu/lal_lj_coul_soft_ext.cpp @@ -43,7 +43,7 @@ int ljcs_gpu_init(const int ntypes, double **cutsq, double **host_lj1, int gpu_rank=LJCSMF.device->gpu_rank(); int procs_per_gpu=LJCSMF.device->procs_per_gpu(); - LJCSMF.device->init_message(screen,"lj/cut/coul/cut",first_gpu,last_gpu); + LJCSMF.device->init_message(screen,"lj/cut/coul/cut/soft",first_gpu,last_gpu); bool message=false; if (LJCSMF.device->replica_me()==0 && screen) diff --git a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp index d65e3bd4cf8..cfde3ab632d 100644 --- a/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_soft_gpu.cpp @@ -110,6 +110,8 @@ void PairLJCutCoulCutSoftGPU::compute(int eflag, int vflag) } if (!success) error->one(FLERR, "Insufficient memory on accelerator"); + if (atom->molecular != Atom::ATOMIC && neighbor->ago == 0) + neighbor->build_topology(); if (host_start < inum) { cpu_time = platform::walltime(); cpu_compute(host_start, inum, eflag, vflag, ilist, numneigh, firstneigh); @@ -227,13 +229,11 @@ void PairLJCutCoulCutSoftGPU::cpu_compute(int start, int inum, int eflag, int /* f[i][1] += dely * fpair; f[i][2] += delz * fpair; - if (eflag) { if (rsq < cut_coulsq[itype][jtype]) ecoul = factor_coul * qqrd2e * lj1[itype][jtype] * qtmp*q[j] / denc; else ecoul = 0.0; - if (rsq < cut_ljsq[itype][jtype]) { evdwl = lj1[itype][jtype] * 4.0 * epsilon[itype][jtype] * (1.0/(denlj*denlj) - 1.0/denlj) - offset[itype][jtype]; From c2dbd7dc9d661d430a28c4d3b6b85e3eb58497af Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 23:54:33 -0500 Subject: [PATCH 215/300] plug one more memory leak --- src/EXTRA-COMPUTE/compute_slcsa_atom.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp index 1cc11d4fb2e..f12551085c1 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -382,6 +382,7 @@ void ComputeSLCSAAtom::compute_peratom() memory->destroy(scores); memory->destroy(probas); memory->destroy(prodright); + memory->destroy(dmaha); } int ComputeSLCSAAtom::compute_ncomps(int twojmax) From 5543912a12054920903110c8cd5a1a709dd0d708 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 12 Dec 2023 23:58:43 -0500 Subject: [PATCH 216/300] add missing potential file --- potentials/PSiO.nb3b.screened | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 potentials/PSiO.nb3b.screened diff --git a/potentials/PSiO.nb3b.screened b/potentials/PSiO.nb3b.screened new file mode 100644 index 00000000000..445da13e7aa --- /dev/null +++ b/potentials/PSiO.nb3b.screened @@ -0,0 +1,41 @@ +# DATE: 2023-10-30 UNITS: metal CONTRIBUTOR: Federica Lodesani CITATION: Bertani, Menziani, Pedone (2021). Physical Review Materials, 5(4), 045602 +# +# Multiple entries can be added to this file, LAMMPS only reads the ones it needs +# +# These entries are in LAMMPS "metal" units: +# +# Format of a single entry (one or more lines): +# element 1 (central atom), element 2, element 3, +# k_theta, theta_0, rho, cutoff +# +# (ijj)-->determines cutoff for i-j distance +# (jik)-->determines k, theta_0 for i-j-k angle term +# +# i j k K theta0 rho cutoff +O P P 32.5 109.47 1.0 3.3 +O P Si 60.0 109.47 1.0 0.000 +O P O 0.000 0.000 1.0 0.000 +O Si P 60.0 109.47 1.0 0.000 +O Si Si 12.5 109.47 1.0 3.3 +O Si O 0.000 0.000 1.0 0.000 +O O P 0.000 0.000 1.0 0.000 +O O Si 0.000 0.000 1.0 0.000 +O O O 0.000 0.000 1.0 0.000 +P P P 0.000 0.000 1.0 0.000 +P P Si 0.000 0.000 1.0 0.000 +P P O 0.000 0.000 1.0 0.000 +P Si P 0.000 0.000 1.0 0.000 +P Si Si 0.000 0.000 1.0 0.000 +P Si O 0.000 0.000 1.0 0.000 +P O P 0.000 0.000 1.0 0.000 +P O Si 0.000 0.000 1.0 0.000 +P O O 0.000 0.000 1.0 0.000 +Si P P 0.000 0.000 1.0 0.000 +Si P Si 0.000 0.000 1.0 0.000 +Si P O 0.000 0.000 1.0 0.000 +Si Si P 0.000 0.000 1.0 0.000 +Si Si Si 0.000 0.000 1.0 0.000 +Si Si O 0.000 0.000 1.0 0.000 +Si O P 0.000 0.000 1.0 0.000 +Si O Si 0.000 0.000 1.0 0.000 +Si O O 0.000 0.000 1.0 0.000 From 1cff1deedcf1b1e63e6366319d2304bb310bf770 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 00:24:49 -0500 Subject: [PATCH 217/300] add valgrind suppressions for MPICH on Fedora 39 --- tools/valgrind/MPICH.supp | 41 +++++++++++++++++++++++++++++++++++++++ tools/valgrind/README | 1 + 2 files changed, 42 insertions(+) create mode 100644 tools/valgrind/MPICH.supp diff --git a/tools/valgrind/MPICH.supp b/tools/valgrind/MPICH.supp new file mode 100644 index 00000000000..6934cf8fbd1 --- /dev/null +++ b/tools/valgrind/MPICH.supp @@ -0,0 +1,41 @@ +{ + MPICH_MPI_init1 + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + obj:* + ... + fun:psm3_init + ... + fun:MPIDI_OFI_init_local + ... + fun:PMPI_Init + fun:main +} +{ + MPICH_MPI_init2 + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + fun:strdup + obj:* + ... + fun:fi_ini + ... + fun:MPIDI_OFI_init_local + ... + fun:PMPI_Init + fun:main +} +{ + MPICH_MPI_init3 + Memcheck:Leak + match-leak-kinds: reachable + fun:calloc + obj:* + ... + fun:MPIDI_OFI_init_local + ... + fun:PMPI_Init + fun:main +} diff --git a/tools/valgrind/README b/tools/valgrind/README index 63c440f7b2b..e62031da9b8 100644 --- a/tools/valgrind/README +++ b/tools/valgrind/README @@ -8,6 +8,7 @@ on running LAMMPS, use a command line like following: valgrind --show-leak-kinds=all --track-origins=yes \ --suppressions=/path/to/lammps/tools/valgrind/OpenMP.supp \ --suppressions=/path/to/lammps/tools/valgrind/OpenMPI.supp \ + --suppressions=/path/to/lammps/tools/valgrind/MPICH.supp \ --suppressions=/path/to/lammps/tools/valgrind/Python3.supp \ --suppressions=/path/to/lammps/tools/valgrind/GTest.supp \ --suppressions=/path/to/lammps/tools/valgrind/FlexiBLAS.supp \ From f53e2c3398d24bea06a4e287d6306c11f12007ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 00:49:41 -0500 Subject: [PATCH 218/300] update details about unittests --- doc/src/Developer_unittest.rst | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index 67c5ce365a7..e311fcdfc53 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -274,9 +274,7 @@ Tests for using the Fortran module are in the ``unittest/fortran`` folder. Since they are also using the GoogleTest library, they require to also implement test wrappers in C++ that will call fortran functions which provide a C function interface through ISO_C_BINDINGS that will in -turn call the functions in the LAMMPS Fortran module. This part of the -unit tests is incomplete since the Fortran module it is based on is -incomplete as well. +turn call the functions in the LAMMPS Fortran module. Tests for the C++-style library interface ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -397,10 +395,10 @@ compare with the reference and also start from the data file. A final check will use multi-cutoff r-RESPA (if supported by the pair style) at a 1:1 split and compare to the Verlet results. These sets of tests are run with multiple test fixtures for accelerated styles (OPT, OPENMP, -INTEL) and for the latter two with 4 OpenMP threads enabled. For -these tests the relative error (epsilon) is lowered by a common factor -due to the additional numerical noise, but the tests are still comparing -to the same reference data. +INTEL, KOKKOS (OpenMP only)) and for the latter three with 4 OpenMP +threads enabled. For these tests the relative error (epsilon) is lowered +by a common factor due to the additional numerical noise, but the tests +are still comparing to the same reference data. Additional tests will check whether all listed extract keywords are supported and have the correct dimensionality and the final set of tests @@ -434,17 +432,19 @@ The ``test_pair_style`` tester is used with 4 categories of test inputs: pair style is defined, but the computation of the pair style contributions is disabled. -The ``test_bond_style`` and ``test_angle_style`` are set up in a similar -fashion and share support functions with the pair style tester. The final -group of tests in this section is for fix styles that add/manipulate forces -and velocities, e.g. for time integration, thermostats and more. +The ``test_bond_style``, ``test_angle_style``, ``test_dihedral_style``, and +``test_improper_style`` tester programs are set up in a similar fashion and +share support functions with the pair style tester. The final group of +tests in this section is for fix styles that add/manipulate forces and +velocities, e.g. for time integration, thermostats and more. -Adding a new test is easiest done by copying and modifying an existing test -for a style that is similar to one to be tested. The file name should follow -the naming conventions described above and after copying the file, the first -step is to replace the style names where needed. The coefficient values -do not have to be meaningful, just in a reasonable range for the given system. -It does not matter if some forces are large, for as long as they do not diverge. +Adding a new test is easiest done by copying and modifying an existing YAML +file for a style that is similar to one to be tested. The file name should +follow the naming conventions described above and after copying the file, +the first step is to replace the style names where needed. The coefficient +values do not have to be meaningful, just in a reasonable range for the +given system. It does not matter if some forces are large, for as long as +they do not diverge. The template input files define a large number of index variables at the top that can be modified inside the YAML file to control the behavior. For example, @@ -472,7 +472,7 @@ Note that this disables computing the kspace contribution, but still will run the setup. The "gewald" parameter should be set explicitly to speed up the run. For styles with long-range electrostatics, typically two tests are added one using the (slower) analytic approximation of the erfc() function and the other using -the tabulated coulomb, to test both code paths. The reference results in the YAML +the tabulated coulomb, to test both code paths. The reference results in the YAML files then should be compared manually, if they agree well enough within the limits of those two approximations. From 0b35b9872281c02d77da7965997c65b64f63bfd1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 11:30:17 -0500 Subject: [PATCH 219/300] add missing define to fix building ML-PACE with conventional build --- lib/pace/Makefile.lammps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pace/Makefile.lammps b/lib/pace/Makefile.lammps index 6411e49a071..e2219180563 100644 --- a/lib/pace/Makefile.lammps +++ b/lib/pace/Makefile.lammps @@ -1,3 +1,3 @@ -pace_SYSINC =-I../../lib/pace/src/ML-PACE -I../../lib/pace/src/yaml-cpp/include -I../../lib/pace/src/wigner-cpp/include -DEXTRA_C_PROJECTIONS +pace_SYSINC =-I../../lib/pace/src/ML-PACE -I../../lib/pace/src/yaml-cpp/include -I../../lib/pace/src/wigner-cpp/include -DEXTRA_C_PROJECTIONS -DCOMPUTE_B_GRAD pace_SYSLIB = -L../../lib/pace/ -lpace -L../../lib/pace/src/yaml-cpp/ -lyaml-cpp pace_SYSPATH = From 304e141f247188bafba55e13c3d378fa705a5fa6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 11:46:01 -0500 Subject: [PATCH 220/300] add missing define to GNU make based build of pace library as well --- lib/pace/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pace/Makefile b/lib/pace/Makefile index 5a1588ef935..a7ac753d285 100644 --- a/lib/pace/Makefile +++ b/lib/pace/Makefile @@ -21,7 +21,7 @@ OBJ = $(SRC:.cpp=.o) # ------ SETTINGS ------ -CXXFLAGS = -O3 -fPIC -Isrc/ML-PACE -I$(YAML_CPP_INC) -I$(WIGNER_CPP_INC) -I$(CNPY_CPP_INC) -DEXTRA_C_PROJECTIONS +CXXFLAGS = -O3 -fPIC -Isrc/ML-PACE -I$(YAML_CPP_INC) -I$(WIGNER_CPP_INC) -I$(CNPY_CPP_INC) -DEXTRA_C_PROJECTIONS -DCOMPUTE_B_GRAD ARCHIVE = ar ARCHFLAG = -rc From 754041ee361a1c07cb0967cf791bafc789681e96 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 11:57:03 -0500 Subject: [PATCH 221/300] minor fix --- examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat index d8edd92837a..467f1844d9a 100644 --- a/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat +++ b/examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat @@ -1 +1 @@ --6.32012657 5.62127377 1.19871662 -0.49986382 \ No newline at end of file +-6.32012657 5.62127377 1.19871662 -0.49986382 From 0cf4c9e7a32585ca7c78d4fd4df4f50c89d83d9b Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Wed, 13 Dec 2023 11:07:42 -0700 Subject: [PATCH 222/300] Whitespace --- src/KOKKOS/compute_reaxff_atom_kokkos.cpp | 13 ++++++------- src/KOKKOS/pair_reaxff_kokkos.cpp | 6 +++--- src/REAXFF/compute_reaxff_atom.cpp | 17 +++++++---------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp index c3e9367ff4c..8dbcb9441e5 100644 --- a/src/KOKKOS/compute_reaxff_atom_kokkos.cpp +++ b/src/KOKKOS/compute_reaxff_atom_kokkos.cpp @@ -42,7 +42,6 @@ ComputeReaxFFAtomKokkos::ComputeReaxFFAtomKokkos(LAMMPS *lmp, int na kokkosable = 1; } - /* ---------------------------------------------------------------------- */ template @@ -58,7 +57,7 @@ void ComputeReaxFFAtomKokkos::init() { ComputeReaxFFAtom::init(); - if(!reaxff || !reaxff->kokkosable) { + if (!reaxff || !reaxff->kokkosable) { error->all(FLERR,"Cannot use compute reaxff/atom/kk without " "pair_style reaxff/kk"); } @@ -88,7 +87,7 @@ void ComputeReaxFFAtomKokkos::compute_bonds() nbuf = ((store_bonds ? maxnumbonds*2 : 0) + 3)*nlocal; - if(!buf || k_buf.extent(0) < nbuf) { + if (!buf || k_buf.extent(0) < nbuf) { memoryKK->destroy_kokkos(k_buf, buf); memoryKK->create_kokkos(k_buf, buf, nbuf, "reaxff/atom:buf"); } @@ -119,10 +118,10 @@ void ComputeReaxFFAtomKokkos::compute_local() { invoked_local = update->ntimestep; - if(invoked_bonds < update->ntimestep) + if (invoked_bonds < update->ntimestep) compute_bonds(); - if(nbonds > prev_nbonds) { + if (nbonds > prev_nbonds) { // grow array_local memory->destroy(array_local); memory->create(array_local, nbonds, 3, "reaxff/atom:array_local"); @@ -158,7 +157,7 @@ void ComputeReaxFFAtomKokkos::compute_peratom() { invoked_peratom = update->ntimestep; - if(invoked_bonds < update->ntimestep) + if (invoked_bonds < update->ntimestep) compute_bonds(); // extract peratom bond information from buffer @@ -182,7 +181,7 @@ template double ComputeReaxFFAtomKokkos::memory_usage() { double bytes = (double)(nlocal*3) * sizeof(double); - if(store_bonds) + if (store_bonds) bytes += (double)(nbonds*3) * sizeof(double); bytes += (double)(nbuf > 0 ? nbuf * sizeof(double) : 0); return bytes; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 29ac3981281..11a40970c22 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -4200,13 +4200,13 @@ void PairReaxFFKokkos::calculate_find_bond_item(int ii, int &numbond const int i = d_ilist[ii]; int nj = 0; - if(mask[i] & groupbit) { + if (mask[i] & groupbit) { const int j_start = d_bo_first[i]; const int j_end = j_start + d_bo_num[i]; for (int jj = j_start; jj < j_end; jj++) { int j = d_bo_list[jj]; j &= NEIGHMASK; - if(mask[j] & groupbit) { + if (mask[j] & groupbit) { const tagint jtag = tag[j]; const int j_index = jj - j_start; double bo_tmp = d_BO(i,j_index); @@ -4262,7 +4262,7 @@ void PairReaxFFKokkos::PackReducedBondBuffer(DAT::tdual_ffloat_1d k_ copymode = 1; nlocal = atomKK->nlocal; - if(store_bonds) { + if (store_bonds) { PairReaxKokkosPackReducedBondBufferFunctor pack_bond_buffer_functor(this); Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); } else { diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index fba67ecacf3..1b54f3b82ac 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -79,7 +79,6 @@ ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : local_flag = store_bonds; } - /* ---------------------------------------------------------------------- */ ComputeReaxFFAtom::~ComputeReaxFFAtom() @@ -107,7 +106,7 @@ void ComputeReaxFFAtom::init() if (!reaxff) error->all(FLERR,"Cannot use compute reaxff/atom without " "pair_style reaxff or reaxff/omp"); - if(reaxff->kokkosable && !kokkosable) + if (reaxff->kokkosable && !kokkosable) error->all(FLERR,"Cannot use compute reaxff/atom with pair_style reaxff/kk. Use reaxff/atom/kk."); } @@ -142,7 +141,7 @@ int ComputeReaxFFAtom::FindBond() bo_tmp = bo_ij->bo_data.BO; if (bo_tmp > bo_cut) { - if(store_bonds) { + if (store_bonds) { neighid[i][nj] = jtag; abo[i][nj] = bo_tmp; } @@ -157,7 +156,6 @@ int ComputeReaxFFAtom::FindBond() return numbonds; } - /* ---------------------------------------------------------------------- */ void ComputeReaxFFAtom::compute_bonds() @@ -170,7 +168,7 @@ void ComputeReaxFFAtom::compute_bonds() memory->destroy(bondcount); memory->destroy(array_atom); nlocal = atom->nlocal; - if(store_bonds) { + if (store_bonds) { memory->create(abo, nlocal, MAXREAXBOND, "reaxff/atom:abo"); memory->create(neighid, nlocal, MAXREAXBOND, "reaxff/atom:neighid"); } @@ -195,11 +193,10 @@ void ComputeReaxFFAtom::compute_local() { invoked_local = update->ntimestep; - if(invoked_bonds < update->ntimestep) { + if (invoked_bonds < update->ntimestep) compute_bonds(); - } - if(nbonds > prev_nbonds) { + if (nbonds > prev_nbonds) { // grow array_local memory->destroy(array_local); memory->create(array_local, nbonds, 3, "reaxff/atom:array_local"); @@ -229,7 +226,7 @@ void ComputeReaxFFAtom::compute_peratom() { invoked_peratom = update->ntimestep; - if(invoked_bonds < update->ntimestep) { + if (invoked_bonds < update->ntimestep) { compute_bonds(); } @@ -249,7 +246,7 @@ double ComputeReaxFFAtom::memory_usage() { double bytes = (double)(nlocal*3) * sizeof(double); bytes += (double)(nlocal) * sizeof(int); - if(store_bonds) { + if (store_bonds) { bytes += (double)(2*nlocal*MAXREAXBOND) * sizeof(double); bytes += (double)(nbonds*3) * sizeof(double); } From 61fd4d643b492cb55217a2a7d285b41d38b46f44 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 19:20:08 -0500 Subject: [PATCH 223/300] correct logic for "cannot happen" case --- src/EXTRA-COMPUTE/compute_slcsa_atom.cpp | 126 +++++++++++------------ 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp index f12551085c1..509362a73b9 100644 --- a/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp +++ b/src/EXTRA-COMPUTE/compute_slcsa_atom.cpp @@ -305,84 +305,84 @@ void ComputeSLCSAAtom::compute_peratom() int *mask = atom->mask; int nlocal = atom->nlocal; - double **compute_array; if (descriptorval.which == ArgInfo::COMPUTE) { if (!(descriptorval.val.c->invoked_flag & Compute::INVOKED_PERATOM)) { descriptorval.val.c->compute_peratom(); descriptorval.val.c->invoked_flag |= Compute::INVOKED_PERATOM; } - compute_array = descriptorval.val.c->array_atom; - } - - memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor"); - memory->create(projected_descriptor, nclasses - 1, "slcsa/atom:reduced descriptor"); - memory->create(scores, nclasses, "slcsa/atom:scores"); - memory->create(probas, nclasses, "slcsa/atom:probas"); - memory->create(prodright, nclasses - 1, "slcsa/atom:prodright"); - memory->create(dmaha, nclasses, "slcsa/atom:prodright"); - - for (int i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) { - for (int j = 0; j < ncomps; j++) { full_descriptor[j] = compute_array[i][j]; } - // Here comes the LDA + LR process - // 1st step : Retrieve mean database descriptor - for (int j = 0; j < ncomps; j++) { full_descriptor[j] -= database_mean_descriptor[j]; } - // 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1 - for (int j = 0; j < nclasses - 1; j++) { - projected_descriptor[j] = 0.; - for (int k = 0; k < ncomps; k++) { - projected_descriptor[j] += full_descriptor[k] * lda_scalings[k][j]; + double **compute_array = descriptorval.val.c->array_atom; + + memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor"); + memory->create(projected_descriptor, nclasses - 1, "slcsa/atom:reduced descriptor"); + memory->create(scores, nclasses, "slcsa/atom:scores"); + memory->create(probas, nclasses, "slcsa/atom:probas"); + memory->create(prodright, nclasses - 1, "slcsa/atom:prodright"); + memory->create(dmaha, nclasses, "slcsa/atom:prodright"); + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + for (int j = 0; j < ncomps; j++) full_descriptor[j] = compute_array[i][j]; + // Here comes the LDA + LR process + // 1st step : Retrieve mean database descriptor + for (int j = 0; j < ncomps; j++) full_descriptor[j] -= database_mean_descriptor[j]; + // 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1 + for (int j = 0; j < nclasses - 1; j++) { + projected_descriptor[j] = 0.0; + for (int k = 0; k < ncomps; k++) { + projected_descriptor[j] += full_descriptor[k] * lda_scalings[k][j]; + } } - } - // 3rd step : Matrix multiplication - for (int j = 0; j < nclasses; j++) { - scores[j] = lr_bias[j]; - for (int k = 0; k < nclasses - 1; k++) { - scores[j] += lr_decision[j][k] * projected_descriptor[k]; + // 3rd step : Matrix multiplication + for (int j = 0; j < nclasses; j++) { + scores[j] = lr_bias[j]; + for (int k = 0; k < nclasses - 1; k++) { + scores[j] += lr_decision[j][k] * projected_descriptor[k]; + } } - } - // 4th step : Matrix multiplication - double sumexpscores = 0.; - for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]); - for (int j = 0; j < nclasses; j++) { probas[j] = exp(scores[j]) / sumexpscores; } - - classification[i][nclasses] = argmax(probas, nclasses); - - // 5th step : Mahalanobis distance - for (int j = 0; j < nclasses; j++) { - prodright[0] = 0.; - prodright[1] = 0.; - prodright[2] = 0.; - for (int k = 0; k < nclasses - 1; k++) { - for (int l = 0; l < nclasses - 1; l++) { - prodright[k] += - (icov_list[j][k][l] * (projected_descriptor[k] - mean_projected_descriptors[j][k])); + // 4th step : Matrix multiplication + double sumexpscores = 0.0; + for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]); + for (int j = 0; j < nclasses; j++) probas[j] = exp(scores[j]) / sumexpscores; + + classification[i][nclasses] = argmax(probas, nclasses); + + // 5th step : Mahalanobis distance + for (int j = 0; j < nclasses; j++) { + prodright[0] = 0.0; + prodright[1] = 0.0; + prodright[2] = 0.0; + for (int k = 0; k < nclasses - 1; k++) { + for (int l = 0; l < nclasses - 1; l++) { + prodright[k] += (icov_list[j][k][l] * + (projected_descriptor[k] - mean_projected_descriptors[j][k])); + } } + double prodleft = 0.0; + for (int k = 0; k < nclasses - 1; k++) { + prodleft += + (prodright[k] * (projected_descriptor[k] - mean_projected_descriptors[j][k])); + } + classification[i][j] = sqrt(prodleft); } - double prodleft = 0.; - for (int k = 0; k < nclasses - 1; k++) { - prodleft += (prodright[k] * (projected_descriptor[k] - mean_projected_descriptors[j][k])); + // 6th step : Sanity check + int locclass = classification[i][nclasses]; + + if (classification[i][locclass] > maha_thresholds[locclass]) { + classification[i][nclasses] = -1.0; } - classification[i][j] = sqrt(prodleft); - } - // 6th step : Sanity check - int locclass = classification[i][nclasses]; - if (classification[i][locclass] > maha_thresholds[locclass]) { - classification[i][nclasses] = -1.; + } else { + for (int j = 0; j < ncols; j++) classification[i][j] = -1.0; } - - } else { - for (int j = 0; j < ncols; j++) { classification[i][j] = -1.; } } + memory->destroy(full_descriptor); + memory->destroy(projected_descriptor); + memory->destroy(scores); + memory->destroy(probas); + memory->destroy(prodright); + memory->destroy(dmaha); } - memory->destroy(full_descriptor); - memory->destroy(projected_descriptor); - memory->destroy(scores); - memory->destroy(probas); - memory->destroy(prodright); - memory->destroy(dmaha); } int ComputeSLCSAAtom::compute_ncomps(int twojmax) From 48b5e16f5dfbe46bbed13c01ab9aba705975a7ee Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 19:20:47 -0500 Subject: [PATCH 224/300] remove unused class members, initialize pointers, adjust programming style --- src/ML-PACE/compute_pace.cpp | 67 ++++++++++++++++-------------------- src/ML-PACE/compute_pace.h | 4 +-- 2 files changed, 30 insertions(+), 41 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index cf3be8f47fc..12693a58d9d 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -45,10 +45,10 @@ struct ACECimpl { using namespace LAMMPS_NS; -enum{SCALAR,VECTOR,ARRAY}; +enum { SCALAR, VECTOR, ARRAY }; ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), - paceall(nullptr), pace_peratom(nullptr), map(nullptr), cg(nullptr) + Compute(lmp, narg, arg), cutsq(nullptr), list(nullptr), pace(nullptr), paceall(nullptr), + pace_peratom(nullptr), map(nullptr), cg(nullptr), c_pe(nullptr), c_virial(nullptr) { array_flag = 1; extarray = 0; @@ -71,33 +71,27 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : //read in file with CG coefficients or c_tilde coefficients auto potential_file_name = utils::get_potential_file_path(arg[3]); - delete acecimpl -> basis_set; - acecimpl -> basis_set = new ACECTildeBasisSet(potential_file_name); - double cut = acecimpl -> basis_set->cutoffmax; - cutmax = acecimpl -> basis_set->cutoffmax; + delete acecimpl->basis_set; + acecimpl->basis_set = new ACECTildeBasisSet(potential_file_name); + double cut = acecimpl->basis_set->cutoffmax; + cutmax = acecimpl->basis_set->cutoffmax; double cuti; double radelemall = 0.5; //# of rank 1, rank > 1 functions int n_r1, n_rp = 0; - n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; - n_rp = acecimpl -> basis_set->total_basis_size[0]; + n_r1 = acecimpl->basis_set->total_basis_size_rank1[0]; + n_rp = acecimpl->basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - - //int nvalues = ncoeff; - nvalues = ncoeff; - //----------------------------------------------------------- - //nperdim = ncoeff; - ndims_force = 3; ndims_virial = 6; bik_rows = 1; - yoffset = nvalues; //nperdim; - zoffset = 2*nvalues; //nperdim; + yoffset = nvalues; + zoffset = 2*nvalues; natoms = atom->natoms; if (bikflag) bik_rows = natoms; dgrad_rows = ndims_force*natoms; @@ -255,28 +249,27 @@ void ComputePACE::compute_array() const int typeoffset_local = ndims_peratom*nvalues*(itype-1); const int typeoffset_global = nvalues*(itype-1); - delete acecimpl -> ace; - acecimpl -> ace = new ACECTildeEvaluator(*acecimpl -> basis_set); - acecimpl -> ace->compute_projections = 1; - acecimpl -> ace->compute_b_grad = 1; + delete acecimpl->ace; + acecimpl->ace = new ACECTildeEvaluator(*acecimpl->basis_set); + acecimpl->ace->compute_projections = 1; + acecimpl->ace->compute_b_grad = 1; int n_r1, n_rp = 0; - n_r1 = acecimpl -> basis_set->total_basis_size_rank1[0]; - n_rp = acecimpl -> basis_set->total_basis_size[0]; + n_r1 = acecimpl->basis_set->total_basis_size_rank1[0]; + n_rp = acecimpl->basis_set->total_basis_size[0]; int ncoeff = n_r1 + n_rp; - acecimpl -> ace->element_type_mapping.init(ntypes+1); + acecimpl->ace->element_type_mapping.init(ntypes+1); for (int ik = 1; ik <= ntypes; ik++) { - for(int mu = 0; mu < acecimpl -> basis_set ->nelements; mu++){ + for(int mu = 0; mu < acecimpl->basis_set->nelements; mu++){ if (mu != -1) { if (mu == ik - 1) { map[ik] = mu; - acecimpl -> ace->element_type_mapping(ik) = mu; + acecimpl->ace->element_type_mapping(ik) = mu; } } } } - if (dgradflag) { // dBi/dRi tags @@ -307,9 +300,9 @@ void ComputePACE::compute_array() } // resize the neighbor cache after setting the basis - acecimpl -> ace->resize_neighbours_cache(max_jnum); - acecimpl -> ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); - Array1D Bs = acecimpl -> ace -> projections; + acecimpl->ace->resize_neighbours_cache(max_jnum); + acecimpl->ace->compute_atom(i, atom->x, atom->type, list->numneigh[i], list->firstneigh[i]); + Array1D Bs = acecimpl->ace->projections; for (int jj = 0; jj < jnum; jj++) { const int j = jlist[jj]; @@ -322,9 +315,9 @@ void ComputePACE::compute_array() // dimension: (n_descriptors,max_jnum,3) //example to access entries for neighbour jj after running compute_atom for atom i: for (int func_ind =0; func_ind < n_r1 + n_rp; func_ind++){ - DOUBLE_TYPE fx_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,0); - DOUBLE_TYPE fy_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,1); - DOUBLE_TYPE fz_dB = acecimpl -> ace -> neighbours_dB(func_ind,jj,2); + DOUBLE_TYPE fx_dB = acecimpl->ace->neighbours_dB(func_ind,jj,0); + DOUBLE_TYPE fy_dB = acecimpl->ace->neighbours_dB(func_ind,jj,1); + DOUBLE_TYPE fz_dB = acecimpl->ace->neighbours_dB(func_ind,jj,2); pacedi[func_ind] += fx_dB; pacedi[func_ind+yoffset] += fy_dB; pacedi[func_ind+zoffset] += fz_dB; @@ -333,15 +326,13 @@ void ComputePACE::compute_array() pacedj[func_ind+zoffset] -= fz_dB; } } else { - //printf("inside dBi/dRj logical : ncoeff = %d \n", ncoeff); for (int iicoeff = 0; iicoeff < ncoeff; iicoeff++) { // add to pace array for this proc - //printf("inside dBi/dRj loop\n"); // dBi/dRj - DOUBLE_TYPE fx_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,0); - DOUBLE_TYPE fy_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,1); - DOUBLE_TYPE fz_dB = acecimpl -> ace -> neighbours_dB(iicoeff,jj,2); + DOUBLE_TYPE fx_dB = acecimpl->ace->neighbours_dB(iicoeff,jj,0); + DOUBLE_TYPE fy_dB = acecimpl->ace->neighbours_dB(iicoeff,jj,1); + DOUBLE_TYPE fz_dB = acecimpl->ace->neighbours_dB(iicoeff,jj,2); pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 0][iicoeff+3] -= fx_dB; pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 1][iicoeff+3] -= fy_dB; pace[bik_rows + ((atom->tag[j]-1)*3*natoms) + 3*(atom->tag[i]-1) + 2][iicoeff+3] -= fz_dB; diff --git a/src/ML-PACE/compute_pace.h b/src/ML-PACE/compute_pace.h index 2f2f8d7f21c..496c8a16d3b 100644 --- a/src/ML-PACE/compute_pace.h +++ b/src/ML-PACE/compute_pace.h @@ -35,15 +35,13 @@ class ComputePACE : public Compute { private: int natoms, nmax, size_peratom, lastcol; - int ncoeff, nvalues, nperdim, yoffset, zoffset; + int nvalues, yoffset, zoffset; int ndims_peratom, ndims_force, ndims_virial; double **cutsq; class NeighList *list; double **pace, **paceall; double **pace_peratom; - double rcutfac; int *map; // map types to [0,nelements) - int nelements, chemflag; int bikflag, bik_rows, dgradflag, dgrad_rows; double *cg; double cutmax; From 9c01d64804cfd5265924ac62b4e4ea3dca54049f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 13 Dec 2023 19:21:06 -0500 Subject: [PATCH 225/300] avoid accessing uninitialized data --- src/ML-SNAP/compute_sna_atom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-SNAP/compute_sna_atom.cpp b/src/ML-SNAP/compute_sna_atom.cpp index 753751690da..3fe3cca92da 100644 --- a/src/ML-SNAP/compute_sna_atom.cpp +++ b/src/ML-SNAP/compute_sna_atom.cpp @@ -627,7 +627,7 @@ double ComputeSNAAtom::sum_weights(double * rsq, double * w, int ncounts) double ComputeSNAAtom::get_target_rcut(double S_target, double * rsq, double rcut, int ncounts, int weightmode, double delta) { - double S_sol; + double S_sol = 0.0; if (weightmode == 0) { double * www = weights(rsq, rcut, ncounts); S_sol = sum_weights(rsq, www, ncounts); From 757f28f8bf649729d4563e66b6a55c17470ff0cc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 10:59:30 -0500 Subject: [PATCH 226/300] correct info about fix halt default setting --- doc/src/fix_halt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/fix_halt.rst b/doc/src/fix_halt.rst index 4231c77cc53..25331804aa1 100644 --- a/doc/src/fix_halt.rst +++ b/doc/src/fix_halt.rst @@ -183,4 +183,4 @@ Related commands Default """"""" -The option defaults are error = hard, message = yes, and path = ".". +The option defaults are error = soft, message = yes, and path = ".". From 727c3c95723391bd1bdc2dce1dee7332ac7748f2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 11:15:11 -0500 Subject: [PATCH 227/300] move call to determine free disk space to platform namespace --- src/fix_halt.cpp | 6 +++--- src/platform.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/platform.h | 9 +++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/fix_halt.cpp b/src/fix_halt.cpp index fcfefe102d9..36d660c90db 100644 --- a/src/fix_halt.cpp +++ b/src/fix_halt.cpp @@ -170,8 +170,8 @@ void FixHalt::init() // check if disk limit is supported if (attribute == DISKFREE) { - if (diskfree() < 0.0) - error->all(FLERR,"Disk limit not supported by OS or illegal path"); + if (!dlimit_path || platform::disk_free(dlimit_path) < 0.0) + error->all(FLERR, "Disk limit not supported by OS or illegal path"); } } @@ -196,7 +196,7 @@ void FixHalt::end_of_step() if (update->ntimestep != nextstep) return; attvalue = tlimit(); } else if (attribute == DISKFREE) { - attvalue = diskfree(); + attvalue = platform::disk_free(dlimit_path) / 1048576.0; // MBytes } else if (attribute == BONDMAX) { attvalue = bondmax(); } else { diff --git a/src/platform.cpp b/src/platform.cpp index 064f1424254..c8a964076fb 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -42,6 +42,7 @@ #define PSAPI_VERSION 2 #include +#include #include // for _get_osfhandle() #include #include @@ -61,6 +62,13 @@ #include #include #endif + +// for disk_free() +#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__OpenBSD__) || defined(__NetBSD__) +#include +#endif + //////////////////////////////////////////////////////////////////////// #include @@ -1047,6 +1055,35 @@ bool platform::file_is_readable(const std::string &path) } return false; } +/* ---------------------------------------------------------------------- + determine available disk space, if supported. Return -1 if not. +------------------------------------------------------------------------- */ + +double platform::disk_free(const std::string &path) +{ + double disk_free = -1.0; + +#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__OpenBSD__) || defined(__NetBSD__) + struct statvfs fs; + + if (path.size()) { + int rv = statvfs(path.c_str(), &fs); + if (rv == 0) { +#if defined(__linux__) + disk_free = fs.f_bavail * fs.f_bsize; +#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__OpenBSD__) || defined(__NetBSD__) + disk_free = fs.f_bavail * fs.f_frsize; +#endif + } + } +#else define(_WIN32) + bigint free_bytes; + if (GetDiskFreeSpaceEx(path.c_str(), &free_bytes, nullptr, nullptr)) disk_free = free_bytes; +#endif + return disk_free; +} /* ---------------------------------------------------------------------- check if filename has a known compression extension diff --git a/src/platform.h b/src/platform.h index 036074c900a..4328f873dd5 100644 --- a/src/platform.h +++ b/src/platform.h @@ -377,6 +377,15 @@ namespace platform { bool file_is_readable(const std::string &path); + /*! Return free disk space in bytes of file system pointed to by path + * + * Returns -1.0 if the path is invalid or free space reporting not supported. + * + * \param path file or folder path in file system + * \return */ + + double disk_free(const std::string &path); + /*! Check if a file name ends in a known extension for a compressed file format * * Currently supported file extensions are: .gz, .bz2, .zst, .xz, .lzma, lz4 From 298ce1863c493023468c11caa443761c75ee3ded Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 11:15:28 -0500 Subject: [PATCH 228/300] coding style updates --- src/fix_halt.cpp | 154 +++++++++++++++++++---------------------------- 1 file changed, 62 insertions(+), 92 deletions(-) diff --git a/src/fix_halt.cpp b/src/fix_halt.cpp index 36d660c90db..b34c79867fa 100644 --- a/src/fix_halt.cpp +++ b/src/fix_halt.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -31,49 +30,49 @@ using namespace LAMMPS_NS; using namespace FixConst; -enum{BONDMAX,TLIMIT,DISKFREE,VARIABLE}; -enum{LT,LE,GT,GE,EQ,NEQ,XOR}; -enum{HARD,SOFT,CONTINUE}; -enum{NOMSG=0,YESMSG=1}; +enum { BONDMAX, TLIMIT, DISKFREE, VARIABLE }; +enum { LT, LE, GT, GE, EQ, NEQ, XOR }; +enum { HARD, SOFT, CONTINUE }; +enum { NOMSG = 0, YESMSG = 1 }; /* ---------------------------------------------------------------------- */ FixHalt::FixHalt(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), idvar(nullptr), dlimit_path(nullptr) + Fix(lmp, narg, arg), idvar(nullptr), dlimit_path(nullptr) { - if (narg < 7) error->all(FLERR,"Illegal fix halt command"); - nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery <= 0) error->all(FLERR,"Illegal fix halt command"); + if (narg < 7) utils::missing_cmd_args(FLERR, "fix halt", error); + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery <= 0) error->all(FLERR, "Illegal fix halt command: nevery must be > 0"); // comparison args idvar = nullptr; int iarg = 4; - if (strcmp(arg[iarg],"tlimit") == 0) { + if (strcmp(arg[iarg], "tlimit") == 0) { attribute = TLIMIT; - } else if (strcmp(arg[iarg],"diskfree") == 0) { + } else if (strcmp(arg[iarg], "diskfree") == 0) { attribute = DISKFREE; dlimit_path = utils::strdup("."); - } else if (strcmp(arg[iarg],"bondmax") == 0) { + } else if (strcmp(arg[iarg], "bondmax") == 0) { attribute = BONDMAX; } else { - ArgInfo argi(arg[iarg],ArgInfo::VARIABLE); + ArgInfo argi(arg[iarg], ArgInfo::VARIABLE); - if ((argi.get_type() == ArgInfo::UNKNOWN) - || (argi.get_type() == ArgInfo::NONE) - || (argi.get_dim() != 0)) - error->all(FLERR,"Invalid fix halt attribute"); + if ((argi.get_type() == ArgInfo::UNKNOWN) || (argi.get_type() == ArgInfo::NONE) || + (argi.get_dim() != 0)) + error->all(FLERR, "Invalid fix halt attribute {}", arg[iarg]); attribute = VARIABLE; idvar = argi.copy_name(); ivar = input->variable->find(idvar); - if (ivar < 0) error->all(FLERR,"Could not find fix halt variable name"); + if (ivar < 0) error->all(FLERR, "Could not find fix halt variable name"); if (input->variable->equalstyle(ivar) == 0) - error->all(FLERR,"Fix halt variable is not equal-style variable"); + error->all(FLERR, "Fix halt variable is not equal-style variable"); } + // clang-format off ++iarg; if (strcmp(arg[iarg],"<") == 0) operation = LT; else if (strcmp(arg[iarg],"<=") == 0) operation = LE; @@ -85,7 +84,7 @@ FixHalt::FixHalt(LAMMPS *lmp, int narg, char **arg) : else error->all(FLERR,"Invalid fix halt operator"); ++iarg; - value = utils::numeric(FLERR,arg[iarg],false,lmp); + value = utils::numeric(FLERR, arg[iarg], false, lmp); // parse optional args @@ -93,38 +92,40 @@ FixHalt::FixHalt(LAMMPS *lmp, int narg, char **arg) : msgflag = YESMSG; ++iarg; while (iarg < narg) { - if (strcmp(arg[iarg],"error") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix halt command"); - if (strcmp(arg[iarg+1],"hard") == 0) eflag = HARD; - else if (strcmp(arg[iarg+1],"soft") == 0) eflag = SOFT; - else if (strcmp(arg[iarg+1],"continue") == 0) eflag = CONTINUE; - else error->all(FLERR,"Illegal fix halt command"); + if (strcmp(arg[iarg], "error") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix halt error", error); + if (strcmp(arg[iarg + 1], "hard") == 0) eflag = HARD; + else if (strcmp(arg[iarg + 1], "soft") == 0) eflag = SOFT; + else if (strcmp(arg[iarg + 1], "continue") == 0) eflag = CONTINUE; + else error->all(FLERR, "Unknown fix halt error condition {}", arg[iarg]); iarg += 2; - } else if (strcmp(arg[iarg],"message") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix halt command"); - msgflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "message") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix halt message", error); + msgflag = utils::logical(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"path") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix halt command"); + } else if (strcmp(arg[iarg], "path") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix halt error", error); ++iarg; delete[] dlimit_path; // strip off outer quotes, if present - int len = strlen(arg[iarg])+1; - if ( ((arg[iarg][0] == '"') || (arg[iarg][0] == '\'')) - && (arg[iarg][0] == arg[iarg][len-2])) { - arg[iarg][len-2] = '\0'; - dlimit_path = utils::strdup(arg[iarg]+1); - } else dlimit_path = utils::strdup(arg[iarg]); + int len = strlen(arg[iarg]) + 1; + if (((arg[iarg][0] == '"') || (arg[iarg][0] == '\'')) && + (arg[iarg][0] == arg[iarg][len - 2])) { + arg[iarg][len - 2] = '\0'; + dlimit_path = utils::strdup(arg[iarg] + 1); + } else + dlimit_path = utils::strdup(arg[iarg]); ++iarg; - } else error->all(FLERR,"Illegal fix halt command"); + } else error->all(FLERR, "Unknown fix halt keyword {}", arg[iarg]); } + // clang-format on // add nfirst to all computes that store invocation times // since don't know a priori which are invoked via variables by this fix // once in end_of_step() can set timestep for ones actually invoked if (attribute == VARIABLE) { - const bigint nfirst = (update->ntimestep/nevery)*nevery + nevery; + const bigint nfirst = (update->ntimestep / nevery) * nevery + nevery; modify->addstep_compute_all(nfirst); } } @@ -133,8 +134,8 @@ FixHalt::FixHalt(LAMMPS *lmp, int narg, char **arg) : FixHalt::~FixHalt() { - delete [] idvar; - delete [] dlimit_path; + delete[] idvar; + delete[] dlimit_path; } /* ---------------------------------------------------------------------- */ @@ -156,14 +157,14 @@ void FixHalt::init() if (attribute == VARIABLE) { ivar = input->variable->find(idvar); - if (ivar < 0) error->all(FLERR,"Could not find fix halt variable name"); + if (ivar < 0) error->all(FLERR, "Could not find fix halt variable {}", idvar); if (input->variable->equalstyle(ivar) == 0) - error->all(FLERR,"Fix halt variable is not equal-style variable"); + error->all(FLERR, "Fix halt variable {} is not equal-style variable", idvar); } // settings used by TLIMIT - nextstep = (update->ntimestep/nevery)*nevery + nevery; + nextstep = (update->ntimestep / nevery) * nevery + nevery; thisstep = -1; tratio = 0.5; @@ -205,6 +206,10 @@ void FixHalt::end_of_step() modify->addstep_compute(update->ntimestep + nevery); } + // ensure that the attribute is *exactly* the same on all ranks + + MPI_Bcast(&attvalue, 1, MPI_DOUBLE, 0, world); + // check if halt is triggered, else just return if (operation == LT) { @@ -220,21 +225,19 @@ void FixHalt::end_of_step() } else if (operation == NEQ) { if (attvalue == value) return; } else if (operation == XOR) { - if ((attvalue == 0.0 && value == 0.0) || - (attvalue != 0.0 && value != 0.0)) return; + if ((attvalue == 0.0 && value == 0.0) || (attvalue != 0.0 && value != 0.0)) return; } // hard halt -> exit LAMMPS // soft/continue halt -> trigger timer to break from run loop // print message with ID of fix halt in case multiple instances - std::string message = fmt::format("Fix halt condition for fix-id {} met on " - "step {} with value {}", + std::string message = fmt::format("Fix halt condition for fix-id {} met on step {} with value {}", id, update->ntimestep, attvalue); if (eflag == HARD) { - error->all(FLERR,message); - } else if (eflag == SOFT || eflag == CONTINUE) { - if (comm->me == 0 && msgflag == YESMSG) error->message(FLERR,message); + error->all(FLERR, message); + } else if ((eflag == SOFT) || (eflag == CONTINUE)) { + if ((comm->me == 0) && (msgflag == YESMSG)) error->message(FLERR, message); timer->force_timeout(); } } @@ -260,8 +263,8 @@ double FixHalt::bondmax() int **bondlist = neighbor->bondlist; int nbondlist = neighbor->nbondlist; - int i1,i2; - double delx,dely,delz,rsq; + int i1, i2; + double delx, dely, delz, rsq; double maxone = 0.0; for (int n = 0; n < nbondlist; n++) { @@ -272,12 +275,12 @@ double FixHalt::bondmax() dely = x[i1][1] - x[i2][1]; delz = x[i1][2] - x[i2][2]; - rsq = delx*delx + dely*dely + delz*delz; - maxone = MAX(rsq,maxone); + rsq = delx * delx + dely * dely + delz * delz; + maxone = MAX(rsq, maxone); } double maxall; - MPI_Allreduce(&maxone,&maxall,1,MPI_DOUBLE,MPI_MAX,world); + MPI_Allreduce(&maxone, &maxall, 1, MPI_DOUBLE, MPI_MAX, world); return sqrt(maxall); } @@ -291,48 +294,15 @@ double FixHalt::bondmax() double FixHalt::tlimit() { double cpu = timer->elapsed(Timer::TOTAL); - MPI_Bcast(&cpu,1,MPI_DOUBLE,0,world); + MPI_Bcast(&cpu, 1, MPI_DOUBLE, 0, world); if (cpu < value) { bigint elapsed = update->ntimestep - update->firststep; - bigint final = update->firststep + - static_cast (tratio*value/cpu * elapsed); - nextstep = (final/nevery)*nevery + nevery; + bigint final = update->firststep + static_cast(tratio * value / cpu * elapsed); + nextstep = (final / nevery) * nevery + nevery; if (nextstep == update->ntimestep) nextstep += nevery; tratio = 1.0; } return cpu; } - -/* ---------------------------------------------------------------------- - determine available disk space, if supported. Return -1 if not. -------------------------------------------------------------------------- */ -#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__) -#include -#endif -double FixHalt::diskfree() -{ -#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__) - struct statvfs fs; - double disk_free = -1.0; - - if (dlimit_path) { - disk_free = 1.0e100; - int rv = statvfs(dlimit_path,&fs); - if (rv == 0) { -#if defined(__linux__) - disk_free = fs.f_bavail*fs.f_bsize/1048576.0; -#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__) - disk_free = fs.f_bavail*fs.f_frsize/1048576.0; -#endif - } else - disk_free = -1.0; - - MPI_Bcast(&disk_free,1,MPI_DOUBLE,0,world); - } - return disk_free; -#else - return -1.0; -#endif -} From 54ff3cf78f345d90dc31b9bc8eecf9087d2853f8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 11:21:09 -0500 Subject: [PATCH 229/300] include new platform call in docs --- doc/src/Developer_platform.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/src/Developer_platform.rst b/doc/src/Developer_platform.rst index cdc4bb67700..9b05299146d 100644 --- a/doc/src/Developer_platform.rst +++ b/doc/src/Developer_platform.rst @@ -70,6 +70,9 @@ File and path functions and global constants .. doxygenfunction:: is_console :project: progguide +.. doxygenfunction:: disk_free + :project: progguide + .. doxygenfunction:: path_is_directory :project: progguide From 45ca21da3b3a968e7a6d028f947702e38e8baafa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 11:21:16 -0500 Subject: [PATCH 230/300] fix typo --- tools/msi2lmp/src/SearchAndFill.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/msi2lmp/src/SearchAndFill.c b/tools/msi2lmp/src/SearchAndFill.c index ce344c5ab6e..35de0c81fe4 100644 --- a/tools/msi2lmp/src/SearchAndFill.c +++ b/tools/msi2lmp/src/SearchAndFill.c @@ -116,7 +116,7 @@ void SearchAndFill(struct FrcFieldItem *item) /* Read lines until keyword is found */ if (fseek(FrcF,file_pos,SEEK_SET) < 0) { - fprintf(stderr, "Resetting file stream failed: ", strerror(errno)); + fprintf(stderr, "Resetting file stream failed: %s\n", strerror(errno)); exit(2); } strcpy(line,"empty"); From eb4c85566e5ca4bcf40a4a811677c06ceb2369ec Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 13:06:20 -0500 Subject: [PATCH 231/300] fix up port of platform::disk_free() to Windows --- src/platform.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platform.cpp b/src/platform.cpp index c8a964076fb..b2061fe681e 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -42,7 +42,6 @@ #define PSAPI_VERSION 2 #include -#include #include // for _get_osfhandle() #include #include @@ -1079,8 +1078,9 @@ double platform::disk_free(const std::string &path) } } #else define(_WIN32) - bigint free_bytes; - if (GetDiskFreeSpaceEx(path.c_str(), &free_bytes, nullptr, nullptr)) disk_free = free_bytes; + bigint free_bytes = 0; + if (GetDiskFreeSpaceEx(path.c_str(), (PULARGE_INTEGER) &free_bytes, nullptr, nullptr)) + disk_free = free_bytes; #endif return disk_free; } From 4d6e70600e755cf4a2164655a50f3ba3505e572a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 15:03:13 -0500 Subject: [PATCH 232/300] some more small changes for portability and clarity --- src/platform.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/platform.cpp b/src/platform.cpp index b2061fe681e..b324bd0b5c7 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -1060,7 +1060,7 @@ bool platform::file_is_readable(const std::string &path) double platform::disk_free(const std::string &path) { - double disk_free = -1.0; + double bytes_free = -1.0; #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ defined(__OpenBSD__) || defined(__NetBSD__) @@ -1070,19 +1070,19 @@ double platform::disk_free(const std::string &path) int rv = statvfs(path.c_str(), &fs); if (rv == 0) { #if defined(__linux__) - disk_free = fs.f_bavail * fs.f_bsize; + bytes_free = fs.f_bavail * fs.f_bsize; #elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) || \ defined(__OpenBSD__) || defined(__NetBSD__) - disk_free = fs.f_bavail * fs.f_frsize; + bytes_free = fs.f_bavail * fs.f_frsize; #endif } } -#else define(_WIN32) - bigint free_bytes = 0; - if (GetDiskFreeSpaceEx(path.c_str(), (PULARGE_INTEGER) &free_bytes, nullptr, nullptr)) - disk_free = free_bytes; +#elif defined(_WIN32) + uint64_t is_free = 0; + if (GetDiskFreeSpaceEx(path.c_str(), (PULARGE_INTEGER) &is_free, nullptr, nullptr)) + bytes_free = is_free; #endif - return disk_free; + return bytes_free; } /* ---------------------------------------------------------------------- From ae58fe273257fdc12ba57b010e4dd3ee65e2d4c5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 15:30:13 -0500 Subject: [PATCH 233/300] silence compiler warning --- src/neighbor.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index ea208f61ceb..c6c959a8946 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1791,16 +1791,17 @@ void Neighbor::print_pairwise_info() out += fmt::format(", trim from ({})",rq->copylist+1); else out += fmt::format(", copy from ({})",rq->copylist+1); - } else if (rq->halffull) + } else if (rq->halffull) { if (rq->trim) out += fmt::format(", half/full trim from ({})",rq->halffulllist+1); else out += fmt::format(", half/full from ({})",rq->halffulllist+1); - else if (rq->skip) + } else if (rq->skip) { if (rq->trim) out += fmt::format(", skip trim from ({})",rq->skiplist+1); else out += fmt::format(", skip from ({})",rq->skiplist+1); + } out += "\n"; // list of neigh list attributes From 5a9c9981e747654221f6cfdd4a572d9c523f7d46 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 16:14:21 -0500 Subject: [PATCH 234/300] replace include file with forward declaration --- src/KOKKOS/atom_kokkos.cpp | 1 + src/KOKKOS/atom_kokkos.h | 3 +-- src/KOKKOS/min_kokkos.cpp | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index bc393b29d8b..c55c1d315bb 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -25,6 +25,7 @@ #include "kokkos_base.h" #include "modify.h" #include "fix.h" +#include "fix_property_atom_kokkos.h" using namespace LAMMPS_NS; diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index 21a9aeebbd2..6a3036375d0 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -14,7 +14,6 @@ #include "atom.h" // IWYU pragma: export #include "kokkos_type.h" -#include "fix_property_atom_kokkos.h" #include @@ -27,7 +26,7 @@ class AtomKokkos : public Atom { public: bool sort_classic; int nprop_atom; - FixPropertyAtomKokkos** fix_prop_atom; + class FixPropertyAtomKokkos **fix_prop_atom; DAT::tdual_tagint_1d k_tag; DAT::tdual_int_1d k_type, k_mask; diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index c01a53c7b34..3460fe9009c 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -21,6 +21,7 @@ #include "angle.h" #include "atom_kokkos.h" #include "atom_masks.h" +#include "atom_vec.h" #include "bond.h" #include "comm.h" #include "compute.h" From 603837c96ca07d84c638b9db1cb1f39b9cddbc0d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 16:21:04 -0500 Subject: [PATCH 235/300] add versionadded tag --- doc/src/compute_reaxff_atom.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/compute_reaxff_atom.rst b/doc/src/compute_reaxff_atom.rst index 9f690d19c34..997ad02e9fa 100644 --- a/doc/src/compute_reaxff_atom.rst +++ b/doc/src/compute_reaxff_atom.rst @@ -40,6 +40,8 @@ Examples Description """"""""""" +.. versionadded:: TBD + Define a computation that extracts bond information computed by the ReaxFF potential specified by :doc:`pair_style reaxff `. From 7dab2b7eee941e28e01416ede9688e661c1cf520 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 16:21:17 -0500 Subject: [PATCH 236/300] add new package files to .gitignore --- src/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 3b7902303d7..112a1486f7e 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -633,6 +633,8 @@ /compute_ptm_atom.h /compute_rattlers_atom.cpp /compute_rattlers_atom.h +/compute_reaxff_atom.cpp +/compute_reaxff_atom.h /compute_rigid_local.cpp /compute_rigid_local.h /compute_slcsa_atom.cpp From ff0553e8592a888c7757c14a1f9fac6a688b03dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 16:50:30 -0500 Subject: [PATCH 237/300] fix typos --- src/balance.cpp | 2 +- src/fix_balance.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/balance.cpp b/src/balance.cpp index 42463752f93..c8bbead3274 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -233,7 +233,7 @@ void Balance::command(int narg, char **arg) } if (style == SHIFT) { - const int blen = bstr.size(); + const int blen = bstr.size() + 1; for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') error->all(FLERR,"Balance shift string is invalid"); diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index 7174765f527..f405de28b7e 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -83,7 +83,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : // error checks if (lbstyle == SHIFT) { - int blen = bstr.size(); + const int blen = bstr.size() + 1; for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') error->all(FLERR,"Fix balance shift string is invalid"); From 5f0bdca3f2cad56b84b9252820c9e82298cb4902 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 17:09:37 -0500 Subject: [PATCH 238/300] add missing override --- src/EXTRA-FIX/fix_nonaffine_displacement.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.h b/src/EXTRA-FIX/fix_nonaffine_displacement.h index 0a195dc08eb..3341ab1834f 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.h +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.h @@ -32,7 +32,7 @@ class FixNonaffineDisplacement : public Fix { void post_constructor() override; void init() override; void init_list(int, class NeighList *) override; - void setup(int); + void setup(int) override; void post_force(int) override; void write_restart(FILE *fp) override; void restart(char *buf) override; @@ -62,7 +62,7 @@ class FixNonaffineDisplacement : public Fix { void calculate_D2Min(); void save_reference_state(); void minimum_image0(double *); - void grow_arrays(int); + void grow_arrays(int) override; }; } // namespace LAMMPS_NS From c4626e982f8a94d0a3d7594e5cd1712ca624d469 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 17:19:45 -0500 Subject: [PATCH 239/300] revert bogus change --- src/balance.cpp | 2 +- src/fix_balance.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/balance.cpp b/src/balance.cpp index c8bbead3274..42463752f93 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -233,7 +233,7 @@ void Balance::command(int narg, char **arg) } if (style == SHIFT) { - const int blen = bstr.size() + 1; + const int blen = bstr.size(); for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') error->all(FLERR,"Balance shift string is invalid"); diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index f405de28b7e..23a56c0a9d6 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -83,7 +83,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : // error checks if (lbstyle == SHIFT) { - const int blen = bstr.size() + 1; + const int blen = bstr.size(); for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') error->all(FLERR,"Fix balance shift string is invalid"); From 172238f4cafc59c1ab703739c98fc65a026bdcf4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 17:59:18 -0500 Subject: [PATCH 240/300] workaround hack for macOS --- src/PYTHON/python_impl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index c1c26c7bb34..ea4ac63ce7a 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -79,7 +79,7 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Force the stdout and stderr streams to be unbuffered. bool unbuffered = PYTHONUNBUFFERED != nullptr && strcmp(PYTHONUNBUFFERED, "1") == 0; -#if PY_VERSION_HEX >= 0x030800f0 +#if (PY_VERSION_HEX >= 0x030800f0) && !defined(__APPLE__) PyConfig config; PyConfig_InitPythonConfig(&config); config.buffered_stdio = !unbuffered; @@ -87,6 +87,8 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Python Global configuration variable Py_UnbufferedStdioFlag = unbuffered; #endif +#else +#warning Cannot force stdout and stderr to be unbuffered #endif #ifdef MLIAP_PYTHON From 1df91f21a18d88006e07ec50e56c16ca7036b927 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 17:59:18 -0500 Subject: [PATCH 241/300] workaround hack for macOS --- src/PYTHON/python_impl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index c1c26c7bb34..ea4ac63ce7a 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -79,7 +79,7 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Force the stdout and stderr streams to be unbuffered. bool unbuffered = PYTHONUNBUFFERED != nullptr && strcmp(PYTHONUNBUFFERED, "1") == 0; -#if PY_VERSION_HEX >= 0x030800f0 +#if (PY_VERSION_HEX >= 0x030800f0) && !defined(__APPLE__) PyConfig config; PyConfig_InitPythonConfig(&config); config.buffered_stdio = !unbuffered; @@ -87,6 +87,8 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Python Global configuration variable Py_UnbufferedStdioFlag = unbuffered; #endif +#else +#warning Cannot force stdout and stderr to be unbuffered #endif #ifdef MLIAP_PYTHON From abe635671625214731b59bc8dc95a9cbf1bc23fe Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 21:34:11 -0500 Subject: [PATCH 242/300] update help index table for recently added or changed styles --- tools/lammps-gui/help_index.table | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/help_index.table b/tools/lammps-gui/help_index.table index 5ce4ae62031..5aa9e13ddac 100644 --- a/tools/lammps-gui/help_index.table +++ b/tools/lammps-gui/help_index.table @@ -254,6 +254,7 @@ compute_nbond_atom.html compute nbond/atom compute_omega_chunk.html compute omega/chunk compute_orientorder_atom.html compute orientorder/atom compute_orientorder_atom.html compute orientorder/atom/kk +compute_pace.html compute pace compute_pair_local.html compute pair/local compute_pair.html compute pair compute_pe_atom.html compute pe/atom @@ -267,13 +268,17 @@ compute_property_chunk.html compute property/chunk compute_property_grid.html compute property/grid compute_property_local.html compute property/local compute_ptm_atom.html compute ptm/atom +compute_rattlers_atom.html compute rattlers/atom compute_rdf.html compute rdf +compute_reaxff_atom.html compute reaxff/atom +compute_reaxff_atom.html compute reaxff/atom/kk compute_reduce_chunk.html compute reduce/chunk compute_reduce.html compute reduce compute_reduce.html compute reduce/region compute_rigid_local.html compute rigid/local compute.html compute compute_saed.html compute saed +compute_slcsa_atom.html compute slcsa/atom compute_slice.html compute slice compute_smd_contact_radius.html compute smd/contact/radius compute_smd_damage.html compute smd/damage @@ -484,6 +489,7 @@ fix_drude_transform.html fix drude/transform/inverse fix_dt_reset.html fix dt/reset fix_dt_reset.html fix dt/reset/kk fix_efield.html fix efield +fix_efield.html fix efield/kk fix_efield.html fix efield/tip4p fix_ehex.html fix ehex fix_electrode.html fix electrode/conp @@ -565,6 +571,7 @@ fix_nh.html fix nvt/kk fix_nh.html fix nvt/omp fix_nh_uef.html fix npt/uef fix_nh_uef.html fix nvt/uef +fix_nonaffine_displacement.html fix nonaffine/displacement fix_nph_asphere.html fix nph/asphere fix_nph_asphere.html fix nph/asphere/omp fix_nph_body.html fix nph/body @@ -634,6 +641,7 @@ fix_polarize.html fix polarize/functional fix_pour.html fix pour fix_precession_spin.html fix precession/spin fix_press_berendsen.html fix press/berendsen +fix_press_langevin.html fix press/langevin fix_print.html fix print fix_propel_self.html fix propel/self fix_property_atom.html fix property/atom @@ -703,14 +711,17 @@ fix_spring_chunk.html fix spring/chunk fix_spring_rg.html fix spring/rg fix_spring.html fix spring fix_spring_self.html fix spring/self +fix_spring_self.html fix spring/self/kk fix_srd.html fix srd fix_store_force.html fix store/force fix_store_state.html fix store/state fix_temp_berendsen.html fix temp/berendsen +fix_temp_berendsen.html fix temp/berendsen/kk fix_temp_csvr.html fix temp/csld fix_temp_csvr.html fix temp/csvr fix_temp_rescale_eff.html fix temp/rescale/eff fix_temp_rescale.html fix temp/rescale +fix_temp_rescale.html fix temp/rescale/kk fix_tfmc.html fix tfmc fix_tgnh_drude.html fix tgnpt/drude fix_tgnh_drude.html fix tgnvt/drude @@ -980,6 +991,7 @@ pair_coul_shield.html pair_style coul/shield pair_coul_slater.html pair_style coul/slater pair_coul_slater.html pair_style coul/slater/cut pair_coul_slater.html pair_style coul/slater/long +pair_coul_slater.html pair_style coul/slater/long/gpu pair_coul_tt.html pair_style coul/tt pair_cs.html pair_style born/coul/dsf/cs pair_cs.html pair_style born/coul/long/cs @@ -1073,8 +1085,10 @@ pair_fep_soft.html pair_style lj/class2/coul/cut/soft pair_fep_soft.html pair_style lj/class2/coul/long/soft pair_fep_soft.html pair_style lj/class2/soft pair_fep_soft.html pair_style lj/cut/coul/cut/soft +pair_fep_soft.html pair_style lj/cut/coul/cut/soft/gpu pair_fep_soft.html pair_style lj/cut/coul/cut/soft/omp pair_fep_soft.html pair_style lj/cut/coul/long/soft +pair_fep_soft.html pair_style lj/cut/coul/long/soft/gpu pair_fep_soft.html pair_style lj/cut/coul/long/soft/omp pair_fep_soft.html pair_style lj/cut/soft pair_fep_soft.html pair_style lj/cut/soft/omp @@ -1225,7 +1239,9 @@ pair_meam_sw_spline.html pair_style meam/sw/spline pair_mesocnt.html pair_style mesocnt pair_mesocnt.html pair_style mesocnt/viscous pair_mesodpd.html pair_style edpd +pair_mesodpd.html pair_style edpd/gpu pair_mesodpd.html pair_style mdpd +pair_mesodpd.html pair_style mdpd/gpu pair_mesodpd.html pair_style mdpd/rhosum pair_mesodpd.html pair_style tdpd pair_mgpt.html pair_style mgpt @@ -1245,7 +1261,8 @@ pair_morse.html pair_style morse/smooth/linear/omp pair_multi_lucy.html pair_style multi/lucy pair_multi_lucy_rx.html pair_style multi/lucy/rx pair_multi_lucy_rx.html pair_style multi/lucy/rx/kk -pair_nb3b_harmonic.html pair_style nb3b/harmonic +pair_nb3b.html pair_style nb3b/harmonic +pair_nb3b.html pair_style nb3b/screened pair_nm.html pair_style nm/cut pair_nm.html pair_style nm/cut/coul/cut pair_nm.html pair_style nm/cut/coul/cut/omp @@ -1303,16 +1320,20 @@ pair_smd_triangulated_surface.html pair_style smd/tri_surface pair_smd_ulsph.html pair_style smd/ulsph pair_smtbq.html pair_style smtbq pair_snap.html pair_style snap +pair_snap.html pair_style snap/intel pair_snap.html pair_style snap/kk pair_soft.html pair_style soft pair_soft.html pair_style soft/gpu pair_soft.html pair_style soft/omp pair_sph_heatconduction.html pair_style sph/heatconduction +pair_sph_heatconduction.html pair_style sph/heatconduction/gpu pair_sph_idealgas.html pair_style sph/idealgas pair_sph_lj.html pair_style sph/lj +pair_sph_lj.html pair_style sph/lj/gpu pair_sph_rhosum.html pair_style sph/rhosum pair_sph_taitwater_morris.html pair_style sph/taitwater/morris pair_sph_taitwater.html pair_style sph/taitwater +pair_sph_taitwater.html pair_style sph/taitwater/gpu pair_spica.html pair_style lj/spica pair_spica.html pair_style lj/spica/coul/long pair_spica.html pair_style lj/spica/coul/long/gpu @@ -1384,6 +1405,7 @@ pair_write.html pair_write pair_ylz.html pair_style ylz pair_yukawa_colloid.html pair_style yukawa/colloid pair_yukawa_colloid.html pair_style yukawa/colloid/gpu +pair_yukawa_colloid.html pair_style yukawa/colloid/kk pair_yukawa_colloid.html pair_style yukawa/colloid/omp pair_yukawa.html pair_style yukawa pair_yukawa.html pair_style yukawa/gpu From 84af9e347675506305e4a46847d37b14cc1b3a71 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 14 Dec 2023 22:02:39 -0500 Subject: [PATCH 243/300] remove hack --- src/PYTHON/python_impl.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index ea4ac63ce7a..02070ee1518 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -79,7 +79,7 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Force the stdout and stderr streams to be unbuffered. bool unbuffered = PYTHONUNBUFFERED != nullptr && strcmp(PYTHONUNBUFFERED, "1") == 0; -#if (PY_VERSION_HEX >= 0x030800f0) && !defined(__APPLE__) +#if (PY_VERSION_HEX >= 0x030800f0) PyConfig config; PyConfig_InitPythonConfig(&config); config.buffered_stdio = !unbuffered; @@ -87,8 +87,6 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // Python Global configuration variable Py_UnbufferedStdioFlag = unbuffered; #endif -#else -#warning Cannot force stdout and stderr to be unbuffered #endif #ifdef MLIAP_PYTHON From 41495579a688bcb112fe6e85430951657607d9dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 00:18:05 -0500 Subject: [PATCH 244/300] update list --- doc/utils/sphinx-config/false_positives.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index ad3dee6a009..03e67b95cb6 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -792,6 +792,7 @@ dispersionflag dissipative Dissipative distharm +distutils dl dlabel dlambda From e100a42087f0bf75a815fbe95cd837ba8ac2d22b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:07:37 -0500 Subject: [PATCH 245/300] (re)throw EOF exception when next_dvector() has not yet read any items --- src/potential_file_reader.cpp | 2 ++ src/text_file_reader.cpp | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/potential_file_reader.cpp b/src/potential_file_reader.cpp index 2c0b9a6a550..613225a797d 100644 --- a/src/potential_file_reader.cpp +++ b/src/potential_file_reader.cpp @@ -144,6 +144,8 @@ void PotentialFileReader::next_dvector(double *list, int n) { try { return reader->next_dvector(list, n); + } catch (EOFException &) { + throw EOFException("EOF reached"); } catch (FileReaderException &e) { error->one(FLERR, e.what()); } diff --git a/src/text_file_reader.cpp b/src/text_file_reader.cpp index 46a5fd33a94..0b8d7176879 100644 --- a/src/text_file_reader.cpp +++ b/src/text_file_reader.cpp @@ -189,8 +189,9 @@ void TextFileReader::next_dvector(double *list, int n) char *ptr = next_line(); if (ptr == nullptr) { - // EOF - if (i < n) { + if (i == 0) { // EOF without any records + throw EOFException("EOF reached"); + } else if (i < n) { // EOF with incomplete data throw FileReaderException( fmt::format("Incorrect format in {} file! {}/{} values", filetype, i, n)); } From 96ef731f069c2d65121c8a0e7041f94e4e235df9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:07:53 -0500 Subject: [PATCH 246/300] remove unused items --- src/MOLECULE/fix_cmap.cpp | 11 ----------- src/MOLECULE/fix_cmap.h | 3 +-- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index f74c05ef06b..edd52ee47b6 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -87,9 +87,6 @@ FixCMAP::FixCMAP(LAMMPS *lmp, int narg, char **arg) : respa_level_support = 1; ilevel_respa = 0; - MPI_Comm_rank(world,&me); - MPI_Comm_size(world,&nprocs); - // allocate memory for CMAP data memory->create(g_axis,CMAPDIM,"cmap:g_axis"); @@ -184,10 +181,6 @@ void FixCMAP::init() for (i = 0; i < 6; i++) set_map_derivatives(cmapgrid[i],d1cmapgrid[i],d2cmapgrid[i],d12cmapgrid[i]); - // define newton_bond here in case restart file was read (not data file) - - newton_bond = force->newton_bond; - if (utils::strmatch(update->integrate_style,"^respa")) { ilevel_respa = (dynamic_cast(update->integrate))->nlevels-1; if (respa_level >= 0) ilevel_respa = MIN(respa_level,ilevel_respa); @@ -934,10 +927,6 @@ void FixCMAP::read_data_header(char *line) } catch (std::exception &e) { error->all(FLERR,"Invalid read data header line for fix cmap: {}", e.what()); } - - // not set in constructor because this fix could be defined before newton command - - newton_bond = force->newton_bond; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/fix_cmap.h b/src/MOLECULE/fix_cmap.h index fce76aa5400..1c6aba95e0c 100644 --- a/src/MOLECULE/fix_cmap.h +++ b/src/MOLECULE/fix_cmap.h @@ -65,8 +65,7 @@ class FixCMAP : public Fix { double memory_usage() override; private: - int nprocs, me; - int newton_bond, eflag_caller; + int eflag_caller; int ctype, ilevel_respa; int ncrosstermtypes, crossterm_per_atom, maxcrossterm; int ncrosstermlist; From fb6a5843b9d5457bded5aa323233f40ff728faaa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:14:47 -0500 Subject: [PATCH 247/300] handle comments in CMAP coeff assignments --- src/MOLECULE/fix_cmap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index edd52ee47b6..cfc71f96fc0 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -946,10 +946,10 @@ void FixCMAP::read_data_section(char * /*keyword*/, int /*n*/, char *buf, // loop over lines of CMAP crossterms // tokenize the line into values - // add crossterm to one of my atoms, depending on newton_bond + // add crossterm to one of my atoms for (const auto &line : lines) { - ValueTokenizer values(line); + ValueTokenizer values(utils::trim_comment(line)); try { values.skip(); itype = values.next_int(); From 4bf1b1d9c0d058ceaba03f1976709b3868684fa1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:15:31 -0500 Subject: [PATCH 248/300] some refactoring and modernization --- src/MOLECULE/fix_cmap.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index cfc71f96fc0..1f137cb8331 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -49,15 +49,14 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -#define MAXLINE 256 -#define LISTDELTA 10000 -#define LB_FACTOR 1.5 +static constexpr int LISTDELTA = 10000; +static constexpr double LB_FACTOR = 1.5; -#define CMAPMAX 6 // max # of CMAP terms stored by one atom -#define CMAPDIM 24 // grid map dimension is 24 x 24 -#define CMAPXMIN -360.0 -#define CMAPXMIN2 -180.0 -#define CMAPDX 15.0 // 360/CMAPDIM +static constexpr int CMAPMAX = 6; // max # of CMAP terms stored by one atom +static constexpr int CMAPDIM = 24; // grid map dimension is 24 x 24 +static constexpr double CMAPXMIN = -360.0; +static constexpr double CMAPXMIN2 = -180.0; +static constexpr double CMAPDX = 15.0; // 360/CMAPDIM /* ---------------------------------------------------------------------- */ @@ -90,10 +89,10 @@ FixCMAP::FixCMAP(LAMMPS *lmp, int narg, char **arg) : // allocate memory for CMAP data memory->create(g_axis,CMAPDIM,"cmap:g_axis"); - memory->create(cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:grid"); - memory->create(d1cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d1grid"); - memory->create(d2cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d2grid"); - memory->create(d12cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d12grid"); + memory->create(cmapgrid,CMAPMAX,CMAPDIM,CMAPDIM,"cmap:grid"); + memory->create(d1cmapgrid,CMAPMAX,CMAPDIM,CMAPDIM,"cmap:d1grid"); + memory->create(d2cmapgrid,CMAPMAX,CMAPDIM,CMAPDIM,"cmap:d2grid"); + memory->create(d12cmapgrid,CMAPMAX,CMAPDIM,CMAPDIM,"cmap:d12grid"); // read and setup CMAP data @@ -231,6 +230,8 @@ void FixCMAP::min_setup(int vflag) void FixCMAP::pre_neighbor() { int i,m,atom1,atom2,atom3,atom4,atom5; + const int me = comm->me; + const int nprocs = comm->nprocs; // guesstimate initial length of local crossterm list // if ncmap was not set (due to read_restart, no read_data), From 1ab406ee1acbdbb47208b219ba3b5f33f8ecb627 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:16:06 -0500 Subject: [PATCH 249/300] read CMAP data blocks one at a time and catch EOF exception to stop reading --- src/MOLECULE/fix_cmap.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index 1f137cb8331..01b62d2a28a 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -39,6 +39,7 @@ #include "memory.h" #include "potential_file_reader.h" #include "respa.h" +#include "text_file_reader.h" #include "update.h" #include @@ -631,15 +632,22 @@ void FixCMAP::read_grid_map(char *cmapfile) { if (comm->me == 0) { try { - memset(&cmapgrid[0][0][0], 0, 6*CMAPDIM*CMAPDIM*sizeof(double)); + ncrosstermtypes = 0; + memset(&cmapgrid[0][0][0], 0, CMAPMAX*CMAPDIM*CMAPDIM*sizeof(double)); + utils::logmesg(lmp, "Reading CMAP parameters from: {}\n", cmapfile); PotentialFileReader reader(lmp, cmapfile, "cmap grid"); - // there are six maps in this order. + // there may be up to six maps. + // the charmm36.cmap file has in this order. // alanine, alanine-proline, proline, proline-proline, glycine, glycine-proline. - // read as one big blob of numbers while ignoring comments - - reader.next_dvector(&cmapgrid[0][0][0],6*CMAPDIM*CMAPDIM); - + // custom CMAP files created by charmm-gui may have fewer entries + // read one map at a time as a blob of numbers while ignoring comments + // and stop reading when whe have reached EOF. + for (ncrosstermtypes = 0; ncrosstermtypes < CMAPMAX; ++ncrosstermtypes) + reader.next_dvector(&cmapgrid[ncrosstermtypes][0][0],CMAPDIM*CMAPDIM); + + } catch (EOFException &) { + utils::logmesg(lmp, " Read in CMAP data for {} crossterm types\n", ncrosstermtypes); } catch (std::exception &e) { error->one(FLERR,"Error reading CMAP potential file: {}", e.what()); } From 15a7b93361bc74f915b397c74a443022585dd5a7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 17:40:31 -0500 Subject: [PATCH 250/300] relax epsilon to be compatible with most recent GCC compilers on Fedora 39 --- unittest/commands/test_groups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/commands/test_groups.cpp b/unittest/commands/test_groups.cpp index b91a6108d9c..7f0a054c40b 100644 --- a/unittest/commands/test_groups.cpp +++ b/unittest/commands/test_groups.cpp @@ -314,7 +314,7 @@ TEST_F(GroupTest, Dynamic) command("group ramp variable grow");); } -constexpr double EPSILON = 1.0e-14; +constexpr double EPSILON = 1.0e-13; TEST_F(GroupTest, VariableFunctions) { From 695a81ef70b3a97b094c4e42ef82c8b9e603a649 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 21:50:38 -0500 Subject: [PATCH 251/300] avoid uninitialized data access --- src/MOLECULE/fix_cmap.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index 01b62d2a28a..cb4cb8cadc2 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -86,6 +86,7 @@ FixCMAP::FixCMAP(LAMMPS *lmp, int narg, char **arg) : wd_section = 1; respa_level_support = 1; ilevel_respa = 0; + eflag_caller = 1; // allocate memory for CMAP data From 4ae4c8103d281e3c0979ccaa03dcb704741a3c47 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 22:46:02 -0500 Subject: [PATCH 252/300] step LAMMPS-GUI patch level --- tools/lammps-gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index caae7228650..b1469794bbd 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.5.10 LANGUAGES CXX) +project(lammps-gui VERSION 1.5.11 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) From d2ca1fe354cb7b595f5fad45aaec07fefea97ccf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 16 Dec 2023 23:00:06 -0500 Subject: [PATCH 253/300] avoid that mliappy is initialized multiple times --- src/PYTHON/python_impl.cpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index 02070ee1518..0db468d7018 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -17,6 +17,7 @@ #include "python_impl.h" +#include "comm.h" #include "error.h" #include "input.h" #include "memory.h" @@ -56,7 +57,6 @@ #endif #include "mliap_unified_couple_kokkos.h" - #endif #endif @@ -90,23 +90,27 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) #endif #ifdef MLIAP_PYTHON - // Inform python intialization scheme of the mliappy module. - // This -must- happen before python is initialized. - int err = PyImport_AppendInittab("mliap_model_python_couple", PyInit_mliap_model_python_couple); - if (err) error->all(FLERR, "Could not register MLIAPPY embedded python module."); - - err = PyImport_AppendInittab("mliap_unified_couple", PyInit_mliap_unified_couple); - if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python module."); -#ifdef LMP_KOKKOS - // Inform python intialization scheme of the mliappy module. - // This -must- happen before python is initialized. - err = PyImport_AppendInittab("mliap_model_python_couple_kokkos", PyInit_mliap_model_python_couple_kokkos); - if (err) error->all(FLERR, "Could not register MLIAPPY embedded python module."); + // cannot register mliappy module a second time + if (!Py_IsInitialized()) { + // Inform python intialization scheme of the mliappy module. + // This -must- happen before python is initialized. + int err = PyImport_AppendInittab("mliap_model_python_couple", PyInit_mliap_model_python_couple); + if (err) error->all(FLERR, "Could not register MLIAPPY embedded python module."); - err = PyImport_AppendInittab("mliap_unified_couple_kokkos", PyInit_mliap_unified_couple_kokkos); - if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python module."); + err = PyImport_AppendInittab("mliap_unified_couple", PyInit_mliap_unified_couple); + if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python module."); +#ifdef LMP_KOKKOS + // Inform python intialization scheme of the mliappy module. + // This -must- happen before python is initialized. + err = PyImport_AppendInittab("mliap_model_python_couple_kokkos", + PyInit_mliap_model_python_couple_kokkos); + if (err) error->all(FLERR, "Could not register MLIAPPY embedded python KOKKOS module."); + + err = PyImport_AppendInittab("mliap_unified_couple_kokkos", PyInit_mliap_unified_couple_kokkos); + if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python KOKKOS module."); #endif + } #endif #if PY_VERSION_HEX >= 0x030800f0 && !defined(Py_LIMITED_API) @@ -120,7 +124,7 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp) // With Python 3.7 this function is now called by Py_Initialize() // Deprecated since version 3.9, will be removed in version 3.11 #if PY_VERSION_HEX < 0x030700f0 - if (!PyEval_ThreadsInitialized()) { PyEval_InitThreads(); } + if (!PyEval_ThreadsInitialized()) PyEval_InitThreads(); #endif PyUtils::GIL lock; From 58ed034d7a92718f075e237076b88ff669cf022b Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 17 Dec 2023 15:42:10 -0600 Subject: [PATCH 254/300] Updated Developer unittest for debugging failed unit tests individually --- doc/src/Developer_unittest.rst | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index e311fcdfc53..b517ca1802f 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -526,3 +526,69 @@ The ``unittest/tools`` folder contains tests for programs in the shell, which are implemented as a python scripts using the ``unittest`` Python module and launching the tool commands through the ``subprocess`` Python module. + + +Troubleshooting failed unit tests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The unit tests of a newly added features (e.g. pair, fix or compute styles) +are not automatically run when your pull request (PR) is submitted via GitHub. +To trigger the unit test(s), you need to add appropriate labels the PR, e.g., +``gpu_unit_tests`` to enable the unit tests for the GPU package. After the test +has started, you had better remove the label since every PR activity will +retrigger the test. + +For a failed build on GitHub, click on Details to go to the LAMMPS Jenkins CI web page. +Click on the "Exit" symbol near the "Logout" button on the top right of that page +to go to the classic view. In the classic view, there is a list of the individual runs +that make up this test run. You can click on any of those. Then on "Test Result" +to display the list of tests. Click on the Status column to sort the tests +based on their Failed or Passed status. Then click on the failed test to expand +its output. + +For example, the following output snippet shows the failed unit test + +.. code-block:: bash + + [ RUN ] PairStyle.gpu + /home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:63: Failure + Expected: (err) <= (epsilon) + Actual: 0.00018957912910606503 vs 0.0001 + Google Test trace: + /home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:56: EXPECT_FORCES: init_forces (newton off) + /home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:64: Failure + Expected: (err) <= (epsilon) + Actual: 0.00022892713393549854 vs 0.0001 + + +Note that the force style engine runs the same system on a rather +off-equilibrium system with few atoms for just a few steps, writes data and restart, +uses ``clean`` to reset, and then run with different settings and integrators. +Beyond potential issues/bugs in the source code, the mismatch between the expected +and actual values could be that force arrays are not properly cleared between +multiple run commands and/or when starting a run from restarts. + +As a rule of thumb, the test epsilon can often be in the range 5e-14 to 1e-13. +For "noisy" force kernels, e.g. those involving `exp()`, `log()` or `sin()` +operations and subject to compiler optimization, epsilon can be further relaxed, +sometimes epsilon can be relaxed to 1.e-12. If lookup tables are added, +we may need to go to 1.e-10 or even higher. + +To rerun the failed unit test individually, change to the ``build`` directory +and run the test with verbose output. For example, + +.. code-block:: bash + + env TEST_ARGS=-v ctest -R ^MolPairStyle:lj_cut_coul_long -V + +It is recommended to configure the build with ``-D BUILD_SHARED_LIBS=on`` to +shorten the build time during recompilation. Installing `ccache` in +your development environment helps speed up recompilation by +caching previous compilations and detecting when the same compilation +is being done again. + + + + + + From 188e1090e9e37272144890a33479670cc592dde9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 17 Dec 2023 20:01:47 -0500 Subject: [PATCH 255/300] add some corrections and clarifications --- doc/src/Build_development.rst | 41 ++++++++------- doc/src/Developer_unittest.rst | 94 ++++++++++++++++++++++------------ 2 files changed, 82 insertions(+), 53 deletions(-) diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index d30a433d624..c674b2c2585 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -255,16 +255,18 @@ A test run is then a a collection multiple individual test runs each with many comparisons to reference results based on template input files, individual command settings, relative error margins, and reference data stored in a YAML format file with ``.yaml`` -suffix. Currently the programs ``test_pair_style``, ``test_bond_style``, and -``test_angle_style`` are implemented. They will compare forces, energies and -(global) stress for all atoms after a ``run 0`` calculation and after a -few steps of MD with :doc:`fix nve `, each in multiple variants -with different settings and also for multiple accelerated styles. If a -prerequisite style or package is missing, the individual tests are -skipped. All tests will be executed on a single MPI process, so using -the CMake option ``-D BUILD_MPI=off`` can significantly speed up testing, -since this will skip the MPI initialization for each test run. -Below is an example command and output: +suffix. Currently the programs ``test_pair_style``, ``test_bond_style``, +``test_angle_style``, ``test_dihedral_style``, and +``test_improper_style`` are implemented. They will compare forces, +energies and (global) stress for all atoms after a ``run 0`` calculation +and after a few steps of MD with :doc:`fix nve `, each in +multiple variants with different settings and also for multiple +accelerated styles. If a prerequisite style or package is missing, the +individual tests are skipped. All force style tests will be executed on +a single MPI process, so using the CMake option ``-D BUILD_MPI=off`` can +significantly speed up testing, since this will skip the MPI +initialization for each test run. Below is an example command and +output: .. code-block:: console @@ -416,15 +418,16 @@ When compiling LAMMPS with enabled tests, most test executables will need to be linked against the LAMMPS library. Since this can be a very large library with many C++ objects when many packages are enabled, link times can become very long on machines that use the GNU BFD linker (e.g. -Linux systems). Alternatives like the ``lld`` linker of the LLVM project -or the ``gold`` linker available with GNU binutils can speed up this step -substantially. CMake will by default test if any of the two can be -enabled and use it when ``ENABLE_TESTING`` is active. It can also be -selected manually through the ``CMAKE_CUSTOM_LINKER`` CMake variable. -Allowed values are ``lld``, ``gold``, ``bfd``, or ``default``. The -``default`` option will use the system default linker otherwise, the -linker is chosen explicitly. This option is only available for the -GNU or Clang C++ compiler. +Linux systems). Alternatives like the ``mold`` linker, the ``lld`` +linker of the LLVM project, or the ``gold`` linker available with GNU +binutils can speed up this step substantially (in this order). CMake +will by default test if any of the three can be enabled and use it when +``ENABLE_TESTING`` is active. It can also be selected manually through +the ``CMAKE_CUSTOM_LINKER`` CMake variable. Allowed values are +``mold``, ``lld``, ``gold``, ``bfd``, or ``default``. The ``default`` +option will use the system default linker otherwise, the linker is +chosen explicitly. This option is only available for the GNU or Clang +C++ compilers. Tests for other components and utility functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index b517ca1802f..c0cdee6c09f 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -121,7 +121,7 @@ will be suppressed and only a summary printed, but adding the '-V' option will then produce output from the tests above like the following: -.. code-block:: +.. code-block:: console [...] 1: [ RUN ] Tokenizer.empty_string @@ -531,24 +531,33 @@ Python module. Troubleshooting failed unit tests ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The unit tests of a newly added features (e.g. pair, fix or compute styles) -are not automatically run when your pull request (PR) is submitted via GitHub. -To trigger the unit test(s), you need to add appropriate labels the PR, e.g., -``gpu_unit_tests`` to enable the unit tests for the GPU package. After the test -has started, you had better remove the label since every PR activity will -retrigger the test. - -For a failed build on GitHub, click on Details to go to the LAMMPS Jenkins CI web page. -Click on the "Exit" symbol near the "Logout" button on the top right of that page -to go to the classic view. In the classic view, there is a list of the individual runs -that make up this test run. You can click on any of those. Then on "Test Result" -to display the list of tests. Click on the Status column to sort the tests -based on their Failed or Passed status. Then click on the failed test to expand -its output. +The are by default no unit tests for newly added features (e.g. pair, fix, +or compute styles) unless your pull request also includes tests for the +added features. If you are modifying some features, you may see failures +for existing tests, if your modifications have some unexpected side effects +or your changes render the existing text invalid. If you are adding an +accelerated version of an existing style, then only tests for INTEL, +KOKKOS (with OpenMP only), OPENMP, and OPT will be run automatically. +Tests for the GPU package are time consuming and thus are only run +*after* a merge, or when a special label, ``gpu_unit_tests`` is added +to the pull request. After the test has started, it is often best to +remove the label since every PR activity will re-trigger the test (that +is a limitation of triggering a test with a label). Support for unit +tests with using KOKKOS with GPU acceleration is currently not supported. + +When you see a failed build on GitHub, click on ``Details`` to be taken +to the corresponding LAMMPS Jenkins CI web page. Click on the "Exit" +symbol near the ``Logout`` button on the top right of that page to go to +the "classic view". In the classic view, there is a list of the +individual runs that make up this test run (they are shown but cannot be +inspected in the default view). You can click on any of those. +Clicking on ``Test Result`` will display the list of failed tests. Click +on the "Status" column to sort the tests based on their Failed or Passed +status. Then click on the failed test to expand its output. For example, the following output snippet shows the failed unit test -.. code-block:: bash +.. code-block:: console [ RUN ] PairStyle.gpu /home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:63: Failure @@ -560,19 +569,35 @@ For example, the following output snippet shows the failed unit test Expected: (err) <= (epsilon) Actual: 0.00022892713393549854 vs 0.0001 - -Note that the force style engine runs the same system on a rather -off-equilibrium system with few atoms for just a few steps, writes data and restart, -uses ``clean`` to reset, and then run with different settings and integrators. -Beyond potential issues/bugs in the source code, the mismatch between the expected -and actual values could be that force arrays are not properly cleared between -multiple run commands and/or when starting a run from restarts. - -As a rule of thumb, the test epsilon can often be in the range 5e-14 to 1e-13. -For "noisy" force kernels, e.g. those involving `exp()`, `log()` or `sin()` -operations and subject to compiler optimization, epsilon can be further relaxed, -sometimes epsilon can be relaxed to 1.e-12. If lookup tables are added, -we may need to go to 1.e-10 or even higher. +Note that the force style engine runs one of a small number of systems +in a rather off-equilibrium configuration with a few atoms for a few +steps, writes data and restart files, uses :doc:`the clear command +` to reset LAMMPS, and then runs from those files with different +settings (e.g. newton on/off) and integrators (e.g. verlet vs. respa). +Beyond potential issues/bugs in the source code, the mismatch between +the expected and actual values could be that force arrays are not +properly cleared between multiple run commands or that class members are +not correctly initialized or written to or read from a data or restart +file. + +While the epsilon (relative precision) for a single, `IEEE 754 compliant +`_, double precision floating +point operation is at about 2.2e-16, the achievable precision for the +tests is lower due to most numbers being sums over intermediate results +and the non-associativity of floating point math leading to larger +errors. In some cases specific properties of the tested style. As a +rule of thumb, the test epsilon can often be in the range 5.0e-14 to +1.0e-13. But for "noisy" force kernels, e.g. those a larger amount of +arithmetic operations involving `exp()`, `log()` or `sin()` functions, +and also due to the effect of compiler optimization or differences +between compilers or platforms, epsilon may need to be further relaxed, +sometimes epsilon can be relaxed to 1.0e-12. If interpolation or lookup +tables are used, epsilon may need to be set to 1.0e-10 or even higher. +For tests of accelerated styles, the per-test epsilon is multiplied +by empirical factors that take into account the differences in the order +of floating point operations or that some or most intermediate operations +may be done using approximations or with single precision floating point +math. To rerun the failed unit test individually, change to the ``build`` directory and run the test with verbose output. For example, @@ -581,11 +606,12 @@ and run the test with verbose output. For example, env TEST_ARGS=-v ctest -R ^MolPairStyle:lj_cut_coul_long -V -It is recommended to configure the build with ``-D BUILD_SHARED_LIBS=on`` to -shorten the build time during recompilation. Installing `ccache` in -your development environment helps speed up recompilation by -caching previous compilations and detecting when the same compilation -is being done again. +It is recommended to configure the build with ``-D +BUILD_SHARED_LIBS=on`` and use a custom linker to shorten the build time +during recompilation. Installing `ccache` in your development +environment helps speed up recompilation by caching previous +compilations and detecting when the same compilation is being done +again. Please see :doc:`Build_development` for further details. From 4c34bc2b9b5aa9d13f4e42660dd065ea4facdd88 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 17 Dec 2023 20:25:39 -0500 Subject: [PATCH 256/300] upgrade CodeQL GitHub action scripts to latest version --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 00c0e8642dd..c7dd945f5fc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -35,7 +35,7 @@ jobs: python-version: '3.x' - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} config-file: ./.github/codeql/${{ matrix.language }}.yml @@ -55,4 +55,4 @@ jobs: cmake --build . --parallel 2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 From 94b62fa98baccb1b7a68f65ab09eff0093927411 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 17 Dec 2023 21:22:33 -0500 Subject: [PATCH 257/300] tweak epsilon --- unittest/force-styles/tests/mol-pair-lj_cut_coul_cut_soft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/force-styles/tests/mol-pair-lj_cut_coul_cut_soft.yaml b/unittest/force-styles/tests/mol-pair-lj_cut_coul_cut_soft.yaml index e242a560294..485730531f5 100644 --- a/unittest/force-styles/tests/mol-pair-lj_cut_coul_cut_soft.yaml +++ b/unittest/force-styles/tests/mol-pair-lj_cut_coul_cut_soft.yaml @@ -1,7 +1,7 @@ --- lammps_version: 17 Feb 2022 date_generated: Fri Mar 18 22:17:31 2022 -epsilon: 2e-13 +epsilon: 5e-13 skip_tests: prerequisites: ! | atom full From ba4ac991b6b62ef1feacb016554915145c4696c5 Mon Sep 17 00:00:00 2001 From: oywg11 Date: Mon, 18 Dec 2023 16:06:36 +0800 Subject: [PATCH 258/300] small fix for ilp/tmd and KC/full --- src/INTERLAYER/pair_ilp_tmd.cpp | 2 +- src/INTERLAYER/pair_kolmogorov_crespi_full.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/INTERLAYER/pair_ilp_tmd.cpp b/src/INTERLAYER/pair_ilp_tmd.cpp index 8b08de39c02..73f89803c22 100644 --- a/src/INTERLAYER/pair_ilp_tmd.cpp +++ b/src/INTERLAYER/pair_ilp_tmd.cpp @@ -210,7 +210,7 @@ void PairILPTMD::calc_FRep(int eflag, int /* vflag */) delki[1] = x[k][1] - x[i][1]; delki[2] = x[k][2] - x[i][2]; if (evflag) - ev_tally_xyz(k, j, nlocal, newton_pair, 0.0, 0.0, fk[0], fk[1], fk[2], delki[0], + ev_tally_xyz(k, i, nlocal, newton_pair, 0.0, 0.0, fk[0], fk[1], fk[2], delki[0], delki[1], delki[2]); } diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp index b497ae35685..ad42ba1922d 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_full.cpp @@ -590,7 +590,7 @@ void PairKolmogorovCrespiFull::calc_FRep(int eflag, int /* vflag */) delki[1] = x[k][1] - x[i][1]; delki[2] = x[k][2] - x[i][2]; if (evflag) - ev_tally_xyz(k, j, nlocal, newton_pair, 0.0, 0.0, fk[0], fk[1], fk[2], delki[0], + ev_tally_xyz(k, i, nlocal, newton_pair, 0.0, 0.0, fk[0], fk[1], fk[2], delki[0], delki[1], delki[2]); } From 8dcf980d0abc2418d8f21f1ff6f6ac7451237e6d Mon Sep 17 00:00:00 2001 From: oywg11 Date: Mon, 18 Dec 2023 16:55:10 +0800 Subject: [PATCH 259/300] update doc of ilp/tmd --- doc/src/pair_ilp_tmd.rst | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/src/pair_ilp_tmd.rst b/doc/src/pair_ilp_tmd.rst index 70a47683892..dcacc18ed6c 100644 --- a/doc/src/pair_ilp_tmd.rst +++ b/doc/src/pair_ilp_tmd.rst @@ -22,12 +22,12 @@ Examples .. code-block:: LAMMPS pair_style hybrid/overlay ilp/tmd 16.0 1 - pair_coeff * * ilp/tmd MoS2.ILP Mo S S + pair_coeff * * ilp/tmd TMD.ILP Mo S S pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0 pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL - pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S - pair_coeff * * ilp/tmd MoS2.ILP Mo S S Mo S S + pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL W Se Se + pair_coeff * * ilp/tmd TMD.ILP Mo S S W Se Se Description """"""""""" @@ -36,7 +36,7 @@ Description The *ilp/tmd* style computes the registry-dependent interlayer potential (ILP) potential for transition metal dichalcogenides (TMD) -as described in :ref:`(Ouyang7) `. +as described in :ref:`(Ouyang7) ` and ref:`(Jiang) `. .. math:: @@ -69,7 +69,7 @@ calculating the normals. each atom `i`, its six nearest neighboring atoms belonging to the same sub-layer are chosen to define the normal vector `{\bf n}_i`. -The parameter file (e.g. MoS2.ILP), is intended for use with *metal* +The parameter file (e.g. TMD.ILP), is intended for use with *metal* :doc:`units `, with energies in meV. Two additional parameters, *S*, and *rcut* are included in the parameter file. *S* is designed to facilitate scaling of energies. *rcut* is designed to build the neighbor @@ -77,7 +77,7 @@ list for calculating the normals for each atom pair. .. note:: - The parameters presented in the parameter file (e.g. MoS2.ILP), + The parameters presented in the parameter file (e.g. TMD.ILP), are fitted with taper function by setting the cutoff equal to 16.0 Angstrom. Using different cutoff or taper function should be careful. These parameters provide a good description in both short- and long-range @@ -133,10 +133,10 @@ if LAMMPS was built with that package. See the :doc:`Build package This pair style requires the newton setting to be *on* for pair interactions. -The MoS2.ILP potential file provided with LAMMPS (see the potentials +The TMD.ILP potential file provided with LAMMPS (see the potentials directory) are parameterized for *metal* units. You can use this potential with any LAMMPS units, but you would need to create your own -custom MoS2.ILP potential file with coefficients listed in the appropriate +custom TMD.ILP potential file with coefficients listed in the appropriate units, if your simulation does not use *metal* units. Related commands @@ -164,3 +164,7 @@ tap_flag = 1 .. _Ouyang7: **(Ouyang7)** W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021). + +.. _Jiang: + +**(Jiang)** W. Jiang, et al., J. Phys. Chem. A, 127, 46, 9820–9830 (2023). From 20183ac9cc9680c608cb230a61c9474b3db8174b Mon Sep 17 00:00:00 2001 From: oywg11 Date: Mon, 18 Dec 2023 16:56:24 +0800 Subject: [PATCH 260/300] update potential file for ilp/tmd --- potentials/TMD.ILP | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 potentials/TMD.ILP diff --git a/potentials/TMD.ILP b/potentials/TMD.ILP new file mode 100644 index 00000000000..e7a9cbe5585 --- /dev/null +++ b/potentials/TMD.ILP @@ -0,0 +1,25 @@ +# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com +# CITATION: W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021). +# CITATION: W. Jiang, et al., J. Phys. Chem. A, 127, 46, 9820–9830 (2023). +# Interlayer Potential (ILP) for bilayer and bulk Group-VI Transition Metal Dichalcogenides. +# The parameters below are fitted against the HSE + MBD-NL DFT reference data. +# +# -------------------- Repulsion Potential -------------------++++++++++++++++ Vdw Potential ++++++++++++++++********* +# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut +Mo Mo 5.579450 9.377662 2.027222 144.151775 97.978570 89.437597 2.059031 5.122055 491850.316195 1.0 4.0 +W W 5.530854 6.624992 1.983208 0.271792 140.174059 107.392585 1.356333 4.437591 691850.243962 1.0 4.0 +S S 3.161402 8.093263 1.953140 4.586764 118.065466 58.809416 0.215367 4.299600 148811.243409 1.0 4.0 +Se Se 3.938627 10.515924 2.415783 3.012583 22.400612 116.864517 0.151121 5.884241 112506.195626 1.0 4.0 +Mo W 5.412298 8.647128 2.108665 51.177950 184.342860 201.281256 2.547743 2.492287 99996.913401 1.0 4.0 +Mo S 3.627152 19.971375 7.585031 76.101931 3.317496 45.720328 0.947470 4.410425 150597.857716 1.0 4.0 +Mo Se 6.196447 4.844134 14.362005 7.407221 0.058823 27.156223 0.976771 3.979186 786029.840651 1.0 4.0 +W S 3.680136 11.163004 32.254117 110.019679 79.381335 138.340438 0.900750 8.875776 250600.809034 1.0 4.0 +W Se 3.559392 20.638856 1.202717 20.478669 197.422484 10.005271 1.052738 3.815817 288321.561114 1.0 4.0 +S Se 2.820092 7.491151 1.933323 141.532559 293.127817 90.470904 0.390492 4.170885 117688.987069 1.0 4.0 +# Symmetric Atom Pair +W Mo 5.412298 8.647128 2.108665 51.177950 184.342860 201.281256 2.547743 2.492287 99996.913401 1.0 4.0 +S Mo 3.627152 19.971375 7.585031 76.101931 3.317496 45.720328 0.947470 4.410425 150597.857716 1.0 4.0 +Se Mo 6.196447 4.844134 14.362005 7.407221 0.058823 27.156223 0.976771 3.979186 786029.840651 1.0 4.0 +S W 3.680136 11.163004 32.254117 110.019679 79.381335 138.340438 0.900750 8.875776 250600.809034 1.0 4.0 +Se W 3.559392 20.638856 1.202717 20.478669 197.422484 10.005271 1.052738 3.815817 288321.561114 1.0 4.0 +Se S 2.820092 7.491151 1.933323 141.532559 293.127817 90.470904 0.390492 4.170885 117688.987069 1.0 4.0 From 40f27eb7cf6cecc39be6090b07e66d96e7f68263 Mon Sep 17 00:00:00 2001 From: oywg11 Date: Mon, 18 Dec 2023 17:36:04 +0800 Subject: [PATCH 261/300] update doc file for ilp/tmd --- doc/src/pair_ilp_tmd.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/pair_ilp_tmd.rst b/doc/src/pair_ilp_tmd.rst index dcacc18ed6c..b5d9ad60b56 100644 --- a/doc/src/pair_ilp_tmd.rst +++ b/doc/src/pair_ilp_tmd.rst @@ -36,7 +36,7 @@ Description The *ilp/tmd* style computes the registry-dependent interlayer potential (ILP) potential for transition metal dichalcogenides (TMD) -as described in :ref:`(Ouyang7) ` and ref:`(Jiang) `. +as described in :ref:`(Ouyang7) ` and :ref:`(Jiang) `. .. math:: From c0c64e812fabd092400fc08039cc56b7147aa936 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 18 Dec 2023 11:29:42 -0700 Subject: [PATCH 262/300] Enable default threading over neighbors for half list --- src/KOKKOS/pair_kokkos.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index c0b81cc5941..a160f84d958 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -933,8 +933,9 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P EV_FLOAT ev; if (!fpair->lmp->kokkos->neigh_thread_set) - if (list->inum <= 16384 && NEIGHFLAG == FULL) - fpair->lmp->kokkos->neigh_thread = 1; + if (list->inum <= 16384) + if (NEIGHFLAG == FULL || !fpair->newton_pair) + fpair->lmp->kokkos->neigh_thread = 1; if (fpair->lmp->kokkos->neigh_thread) { From 3237c30117938f4a49bf7abac1ea0b0c1f54ae28 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 18 Dec 2023 15:40:14 -0500 Subject: [PATCH 263/300] reorganize the LAMMPS version and development description --- doc/github-development-workflow.md | 8 +-- doc/src/Howto_github.rst | 10 ++-- doc/src/Install_git.rst | 20 +++---- doc/src/Manual_version.rst | 91 +++++++++++++++++++----------- 4 files changed, 77 insertions(+), 52 deletions(-) diff --git a/doc/github-development-workflow.md b/doc/github-development-workflow.md index fccd75d29a9..e16ae82764f 100644 --- a/doc/github-development-workflow.md +++ b/doc/github-development-workflow.md @@ -36,10 +36,10 @@ requests. MUST be submitted as a pull request to GitHub. All changes to the "develop" branch must be made exclusively through merging pull requests. The "release" and "stable" branches, respectively, are only to be -updated upon feature or stable releases based on the associated -tags. Updates to the stable release in between stable releases +updated upon "feature releases" or "stable releases" based on the +associated tags. Updates to the stable release in between stable releases (for example, back-ported bug fixes) are first merged into the "maintenance" -branch and then into the "stable" branch as update releases. +branch and then into the "stable" branch as "stable update releases". Pull requests may also be submitted to (long-running) feature branches created by LAMMPS developers inside the LAMMPS project, if needed. Those @@ -131,7 +131,7 @@ testing -- that the code in the branch "develop" does not get easily broken. These tests are run after every update to a pull request. More extensive and time-consuming tests (including regression testing) are performed after code is merged to the "develop" branch. There are feature -releases of LAMMPS made about every 4-6 weeks at a point, when the LAMMPS +releases of LAMMPS made about every 4-8 weeks at a point, when the LAMMPS developers feel, that a sufficient number of changes have been included and all post-merge testing has been successful. These feature releases are marked with a `patch_` tag and the "release" branch diff --git a/doc/src/Howto_github.rst b/doc/src/Howto_github.rst index cbe1264d529..b81716c09d8 100644 --- a/doc/src/Howto_github.rst +++ b/doc/src/Howto_github.rst @@ -480,11 +480,11 @@ Some recent changes to the workflow are not captured in this tutorial. For example, in addition to the *develop* branch, to which all new features should be submitted, there is also a *release*, a *stable*, and a *maintenance* branch; the *release* branch is updated from the -*develop* as part of a feature release, and *stable* (together with -*release*) are updated from *develop* when a stable release is made. In -between stable releases, selected bug fixes and infrastructure updates -are back-ported from the *develop* branch to the *maintenance* branch -and occasionally merged to *stable* as an update release. +*develop* branch as part of a "feature release", and *stable* (together +with *release*) are updated from *develop* when a "stable release" is +made. In between stable releases, selected bug fixes and infrastructure +updates are back-ported from the *develop* branch to the *maintenance* +branch and occasionally merged to *stable* as an update release. Furthermore, the naming of the release tags now follow the pattern "patch_" to simplify comparisons between releases. diff --git a/doc/src/Install_git.rst b/doc/src/Install_git.rst index b6d3ced0a52..45e364a226b 100644 --- a/doc/src/Install_git.rst +++ b/doc/src/Install_git.rst @@ -28,16 +28,16 @@ provides `limited support for subversion clients `_. You can follow the LAMMPS development on 4 different git branches: -* **release** : this branch is updated with every patch or feature release; - updates are always "fast-forward" merges from *develop* -* **develop** : this branch follows the ongoing development and - is updated with every merge commit of a pull request -* **stable** : this branch is updated from the *release* branch with - every stable release version and also has selected bug fixes with every - update release when the *maintenance* branch is merged into it -* **maintenance** : this branch collects back-ported bug fixes from the - *develop* branch to the *stable* branch. It is used to update *stable* - for update releases and it synchronized with *stable* at each stable release. +* **develop** : this branch follows the ongoing development and is + updated with every merge commit of a pull request +* **release** : this branch is updated with every "feature release"; + updates are always "fast-forward" merges from *develop* +* **maintenance** : this branch collects back-ported bug fixes from the + *develop* branch to the *stable* branch. It is used to update the + *stable* branch for "stable update releases". +* **stable** : this branch is updated from the *release* branch with + every "stable release" version and also has selected bug fixes with + every "update release" when the *maintenance* branch is merged into it To access the git repositories on your box, use the clone command to create a local copy of the LAMMPS repository with a command like: diff --git a/doc/src/Manual_version.rst b/doc/src/Manual_version.rst index 8fb28fef84d..f123267acf3 100644 --- a/doc/src/Manual_version.rst +++ b/doc/src/Manual_version.rst @@ -3,45 +3,25 @@ What does a LAMMPS version mean The LAMMPS "version" is the date when it was released, such as 1 May 2014. LAMMPS is updated continuously, and we aim to keep it working -correctly and reliably at all times. You can follow its development -in a public `git repository on GitHub `_. - -Modifications of the LAMMPS source code (like bug fixes, code refactors, -updates to existing features, or addition of new features) are organized -into pull requests. Pull requests will be merged into the *develop* -branch of the git repository after they pass automated testing and code -review by the LAMMPS developers. When a sufficient number of changes -have accumulated *and* the *develop* branch version passes an extended -set of automated tests, we release it as a *feature release*, which are -currently made every 4 to 8 weeks. The *release* branch of the git -repository is updated with every such release. A summary of the most -important changes of the patch releases are on `this website page -`_. More detailed release notes are -`available on GitHub `_. - -Once or twice a year, we have a "stabilization period" where we apply -only bug fixes and small, non-intrusive changes to the *develop* -branch. At the same time, the code is subjected to more detailed and -thorough manual testing than the default automated testing. Also, -several variants of static code analysis are run to improve the overall -code quality, consistency, and compliance with programming standards, -best practices and style conventions. - -The release after such a stabilization period is called a *stable* -version and both, the *release* and the *stable* branches are updated -with it. Between stable releases, we collect back-ported bug fixes and -updates from the *develop* branch in the *maintenance* branch. From the -*maintenance* branch we make occasional update releases and update the -*stable* branch accordingly. +correctly and reliably at all times. Also, several variants of static +code analysis are run regularly to maintain or improve the overall code +quality, consistency, and compliance with programming standards, best +practices and style conventions. You can follow its development in a +public `git repository on GitHub `_. Each version of LAMMPS contains all the documented *features* up to and including its version date. For recently added features, we add markers to the documentation at which specific LAMMPS version a feature or keyword was added or significantly changed. -The version date is printed to the screen and log file every time you run -LAMMPS. It is also in the file src/version.h and in the LAMMPS -directory name created when you unpack a tarball. And it is on the +Identifying the Version +^^^^^^^^^^^^^^^^^^^^^^^ + +The version date is printed to the screen and log file every time you +run LAMMPS. There also is an indication, if a LAMMPS binary was +compiled from version with modifications **after** a release. +It is also visible in the file src/version.h and in the LAMMPS directory +name created when you unpack a downloaded tarball. And it is on the first page of the :doc:`manual `. * If you browse the HTML pages of the online version of the LAMMPS @@ -53,3 +33,48 @@ first page of the :doc:`manual `. * If you browse the HTML pages included in your downloaded tarball, they describe the version you have, which may be older than the online version. + +Development +^^^^^^^^^^^ + +Modifications of the LAMMPS source code (like bug fixes, code +refactoring, updates to existing features, or addition of new features) +are organized into pull requests. Pull requests will be merged into the +*develop* branch of the git repository after they pass automated testing +and code review by the LAMMPS developers. + +Feature Releases +^^^^^^^^^^^^^^^^ + +When a sufficient number of new features and updates have accumulated +*and* the LAMMPS version on the *develop* branch passes an extended set +of automated tests, we release it as a *feature release*, which are +currently made every 4 to 8 weeks. The *release* branch of the git +repository is updated with every such *feature release* and a tag in the +format ``patch_1May2014`` is added. A summary of the most important +changes of these releases for the current year are posted on `this +website page `_. More detailed release +notes are `available on GitHub +`_. + +Stable Releases +^^^^^^^^^^^^^^^ + +About once a year, we release a *stable release* version of LAMMPS. +This is done after a "stabilization period" where we apply only bug +fixes and small, non-intrusive changes to the *develop* branch but no +new features. At the same time, the code is subjected to more detailed +and thorough manual testing than the default automated testing. +After such a *stable release*, both the *release* and the *stable* +branches are updated and two tags are applied, a ``patch_1May2014`` format +and a ``stable_1May2014`` format tag. + +Stable Release Updates +^^^^^^^^^^^^^^^^^^^^^^ + +Between *stable releases*, we collect bug fixes and updates back-ported +from the *develop* branch in a branch called *maintenance*. From the +*maintenance* branch we make occasional *stable update releases* and +update the *stable* branch accordingly. The first update to the +``stable_1May2014`` release would be tagged as +``stable_1May2014_update1``. These updates contain no new features. From af222711aedc10d95baa35541e222d40b94c7605 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 18 Dec 2023 15:52:30 -0600 Subject: [PATCH 264/300] Added text to explain the output of ctest -V a bit more --- doc/src/Developer_unittest.rst | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index c0cdee6c09f..5cb7a0ebdec 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -569,6 +569,10 @@ For example, the following output snippet shows the failed unit test Expected: (err) <= (epsilon) Actual: 0.00022892713393549854 vs 0.0001 +The failed assertions provide line numbers in the test source +(e.g. ``test_main.cpp:56``), from which one can understand what +specific assertion failed. + Note that the force style engine runs one of a small number of systems in a rather off-equilibrium configuration with a few atoms for a few steps, writes data and restart files, uses :doc:`the clear command @@ -606,15 +610,18 @@ and run the test with verbose output. For example, env TEST_ARGS=-v ctest -R ^MolPairStyle:lj_cut_coul_long -V +``ctest`` with the ``-V`` flag also shows the exact command line +of the test. One can then use ``gdb --args`` to furthere debug and +catch exceptions with the test command, for example, + +.. code-block:: bash + + gdb --args /path/to/lammps/build/test_pair_style "/path/to/lammps/unittest/force-styles/tests/mol-pair-lj_cut_coul_long.yaml" + + It is recommended to configure the build with ``-D BUILD_SHARED_LIBS=on`` and use a custom linker to shorten the build time during recompilation. Installing `ccache` in your development environment helps speed up recompilation by caching previous compilations and detecting when the same compilation is being done again. Please see :doc:`Build_development` for further details. - - - - - - From 8e4871c5e1d5527a0e10ac2a30e5048a14db5e55 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 18 Dec 2023 16:37:31 -0700 Subject: [PATCH 265/300] Tune team params --- src/KOKKOS/pair_kokkos.h | 65 ++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index a160f84d958..bd543bbbba4 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -19,10 +19,12 @@ #ifndef LMP_PAIR_KOKKOS_H #define LMP_PAIR_KOKKOS_H -#include "Kokkos_Macros.hpp" #include "pair.h" // IWYU pragma: export #include "neighbor_kokkos.h" #include "neigh_list_kokkos.h" +#include "math_special.h" +#include "update.h" +#include "Kokkos_Macros.hpp" #include "Kokkos_ScatterView.hpp" namespace LAMMPS_NS { @@ -907,24 +909,21 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t -int GetTeamSize(FunctorStyle& KOKKOS_GPU_ARG(functor), int KOKKOS_GPU_ARG(inum), - int KOKKOS_GPU_ARG(reduce_flag), int team_size, int KOKKOS_GPU_ARG(vector_length)) { - -#ifdef LMP_KOKKOS_GPU - int team_size_max; - - if (reduce_flag) - team_size_max = Kokkos::TeamPolicy(inum,Kokkos::AUTO).team_size_max(functor,Kokkos::ParallelReduceTag()); - else - team_size_max = Kokkos::TeamPolicy(inum,Kokkos::AUTO).team_size_max(functor,Kokkos::ParallelForTag()); - - if (team_size*vector_length > team_size_max) - team_size = team_size_max/vector_length; -#else - team_size = 1; -#endif - return team_size; +template +int GetMaxNeighs(NeighStyle* list) +{ + auto d_ilist = list->d_ilist; + auto d_numneigh = list->d_numneigh; + int inum = list->inum; + + int maxneigh = 0; + Kokkos::parallel_reduce(inum, LAMMPS_LAMBDA(const int ii, int &maxneigh) { + const int i = d_ilist[ii]; + const int num_neighs = d_numneigh[i]; + maxneigh = MAX(maxneigh,num_neighs); + }, Kokkos::Max(maxneigh)); + + return maxneigh; } // Submit ParallelFor for NEIGHFLAG=HALF,HALFTHREAD,FULL @@ -939,19 +938,35 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P if (fpair->lmp->kokkos->neigh_thread) { - int vector_length = 8; - int atoms_per_team = 32; + static int vectorsize = 0; + static int lastcall = -1; + +#if defined(LMP_KOKKOS_GPU) + + #if defined(KOKKOS_ENABLE_HIP) + int max_vectorsize = 64; + #else + int max_vectorsize = 32; + #endif + + if (!vectorsize || lastcall < fpair->lmp->neighbor->lastcall) { + lastcall = fpair->lmp->update->ntimestep; + vectorsize = GetMaxNeighs(list); + vectorsize = MathSpecial::powint(2,int(log2(vectorsize))); // round down to nearest power of 2 + vectorsize = MIN(vectorsize,max_vectorsize); + } +#else + vectorsize = 1; +#endif if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { PairComputeFunctor ff(fpair,list); - atoms_per_team = GetTeamSize(ff, list->inum, (fpair->eflag || fpair->vflag), atoms_per_team, vector_length); - Kokkos::TeamPolicy > policy(list->inum,atoms_per_team,vector_length); + Kokkos::TeamPolicy > policy(list->inum,Kokkos::AUTO(),vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); } else { PairComputeFunctor ff(fpair,list); - atoms_per_team = GetTeamSize(ff, list->inum, (fpair->eflag || fpair->vflag), atoms_per_team, vector_length); - Kokkos::TeamPolicy > policy(list->inum,atoms_per_team,vector_length); + Kokkos::TeamPolicy > policy(list->inum,Kokkos::AUTO(),vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); } From 6c798412b459079b1d0275b3147c480d743b17ed Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 18 Dec 2023 18:52:42 -0500 Subject: [PATCH 266/300] fix typo and remove unnecessary quotes --- doc/src/Developer_unittest.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Developer_unittest.rst b/doc/src/Developer_unittest.rst index 5cb7a0ebdec..b48c3b4e170 100644 --- a/doc/src/Developer_unittest.rst +++ b/doc/src/Developer_unittest.rst @@ -611,12 +611,12 @@ and run the test with verbose output. For example, env TEST_ARGS=-v ctest -R ^MolPairStyle:lj_cut_coul_long -V ``ctest`` with the ``-V`` flag also shows the exact command line -of the test. One can then use ``gdb --args`` to furthere debug and +of the test. One can then use ``gdb --args`` to further debug and catch exceptions with the test command, for example, .. code-block:: bash - gdb --args /path/to/lammps/build/test_pair_style "/path/to/lammps/unittest/force-styles/tests/mol-pair-lj_cut_coul_long.yaml" + gdb --args /path/to/lammps/build/test_pair_style /path/to/lammps/unittest/force-styles/tests/mol-pair-lj_cut_coul_long.yaml It is recommended to configure the build with ``-D From e98df7018b5e73fa86bfb2ffce1077d5781fb3e7 Mon Sep 17 00:00:00 2001 From: oywg11 Date: Tue, 19 Dec 2023 08:17:43 +0800 Subject: [PATCH 267/300] update the example files --- examples/PACKAGES/interlayer/ilp_tmds/MoS2.ILP | 1 - examples/PACKAGES/interlayer/ilp_tmds/TMD.ILP | 1 + examples/PACKAGES/interlayer/ilp_tmds/in.mos2 | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 120000 examples/PACKAGES/interlayer/ilp_tmds/MoS2.ILP create mode 120000 examples/PACKAGES/interlayer/ilp_tmds/TMD.ILP diff --git a/examples/PACKAGES/interlayer/ilp_tmds/MoS2.ILP b/examples/PACKAGES/interlayer/ilp_tmds/MoS2.ILP deleted file mode 120000 index 75dd894eef9..00000000000 --- a/examples/PACKAGES/interlayer/ilp_tmds/MoS2.ILP +++ /dev/null @@ -1 +0,0 @@ -../../../../potentials/MoS2.ILP \ No newline at end of file diff --git a/examples/PACKAGES/interlayer/ilp_tmds/TMD.ILP b/examples/PACKAGES/interlayer/ilp_tmds/TMD.ILP new file mode 120000 index 00000000000..70f7ea18df8 --- /dev/null +++ b/examples/PACKAGES/interlayer/ilp_tmds/TMD.ILP @@ -0,0 +1 @@ +../../../../potentials/TMD.ILP \ No newline at end of file diff --git a/examples/PACKAGES/interlayer/ilp_tmds/in.mos2 b/examples/PACKAGES/interlayer/ilp_tmds/in.mos2 index b77f2fe7192..0db4ec12d5c 100644 --- a/examples/PACKAGES/interlayer/ilp_tmds/in.mos2 +++ b/examples/PACKAGES/interlayer/ilp_tmds/in.mos2 @@ -12,7 +12,7 @@ mass 4 95.94 pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0 pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S -pair_coeff * * ilp/tmd MoS2.ILP Mo S S Mo S S +pair_coeff * * ilp/tmd TMD.ILP Mo S S Mo S S # Calculate the pair potential compute 0 all pair ilp/tmd From ab29200c60ad807ed3c7415738eb8c62737a3d50 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 19 Dec 2023 10:26:52 -0700 Subject: [PATCH 268/300] More tuning --- src/KOKKOS/pair_kokkos.h | 41 +++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index bd543bbbba4..55fe01f6d24 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -65,6 +65,7 @@ struct PairComputeFunctor { typename AT::t_f_array f; typename AT::t_efloat_1d d_eatom; typename AT::t_virial_array d_vatom; + int inum; using KKDeviceType = typename KKDevice::value; using DUP = NeedDup_v; @@ -97,6 +98,7 @@ struct PairComputeFunctor { dup_f = Kokkos::Experimental::create_scatter_view(c.f); dup_eatom = Kokkos::Experimental::create_scatter_view(c.d_eatom); dup_vatom = Kokkos::Experimental::create_scatter_view(c.d_vatom); + inum = list.inum; }; // Set copymode = 1 so parent allocations aren't destructed by copies of the style @@ -287,7 +289,6 @@ struct PairComputeFunctor { auto a_f = dup_f.template access::value>(); - const int inum = team.league_size(); const int atoms_per_team = team.team_size(); const int firstatom = team.league_rank()*atoms_per_team; const int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; @@ -364,13 +365,11 @@ struct PairComputeFunctor { auto a_f = dup_f.template access::value>(); - const int inum = team.league_size(); const int atoms_per_team = team.team_size(); int firstatom = team.league_rank()*atoms_per_team; int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; Kokkos::parallel_for(Kokkos::TeamThreadRange(team, firstatom, lastatom), [&] (const int &ii) { - const int i = list.d_ilist[ii]; const X_FLOAT xtmp = c.x(i,0); const X_FLOAT ytmp = c.x(i,1); @@ -452,11 +451,9 @@ struct PairComputeFunctor { EV_FLOAT ev; - const int inum = team.league_size(); const int atoms_per_team = team.team_size(); const int firstatom = team.league_rank()*atoms_per_team; const int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; - Kokkos::parallel_for(Kokkos::TeamThreadRange(team, firstatom, lastatom), [&] (const int &ii) { const int i = list.d_ilist[ii]; @@ -616,7 +613,6 @@ struct PairComputeFunctor { EV_FLOAT ev; - const int inum = team.league_size(); const int atoms_per_team = team.team_size(); const int firstatom = team.league_rank()*atoms_per_team; const int lastatom = firstatom + atoms_per_team < inum ? firstatom + atoms_per_team : inum; @@ -926,6 +922,14 @@ int GetMaxNeighs(NeighStyle* list) return maxneigh; } +template +void GetMaxTeamSize(FunctorStyle& functor, int inum, + int &teamsize_max_for, int &teamsize_max_reduce) +{ + teamsize_max_for = Kokkos::TeamPolicy(inum,Kokkos::AUTO).team_size_max(functor,Kokkos::ParallelForTag()); + teamsize_max_reduce = Kokkos::TeamPolicy(inum,Kokkos::AUTO).team_size_max(functor,Kokkos::ParallelReduceTag()); +} + // Submit ParallelFor for NEIGHFLAG=HALF,HALFTHREAD,FULL template EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&PairStyle::EnabledNeighFlags) != 0, NeighListKokkos*> list) { @@ -939,6 +943,7 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P if (fpair->lmp->kokkos->neigh_thread) { static int vectorsize = 0; + static int atoms_per_team = 0; static int lastcall = -1; #if defined(LMP_KOKKOS_GPU) @@ -952,21 +957,39 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P if (!vectorsize || lastcall < fpair->lmp->neighbor->lastcall) { lastcall = fpair->lmp->update->ntimestep; vectorsize = GetMaxNeighs(list); - vectorsize = MathSpecial::powint(2,int(log2(vectorsize))); // round down to nearest power of 2 + vectorsize = MathSpecial::powint(2,(int(log2(vectorsize) + 0.5))); // round to nearest power of 2 vectorsize = MIN(vectorsize,max_vectorsize); + + int teamsize_max_for,teamsize_max_reduce; + if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { + PairComputeFunctor ff(fpair,list); + GetMaxTeamSize(ff, list->inum, teamsize_max_for, teamsize_max_reduce); + } else { + PairComputeFunctor ff(fpair,list); + GetMaxTeamSize(ff, list->inum, teamsize_max_for, teamsize_max_reduce); + } + + int teamsize_max = teamsize_max_for; + if (fpair->eflag || fpair->vflag) + teamsize_max = teamsize_max_reduce; + atoms_per_team = teamsize_max/vectorsize; } #else vectorsize = 1; + atoms_per_team = 1; #endif + const int inum = list->inum; + const int num_teams = inum / atoms_per_team + (inum % atoms_per_team ? 1 : 0); + if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { PairComputeFunctor ff(fpair,list); - Kokkos::TeamPolicy > policy(list->inum,Kokkos::AUTO(),vectorsize); + Kokkos::TeamPolicy > policy(num_teams,atoms_per_team,vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); } else { PairComputeFunctor ff(fpair,list); - Kokkos::TeamPolicy > policy(list->inum,Kokkos::AUTO(),vectorsize); + Kokkos::TeamPolicy > policy(num_teams,atoms_per_team,vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); } From 86f87e0f7b85b8d157e790249abf31b54abb3bf3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 19 Dec 2023 10:46:41 -0700 Subject: [PATCH 269/300] Update docs --- doc/src/package.rst | 16 ++++++++-------- src/KOKKOS/pair_kokkos.h | 29 +++++++++++++++-------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/doc/src/package.rst b/doc/src/package.rst index 63a7f095ad9..65392845e96 100644 --- a/doc/src/package.rst +++ b/doc/src/package.rst @@ -474,13 +474,13 @@ If the *neigh/thread* keyword is set to *off*, then the KOKKOS package threads only over atoms. However, for small systems, this may not expose enough parallelism to keep a GPU busy. When this keyword is set to *on*, the KOKKOS package threads over both atoms and neighbors of atoms. When -using *neigh/thread* *on*, a full neighbor list must also be used. Using -*neigh/thread* *on* may be slower for large systems, so this this option -is turned on by default only when there are 16K atoms or less owned by -an MPI rank and when using a full neighbor list. Not all KOKKOS-enabled -potentials support this keyword yet, and only thread over atoms. Many -simple pairwise potentials such as Lennard-Jones do support threading -over both atoms and neighbors. +using *neigh/thread* *on*, the :doc:`newton pair ` setting must +be "off". Using *neigh/thread* *on* may be slower for large systems, so +this this option is turned on by default only when running on one or +more GPUs and there are 16k atoms or less owned by an MPI rank. Not all +KOKKOS-enabled potentials support this keyword yet, and only thread over +atoms. Many simple pairwise potentials such as Lennard-Jones do support +threading over both atoms and neighbors. If the *neigh/transpose* keyword is set to *off*, then the KOKKOS package will use the same memory layout for building the neighbor list on @@ -732,7 +732,7 @@ comm = device, sort = device, neigh/transpose = off, gpu/aware = on. When LAMMPS can safely detect that GPU-aware MPI is not available, the default value of gpu/aware becomes "off". For CPUs or Xeon Phis, the option defaults are neigh = half, neigh/qeq = half, newton = on, binsize = 0.0, comm = no, and sort -= no. The option neigh/thread = on when there are 16K atoms or less on an MPI += no. For GPUs, option neigh/thread = on when there are 16k atoms or less on an MPI rank, otherwise it is "off". These settings are made automatically by the required "-k on" :doc:`command-line switch `. You can change them by using the package kokkos command in your input script or via the :doc:`-pk diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index 55fe01f6d24..eea2cd5316a 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -935,8 +935,10 @@ template*> list) { EV_FLOAT ev; + const int inum = list->inum; + if (!fpair->lmp->kokkos->neigh_thread_set) - if (list->inum <= 16384) + if (fpair->lmp->kokkos->ngpus && inum <= 16000) if (NEIGHFLAG == FULL || !fpair->newton_pair) fpair->lmp->kokkos->neigh_thread = 1; @@ -947,26 +949,26 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P static int lastcall = -1; #if defined(LMP_KOKKOS_GPU) + if (!vectorsize || lastcall < fpair->lmp->neighbor->lastcall) { + lastcall = fpair->lmp->update->ntimestep; + vectorsize = GetMaxNeighs(list); + vectorsize = MathSpecial::powint(2,(int(log2(vectorsize) + 0.5))); // round to nearest power of 2 #if defined(KOKKOS_ENABLE_HIP) - int max_vectorsize = 64; + int max_vectorsize = 64; #else - int max_vectorsize = 32; + int max_vectorsize = 32; #endif - if (!vectorsize || lastcall < fpair->lmp->neighbor->lastcall) { - lastcall = fpair->lmp->update->ntimestep; - vectorsize = GetMaxNeighs(list); - vectorsize = MathSpecial::powint(2,(int(log2(vectorsize) + 0.5))); // round to nearest power of 2 vectorsize = MIN(vectorsize,max_vectorsize); int teamsize_max_for,teamsize_max_reduce; if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { PairComputeFunctor ff(fpair,list); - GetMaxTeamSize(ff, list->inum, teamsize_max_for, teamsize_max_reduce); + GetMaxTeamSize(ff, inum, teamsize_max_for, teamsize_max_reduce); } else { PairComputeFunctor ff(fpair,list); - GetMaxTeamSize(ff, list->inum, teamsize_max_for, teamsize_max_reduce); + GetMaxTeamSize(ff, inum, teamsize_max_for, teamsize_max_reduce); } int teamsize_max = teamsize_max_for; @@ -979,7 +981,6 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P atoms_per_team = 1; #endif - const int inum = list->inum; const int num_teams = inum / atoms_per_team + (inum % atoms_per_team ? 1 : 0); if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { @@ -996,13 +997,13 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P } else { if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { PairComputeFunctor ff(fpair,list); - if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); - else Kokkos::parallel_for(list->inum,ff); + if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(inum,ff,ev); + else Kokkos::parallel_for(inum,ff); ff.contribute(); } else { PairComputeFunctor ff(fpair,list); - if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); - else Kokkos::parallel_for(list->inum,ff); + if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(inum,ff,ev); + else Kokkos::parallel_for(inum,ff); ff.contribute(); } } From aa221e2f2bbaa5770eea4db4ae5ba38fcaffc990 Mon Sep 17 00:00:00 2001 From: oywg11 Date: Thu, 21 Dec 2023 10:28:53 +0800 Subject: [PATCH 270/300] add new potential file for aip/water/2dm --- .../aip_water_2dm/CBNOH.aip.water.2dm | 1 + .../aip_water_2dm/COH.aip.water.2dm | 1 - potentials/CBNOH.aip.water.2dm | 49 +++++++++++++++++++ potentials/COH.aip.water.2dm | 28 ----------- 4 files changed, 50 insertions(+), 29 deletions(-) create mode 120000 examples/PACKAGES/interlayer/aip_water_2dm/CBNOH.aip.water.2dm delete mode 120000 examples/PACKAGES/interlayer/aip_water_2dm/COH.aip.water.2dm create mode 100755 potentials/CBNOH.aip.water.2dm delete mode 100644 potentials/COH.aip.water.2dm diff --git a/examples/PACKAGES/interlayer/aip_water_2dm/CBNOH.aip.water.2dm b/examples/PACKAGES/interlayer/aip_water_2dm/CBNOH.aip.water.2dm new file mode 120000 index 00000000000..60c9c3a8f49 --- /dev/null +++ b/examples/PACKAGES/interlayer/aip_water_2dm/CBNOH.aip.water.2dm @@ -0,0 +1 @@ +../../../../potentials/CBNOH.aip.water.2dm \ No newline at end of file diff --git a/examples/PACKAGES/interlayer/aip_water_2dm/COH.aip.water.2dm b/examples/PACKAGES/interlayer/aip_water_2dm/COH.aip.water.2dm deleted file mode 120000 index fe5cccfcd28..00000000000 --- a/examples/PACKAGES/interlayer/aip_water_2dm/COH.aip.water.2dm +++ /dev/null @@ -1 +0,0 @@ -../../../../potentials/COH.aip.water.2dm \ No newline at end of file diff --git a/potentials/CBNOH.aip.water.2dm b/potentials/CBNOH.aip.water.2dm new file mode 100755 index 00000000000..5efcc99fcce --- /dev/null +++ b/potentials/CBNOH.aip.water.2dm @@ -0,0 +1,49 @@ +# DATE: 2023-12-20 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com +# CITATION: Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C 127(18), 8704 (2023). +# CITATION: Z. Feng, ..., and W. Ouyang, Langmuir 39(50), 18198-18207 (2023). +# Anisotropic Potential (AIP) for water/graphene and water/hBN heterojunctions +# The parameters below are fitted against the PBE + MBD-NL (graphene/water) and SCAN (hBN/water) DFT reference data. +# +# -------------------Repulsion Potential ------------------++++++++++++++ Vdw Potential ++++++++++++++++************ +# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut +# +# For graphene and hydrocarbons +C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0 +H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2 +C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 +H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 + +# For hBN +B B 3.143737 9.825139 1.936405 2.7848400 14.495957 15.199263 0.7834022 3.682950 49.498013E3 1.0 2.0 +N N 3.443196 7.084490 1.747349 2.9139991 46.508553 15.020370 0.8008370 3.551843 14.810151E3 1.0 2.0 +B N 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 +B H 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 +N B 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 +H B 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 + +# For water-graphene +C Ow 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 2.0 +C Hw 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 2.0 +Ow C 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 1.2 +Hw C 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 1.2 + +# For water-hBN +N Ow 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 2.0 +N Hw 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 2.0 +B Ow 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 2.0 +B Hw 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 2.0 +Ow N 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 1.2 +Hw N 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 1.2 +Ow B 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 1.2 +Hw B 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 1.2 + +# # The AIPs for other elements are tunred off +H Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +H Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Ow H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 + +Ow Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Ow Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 diff --git a/potentials/COH.aip.water.2dm b/potentials/COH.aip.water.2dm deleted file mode 100644 index 5325399abe5..00000000000 --- a/potentials/COH.aip.water.2dm +++ /dev/null @@ -1,28 +0,0 @@ -# DATE: 2022-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com CITATION: Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C 127, 8704 (2023). -# Anisotropic Interfacial Potential (AIP) parameters for water/graphene heterojunctions -# The parameters below are fitted against the PBE + MBD-NL DFT reference data from 2.5 A to 15 A. -# -# ----------------- Repulsion Potential ------------------++++++++++++++ Vdw Potential ++++++++++++++++************ -# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut -# For graphene and hydrocarbons -C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0 -H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2 -C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 -H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 - -# For water-graphene -C Ow 5.45369612 6.18172364 1.25025450 3.34909245 0.68780636 9.05706482 1.23249498 2.77577173 100226.55503127 1.0 2.0 -C Hw 2.55380862 9.68664390 1.96489198 41.77617053 -16.30012807 9.01568534 0.74415463 2.41545571 7409.12856378 1.0 2.0 -Ow C 5.45369612 6.18172364 1.25025450 3.34909245 0.68780636 9.05706482 1.23249498 2.77577173 100226.55503127 1.0 1.2 -Hw C 2.55380862 9.68664390 1.96489198 41.77617053 -16.30012807 9.01568534 0.74415463 2.41545571 7409.12856378 1.0 1.2 - -# # The ILPs for other systems are set to zero -H Ow 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -H Hw 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -Ow H 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -Hw H 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 - -Ow Ow 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -Hw Hw 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -Ow Hw 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 -Hw Ow 5.45369612 6.18172364 1.25025450 0.00000000 0.00000000 9.05706482 1.23249498 2.77577173 0.00000000 1.0 1.2 From b58203fc52277d181cd4884bd54c952ced3a90ca Mon Sep 17 00:00:00 2001 From: oywg11 Date: Thu, 21 Dec 2023 10:44:03 +0800 Subject: [PATCH 271/300] update the doc file --- doc/src/pair_aip_water_2dm.rst | 37 ++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/doc/src/pair_aip_water_2dm.rst b/doc/src/pair_aip_water_2dm.rst index 5cee40edda7..f480819ae4f 100644 --- a/doc/src/pair_aip_water_2dm.rst +++ b/doc/src/pair_aip_water_2dm.rst @@ -22,13 +22,24 @@ Examples .. code-block:: LAMMPS pair_style hybrid/overlay aip/water/2dm 16.0 1 - pair_coeff * * aip/water/2dm COH.aip.water.2dm C Ow Hw + pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm C Ow Hw pair_style hybrid/overlay aip/water/2dm 16.0 lj/cut/tip4p/long 2 3 1 1 0.1546 10 8.5 - pair_coeff 2 2 lj/cut/tip4p/long 8.0313e-3 3.1589 # O-O - pair_coeff 2 3 lj/cut/tip4p/long 0.0 0.0 # O-H - pair_coeff 3 3 lj/cut/tip4p/long 0.0 0.0 # H-H - pair_coeff * * aip/water/2dm COH.aip.water.2dm C Ow Hw + pair_coeff 2 2 lj/cut/tip4p/long 8.0313e-3 3.1589 # O-O + pair_coeff 2 3 lj/cut/tip4p/long 0.0 0.0 # O-H + pair_coeff 3 3 lj/cut/tip4p/long 0.0 0.0 # H-H + pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm C Ow Hw + + pair_style hybrid/overlay aip/water/2dm 16.0 lj/cut/tip4p/long 3 4 1 1 0.1546 10 8.5 coul/shield 16.0 1 + pair_coeff 1*2 1*2 none + pair_coeff 3 3 lj/cut/tip4p/long 8.0313e-3 3.1589 # O-O + pair_coeff 3 4 lj/cut/tip4p/long 0.0 0.0 # O-H + pair_coeff 4 4 lj/cut/tip4p/long 0.0 0.0 # H-H + pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm i B N Ow Hw + pair_coeff 1 3 coul/shield 1.333 + pair_coeff 1 4 coul/shield 1.333 + pair_coeff 2 3 coul/shield 1.333 + pair_coeff 2 4 coul/shield 1.333 Description """"""""""" @@ -37,7 +48,7 @@ Description The *aip/water/2dm* style computes the anisotropic interfacial potential (AIP) potential for interfaces of water with two-dimensional (2D) -materials as described in :ref:`(Feng) `. +materials as described in :ref:`(Feng1) ` and :ref:`(Feng2) `. .. math:: @@ -67,7 +78,7 @@ larger than :math:`r_c` :doc:`pair_style ilp_graphene_hbn oxygen-hydrogen bonds and the normal vector of the central oxygen atom is defined as their average. -The provided parameter file, ``COH.aip.water.2dm``, is intended for use +The provided parameter file, ``CBNOH.aip.water.2dm``, is intended for use with *metal* :doc:`units `, with energies in meV. Two additional parameters, *S*, and *rcut* are included in the parameter file. *S* is designed to facilitate scaling of energies; *rcut* is the cutoff for an @@ -77,7 +88,7 @@ the calculation of the normals for all atom pairs. .. note:: The parameters presented in the provided parameter file, - ``COH.aip.water.2dm``, are fitted with the taper function enabled by + ``CBNOH.aip.water.2dm``, are fitted with the taper function enabled by setting the cutoff equal to 16.0 Angstrom. Using a different cutoff or taper function setting should be carefully checked as they can lead to significant errors. These parameters provide a good @@ -134,7 +145,7 @@ if LAMMPS was built with that package. See the :doc:`Build package This pair style requires the newton setting to be *on* for pair interactions. -The ``COH.aip.water.2dm`` potential file provided with LAMMPS is +The ``CBNOH.aip.water.2dm`` potential file provided with LAMMPS is parameterized for *metal* units. You can use this pair style with any LAMMPS units, but you would need to create your own potential file with parameters in the appropriate units, if your simulation does not use @@ -162,6 +173,10 @@ tap_flag = 1 ---------- -.. _Feng: +.. _Feng1: -**(Feng)** Z. Feng and W. Ouyang et al., J. Phys. Chem. C. 127, 8704-8713 (2023). +**(Feng1)** Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C. 127(18), 8704-8713 (2023). + +.. _Feng2: + +**(Feng2)** Z. Feng, ..., and W. Ouyang, Langmuir 39(50), 18198-18207 (2023). From b857cd9e39d8363f52a535220381ab8c662279d9 Mon Sep 17 00:00:00 2001 From: oywg11 Date: Thu, 21 Dec 2023 11:31:26 +0800 Subject: [PATCH 272/300] update the doc file --- doc/src/pair_aip_water_2dm.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/pair_aip_water_2dm.rst b/doc/src/pair_aip_water_2dm.rst index f480819ae4f..f6c56eff6e5 100644 --- a/doc/src/pair_aip_water_2dm.rst +++ b/doc/src/pair_aip_water_2dm.rst @@ -35,7 +35,7 @@ Examples pair_coeff 3 3 lj/cut/tip4p/long 8.0313e-3 3.1589 # O-O pair_coeff 3 4 lj/cut/tip4p/long 0.0 0.0 # O-H pair_coeff 4 4 lj/cut/tip4p/long 0.0 0.0 # H-H - pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm i B N Ow Hw + pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm B N Ow Hw pair_coeff 1 3 coul/shield 1.333 pair_coeff 1 4 coul/shield 1.333 pair_coeff 2 3 coul/shield 1.333 @@ -73,7 +73,7 @@ larger than :math:`r_c` :doc:`pair_style ilp_graphene_hbn .. note:: This pair style uses the atomic normal vector definition from - :ref:`(Feng) `), where the atomic normal vectors of the + :ref:`(Feng1) `), where the atomic normal vectors of the hydrogen atoms are assumed to lie along the corresponding oxygen-hydrogen bonds and the normal vector of the central oxygen atom is defined as their average. From dedbd8f6db58bc6582391477059c2b5e3eccc1ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 19 Dec 2023 23:37:07 -0500 Subject: [PATCH 273/300] improvements from clang-tidy --- examples/COUPLE/simple/simple.cpp | 18 +++++++++--------- src/DRUDE/fix_tgnh_drude.cpp | 1 - src/ML-PACE/compute_pace.cpp | 12 ++---------- src/ML-SNAP/compute_sna_atom.cpp | 6 ++---- src/OPENMP/npair_bin_ghost_omp.cpp | 2 +- src/REAXFF/compute_reaxff_atom.cpp | 5 ++--- src/RIGID/fix_rigid_nh_small.cpp | 1 - src/library.cpp | 2 +- src/nstencil_bin.cpp | 4 ++-- src/nstencil_multi.cpp | 4 ++-- src/nstencil_multi_old.cpp | 4 ++-- tools/lammps-gui/main.cpp | 2 +- tools/lammps-gui/preferences.cpp | 2 +- tools/lammps-gui/stdcapture.cpp | 6 +++--- unittest/fortran/wrap_configuration.cpp | 2 +- unittest/utils/test_lepton.cpp | 8 ++++---- 16 files changed, 33 insertions(+), 46 deletions(-) diff --git a/examples/COUPLE/simple/simple.cpp b/examples/COUPLE/simple/simple.cpp index c8727cc81f4..f6365ac3def 100644 --- a/examples/COUPLE/simple/simple.cpp +++ b/examples/COUPLE/simple/simple.cpp @@ -67,7 +67,7 @@ int main(int narg, char **arg) FILE *fp; if (me == 0) { fp = fopen(arg[2],"r"); - if (fp == NULL) { + if (fp == nullptr) { printf("ERROR: Could not open LAMMPS input script\n"); MPI_Abort(MPI_COMM_WORLD,1); } @@ -78,14 +78,14 @@ int main(int narg, char **arg) // (could just send it to proc 0 of comm_lammps and let it Bcast) // all LAMMPS procs call input->one() on the line - LAMMPS *lmp = NULL; - if (lammps == 1) lmp = new LAMMPS(0,NULL,comm_lammps); + LAMMPS *lmp = nullptr; + if (lammps == 1) lmp = new LAMMPS(0,nullptr,comm_lammps); int n; char line[1024]; - while (1) { + while (true) { if (me == 0) { - if (fgets(line,1024,fp) == NULL) n = 0; + if (fgets(line,1024,fp) == nullptr) n = 0; else n = strlen(line) + 1; if (n == 0) fclose(fp); } @@ -101,8 +101,8 @@ int main(int narg, char **arg) // put coords back into LAMMPS // run a single step with changed coords - double *x = NULL; - double *v = NULL; + double *x = nullptr; + double *v = nullptr; if (lammps == 1) { lmp->input->one("run 10"); @@ -147,7 +147,7 @@ int main(int narg, char **arg) // create_atoms() to create new ones with old coords, vels // initial thermo should be same as step 20 - int *type = NULL; + int *type = nullptr; if (lammps == 1) { int natoms = static_cast (lmp->atom->natoms); @@ -155,7 +155,7 @@ int main(int narg, char **arg) for (int i = 0; i < natoms; i++) type[i] = 1; lmp->input->one("delete_atoms group all"); - lammps_create_atoms(lmp,natoms,NULL,type,x,v,NULL,0); + lammps_create_atoms(lmp,natoms,nullptr,type,x,v,nullptr,0); lmp->input->one("run 10"); } diff --git a/src/DRUDE/fix_tgnh_drude.cpp b/src/DRUDE/fix_tgnh_drude.cpp index 987408fe63d..b23acd349be 100644 --- a/src/DRUDE/fix_tgnh_drude.cpp +++ b/src/DRUDE/fix_tgnh_drude.cpp @@ -1076,7 +1076,6 @@ void FixTGNHDrude::couple() void FixTGNHDrude::remap() { - int i; double oldlo,oldhi; double expfac; diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index 12693a58d9d..b96432cfe37 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -73,10 +73,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : auto potential_file_name = utils::get_potential_file_path(arg[3]); delete acecimpl->basis_set; acecimpl->basis_set = new ACECTildeBasisSet(potential_file_name); - double cut = acecimpl->basis_set->cutoffmax; cutmax = acecimpl->basis_set->cutoffmax; - double cuti; - double radelemall = 0.5; //# of rank 1, rank > 1 functions @@ -178,7 +175,6 @@ void ComputePACE::init_list(int /*id*/, NeighList *ptr) void ComputePACE::compute_array() { int ntotal = atom->nlocal + atom->nghost; - double **f = atom->f; invoked_array = update->ntimestep; // grow pace_peratom array if necessary @@ -208,9 +204,6 @@ void ComputePACE::compute_array() // invoke full neighbor list (will copy or build if necessary) neighbor->build_one(list); - SPECIES_TYPE *mus; - NS_TYPE *ns; - LS_TYPE *ls; const int inum = list->inum; const int* const ilist = list->ilist; @@ -234,7 +227,6 @@ void ComputePACE::compute_array() // compute pace derivatives for each atom in group // use full neighbor list to count atoms less than cutoff - double** const x = atom->x; const int* const mask = atom->mask; const int ntypes = atom->ntypes; @@ -251,8 +243,8 @@ void ComputePACE::compute_array() delete acecimpl->ace; acecimpl->ace = new ACECTildeEvaluator(*acecimpl->basis_set); - acecimpl->ace->compute_projections = 1; - acecimpl->ace->compute_b_grad = 1; + acecimpl->ace->compute_projections = true; + acecimpl->ace->compute_b_grad = true; int n_r1, n_rp = 0; n_r1 = acecimpl->basis_set->total_basis_size_rank1[0]; n_rp = acecimpl->basis_set->total_basis_size[0]; diff --git a/src/ML-SNAP/compute_sna_atom.cpp b/src/ML-SNAP/compute_sna_atom.cpp index 3fe3cca92da..da49b151176 100644 --- a/src/ML-SNAP/compute_sna_atom.cpp +++ b/src/ML-SNAP/compute_sna_atom.cpp @@ -299,7 +299,7 @@ void ComputeSNAAtom::compute_peratom() // ############################################################################## // // ##### Start of section for computing bispectrum on nnn nearest neighbors ##### // // ############################################################################## // - if (nearest_neighbors_mode == true) { + if (nearest_neighbors_mode) { // ##### 1) : consider full neighbor list in rlist memory->create(distsq, jnum, "snann/atom:distsq"); memory->create(rlist, jnum, 3, "snann/atom:rlist"); @@ -308,7 +308,6 @@ void ComputeSNAAtom::compute_peratom() for (int jj = 0; jj < jnum; jj++) { int j = jlist[jj]; j &= NEIGHMASK; - int jtype = type[j]; const double delx = xtmp - x[j][0]; const double dely = ytmp - x[j][1]; @@ -614,10 +613,9 @@ double * ComputeSNAAtom::tanh_weights(double * rsq, double rcut, double delta, i return w; } -double ComputeSNAAtom::sum_weights(double * rsq, double * w, int ncounts) +double ComputeSNAAtom::sum_weights(double * /*rsq*/, double * w, int ncounts) { double S=0.; - double rloc=0.; for (int i=0; i::build(NeighList *list) #endif NPAIR_OMP_SETUP(nall); - int i, j, k, n, itype, jtype, ibin, bin_start, which, imol, iatom; + int i, j, k, n, itype, jtype, ibin, which, imol, iatom; tagint tagprev; double xtmp, ytmp, ztmp, delx, dely, delz, rsq; int xbin, ybin, zbin, xbin2, ybin2, zbin2; diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index 1b54f3b82ac..cc9109915c7 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -34,11 +34,10 @@ using namespace ReaxFF; /* ---------------------------------------------------------------------- */ ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - abo(nullptr), neighid(nullptr), bondcount(nullptr), reaxff(nullptr) + Compute(lmp, narg, arg), neighid(nullptr), abo(nullptr), bondcount(nullptr), reaxff(nullptr) { if (atom->tag_consecutive() == 0) - error->all(FLERR,"Atom IDs must be consecutive for compute reaxff/atom"); + error->all(FLERR, "Atom IDs must be consecutive for compute reaxff/atom"); peratom_flag = 1; diff --git a/src/RIGID/fix_rigid_nh_small.cpp b/src/RIGID/fix_rigid_nh_small.cpp index 952dc290328..3ee11e28d25 100644 --- a/src/RIGID/fix_rigid_nh_small.cpp +++ b/src/RIGID/fix_rigid_nh_small.cpp @@ -219,7 +219,6 @@ void FixRigidNHSmall::init() } } - int icompute; if (tcomputeflag) { temperature = modify->get_compute_by_id(id_temp); if (!temperature) diff --git a/src/library.cpp b/src/library.cpp index 1acdfc4787e..a629df7b8c0 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -709,7 +709,7 @@ void lammps_commands_string(void *handle, const char *str) break; } - lmp->input->one(cmd.c_str()); + lmp->input->one(cmd); } } } diff --git a/src/nstencil_bin.cpp b/src/nstencil_bin.cpp index 2b7c15cff69..ccefa169789 100644 --- a/src/nstencil_bin.cpp +++ b/src/nstencil_bin.cpp @@ -55,9 +55,9 @@ void NStencilBin::create() // Now only include "upper right" bins for half and ortho stencils if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; + if (j <= 0 && (j != 0 || i <= 0)) continue; if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (k <= 0 && j <= 0 && (j != 0 || i <= 0)) continue; if (bin_distance(i, j, k) < cutneighmaxsq) stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; diff --git a/src/nstencil_multi.cpp b/src/nstencil_multi.cpp index a73215a0586..693c415876c 100644 --- a/src/nstencil_multi.cpp +++ b/src/nstencil_multi.cpp @@ -115,9 +115,9 @@ void NStencilMulti::create() if (HALF && (!TRI)) { if (half_flag) { if (DIM_3D) { - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (k <= 0 && j <= 0 && (j != 0 || i <= 0)) continue; } else { - if (! (j > 0 || (j == 0 && i > 0))) continue; + if (j <= 0 && (j != 0 || i <= 0)) continue; } } } diff --git a/src/nstencil_multi_old.cpp b/src/nstencil_multi_old.cpp index 6d34d8881f3..8648e6f73c0 100644 --- a/src/nstencil_multi_old.cpp +++ b/src/nstencil_multi_old.cpp @@ -65,9 +65,9 @@ void NStencilMultiOld::create() // Now only include "upper right" bins for half and ortho stencils if (HALF && (!DIM_3D) && (!TRI)) - if (! (j > 0 || (j == 0 && i > 0))) continue; + if (j <= 0 && (j != 0 || i <= 0)) continue; if (HALF && DIM_3D && (!TRI)) - if (! (k > 0 || j > 0 || (j == 0 && i > 0))) continue; + if (k <= 0 && j <= 0 && (j != 0 || i <= 0)) continue; rsq = bin_distance(i, j, k); if (rsq < typesq) { diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index cf09fbb8927..d70e9d3e461 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) LammpsGui w(nullptr, infile); w.show(); - return a.exec(); + return QApplication::exec(); } // Local Variables: diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index fd01bb5046d..27cc106008e 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -177,7 +177,7 @@ void Preferences::accept() msg.exec(); const char *path = mystrdup(QCoreApplication::applicationFilePath()); const char *arg0 = mystrdup(QCoreApplication::arguments().at(0)); - execl(path, arg0, (char *)NULL); + execl(path, arg0, (char *)nullptr); } // reformatting settings diff --git a/tools/lammps-gui/stdcapture.cpp b/tools/lammps-gui/stdcapture.cpp index b09aebf0532..8be543e70e6 100644 --- a/tools/lammps-gui/stdcapture.cpp +++ b/tools/lammps-gui/stdcapture.cpp @@ -38,7 +38,7 @@ StdCapture::StdCapture() : m_oldStdOut(0), m_capturing(false) { // make stdout unbuffered so that we don't need to flush the stream - setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stdout, nullptr, _IONBF, 0); m_pipe[READ] = 0; m_pipe[WRITE] = 0; @@ -106,7 +106,7 @@ bool StdCapture::EndCapture() std::string StdCapture::GetChunk() { - if (!m_capturing) return std::string(); + if (!m_capturing) return {}; int bytesRead = 0; buf[0] = '\0'; @@ -120,7 +120,7 @@ std::string StdCapture::GetChunk() if (bytesRead > 0) { buf[bytesRead] = '\0'; } - return std::string(buf); + return {buf}; } std::string StdCapture::GetCapture() diff --git a/unittest/fortran/wrap_configuration.cpp b/unittest/fortran/wrap_configuration.cpp index 5fb744086ec..08974d8a087 100644 --- a/unittest/fortran/wrap_configuration.cpp +++ b/unittest/fortran/wrap_configuration.cpp @@ -234,7 +234,7 @@ TEST_F(LAMMPS_configuration, style_count) { Info info(lmp); for (const auto &c : style_category) - EXPECT_EQ(f_lammps_style_count(c.c_str()), info.get_available_styles(c.c_str()).size()); + EXPECT_EQ(f_lammps_style_count(c.c_str()), info.get_available_styles(c).size()); }; TEST_F(LAMMPS_configuration, style_name) diff --git a/unittest/utils/test_lepton.cpp b/unittest/utils/test_lepton.cpp index 7b2c86f05f9..a9fa6e3543a 100644 --- a/unittest/utils/test_lepton.cpp +++ b/unittest/utils/test_lepton.cpp @@ -129,9 +129,9 @@ TEST(LeptonCustomFunction, zbl) */ class ExampleFunction : public Lepton::CustomFunction { - int getNumArguments() const { return 2; } - double evaluate(const double *arguments) const { return 2.0 * arguments[0] * arguments[1]; } - double evaluateDerivative(const double *arguments, const int *derivOrder) const + int getNumArguments() const override { return 2; } + double evaluate(const double *arguments) const override { return 2.0 * arguments[0] * arguments[1]; } + double evaluateDerivative(const double *arguments, const int *derivOrder) const override { if (derivOrder[0] == 1) { if (derivOrder[1] == 0) @@ -142,7 +142,7 @@ class ExampleFunction : public Lepton::CustomFunction { if (derivOrder[1] == 1 && derivOrder[0] == 0) return 2.0 * arguments[0]; return 0.0; } - Lepton::CustomFunction *clone() const { return new ExampleFunction(); } + Lepton::CustomFunction *clone() const override { return new ExampleFunction(); } }; /** From 3b1559470768a7edec5d2bd01129a229cbc2996d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 21 Dec 2023 15:58:29 -0500 Subject: [PATCH 274/300] update citation comment --- src/REAXFF/fix_reaxff.cpp | 2 +- src/REAXFF/reaxff_allocate.cpp | 2 +- src/REAXFF/reaxff_control.cpp | 2 +- src/REAXFF/reaxff_ffield.cpp | 2 +- src/REAXFF/reaxff_forces.cpp | 2 +- src/REAXFF/reaxff_hydrogen_bonds.cpp | 2 +- src/REAXFF/reaxff_list.cpp | 2 +- src/REAXFF/reaxff_lookup.cpp | 2 +- src/REAXFF/reaxff_multi_body.cpp | 2 +- src/REAXFF/reaxff_nonbonded.cpp | 2 +- src/REAXFF/reaxff_reset_tools.cpp | 2 +- src/REAXFF/reaxff_tool_box.cpp | 2 +- src/REAXFF/reaxff_torsion_angles.cpp | 2 +- src/REAXFF/reaxff_valence_angles.cpp | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/REAXFF/fix_reaxff.cpp b/src/REAXFF/fix_reaxff.cpp index 06941cd8a00..bec16b5d043 100644 --- a/src/REAXFF/fix_reaxff.cpp +++ b/src/REAXFF/fix_reaxff.cpp @@ -19,7 +19,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. ------------------------------------------------------------------------- */ #include "fix_reaxff.h" diff --git a/src/REAXFF/reaxff_allocate.cpp b/src/REAXFF/reaxff_allocate.cpp index ce56668a019..06ebc20f308 100644 --- a/src/REAXFF/reaxff_allocate.cpp +++ b/src/REAXFF/reaxff_allocate.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_control.cpp b/src/REAXFF/reaxff_control.cpp index d914765f458..99e498b428e 100644 --- a/src/REAXFF/reaxff_control.cpp +++ b/src/REAXFF/reaxff_control.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_ffield.cpp b/src/REAXFF/reaxff_ffield.cpp index d5761eb3437..c22330cc16d 100644 --- a/src/REAXFF/reaxff_ffield.cpp +++ b/src/REAXFF/reaxff_ffield.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38, 245-259 (2012). This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_forces.cpp b/src/REAXFF/reaxff_forces.cpp index a4edfeee5c7..274799c30c7 100644 --- a/src/REAXFF/reaxff_forces.cpp +++ b/src/REAXFF/reaxff_forces.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_hydrogen_bonds.cpp b/src/REAXFF/reaxff_hydrogen_bonds.cpp index 6a56675f191..0389db78329 100644 --- a/src/REAXFF/reaxff_hydrogen_bonds.cpp +++ b/src/REAXFF/reaxff_hydrogen_bonds.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_list.cpp b/src/REAXFF/reaxff_list.cpp index 0ff0852a043..2989f717d60 100644 --- a/src/REAXFF/reaxff_list.cpp +++ b/src/REAXFF/reaxff_list.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_lookup.cpp b/src/REAXFF/reaxff_lookup.cpp index c0e7bf2c540..d9ee471cafd 100644 --- a/src/REAXFF/reaxff_lookup.cpp +++ b/src/REAXFF/reaxff_lookup.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_multi_body.cpp b/src/REAXFF/reaxff_multi_body.cpp index 2390b544741..855d82623f4 100644 --- a/src/REAXFF/reaxff_multi_body.cpp +++ b/src/REAXFF/reaxff_multi_body.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_nonbonded.cpp b/src/REAXFF/reaxff_nonbonded.cpp index 75cbd79b294..e0a8d092b2a 100644 --- a/src/REAXFF/reaxff_nonbonded.cpp +++ b/src/REAXFF/reaxff_nonbonded.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_reset_tools.cpp b/src/REAXFF/reaxff_reset_tools.cpp index bebb2e2cfc9..9de917e1428 100644 --- a/src/REAXFF/reaxff_reset_tools.cpp +++ b/src/REAXFF/reaxff_reset_tools.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_tool_box.cpp b/src/REAXFF/reaxff_tool_box.cpp index 22ef299b41a..aa6f831e955 100644 --- a/src/REAXFF/reaxff_tool_box.cpp +++ b/src/REAXFF/reaxff_tool_box.cpp @@ -10,7 +10,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_torsion_angles.cpp b/src/REAXFF/reaxff_torsion_angles.cpp index e9b6bc618d6..29233a56dc6 100644 --- a/src/REAXFF/reaxff_torsion_angles.cpp +++ b/src/REAXFF/reaxff_torsion_angles.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/src/REAXFF/reaxff_valence_angles.cpp b/src/REAXFF/reaxff_valence_angles.cpp index ac3e2dbd1e0..b46f09d23a1 100644 --- a/src/REAXFF/reaxff_valence_angles.cpp +++ b/src/REAXFF/reaxff_valence_angles.cpp @@ -11,7 +11,7 @@ Please cite the related publication: H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama, "Parallel Reactive Molecular Dynamics: Numerical Methods and - Algorithmic Techniques", Parallel Computing, in press. + Algorithmic Techniques", Parallel Computing, 38 (4-5), 245-259. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as From 2b31a2bed56841c3b4303ef1d3e5655a308587d2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 21 Dec 2023 16:07:58 -0500 Subject: [PATCH 275/300] gracefully handle reaxff parameter files without hydrogen bond parameters --- src/REAXFF/reaxff_ffield.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/REAXFF/reaxff_ffield.cpp b/src/REAXFF/reaxff_ffield.cpp index c22330cc16d..6ca8dc62560 100644 --- a/src/REAXFF/reaxff_ffield.cpp +++ b/src/REAXFF/reaxff_ffield.cpp @@ -30,6 +30,7 @@ #include "error.h" #include "memory.h" #include "text_file_reader.h" +#include "tokenizer.h" #include "utils.h" #include @@ -40,6 +41,8 @@ using LAMMPS_NS::utils::open_potential; using LAMMPS_NS::utils::getsyserror; using LAMMPS_NS::utils::uppercase; +using LAMMPS_NS::EOFException; +using LAMMPS_NS::ValueTokenizer; namespace ReaxFF { @@ -538,17 +541,20 @@ namespace ReaxFF { } } - // next line is number of hydrogen bond parameters - - values = reader.next_values(0); - n = values.next_int(); - ++lineno; + // next line is number of hydrogen bond parameters. that block may be missing for (i = 0; i < ntypes; ++i) for (j = 0; j < ntypes; ++j) for (k = 0; k < ntypes; ++k) hbp[i][j][k].r0_hb = -1.0; + auto thisline = reader.next_line(); + if (!thisline) throw EOFException("ReaxFF parameter file has no hydrogen bond parameters"); + + values = ValueTokenizer(thisline); + n = values.next_int(); + ++lineno; + for (i = 0; i < n; ++i) { values = reader.next_values(0); ++lineno; @@ -570,6 +576,8 @@ namespace ReaxFF { } memory->destroy(tor_flag); + } catch (EOFException &e) { + error->warning(FLERR, e.what()); } catch (std::exception &e) { error->one(FLERR,e.what()); } From f8495eaf759bdc975b878b1b947f05d986b25873 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 21 Dec 2023 23:59:35 -0500 Subject: [PATCH 276/300] make certain nbonds is initialized --- src/REAXFF/compute_reaxff_atom.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/REAXFF/compute_reaxff_atom.cpp b/src/REAXFF/compute_reaxff_atom.cpp index cc9109915c7..1834de0b4b8 100644 --- a/src/REAXFF/compute_reaxff_atom.cpp +++ b/src/REAXFF/compute_reaxff_atom.cpp @@ -44,6 +44,7 @@ ComputeReaxFFAtom::ComputeReaxFFAtom(LAMMPS *lmp, int narg, char **arg) : // initialize output nlocal = -1; + nbonds = 0; prev_nbonds = -1; size_peratom_cols = 3; From a16a1a768c090adba55f2a16437bfd489e4b3977 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 00:04:16 -0500 Subject: [PATCH 277/300] fix cut-n-paste bug and avoid uninitialized data access --- src/EXTRA-FIX/fix_nonaffine_displacement.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp index ef5481601f6..c1de50c41d5 100644 --- a/src/EXTRA-FIX/fix_nonaffine_displacement.cpp +++ b/src/EXTRA-FIX/fix_nonaffine_displacement.cpp @@ -71,6 +71,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * nevery = utils::inumeric(FLERR, arg[3], false, lmp); if (nevery <= 0) error->all(FLERR,"Illegal nevery value {} in fix nonaffine/displacement", nevery); + reference_timestep = update_timestep = offset_timestep = -1; int iarg = 4; if (strcmp(arg[iarg], "integrated") == 0) { nad_style = INTEGRATED; @@ -99,7 +100,7 @@ FixNonaffineDisplacement::FixNonaffineDisplacement(LAMMPS *lmp, int narg, char * if (strcmp(arg[iarg], "fixed") == 0) { reference_style = FIXED; reference_timestep = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); - if (update_timestep < 0) + if (reference_timestep < 0) error->all(FLERR, "Illegal reference timestep {} in fix nonaffine/displacement", arg[iarg + 1]); } else if (strcmp(arg[iarg], "update") == 0) { reference_style = UPDATE; From c4124c099584d4aca84d8a0ad140f0b732c08f5b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 10:28:45 -0500 Subject: [PATCH 278/300] correct statement about Xeon Phi support --- doc/src/package.rst | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/src/package.rst b/doc/src/package.rst index 63a7f095ad9..ba868356941 100644 --- a/doc/src/package.rst +++ b/doc/src/package.rst @@ -344,12 +344,10 @@ specify additional flags for the runtime build. ---------- -The *intel* style invokes settings associated with the use of the -INTEL package. All of its settings, except the *omp* and *mode* -keywords, are ignored if LAMMPS was not built with Xeon Phi -co-processor support. All of its settings, including the *omp* and -*mode* keyword are applicable if LAMMPS was built with co-processor -support. +The *intel* style invokes settings associated with the use of the INTEL +package. The keywords *balance*, *ghost*, *tpc*, and *tptask* are +**only** applicable if LAMMPS was built with Xeon Phi co-processor +support and are otherwise ignored. The *Nphi* argument sets the number of co-processors per node. This can be set to any value, including 0, if LAMMPS was not From efa37fff7f3cc161b98df5743d24a403109cb4ee Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 11:31:31 -0500 Subject: [PATCH 279/300] remove cached copy of "layout" since this was not always initialized when used --- src/KOKKOS/grid3d_kokkos.cpp | 4 ++-- src/grid2d.cpp | 24 +++++++++--------------- src/grid2d.h | 1 - src/grid3d.cpp | 24 +++++++++--------------- src/grid3d.h | 1 - 5 files changed, 20 insertions(+), 34 deletions(-) diff --git a/src/KOKKOS/grid3d_kokkos.cpp b/src/KOKKOS/grid3d_kokkos.cpp index 9a82e0157db..7b97c417ddc 100644 --- a/src/KOKKOS/grid3d_kokkos.cpp +++ b/src/KOKKOS/grid3d_kokkos.cpp @@ -640,7 +640,7 @@ void Grid3dKokkos::forward_comm(int caller, void *ptr, int which, in MPI_Datatype datatype) { if (caller == KSPACE) { - if (layout != Comm::LAYOUT_TILED) + if (comm->layout != Comm::LAYOUT_TILED) forward_comm_kspace_brick((KSpace *) ptr,which,nper,k_buf1,k_buf2,datatype); else forward_comm_kspace_tiled((KSpace *) ptr,which,nper,k_buf1,k_buf2,datatype); @@ -780,7 +780,7 @@ void Grid3dKokkos::reverse_comm(int caller, void *ptr, int which, in MPI_Datatype datatype) { if (caller == KSPACE) { - if (layout != Comm::LAYOUT_TILED) + if (comm->layout != Comm::LAYOUT_TILED) reverse_comm_kspace_brick((KSpace *) ptr,which,nper,k_buf1,k_buf2,datatype); else reverse_comm_kspace_tiled((KSpace *) ptr,which,nper,k_buf1,k_buf2,datatype); diff --git a/src/grid2d.cpp b/src/grid2d.cpp index 74fd105ec0c..d39b7b4a78c 100644 --- a/src/grid2d.cpp +++ b/src/grid2d.cpp @@ -114,7 +114,7 @@ Grid2d::Grid2d(LAMMPS *lmp, MPI_Comm gcomm, int gnx, int gny, int ixlo, int ixhi // additional intialization // other constructor invokes this from setup_grid() - initialize(); + Grid2d::initialize(); } /* ---------------------------------------------------------------------- */ @@ -522,7 +522,7 @@ void Grid2d::ghost_grid() // also ensure no other procs use ghost cells beyond +y limit if (yextra) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (comm->myloc[1] == comm->procgrid[1]-1) inyhi = outyhi = ny - 1; } else { if (comm->mysplit[1][1] == 1.0) inyhi = outyhi = ny - 1; @@ -553,15 +553,13 @@ void Grid2d::ghost_grid() void Grid2d::extract_comm_info() { - layout = comm->layout; - // for non TILED layout: // proc xyz lohi = my 4 neighbor procs in this MPI_Comm // these proc IDs can be overridden by caller using set_proc_neighs() // xyz split = copy of 1d vectors in Comm // grid2proc = copy of 3d array in Comm - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { procxlo = comm->procneigh[0][0]; procxhi = comm->procneigh[0][1]; procylo = comm->procneigh[1][0]; @@ -585,7 +583,7 @@ void Grid2d::extract_comm_info() // RCBinfo.cut = this proc's inlo in that dim // Allgather creates the tree of dims and cuts - if (layout == Comm::LAYOUT_TILED) { + if (comm->layout == Comm::LAYOUT_TILED) { rcbinfo = (RCBinfo *) memory->smalloc(nprocs*sizeof(RCBinfo),"grid3d:rcbinfo"); RCBinfo rcbone; @@ -615,7 +613,7 @@ void Grid2d::extract_comm_info() void Grid2d::setup_comm(int &nbuf1, int &nbuf2) { - if (layout != Comm::LAYOUT_TILED) setup_comm_brick(nbuf1,nbuf2); + if (comm->layout != Comm::LAYOUT_TILED) setup_comm_brick(nbuf1,nbuf2); else setup_comm_tiled(nbuf1,nbuf2); } @@ -1039,7 +1037,7 @@ void Grid2d::setup_comm_tiled(int &nbuf1, int &nbuf2) int Grid2d::ghost_adjacent() { - if (layout != Comm::LAYOUT_TILED) return ghost_adjacent_brick(); + if (comm->layout != Comm::LAYOUT_TILED) return ghost_adjacent_brick(); return ghost_adjacent_tiled(); } @@ -1085,7 +1083,7 @@ int Grid2d::ghost_adjacent_tiled() void Grid2d::forward_comm(int caller, void *ptr, int which, int nper, int nbyte, void *buf1, void *buf2, MPI_Datatype datatype) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (caller == KSPACE) forward_comm_brick((KSpace *) ptr,which,nper,nbyte, buf1,buf2,datatype); @@ -1190,7 +1188,7 @@ forward_comm_tiled(T *ptr, int which, int nper, int nbyte, void Grid2d::reverse_comm(int caller, void *ptr, int which, int nper, int nbyte, void *buf1, void *buf2, MPI_Datatype datatype) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (caller == KSPACE) reverse_comm_brick((KSpace *) ptr,which,nper,nbyte, buf1,buf2,datatype); @@ -1314,10 +1312,6 @@ void Grid2d::setup_remap(Grid2d *old, int &nremap_buf1, int &nremap_buf2) deallocate_remap(); - // set layout to current Comm layout - - layout = comm->layout; - // overlaps of my old decomp owned box with all owned boxes in new decomp // noverlap_old = # of overlaps, including self // overlap_old = vector of overlap info in Overlap data struct @@ -1654,7 +1648,7 @@ int Grid2d::compute_overlap(int ghostflag, int *box, int *pbc, Overlap *&overlap // test obox against appropriate layout - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { // find comm->procgrid indices in each dim for box bounds diff --git a/src/grid2d.h b/src/grid2d.h index 43316baad89..8316f840be6 100644 --- a/src/grid2d.h +++ b/src/grid2d.h @@ -55,7 +55,6 @@ class Grid2d : protected Pointers { protected: int me, nprocs; - int layout; // not TILED or TILED, same as Comm class MPI_Comm gridcomm; // communicator for this class // usually world, but MSM calls with subset diff --git a/src/grid3d.cpp b/src/grid3d.cpp index c6cff3f3172..6ca8f7895ce 100644 --- a/src/grid3d.cpp +++ b/src/grid3d.cpp @@ -123,7 +123,7 @@ Grid3d::Grid3d(LAMMPS *lmp, MPI_Comm gcomm, int gnx, int gny, int gnz, // additional intialization // other constructor invokes this from setup_grid() - initialize(); + Grid3d::initialize(); } /* ---------------------------------------------------------------------- */ @@ -577,7 +577,7 @@ void Grid3d::ghost_grid() // also ensure no other procs use ghost cells beyond +z limit if (zextra) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (comm->myloc[2] == comm->procgrid[2]-1) inzhi = outzhi = nz - 1; } else { if (comm->mysplit[2][1] == 1.0) inzhi = outzhi = nz - 1; @@ -613,15 +613,13 @@ void Grid3d::ghost_grid() void Grid3d::extract_comm_info() { - layout = comm->layout; - // for non TILED layout: // proc xyz lohi = my 6 neighbor procs in this MPI_Comm // these proc IDs can be overridden by caller using set_proc_neighs() // xyz split = copy of 1d vectors in Comm // grid2proc = copy of 3d array in Comm - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { procxlo = comm->procneigh[0][0]; procxhi = comm->procneigh[0][1]; procylo = comm->procneigh[1][0]; @@ -649,7 +647,7 @@ void Grid3d::extract_comm_info() // RCBinfo.cut = this proc's inlo in that dim // Allgather creates the tree of dims and cuts - if (layout == Comm::LAYOUT_TILED) { + if (comm->layout == Comm::LAYOUT_TILED) { rcbinfo = (RCBinfo *) memory->smalloc(nprocs*sizeof(RCBinfo),"grid3d:rcbinfo"); RCBinfo rcbone; @@ -680,7 +678,7 @@ void Grid3d::extract_comm_info() void Grid3d::setup_comm(int &nbuf1, int &nbuf2) { - if (layout != Comm::LAYOUT_TILED) setup_comm_brick(nbuf1,nbuf2); + if (comm->layout != Comm::LAYOUT_TILED) setup_comm_brick(nbuf1,nbuf2); else setup_comm_tiled(nbuf1,nbuf2); } @@ -1207,7 +1205,7 @@ void Grid3d::setup_comm_tiled(int &nbuf1, int &nbuf2) int Grid3d::ghost_adjacent() { - if (layout != Comm::LAYOUT_TILED) return ghost_adjacent_brick(); + if (comm->layout != Comm::LAYOUT_TILED) return ghost_adjacent_brick(); return ghost_adjacent_tiled(); } @@ -1255,7 +1253,7 @@ int Grid3d::ghost_adjacent_tiled() void Grid3d::forward_comm(int caller, void *ptr, int which, int nper, int nbyte, void *buf1, void *buf2, MPI_Datatype datatype) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (caller == KSPACE) forward_comm_brick((KSpace *) ptr,which,nper,nbyte, buf1,buf2,datatype); @@ -1360,7 +1358,7 @@ forward_comm_tiled(T *ptr, int which, int nper, int nbyte, void Grid3d::reverse_comm(int caller, void *ptr, int which, int nper, int nbyte, void *buf1, void *buf2, MPI_Datatype datatype) { - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { if (caller == KSPACE) reverse_comm_brick((KSpace *) ptr,which,nper,nbyte, buf1,buf2,datatype); @@ -1484,10 +1482,6 @@ void Grid3d::setup_remap(Grid3d *old, int &nremap_buf1, int &nremap_buf2) deallocate_remap(); - // set layout to current Comm layout - - layout = comm->layout; - // overlaps of my old decomp owned box with all owned boxes in new decomp // noverlap_old = # of overlaps, including self // overlap_old = vector of overlap info in Overlap data struct @@ -1829,7 +1823,7 @@ int Grid3d::compute_overlap(int ghostflag, int *box, int *pbc, Overlap *&overlap return noverlap_list; } - if (layout != Comm::LAYOUT_TILED) { + if (comm->layout != Comm::LAYOUT_TILED) { // find comm->procgrid indices in each dim for box bounds diff --git a/src/grid3d.h b/src/grid3d.h index e4a8e276f54..6a15c2c9422 100644 --- a/src/grid3d.h +++ b/src/grid3d.h @@ -57,7 +57,6 @@ class Grid3d : protected Pointers { protected: int me, nprocs; - int layout; // not TILED or TILED, same as Comm class MPI_Comm gridcomm; // communicator for this class // usually world, but MSM calls with subset From c964d8cda83b894cb51b787a9f831567daf4cb81 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 11:35:35 -0500 Subject: [PATCH 280/300] skip python tests using numpy that fail randomly on macOS --- unittest/python/CMakeLists.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/unittest/python/CMakeLists.txt b/unittest/python/CMakeLists.txt index b4ba281d934..f3b851620c9 100644 --- a/unittest/python/CMakeLists.txt +++ b/unittest/python/CMakeLists.txt @@ -84,20 +84,26 @@ if(Python_EXECUTABLE) WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCommands PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonNumpy - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonNumpy + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonCapabilities COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-capabilities.py -v WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCapabilities PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonPyLammps - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonPyLammps + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonFormats COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-formats.py -v From 5b00ad8f719b8956ee0152c0ae757895132e47b0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 13:37:20 -0500 Subject: [PATCH 281/300] flag error if using INTEL package kspace styles with run style verlet/split --- src/INTEL/fix_intel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/INTEL/fix_intel.cpp b/src/INTEL/fix_intel.cpp index cb601498857..30d119dd6a2 100644 --- a/src/INTEL/fix_intel.cpp +++ b/src/INTEL/fix_intel.cpp @@ -553,6 +553,9 @@ void FixIntel::kspace_init_check() if (intel_pair == 0) error->all(FLERR,"Intel styles for kspace require intel pair style."); + + if (utils::strmatch(update->integrate_style, "^verlet/split")) + error->all(FLERR,"Intel styles for kspace are not compatible with run_style verlet/split"); } /* ---------------------------------------------------------------------- */ From 7cfbe775326570d17c6974df6cda89e984fe5a5d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 13:42:56 -0500 Subject: [PATCH 282/300] report incompatibility of verlet/split with INTEL package kspace styles --- doc/src/run_style.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/run_style.rst b/doc/src/run_style.rst index 0804ce5c828..d2e47c08849 100644 --- a/doc/src/run_style.rst +++ b/doc/src/run_style.rst @@ -329,7 +329,8 @@ Restrictions The *verlet/split* style can only be used if LAMMPS was built with the REPLICA package. Correspondingly the *respa/omp* style is available only if the OPENMP package was included. See the :doc:`Build package -` page for more info. +` page for more info. It is not compatible with +kspace styles from the INTEL package. Whenever using rRESPA, the user should experiment with trade-offs in speed and accuracy for their system, and verify that they are From f147df8b4475e8306296b341f5e7259ac2c90c0d Mon Sep 17 00:00:00 2001 From: oywg11 Date: Sat, 23 Dec 2023 08:29:15 +0800 Subject: [PATCH 283/300] add full list of atom pairs --- potentials/CBNOH.aip.water.2dm | 37 +++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/potentials/CBNOH.aip.water.2dm b/potentials/CBNOH.aip.water.2dm index 5efcc99fcce..dae5e2c5d44 100755 --- a/potentials/CBNOH.aip.water.2dm +++ b/potentials/CBNOH.aip.water.2dm @@ -3,24 +3,13 @@ # CITATION: Z. Feng, ..., and W. Ouyang, Langmuir 39(50), 18198-18207 (2023). # Anisotropic Potential (AIP) for water/graphene and water/hBN heterojunctions # The parameters below are fitted against the PBE + MBD-NL (graphene/water) and SCAN (hBN/water) DFT reference data. + +# The parameters for bilayer graphene/graphene, graphene/hBN and hBN/hBN junctions are taken from +# CITATION: Ouyang, Mandelli, Urbakh, Hod, Nano Letters 18, 6009-6016 (2018). # # -------------------Repulsion Potential ------------------++++++++++++++ Vdw Potential ++++++++++++++++************ # beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut # -# For graphene and hydrocarbons -C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0 -H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2 -C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 -H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 - -# For hBN -B B 3.143737 9.825139 1.936405 2.7848400 14.495957 15.199263 0.7834022 3.682950 49.498013E3 1.0 2.0 -N N 3.443196 7.084490 1.747349 2.9139991 46.508553 15.020370 0.8008370 3.551843 14.810151E3 1.0 2.0 -B N 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 -B H 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 -N B 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 -H B 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 - # For water-graphene C Ow 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 2.0 C Hw 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 2.0 @@ -37,6 +26,26 @@ Hw N 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2 Ow B 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 1.2 Hw B 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 1.2 +# For graphene and hydrocarbons +C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0 +H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2 +C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 +H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5 + +# For hBN +B B 3.143737 9.825139 1.936405 2.7848400 14.495957 15.199263 0.7834022 3.682950 49.498013E3 1.0 2.0 +N N 3.443196 7.084490 1.747349 2.9139991 46.508553 15.020370 0.8008370 3.551843 14.810151E3 1.0 2.0 +B N 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 +B H 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 +N B 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.8044028 3.765728 24.669996E3 1.0 2.0 +H B 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 + +# For graphene-hBN +C B 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 +C N 3.253564 8.825921 1.059550 18.344740 21.913573 15.000000 0.7234983 3.013117 19.063095E3 1.0 2.0 +B C 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 +N C 3.253564 8.825921 1.059550 18.344740 21.913573 15.000000 0.7234983 3.013117 19.063095E3 1.0 2.0 + # # The AIPs for other elements are tunred off H Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 H Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 From 0515f071727904702c8a940d88ef7ead41576a3e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 23 Dec 2023 02:51:21 -0500 Subject: [PATCH 284/300] whitespace --- doc/src/pair_aip_water_2dm.rst | 2 +- potentials/CBNOH.aip.water.2dm | 48 +++++++++++++++++----------------- potentials/TMD.ILP | 4 +-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/doc/src/pair_aip_water_2dm.rst b/doc/src/pair_aip_water_2dm.rst index f6c56eff6e5..b84202e69e1 100644 --- a/doc/src/pair_aip_water_2dm.rst +++ b/doc/src/pair_aip_water_2dm.rst @@ -31,7 +31,7 @@ Examples pair_coeff * * aip/water/2dm CBNOH.aip.water.2dm C Ow Hw pair_style hybrid/overlay aip/water/2dm 16.0 lj/cut/tip4p/long 3 4 1 1 0.1546 10 8.5 coul/shield 16.0 1 - pair_coeff 1*2 1*2 none + pair_coeff 1*2 1*2 none pair_coeff 3 3 lj/cut/tip4p/long 8.0313e-3 3.1589 # O-O pair_coeff 3 4 lj/cut/tip4p/long 0.0 0.0 # O-H pair_coeff 4 4 lj/cut/tip4p/long 0.0 0.0 # H-H diff --git a/potentials/CBNOH.aip.water.2dm b/potentials/CBNOH.aip.water.2dm index dae5e2c5d44..83205c354f2 100755 --- a/potentials/CBNOH.aip.water.2dm +++ b/potentials/CBNOH.aip.water.2dm @@ -1,4 +1,4 @@ -# DATE: 2023-12-20 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com +# DATE: 2023-12-20 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com # CITATION: Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C 127(18), 8704 (2023). # CITATION: Z. Feng, ..., and W. Ouyang, Langmuir 39(50), 18198-18207 (2023). # Anisotropic Potential (AIP) for water/graphene and water/hBN heterojunctions @@ -11,20 +11,20 @@ # beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut # # For water-graphene -C Ow 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 2.0 -C Hw 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 2.0 -Ow C 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 1.2 -Hw C 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 1.2 +C Ow 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 2.0 +C Hw 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 2.0 +Ow C 5.453696 6.181724 1.250255 3.349092 0.687806 9.057065 1.232495 2.775772 100226.555031 1.0 1.2 +Hw C 2.553809 9.686644 1.964892 41.776171 -16.300128 9.015685 0.744155 2.415456 7409.128564 1.0 1.2 # For water-hBN -N Ow 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 2.0 -N Hw 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 2.0 -B Ow 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 2.0 -B Hw 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 2.0 -Ow N 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 1.2 -Hw N 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 1.2 -Ow B 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 1.2 -Hw B 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 1.2 +N Ow 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 2.0 +N Hw 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 2.0 +B Ow 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 2.0 +B Hw 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 2.0 +Ow N 3.530598 16.377816 1.285374 1.717537 1.339337 24.797794 0.771411 3.928357 33589.850651 1.0 1.2 +Hw N 4.029390 5.360546 0.950352 15.945549 -1.486701 10.797276 1.352684 2.293775 41247.181447 1.0 1.2 +Ow B 3.907514 7.842519 2.380078 32.122737 1.190485 17.482482 0.788174 2.368217 139539.370785 1.0 1.2 +Hw B 3.804966 2.356248 1.114761 9.193309 -5.922514 9.000572 1.334703 1.746122 43796.489158 1.0 1.2 # For graphene and hydrocarbons C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0 @@ -41,18 +41,18 @@ N B 3.295257 7.224311 2.872667 1.3715032 0.4347152 14.594578 0.804402 H B 2.718657 9.214551 3.273063 14.015714 14.760509 15.084752 0.7768383 3.640866 7.9642467E3 1.0 1.5 # For graphene-hBN -C B 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 +C B 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 C N 3.253564 8.825921 1.059550 18.344740 21.913573 15.000000 0.7234983 3.013117 19.063095E3 1.0 2.0 -B C 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 +B C 3.303662 10.54415 2.926741 16.719972 0.3571734 15.305254 0.7001581 3.097327 30.162869E3 1.0 2.0 N C 3.253564 8.825921 1.059550 18.344740 21.913573 15.000000 0.7234983 3.013117 19.063095E3 1.0 2.0 -# # The AIPs for other elements are tunred off -H Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -H Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Ow H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Hw H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +# The AIPs for other elements are turned off +H Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +H Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Ow H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw H 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Ow Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Hw Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Ow Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 -Hw Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Ow Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Ow Hw 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 +Hw Ow 5.453696 6.181724 1.250255 0.000000 0.000000 9.057065 1.232495 2.775772 0.000000 1.0 1.2 diff --git a/potentials/TMD.ILP b/potentials/TMD.ILP index e7a9cbe5585..18563199c9c 100644 --- a/potentials/TMD.ILP +++ b/potentials/TMD.ILP @@ -1,10 +1,10 @@ -# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com +# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com # CITATION: W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021). # CITATION: W. Jiang, et al., J. Phys. Chem. A, 127, 46, 9820–9830 (2023). # Interlayer Potential (ILP) for bilayer and bulk Group-VI Transition Metal Dichalcogenides. # The parameters below are fitted against the HSE + MBD-NL DFT reference data. # -# -------------------- Repulsion Potential -------------------++++++++++++++++ Vdw Potential ++++++++++++++++********* +# -------------------- Repulsion Potential -------------------++++++++++++++++ Vdw Potential ++++++++++++++++********* # beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut Mo Mo 5.579450 9.377662 2.027222 144.151775 97.978570 89.437597 2.059031 5.122055 491850.316195 1.0 4.0 W W 5.530854 6.624992 1.983208 0.271792 140.174059 107.392585 1.356333 4.437591 691850.243962 1.0 4.0 From bdb0fc6b7a294b87569a977d413f09faec04600f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 23 Dec 2023 11:35:39 -0500 Subject: [PATCH 285/300] replace non-ASCII character --- doc/src/pair_ilp_tmd.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/pair_ilp_tmd.rst b/doc/src/pair_ilp_tmd.rst index b5d9ad60b56..575bafdc912 100644 --- a/doc/src/pair_ilp_tmd.rst +++ b/doc/src/pair_ilp_tmd.rst @@ -167,4 +167,4 @@ tap_flag = 1 .. _Jiang: -**(Jiang)** W. Jiang, et al., J. Phys. Chem. A, 127, 46, 9820–9830 (2023). +**(Jiang)** W. Jiang, et al., J. Phys. Chem. A, 127, 46, 9820-9830 (2023). From b01065b3986be4be244d45470a975008f6763ea2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 23 Dec 2023 11:57:58 -0500 Subject: [PATCH 286/300] use "neato" layout only for lammps-classes.dot to avoid issues with recent graphviz versions --- doc/graphviz/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/graphviz/Makefile b/doc/graphviz/Makefile index a3e0c94c63e..00b651e888c 100644 --- a/doc/graphviz/Makefile +++ b/doc/graphviz/Makefile @@ -16,8 +16,11 @@ clean: rm -f $(IMGSVG) $(IMGPDF) $(IMGPNG) *~ ifeq ($(HAS_DOT),YES) -$(IMGDIR)/%.png: %.dot +$(IMGDIR)/lammps-classes.png : lammps-classes.dot dot -Tpng -Kneato -o $@ $< + +$(IMGDIR)/%.png: %.dot + dot -Tpng -Kdot -o $@ $< endif ifeq ($(HAS_DOT),NO) From 5d9f38433879fc8c6cb79bc10febf1a94f531b18 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 23 Dec 2023 11:58:40 -0500 Subject: [PATCH 287/300] recreate graphvis images with graphviz 8.1 --- doc/src/JPG/lammps-classes.png | Bin 293226 -> 311133 bytes doc/src/JPG/lammps-invoke-python.png | Bin 37244 -> 38861 bytes doc/src/JPG/pylammps-invoke-lammps.png | Bin 36936 -> 36838 bytes doc/src/JPG/python-invoke-lammps.png | Bin 28981 -> 28457 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/src/JPG/lammps-classes.png b/doc/src/JPG/lammps-classes.png index 71b5af9cccc92fa5594d34a032f5812efca037aa..d7ed506ab3c97e94af00e70769093da1be631d96 100644 GIT binary patch literal 311133 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

  • 678A?NMaTg-R> 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

    =OvmNb+I6y)o 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

    P6Z&oouMBQ;EAb#;G}a*XlN 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 z�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 $#JP*{*cq%vwLcm25Zs`L#&N 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

    g` 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

    7dv&CM*whQ=^g=|{f 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 H&!7GqHwD-U diff --git a/doc/src/JPG/lammps-invoke-python.png b/doc/src/JPG/lammps-invoke-python.png index d1e25f52ea1fd7944391009f31fe4b176e4812c4..890963a5778cefe8c99c9f2056fd5e5539380f6f 100644 GIT binary patch literal 38861 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쮞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 E4~TtAtN;K2 literal 37244 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 VY~7&?{~Y6TkCdc~C7-|fzW@rQ^Wp#i diff --git a/doc/src/JPG/python-invoke-lammps.png b/doc/src/JPG/python-invoke-lammps.png index 0c456028dbbed2d119f3afc432c6418c08294b44..6e44b8d56e13012c29c86e698912e6c449a65084 100644 GIT binary patch literal 28457 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 Date: Sat, 23 Dec 2023 12:06:38 -0500 Subject: [PATCH 288/300] add graph to show relation between branches and versions of LAMMPS --- doc/graphviz/lammps-releases.dot | 34 +++++++++++++++++++++++++++++++ doc/src/JPG/lammps-releases.png | Bin 0 -> 69780 bytes doc/src/Manual_version.rst | 5 +++++ 3 files changed, 39 insertions(+) create mode 100644 doc/graphviz/lammps-releases.dot create mode 100644 doc/src/JPG/lammps-releases.png diff --git a/doc/graphviz/lammps-releases.dot b/doc/graphviz/lammps-releases.dot new file mode 100644 index 00000000000..f641cac0295 --- /dev/null +++ b/doc/graphviz/lammps-releases.dot @@ -0,0 +1,34 @@ +// LAMMPS branches and releases +digraph releases { + rankdir="LR"; + github [shape="box" label="Pull Requests\non GitHub" height=0.75]; + github -> develop [label="Merge commits"]; + { + rank = "same"; + work [shape="none" label="Development branches:"] + develop [label="'develop' branch" height=0.75]; + maintenance [label="'maintenance' branch" height=0.75]; + }; + { + rank = "same"; + upload [shape="none" label="Release branches:"] + release [label="'release' branch" height=0.75]; + stable [label="'stable' branch" height=0.75]; + }; + develop -> release [label="Feature release\n(every 4-8 weeks)"]; + release -> stable [label="Stable release\n(once per year)"]; + stable -> maintenance [label="Reset on stable release" style="setlinewidth(2)"]; + develop -> maintenance [label="Backports of bugfixes" style="dashed"]; + maintenance -> stable [label="Updates to stable release"]; + { + rank = "same"; + tag [shape="none" label="Applied tags:"]; + patchtag [shape="box" label="patch_"]; + stabletag [shape="box" label="stable_"]; + updatetag [shape="box" label="stable__update"]; + }; + release -> patchtag [label="feature release" style="dotted"]; + stable -> stabletag [label="stable release" style="dotted"]; + stable -> updatetag [label="update release" style="dotted"]; +} + diff --git a/doc/src/JPG/lammps-releases.png b/doc/src/JPG/lammps-releases.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c317088f3c247cfc37bc27d1747cb0bc671d93 GIT binary patch literal 69780 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�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. Development ^^^^^^^^^^^ +.. figure:: JPG/lammps-releases.png + :figclass: align-center + + Relationships between main branches and tags in the LAMMPS git repository + Modifications of the LAMMPS source code (like bug fixes, code refactoring, updates to existing features, or addition of new features) are organized into pull requests. Pull requests will be merged into the From 9546fd89e52edce0d4f089e1c91554abcf1db0c5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 23 Dec 2023 12:16:53 -0500 Subject: [PATCH 289/300] adjust heading levels --- doc/src/Manual_version.rst | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/src/Manual_version.rst b/doc/src/Manual_version.rst index c8ac1ac7d9f..1bfaffaf6de 100644 --- a/doc/src/Manual_version.rst +++ b/doc/src/Manual_version.rst @@ -34,13 +34,16 @@ first page of the :doc:`manual `. describe the version you have, which may be older than the online version. -Development -^^^^^^^^^^^ +LAMMPS releases, branches, and tags +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. figure:: JPG/lammps-releases.png :figclass: align-center - Relationships between main branches and tags in the LAMMPS git repository + Relations between releases, main branches, and tags in the LAMMPS git repository + +Development +""""""""""" Modifications of the LAMMPS source code (like bug fixes, code refactoring, updates to existing features, or addition of new features) @@ -49,7 +52,7 @@ are organized into pull requests. Pull requests will be merged into the and code review by the LAMMPS developers. Feature Releases -^^^^^^^^^^^^^^^^ +"""""""""""""""" When a sufficient number of new features and updates have accumulated *and* the LAMMPS version on the *develop* branch passes an extended set @@ -63,7 +66,7 @@ notes are `available on GitHub `_. Stable Releases -^^^^^^^^^^^^^^^ +""""""""""""""" About once a year, we release a *stable release* version of LAMMPS. This is done after a "stabilization period" where we apply only bug @@ -75,7 +78,7 @@ branches are updated and two tags are applied, a ``patch_1May2014`` format and a ``stable_1May2014`` format tag. Stable Release Updates -^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""" Between *stable releases*, we collect bug fixes and updates back-ported from the *develop* branch in a branch called *maintenance*. From the From c1446ddd92882760d1478299ffea8f1be71a04c8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 2 Jan 2024 11:02:59 -0500 Subject: [PATCH 290/300] improve error messages --- src/compute_pair.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/compute_pair.cpp b/src/compute_pair.cpp index 2788b632d21..e789adbc89d 100644 --- a/src/compute_pair.cpp +++ b/src/compute_pair.cpp @@ -30,7 +30,7 @@ enum { EPAIR, EVDWL, ECOUL }; ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), pstyle(nullptr), pair(nullptr), one(nullptr) { - if (narg < 4) error->all(FLERR, "Illegal compute pair command"); + if (narg < 4) utils::missing_cmd_args(FLERR, "compute pair", error); scalar_flag = 1; extscalar = 1; @@ -63,7 +63,7 @@ ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg], "ecoul") == 0) evalue = ECOUL; else - error->all(FLERR, "Illegal compute pair command"); + error->all(FLERR, "Unknown compute pair keyword {}", arg[iarg]); ++iarg; } @@ -75,7 +75,7 @@ ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) : pair = force->pair_match(pstyle, 1, nsub); } - if (!pair) error->all(FLERR, "Unrecognized pair style in compute pair command"); + if (!pair) error->all(FLERR, "Unrecognized pair style {} in compute pair command", pstyle); npair = pair->nextra; if (npair) { @@ -104,7 +104,7 @@ void ComputePair::init() // recheck for pair style in case it has been deleted pair = force->pair_match(pstyle, 1, nsub); - if (!pair) error->all(FLERR, "Unrecognized pair style in compute pair command"); + if (!pair) error->all(FLERR, "Unrecognized pair style {} in compute pair command", pstyle); } /* ---------------------------------------------------------------------- */ From 817c7bac18ab8d126d83a9670a2619e53af1999b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 3 Jan 2024 10:11:30 -0700 Subject: [PATCH 291/300] Optimize Kokkos PACE pair style for GPUs --- src/KOKKOS/pair_pace_kokkos.cpp | 669 ++++++++++++++++++++------------ src/KOKKOS/pair_pace_kokkos.h | 52 +-- 2 files changed, 442 insertions(+), 279 deletions(-) diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 805d7f68bb5..85fd4582982 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -104,7 +104,8 @@ void PairPACEKokkos::grow(int natom, int maxneigh) if ((int)A.extent(0) < natom) { - MemKK::realloc_kokkos(A, "pace:A", natom, nelements, nradmax + 1, (lmax + 1) * (lmax + 1)); + MemKK::realloc_kokkos(A_sph, "pace:A_sph", natom, nelements, idx_sph_max, nradmax + 1); + MemKK::realloc_kokkos(A, "pace:A", natom, nelements, (lmax + 1) * (lmax + 1), nradmax + 1); MemKK::realloc_kokkos(A_rank1, "pace:A_rank1", natom, nelements, nradbase); MemKK::realloc_kokkos(A_list, "pace:A_list", natom, idx_rho_max, basis_set->rankmax); @@ -115,7 +116,7 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(rhos, "pace:rhos", natom, basis_set->ndensitymax + 1); // +1 density for core repulsion MemKK::realloc_kokkos(dF_drho, "pace:dF_drho", natom, basis_set->ndensitymax + 1); // +1 density for core repulsion - MemKK::realloc_kokkos(weights, "pace:weights", natom, nelements, nradmax + 1, (lmax + 1) * (lmax + 1)); + MemKK::realloc_kokkos(weights, "pace:weights", natom, nelements, idx_sph_max, nradmax + 1); MemKK::realloc_kokkos(weights_rank1, "pace:weights_rank1", natom, nelements, nradbase); // hard-core repulsion @@ -129,11 +130,11 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_rho_max, basis_set->rankmax); } - if (((int)ylm.extent(0) < natom) || ((int)ylm.extent(1) < maxneigh)) { + if (((int)fr.extent(0) < natom) || ((int)fr.extent(1) < maxneigh)) { // radial functions - MemKK::realloc_kokkos(fr, "pace:fr", natom, maxneigh, nradmax, lmax + 1); - MemKK::realloc_kokkos(dfr, "pace:dfr", natom, maxneigh, nradmax, lmax + 1); + MemKK::realloc_kokkos(fr, "pace:fr", natom, maxneigh, lmax + 1, nradmax); + MemKK::realloc_kokkos(dfr, "pace:dfr", natom, maxneigh, lmax + 1, nradmax); MemKK::realloc_kokkos(gr, "pace:gr", natom, maxneigh, nradbase); MemKK::realloc_kokkos(dgr, "pace:dgr", natom, maxneigh, nradbase); const int max_num_functions = MAX(nradbase, nradmax*(lmax + 1)); @@ -144,12 +145,6 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(cr, "pace:cr", natom, maxneigh); MemKK::realloc_kokkos(dcr, "pace:dcr", natom, maxneigh); - // spherical harmonics - MemKK::realloc_kokkos(plm, "pace:plm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(dplm, "pace:dplm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(ylm, "pace:ylm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(dylm, "pace:dylm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - // short neigh list MemKK::realloc_kokkos(d_ncount, "pace:ncount", natom); MemKK::realloc_kokkos(d_mu, "pace:mu", natom, maxneigh); @@ -443,6 +438,7 @@ void PairPACEKokkos::init_style() // spherical harmonics + MemKK::realloc_kokkos(d_idx_sph, "pace:idx_sph", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(alm, "pace:alm", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(blm, "pace:blm", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(cl, "pace:cl", lmax + 1); @@ -613,7 +609,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::deep_copy(weights, 0.0); Kokkos::deep_copy(weights_rank1, 0.0); - Kokkos::deep_copy(A, 0.0); + Kokkos::deep_copy(A_sph, 0.0); Kokkos::deep_copy(A_rank1, 0.0); Kokkos::deep_copy(rhos, 0.0); Kokkos::deep_copy(rho_core, 0.0); @@ -646,15 +642,6 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for("ComputeRadial",policy_radial,*this); } - //ComputeYlm - { - int vector_length = vector_length_default; - int team_size = 16; - check_team_size_for(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - typename Kokkos::TeamPolicy policy_ylm(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - Kokkos::parallel_for("ComputeYlm",policy_ylm,*this); - } - //ComputeAi { int vector_length = vector_length_default; @@ -693,7 +680,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) int vector_length = vector_length_default; int team_size = team_size_default; check_team_size_for(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - typename Kokkos::TeamPolicy policy_derivative(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); + typename Kokkos::TeamPolicy policy_derivative(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); Kokkos::parallel_for("ComputeDerivative",policy_derivative,*this); } @@ -898,28 +885,6 @@ void PairPACEKokkos::operator() (TagPairPACEComputeRadial, const typ /* ---------------------------------------------------------------------- */ -template -KOKKOS_INLINE_FUNCTION -void PairPACEKokkos::operator() (TagPairPACEComputeYlm, const typename Kokkos::TeamPolicy::member_type& team) const -{ - // Extract the atom number - int ii = team.team_rank() + team.team_size() * (team.league_rank() % - ((chunk_size+team.team_size()-1)/team.team_size())); - if (ii >= chunk_size) return; - - // Extract the neighbor number - const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size()); - const int ncount = d_ncount(ii); - if (jj >= ncount) return; - - const double xn = d_rhats(ii, jj, 0); - const double yn = d_rhats(ii, jj, 1); - const double zn = d_rhats(ii, jj, 2); - compute_ylm(ii,jj,xn,yn,zn,lmax); -} - -/* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEComputeAi, const typename Kokkos::TeamPolicy::member_type& team) const @@ -941,13 +906,127 @@ void PairPACEKokkos::operator() (TagPairPACEComputeAi, const typenam Kokkos::atomic_add(&A_rank1(ii, mu_j, n), gr(ii, jj, n) * Y00); // rank > 1 - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { - for (int m = 0; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - Kokkos::atomic_add(&A(ii, mu_j, n, idx).re, fr(ii, jj, n, l) * ylm(ii, jj, idx).re); - Kokkos::atomic_add(&A(ii, mu_j, n, idx).im, fr(ii, jj, n, l) * ylm(ii, jj, idx).im); + + // Compute plm and ylm + + // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // prefactors include 1/sqrt(2) factor compared to reference + + complex ylm, phase; + complex phasem, mphasem1; + complex dyx, dyy, dyz; + complex rdy; + + const double rx = d_rhats(ii, jj, 0); + const double ry = d_rhats(ii, jj, 1); + const double rz = d_rhats(ii, jj, 2); + + phase.re = rx; + phase.im = ry; + + double plm_idx,plm_idx1,plm_idx2; + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + int idx_sph = 0; + + // m = 0 + for (int l = 0; l <= lmax; l++) { + // const int idx = l * (l + 1); + + if (l == 0) { + // l=0, m=0 + // plm[0] = Y00/sq1o4pi; //= sq1o4pi; + plm_idx = Y00; //= 1; + } else if (l == 1) { + // l=1, m=0 + plm_idx = Y00 * sq3 * rz; + } else { + // l>=2, m=0 + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + } + + ylm.re = plm_idx; + ylm.im = 0.0; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); + } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + // m = 1 + for (int l = 1; l <= lmax; l++) { + // const int idx = l * (l + 1) + 1; // (l, 1) + + if (l == 1) { + // l=1, m=1 + plm_idx = -sq3o2 * Y00; + } else if (l == 2) { + const double t = dl(l) * plm_idx1; + plm_idx = t * rz; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + } + + ylm = phase * plm_idx; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); + } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + double plm_mm1_mm1 = -sq3o2 * Y00; // (1, 1) + + // m > 1 + phasem = phase; + for (int m = 2; m <= lmax; m++) { + + mphasem1.re = phasem.re * double(m); + mphasem1.im = phasem.im * double(m); + phasem = phasem * phase; + + for (int l = m; l <= lmax; l++) { + // const int idx = l * (l + 1) + m; + + if (l == m) { + plm_idx = cl(l) * plm_mm1_mm1; // (m+1, m) + plm_mm1_mm1 = plm_idx; + } else if (l == (m + 1)) { + const double t = dl(l) * plm_mm1_mm1; // (m - 1, m - 1) + plm_idx = t * rz; // (m, m) + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + } + + ylm.re = phasem.re * plm_idx; + ylm.im = phasem.im * plm_idx; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; } } @@ -961,17 +1040,35 @@ template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEConjugateAi, const int& ii) const { - //complex conjugate A's (for NEGATIVE (-m) terms) - // for rank > 1 for (int mu_j = 0; mu_j < nelements; mu_j++) { - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { + + // transpose + + int idx_sph = 0; + + for (int m = 0; m <= lmax; m++) { + for (int l = m; l <= lmax; l++) { + const int idx = l * (l + 1) + m; + for (int n = 0; n < nradmax; n++) { + A(ii, mu_j, idx, n) = A_sph(ii, mu_j, idx_sph, n); + } + + idx_sph++; + } + } + + // complex conjugate A's (for NEGATIVE (-m) terms) + // for rank > 1 + + for (int l = 0; l <= lmax; l++) { //fill in -m part in the outer loop using the same m <-> -m symmetry as for Ylm - for (int m = 1; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - const int idxm = l * (l + 1) - m; // (l, -m) - const int factor = m % 2 == 0 ? 1 : -1; - A(ii, mu_j, n, idxm) = A(ii, mu_j, n, idx).conj() * (double)factor; + for (int m = 1; m <= l; m++) { + const int idx = l * (l + 1) + m; // (l, m) + const int idxm = l * (l + 1) - m; // (l, -m) + const int idx_sph = d_idx_sph(idx); + const int factor = m % 2 == 0 ? 1 : -1; + for (int n = 0; n < nradmax; n++) { + A(ii, mu_j, idxm, n) = A_sph(ii, mu_j, idx_sph, n).conj() * (double)factor; } } } @@ -1021,7 +1118,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeRho, const int& i const int l = d_ls(mu_i, offset, t); const int m = d_ms_combs(mu_i, idx_rho, t); // current ms-combination (of length = rank) const int idx = l * (l + 1) + m; // (l, m) - A_list(ii, idx_rho, t) = A(ii, mu, n - 1, idx); + A_list(ii, idx_rho, t) = A(ii, mu, idx, n - 1); A_forward_prod(ii, idx_rho, t + 1) = A_forward_prod(ii, idx_rho, t) * A_list(ii, idx_rho, t); } @@ -1142,14 +1239,20 @@ void PairPACEKokkos::operator() (TagPairPACEComputeWeights, const in const int n_t = d_ns(mu_i, offset, t); const int l_t = d_ls(mu_i, offset, t); const int idx = l_t * (l_t + 1) + m_t; // (l, m) - const complex value = theta * dB; - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idx).re), value.re); - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idx).im), value.im); + const int idx_sph = d_idx_sph(idx); + if (idx_sph >= 0) { + const complex value = theta * dB; + Kokkos::atomic_add(&(weights(ii, mu_t, idx_sph, n_t - 1).re), value.re); + Kokkos::atomic_add(&(weights(ii, mu_t, idx_sph, n_t - 1).im), value.im); + } // update -m_t (that could also be positive), because the basis is half_basis const int idxm = l_t * (l_t + 1) - m_t; // (l, -m) - const complex valuem = theta * dB.conj() * (double)factor; - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idxm).re), valuem.re); - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idxm).im), valuem.im); + const int idxm_sph = d_idx_sph(idxm); + if (idxm_sph >= 0) { + const complex valuem = theta * dB.conj() * (double)factor; + Kokkos::atomic_add(&(weights(ii, mu_t, idxm_sph, n_t - 1).re), valuem.re); + Kokkos::atomic_add(&(weights(ii, mu_t, idxm_sph, n_t - 1).im), valuem.im); + } } } } @@ -1196,37 +1299,239 @@ void PairPACEKokkos::operator() (TagPairPACEComputeDerivative, const } // for rank > 1 - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { - const double R_over_r = fr(ii, jj, n, l) * rinv; - const double DR = dfr(ii, jj, n, l); - // for m >= 0 - for (int m = 0; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - complex w = weights(ii, mu_j, n, idx); + // compute plm, dplm, ylm and dylm + // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // prefactors include 1/sqrt(2) factor compared to reference + + complex ylm,dylm[3]; + complex phase; + complex phasem, mphasem1; + complex dyx, dyy, dyz; + complex rdy; + + const double rx = d_rhats(ii, jj, 0); + const double ry = d_rhats(ii, jj, 1); + const double rz = d_rhats(ii, jj, 2); + + phase.re = rx; + phase.im = ry; + + double plm_idx,plm_idx1,plm_idx2; + double dplm_idx,dplm_idx1,dplm_idx2; + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + int idx_sph = 0; + + // m = 0 + for (int l = 0; l <= lmax; l++) { + // const int idx = l * (l + 1); + + if (l == 0) { + // l=0, m=0 + // plm[0] = Y00/sq1o4pi; //= sq1o4pi; + plm_idx = Y00; //= 1; + dplm_idx = 0.0; + } else if (l == 1) { + // l=1, m=0 + plm_idx = Y00 * sq3 * rz; + dplm_idx = Y00 * sq3; + } else { + // l>=2, m=0 + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm.re = plm_idx; + ylm.im = 0.0; + + dyz.re = dplm_idx; + rdy.re = dyz.re * rz; + + dylm[0].re = -rdy.re * rx; + dylm[0].im = 0.0; + dylm[1].re = -rdy.re * ry; + dylm[1].im = 0.0; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = 0; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); + if (w.re == 0.0 && w.im == 0.0) continue; + + complex grad_phi_nlm[3]; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; + // real-part multiplication only + f_ji[0] += w.real_part_product(grad_phi_nlm[0]); + f_ji[1] += w.real_part_product(grad_phi_nlm[1]); + f_ji[2] += w.real_part_product(grad_phi_nlm[2]); + } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + // m = 1 + for (int l = 1; l <= lmax; l++) { + // const int idx = l * (l + 1) + 1; // (l, 1) + + if (l == 1) { + // l=1, m=1 + plm_idx = -sq3o2 * Y00; + dplm_idx = 0.0; + } else if (l == 2) { + const double t = dl(l) * plm_idx1; + plm_idx = t * rz; + dplm_idx = t; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm = phase * plm_idx; + + dyx.re = plm_idx; + dyx.im = 0.0; + dyy.re = 0.0; + dyy.im = plm_idx; + dyz.re = phase.re * dplm_idx; + dyz.im = phase.im * dplm_idx; + + rdy.re = rx * dyx.re + +rz * dyz.re; + rdy.im = ry * dyy.im + rz * dyz.im; + + dylm[0].re = dyx.re - rdy.re * rx; + dylm[0].im = -rdy.im * rx; + dylm[1].re = -rdy.re * ry; + dylm[1].im = dyy.im - rdy.im * ry; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = dyz.im - rdy.im * rz; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); + if (w.re == 0.0 && w.im == 0.0) continue; + // counting for -m cases if m > 0 + w.re *= 2.0; + w.im *= 2.0; + + complex grad_phi_nlm[3]; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; + // real-part multiplication only + f_ji[0] += w.real_part_product(grad_phi_nlm[0]); + f_ji[1] += w.real_part_product(grad_phi_nlm[1]); + f_ji[2] += w.real_part_product(grad_phi_nlm[2]); + } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + double plm_mm1_mm1 = -sq3o2 * Y00; // (1, 1) + + // m > 1 + phasem = phase; + for (int m = 2; m <= lmax; m++) { + + mphasem1.re = phasem.re * double(m); + mphasem1.im = phasem.im * double(m); + phasem = phasem * phase; + + for (int l = m; l <= lmax; l++) { + // const int idx = l * (l + 1) + m; + + if (l == m) { + plm_idx = cl(l) * plm_mm1_mm1; // (m+1, m) + dplm_idx = 0.0; + plm_mm1_mm1 = plm_idx; + } else if (l == (m + 1)) { + const double t = dl(l) * plm_mm1_mm1; // (m - 1, m - 1) + plm_idx = t * rz; // (m, m) + dplm_idx = t; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm.re = phasem.re * plm_idx; + ylm.im = phasem.im * plm_idx; + + dyx = mphasem1 * plm_idx; + dyy.re = -dyx.im; + dyy.im = dyx.re; + dyz = phasem * dplm_idx; + + rdy.re = rx * dyx.re + ry * dyy.re + rz * dyz.re; + rdy.im = rx * dyx.im + ry * dyy.im + rz * dyz.im; + + dylm[0].re = dyx.re - rdy.re * rx; + dylm[0].im = dyx.im - rdy.im * rx; + dylm[1].re = dyy.re - rdy.re * ry; + dylm[1].im = dyy.im - rdy.im * ry; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = dyz.im - rdy.im * rz; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); if (w.re == 0.0 && w.im == 0.0) continue; // counting for -m cases if m > 0 - if (m > 0) { - w.re *= 2.0; - w.im *= 2.0; - } - - complex DY[3]; - DY[0] = dylm(ii, jj, idx, 0); - DY[1] = dylm(ii, jj, idx, 1); - DY[2] = dylm(ii, jj, idx, 2); - const complex Y_DR = ylm(ii, jj, idx) * DR; + w.re *= 2.0; + w.im *= 2.0; complex grad_phi_nlm[3]; - grad_phi_nlm[0] = Y_DR * r_hat[0] + DY[0] * R_over_r; - grad_phi_nlm[1] = Y_DR * r_hat[1] + DY[1] * R_over_r; - grad_phi_nlm[2] = Y_DR * r_hat[2] + DY[2] * R_over_r; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; // real-part multiplication only f_ji[0] += w.real_part_product(grad_phi_nlm[0]); f_ji[1] += w.real_part_product(grad_phi_nlm[1]); f_ji[2] += w.real_part_product(grad_phi_nlm[2]); } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; } } @@ -1364,31 +1669,46 @@ void PairPACEKokkos::v_tally_xyz(EV_FLOAT &ev, const int &i, const i template void PairPACEKokkos::pre_compute_harmonics(int lmax) { + auto h_idx_sph = Kokkos::create_mirror_view(d_idx_sph); auto h_alm = Kokkos::create_mirror_view(alm); auto h_blm = Kokkos::create_mirror_view(blm); auto h_cl = Kokkos::create_mirror_view(cl); auto h_dl = Kokkos::create_mirror_view(dl); - for (int l = 1; l <= lmax; l++) { - const double lsq = l * l; - const double ld = 2 * l; - const double l1 = (4 * lsq - 1); - const double l2 = lsq - ld + 1; - for (int m = 0; m < l - 1; m++) { - const double msq = m * m; - const double a = sqrt((double(l1)) / (double(lsq - msq))); - const double b = -sqrt((double(l2 - msq)) / (double(4 * l2 - 1))); + Kokkos::deep_copy(h_idx_sph,-1); + + int idx_sph = 0; + for (int m = 0; m <= lmax; m++) { + const double msq = m * m; + for (int l = m; l <= lmax; l++) { const int idx = l * (l + 1) + m; // (l, m) - h_alm(idx) = a; - h_blm(idx) = b; + h_idx_sph(idx) = idx_sph; + + double a = 0.0; + double b = 0.0; + + if (l > 1 && l != m) { + const double lsq = l * l; + const double ld = 2 * l; + const double l1 = (4 * lsq - 1); + const double l2 = lsq - ld + 1; + + a = sqrt((double(l1)) / (double(lsq - msq))); + b = -sqrt((double(l2 - msq)) / (double(4 * l2 - 1))); + } + h_alm(idx_sph) = a; + h_blm(idx_sph) = b; + idx_sph++; } } + idx_sph_max = idx_sph; for (int l = 1; l <= lmax; l++) { h_cl(l) = -sqrt(1.0 + 0.5 / (double(l))); h_dl(l) = sqrt(double(2 * (l - 1) + 3)); } + Kokkos::deep_copy(d_idx_sph, h_idx_sph); Kokkos::deep_copy(alm, h_alm); Kokkos::deep_copy(blm, h_blm); Kokkos::deep_copy(cl, h_cl); @@ -1397,143 +1717,6 @@ void PairPACEKokkos::pre_compute_harmonics(int lmax) /* ---------------------------------------------------------------------- */ -template -KOKKOS_INLINE_FUNCTION -void PairPACEKokkos::compute_barplm(int ii, int jj, double rz, int lmax) const -{ - // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! - // prefactors include 1/sqrt(2) factor compared to reference - - // l=0, m=0 - // plm(ii, jj, 0, 0) = Y00/sq1o4pi; //= sq1o4pi; - plm(ii, jj, 0) = Y00; //= 1; - dplm(ii, jj, 0) = 0.0; - - if (lmax > 0) { - - // l=1, m=0 - plm(ii, jj, 2) = Y00 * sq3 * rz; - dplm(ii, jj, 2) = Y00 * sq3; - - // l=1, m=1 - plm(ii, jj, 3) = -sq3o2 * Y00; - dplm(ii, jj, 3) = 0.0; - - // loop l = 2, lmax - for (int l = 2; l <= lmax; l++) { - for (int m = 0; m < l - 1; m++) { - const int idx = l * (l + 1) + m; // (l, m) - const int idx1 = (l - 1) * l + m; // (l - 1, m) - const int idx2 = (l - 2) * (l - 1) + m; // (l - 2, m) - plm(ii, jj, idx) = alm(idx) * (rz * plm(ii, jj, idx1) + blm(idx) * plm(ii, jj, idx2)); - dplm(ii, jj, idx) = alm(idx) * (plm(ii, jj, idx1) + rz * dplm(ii, jj, idx1) + blm(idx) * dplm(ii, jj, idx2)); - } - const int idx = l * (l + 1) + l; // (l, l) - const int idx1 = l * (l + 1) + l - 1; // (l, l - 1) - const int idx2 = (l - 1) * l + l - 1; // (l - 1, l - 1) - const double t = dl(l) * plm(ii, jj, idx2); - plm(ii, jj, idx1) = t * rz; - dplm(ii, jj, idx1) = t; - plm(ii, jj, idx) = cl(l) * plm(ii, jj, idx2); - dplm(ii, jj, idx) = 0.0; - } - } -} - -/* ---------------------------------------------------------------------- */ - -template -KOKKOS_INLINE_FUNCTION -void PairPACEKokkos::compute_ylm(int ii, int jj, double rx, double ry, double rz, int lmax) const -{ - // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! - - complex phase; - complex phasem, mphasem1; - complex dyx, dyy, dyz; - complex rdy; - - phase.re = rx; - phase.im = ry; - - // compute barplm - compute_barplm(ii, jj, rz, lmax); - - // m = 0 - for (int l = 0; l <= lmax; l++) { - const int idx = l * (l + 1); - - ylm(ii, jj, idx).re = plm(ii, jj, idx); - ylm(ii, jj, idx).im = 0.0; - - dyz.re = dplm(ii, jj, idx); - rdy.re = dyz.re * rz; - - dylm(ii, jj, idx, 0).re = -rdy.re * rx; - dylm(ii, jj, idx, 0).im = 0.0; - dylm(ii, jj, idx, 1).re = -rdy.re * ry; - dylm(ii, jj, idx, 1).im = 0.0; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = 0; - } - // m = 1 - for (int l = 1; l <= lmax; l++) { - const int idx = l * (l + 1) + 1; - - ylm(ii, jj, idx) = phase * plm(ii, jj, idx); - - dyx.re = plm(ii, jj, idx); - dyx.im = 0.0; - dyy.re = 0.0; - dyy.im = plm(ii, jj, idx); - dyz.re = phase.re * dplm(ii, jj, idx); - dyz.im = phase.im * dplm(ii, jj, idx); - - rdy.re = rx * dyx.re + +rz * dyz.re; - rdy.im = ry * dyy.im + rz * dyz.im; - - dylm(ii, jj, idx, 0).re = dyx.re - rdy.re * rx; - dylm(ii, jj, idx, 0).im = -rdy.im * rx; - dylm(ii, jj, idx, 1).re = -rdy.re * ry; - dylm(ii, jj, idx, 1).im = dyy.im - rdy.im * ry; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = dyz.im - rdy.im * rz; - } - - // m > 1 - phasem = phase; - for (int m = 2; m <= lmax; m++) { - - mphasem1.re = phasem.re * double(m); - mphasem1.im = phasem.im * double(m); - phasem = phasem * phase; - - for (int l = m; l <= lmax; l++) { - const int idx = l * (l + 1) + m; - - ylm(ii, jj, idx).re = phasem.re * plm(ii, jj, idx); - ylm(ii, jj, idx).im = phasem.im * plm(ii, jj, idx); - - dyx = mphasem1 * plm(ii, jj, idx); - dyy.re = -dyx.im; - dyy.im = dyx.re; - dyz = phasem * dplm(ii, jj, idx); - - rdy.re = rx * dyx.re + ry * dyy.re + rz * dyz.re; - rdy.im = rx * dyx.im + ry * dyy.im + rz * dyz.im; - - dylm(ii, jj, idx, 0).re = dyx.re - rdy.re * rx; - dylm(ii, jj, idx, 0).im = dyx.im - rdy.im * rx; - dylm(ii, jj, idx, 1).re = dyy.re - rdy.re * ry; - dylm(ii, jj, idx, 1).im = dyy.im - rdy.im * ry; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = dyz.im - rdy.im * rz; - } - } -} - -/* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::cutoff_func_poly(const double r, const double r_in, const double delta_in, double &fc, double &dfc) const @@ -1662,11 +1845,11 @@ void PairPACEKokkos::evaluate_splines(const int ii, const int jj, do spline_gk.calcSplines(ii, jj, r, gr, dgr); spline_rnl.calcSplines(ii, jj, r, d_values, d_derivatives); - for (int kk = 0; kk < (int)fr.extent(2); kk++) { - for (int ll = 0; ll < (int)fr.extent(3); ll++) { - const int flatten = kk*fr.extent(3) + ll; - fr(ii, jj, kk, ll) = d_values(ii, jj, flatten); - dfr(ii, jj, kk, ll) = d_derivatives(ii, jj, flatten); + for (int ll = 0; ll < (int)fr.extent(2); ll++) { + for (int kk = 0; kk < (int)fr.extent(3); kk++) { + const int flatten = kk*fr.extent(2) + ll; + fr(ii, jj, ll, kk) = d_values(ii, jj, flatten); + dfr(ii, jj, ll, kk) = d_derivatives(ii, jj, flatten); } } @@ -1686,7 +1869,7 @@ void PairPACEKokkos::SplineInterpolatorKokkos::operator=(const Splin rscalelookup = spline.rscalelookup; num_of_functions = spline.num_of_functions; - lookupTable = t_ace_3d4("lookupTable", ntot+1, num_of_functions); + lookupTable = t_ace_3d4_lr("lookupTable", ntot+1, num_of_functions); auto h_lookupTable = Kokkos::create_mirror_view(lookupTable); for (int i = 0; i < ntot+1; i++) for (int j = 0; j < num_of_functions; j++) @@ -1792,10 +1975,6 @@ double PairPACEKokkos::memory_usage() bytes += MemKK::memory_usage(d_derivatives); bytes += MemKK::memory_usage(cr); bytes += MemKK::memory_usage(dcr); - bytes += MemKK::memory_usage(plm); - bytes += MemKK::memory_usage(dplm); - bytes += MemKK::memory_usage(ylm); - bytes += MemKK::memory_usage(dylm); bytes += MemKK::memory_usage(d_ncount); bytes += MemKK::memory_usage(d_mu); bytes += MemKK::memory_usage(d_rhats); diff --git a/src/KOKKOS/pair_pace_kokkos.h b/src/KOKKOS/pair_pace_kokkos.h index 36486f86281..bb8c5a1f1a3 100644 --- a/src/KOKKOS/pair_pace_kokkos.h +++ b/src/KOKKOS/pair_pace_kokkos.h @@ -36,7 +36,6 @@ class PairPACEKokkos : public PairPACE { public: struct TagPairPACEComputeNeigh{}; struct TagPairPACEComputeRadial{}; - struct TagPairPACEComputeYlm{}; struct TagPairPACEComputeAi{}; struct TagPairPACEConjugateAi{}; struct TagPairPACEComputeRho{}; @@ -66,9 +65,6 @@ class PairPACEKokkos : public PairPACE { KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeRadial,const typename Kokkos::TeamPolicy::member_type& team) const; - KOKKOS_INLINE_FUNCTION - void operator() (TagPairPACEComputeYlm,const typename Kokkos::TeamPolicy::member_type& team) const; - KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeAi,const typename Kokkos::TeamPolicy::member_type& team) const; @@ -96,7 +92,7 @@ class PairPACEKokkos : public PairPACE { void operator() (TagPairPACEComputeForce,const int& ii, EV_FLOAT&) const; protected: - int inum, maxneigh, chunk_size, chunk_offset, idx_rho_max; + int inum, maxneigh, chunk_size, chunk_offset, idx_rho_max, idx_sph_max; int host_flag; int eflag, vflag; @@ -157,12 +153,6 @@ class PairPACEKokkos : public PairPACE { const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - KOKKOS_INLINE_FUNCTION - void compute_barplm(int, int, double, int) const; - - KOKKOS_INLINE_FUNCTION - void compute_ylm(int, int, double, double, double, int) const; - KOKKOS_INLINE_FUNCTION void cutoff_func_poly(const double, const double, const double, double &, double &) const; @@ -194,14 +184,18 @@ class PairPACEKokkos : public PairPACE { typedef Kokkos::View t_ace_1i; typedef Kokkos::View t_ace_2i; + typedef Kokkos::View t_ace_2i_lr; typedef Kokkos::View t_ace_3i; + typedef Kokkos::View t_ace_3i_lr; typedef Kokkos::View t_ace_4i; typedef Kokkos::View t_ace_1d; typedef Kokkos::View t_ace_2d; + typedef Kokkos::View t_ace_2d_lr; typedef Kokkos::View t_ace_2d3; typedef Kokkos::View t_ace_3d; typedef Kokkos::View t_ace_3d3; typedef Kokkos::View t_ace_3d4; + typedef Kokkos::View t_ace_3d4_lr; typedef Kokkos::View t_ace_4d; typedef Kokkos::View t_ace_1c; typedef Kokkos::View t_ace_2c; @@ -248,23 +242,13 @@ class PairPACEKokkos : public PairPACE { void pre_compute_harmonics(int); - KOKKOS_INLINE_FUNCTION - void compute_barplm(double rz, int lmaxi); - - KOKKOS_INLINE_FUNCTION - void compute_ylm(double rx, double ry, double rz, int lmaxi); - + t_ace_4c A_sph; + t_ace_1d d_idx_sph; t_ace_1d alm; t_ace_1d blm; t_ace_1d cl; t_ace_1d dl; - t_ace_3d plm; - t_ace_3d dplm; - - t_ace_3c ylm; - t_ace_4c3 dylm; - // short neigh list t_ace_1i d_ncount; t_ace_2d d_mu; @@ -283,18 +267,18 @@ class PairPACEKokkos : public PairPACE { t_ace_1d d_rho_core_cutoff; t_ace_1d d_drho_core_cutoff; t_ace_1d d_E0vals; - t_ace_2d d_wpre; - t_ace_2d d_mexp; + t_ace_2d_lr d_wpre; + t_ace_2d_lr d_mexp; // tilde t_ace_1i d_idx_rho_count; - t_ace_2i d_rank; - t_ace_2i d_num_ms_combs; - t_ace_2i d_offsets; - t_ace_3i d_mus; - t_ace_3i d_ns; - t_ace_3i d_ls; - t_ace_3i d_ms_combs; + t_ace_2i_lr d_rank; + t_ace_2i_lr d_num_ms_combs; + t_ace_2i_lr d_offsets; + t_ace_3i_lr d_mus; + t_ace_3i_lr d_ns; + t_ace_3i_lr d_ls; + t_ace_3i_lr d_ms_combs; t_ace_3d d_ctildes; t_ace_3d3 f_ij; @@ -304,12 +288,12 @@ class PairPACEKokkos : public PairPACE { int ntot, nlut, num_of_functions; double cutoff, deltaSplineBins, invrscalelookup, rscalelookup; - t_ace_3d4 lookupTable; + t_ace_3d4_lr lookupTable; void operator=(const SplineInterpolator &spline); void deallocate() { - lookupTable = t_ace_3d4(); + lookupTable = t_ace_3d4_lr(); } double memory_usage() { From 5020861cbc7cd76fdddd8bafb31373bafccbc51b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 3 Jan 2024 13:22:52 -0700 Subject: [PATCH 292/300] Fix compiler warnings --- src/ML-PACE/compute_pace.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/ML-PACE/compute_pace.cpp b/src/ML-PACE/compute_pace.cpp index cf3be8f47fc..a3fd989fcdc 100644 --- a/src/ML-PACE/compute_pace.cpp +++ b/src/ML-PACE/compute_pace.cpp @@ -73,10 +73,7 @@ ComputePACE::ComputePACE(LAMMPS *lmp, int narg, char **arg) : auto potential_file_name = utils::get_potential_file_path(arg[3]); delete acecimpl -> basis_set; acecimpl -> basis_set = new ACECTildeBasisSet(potential_file_name); - double cut = acecimpl -> basis_set->cutoffmax; cutmax = acecimpl -> basis_set->cutoffmax; - double cuti; - double radelemall = 0.5; //# of rank 1, rank > 1 functions @@ -184,7 +181,6 @@ void ComputePACE::init_list(int /*id*/, NeighList *ptr) void ComputePACE::compute_array() { int ntotal = atom->nlocal + atom->nghost; - double **f = atom->f; invoked_array = update->ntimestep; // grow pace_peratom array if necessary @@ -214,9 +210,6 @@ void ComputePACE::compute_array() // invoke full neighbor list (will copy or build if necessary) neighbor->build_one(list); - SPECIES_TYPE *mus; - NS_TYPE *ns; - LS_TYPE *ls; const int inum = list->inum; const int* const ilist = list->ilist; @@ -240,7 +233,6 @@ void ComputePACE::compute_array() // compute pace derivatives for each atom in group // use full neighbor list to count atoms less than cutoff - double** const x = atom->x; const int* const mask = atom->mask; const int ntypes = atom->ntypes; From 377450882ee20f89827f02c47e1adc190d375f32 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 3 Jan 2024 14:10:29 -0700 Subject: [PATCH 293/300] Port changes to pair_pace_extrapolation_kokkos, unify code --- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 897 ++++++++++-------- src/KOKKOS/pair_pace_extrapolation_kokkos.h | 58 +- src/KOKKOS/pair_pace_kokkos.cpp | 270 +++--- src/KOKKOS/pair_pace_kokkos.h | 6 +- 4 files changed, 675 insertions(+), 556 deletions(-) diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index 0980ad776d7..05978858604 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -106,7 +106,8 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) if ((int)A.extent(0) < natom) { - MemKK::realloc_kokkos(A, "pace:A", natom, nelements, nradmax + 1, (lmax + 1) * (lmax + 1)); + MemKK::realloc_kokkos(A_sph, "pace:A_sph", natom, nelements, idx_sph_max, nradmax + 1); + MemKK::realloc_kokkos(A, "pace:A", natom, nelements, (lmax + 1) * (lmax + 1), nradmax + 1); MemKK::realloc_kokkos(A_rank1, "pace:A_rank1", natom, nelements, nradbase); MemKK::realloc_kokkos(A_list, "pace:A_list", natom, idx_ms_combs_max, basis_set->rankmax); @@ -117,7 +118,7 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(rhos, "pace:rhos", natom, basis_set->ndensitymax + 1); // +1 density for core repulsion MemKK::realloc_kokkos(dF_drho, "pace:dF_drho", natom, basis_set->ndensitymax + 1); // +1 density for core repulsion - MemKK::realloc_kokkos(weights, "pace:weights", natom, nelements, nradmax + 1, (lmax + 1) * (lmax + 1)); + MemKK::realloc_kokkos(weights, "pace:weights", natom, nelements, idx_sph_max, nradmax + 1); MemKK::realloc_kokkos(weights_rank1, "pace:weights_rank1", natom, nelements, nradbase); // hard-core repulsion @@ -130,16 +131,16 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_ms_combs_max, basis_set->rankmax); - //B-projections + // B-projections MemKK::realloc_kokkos(projections, "pace:projections", natom, total_num_functions_max); // per-atom B-projections MemKK::realloc_kokkos(d_gamma, "pace:gamma", natom); // per-atom gamma } - if (((int)ylm.extent(0) < natom) || ((int)ylm.extent(1) < maxneigh)) { + if (((int)fr.extent(0) < natom) || ((int)fr.extent(1) < maxneigh)) { // radial functions - MemKK::realloc_kokkos(fr, "pace:fr", natom, maxneigh, nradmax, lmax + 1); - MemKK::realloc_kokkos(dfr, "pace:dfr", natom, maxneigh, nradmax, lmax + 1); + MemKK::realloc_kokkos(fr, "pace:fr", natom, maxneigh, lmax + 1, nradmax); + MemKK::realloc_kokkos(dfr, "pace:dfr", natom, maxneigh, lmax + 1, nradmax); MemKK::realloc_kokkos(gr, "pace:gr", natom, maxneigh, nradbase); MemKK::realloc_kokkos(dgr, "pace:dgr", natom, maxneigh, nradbase); const int max_num_functions = MAX(nradbase, nradmax*(lmax + 1)); @@ -150,12 +151,6 @@ void PairPACEExtrapolationKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(cr, "pace:cr", natom, maxneigh); MemKK::realloc_kokkos(dcr, "pace:dcr", natom, maxneigh); - // spherical harmonics - MemKK::realloc_kokkos(plm, "pace:plm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(dplm, "pace:dplm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(ylm, "pace:ylm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - MemKK::realloc_kokkos(dylm, "pace:dylm", natom, maxneigh, (lmax + 1) * (lmax + 1)); - // short neigh list MemKK::realloc_kokkos(d_ncount, "pace:ncount", natom); MemKK::realloc_kokkos(d_mu, "pace:mu", natom, maxneigh); @@ -224,7 +219,6 @@ void PairPACEExtrapolationKokkos::copy_pertype() Kokkos::deep_copy(d_wpre, h_wpre); Kokkos::deep_copy(d_mexp, h_mexp); - // ZBL core-rep MemKK::realloc_kokkos(d_cut_in, "pace:d_cut_in", nelements, nelements); MemKK::realloc_kokkos(d_dcut_in, "pace:d_dcut_in", nelements, nelements); @@ -266,6 +260,9 @@ void PairPACEExtrapolationKokkos::copy_splines() ACERadialFunctions* radial_functions = dynamic_cast(basis_set->radial_functions); + if (radial_functions == nullptr) + error->all(FLERR,"Chosen radial basis style not supported by pair style pace/kk"); + for (int i = 0; i < nelements; i++) { for (int j = 0; j < nelements; j++) { k_splines_gk.h_view(i, j) = radial_functions->splines_gk(i, j); @@ -297,8 +294,9 @@ void PairPACEExtrapolationKokkos::copy_tilde() total_num_functions_max = 0; MemKK::realloc_kokkos(d_idx_ms_combs_count, "pace:idx_ms_combs_count", nelements); - MemKK::realloc_kokkos(d_total_basis_size, "pace:total_basis_size", nelements); auto h_idx_ms_combs_count = Kokkos::create_mirror_view(d_idx_ms_combs_count); + + MemKK::realloc_kokkos(d_total_basis_size, "pace:total_basis_size", nelements); auto h_total_basis_size = Kokkos::create_mirror_view(d_total_basis_size); for (int mu = 0; mu < nelements; mu++) { @@ -313,8 +311,8 @@ void PairPACEExtrapolationKokkos::copy_tilde() idx_ms_combs++; // rank > 1 - for (int func_ind = 0; func_ind < total_basis_size; ++func_ind) { - ACEBBasisFunction *func = &basis[func_ind]; + for (int idx_func = 0; idx_func < total_basis_size; ++idx_func) { + ACEBBasisFunction *func = &basis[idx_func]; // loop over {ms} combinations in sum for (int ms_ind = 0; ms_ind < func->num_ms_combs; ++ms_ind) @@ -331,7 +329,7 @@ void PairPACEExtrapolationKokkos::copy_tilde() MemKK::realloc_kokkos(d_rank, "pace:rank", nelements, total_num_functions_max); MemKK::realloc_kokkos(d_num_ms_combs, "pace:num_ms_combs", nelements, total_num_functions_max); - MemKK::realloc_kokkos(d_func_inds, "pace:func_inds", nelements, idx_ms_combs_max); + MemKK::realloc_kokkos(d_idx_funcs, "pace:idx_funcs", nelements, idx_ms_combs_max); MemKK::realloc_kokkos(d_mus, "pace:mus", nelements, total_num_functions_max, basis_set->rankmax); MemKK::realloc_kokkos(d_ns, "pace:ns", nelements, total_num_functions_max, basis_set->rankmax); MemKK::realloc_kokkos(d_ls, "pace:ls", nelements, total_num_functions_max, basis_set->rankmax); @@ -344,7 +342,7 @@ void PairPACEExtrapolationKokkos::copy_tilde() auto h_rank = Kokkos::create_mirror_view(d_rank); auto h_num_ms_combs = Kokkos::create_mirror_view(d_num_ms_combs); - auto h_func_inds = Kokkos::create_mirror_view(d_func_inds); + auto h_idx_funcs = Kokkos::create_mirror_view(d_idx_funcs); auto h_mus = Kokkos::create_mirror_view(d_mus); auto h_ns = Kokkos::create_mirror_view(d_ns); auto h_ls = Kokkos::create_mirror_view(d_ls); @@ -365,55 +363,52 @@ void PairPACEExtrapolationKokkos::copy_tilde() const int ndensity = basis_set->map_embedding_specifications.at(mu).ndensity; - int idx_ms_comb = 0; + int idx_ms_combs = 0; // rank=1 - for (int func_ind = 0; func_ind < total_basis_size_rank1; ++func_ind) { - ACEBBasisFunction *func = &basis_rank1[func_ind]; - h_rank(mu, func_ind) = 1; - h_mus(mu, func_ind, 0) = func->mus[0]; - h_ns(mu, func_ind, 0) = func->ns[0]; + for (int idx_func = 0; idx_func < total_basis_size_rank1; ++idx_func) { + ACEBBasisFunction *func = &basis_rank1[idx_func]; + h_rank(mu, idx_func) = 1; + h_mus(mu, idx_func, 0) = func->mus[0]; + h_ns(mu, idx_func, 0) = func->ns[0]; for (int p = 0; p < ndensity; ++p) - h_coeffs(mu, func_ind, p) = func->coeff[p]; + h_coeffs(mu, idx_func, p) = func->coeff[p]; - h_gen_cgs(mu, idx_ms_comb) = func->gen_cgs[0]; + h_gen_cgs(mu, idx_ms_combs) = func->gen_cgs[0]; - h_func_inds(mu, idx_ms_comb) = func_ind; - idx_ms_comb++; + h_idx_funcs(mu, idx_ms_combs) = idx_func; + idx_ms_combs++; } // rank > 1 - for (int func_ind = 0; func_ind < total_basis_size; ++func_ind) { - ACEBBasisFunction *func = &basis[func_ind]; + for (int idx_func = 0; idx_func < total_basis_size; ++idx_func) { + ACEBBasisFunction *func = &basis[idx_func]; // TODO: check if func->ctildes are zero, then skip - const int func_ind_through = total_basis_size_rank1 + func_ind; + const int idx_func_through = total_basis_size_rank1 + idx_func; - const int rank = h_rank(mu, func_ind_through) = func->rank; - h_num_ms_combs(mu, func_ind_through) = func->num_ms_combs; + const int rank = h_rank(mu, idx_func_through) = func->rank; + h_num_ms_combs(mu, idx_func_through) = func->num_ms_combs; for (int t = 0; t < rank; t++) { - h_mus(mu, func_ind_through, t) = func->mus[t]; - h_ns(mu, func_ind_through, t) = func->ns[t]; - h_ls(mu, func_ind_through, t) = func->ls[t]; + h_mus(mu, idx_func_through, t) = func->mus[t]; + h_ns(mu, idx_func_through, t) = func->ns[t]; + h_ls(mu, idx_func_through, t) = func->ls[t]; } for (int p = 0; p < ndensity; ++p) - h_coeffs(mu, func_ind_through, p) = func->coeff[p]; - + h_coeffs(mu, idx_func_through, p) = func->coeff[p]; // loop over {ms} combinations in sum for (int ms_ind = 0; ms_ind < func->num_ms_combs; ++ms_ind) { auto ms = &func->ms_combs[ms_ind * rank]; // current ms-combination (of length = rank) for (int t = 0; t < rank; t++) - h_ms_combs(mu, idx_ms_comb, t) = ms[t]; - + h_ms_combs(mu, idx_ms_combs, t) = ms[t]; - h_gen_cgs(mu, idx_ms_comb) = func->gen_cgs[ms_ind]; + h_gen_cgs(mu, idx_ms_combs) = func->gen_cgs[ms_ind]; - - h_func_inds(mu, idx_ms_comb) = func_ind_through; - idx_ms_comb++; + h_idx_funcs(mu, idx_ms_combs) = idx_func_through; + idx_ms_combs++; } } @@ -427,7 +422,7 @@ void PairPACEExtrapolationKokkos::copy_tilde() Kokkos::deep_copy(d_rank, h_rank); Kokkos::deep_copy(d_num_ms_combs, h_num_ms_combs); - Kokkos::deep_copy(d_func_inds, h_func_inds); + Kokkos::deep_copy(d_idx_funcs, h_idx_funcs); Kokkos::deep_copy(d_mus, h_mus); Kokkos::deep_copy(d_ns, h_ns); Kokkos::deep_copy(d_ls, h_ls); @@ -477,6 +472,7 @@ void PairPACEExtrapolationKokkos::init_style() // spherical harmonics + MemKK::realloc_kokkos(d_idx_sph, "pace:idx_sph", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(alm, "pace:alm", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(blm, "pace:blm", (lmax + 1) * (lmax + 1)); MemKK::realloc_kokkos(cl, "pace:cl", lmax + 1); @@ -575,6 +571,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in atomKK->modified(Host,F_MASK); return; } + eflag = eflag_in; vflag = vflag_in; @@ -602,6 +599,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in //zeroify array memset(extrapolation_grade_gamma, 0, nmax * sizeof(*extrapolation_grade_gamma)); } + if (flag_corerep_factor && atom->nlocal > nmax_corerep) { memory->destroy(corerep_factor); nmax_corerep = atom->nlocal; @@ -647,7 +645,6 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in chunk_size = MIN(chunksize,inum); // "chunksize" variable is set by user chunk_offset = 0; - grow(chunk_size, maxneigh); EV_FLOAT ev; @@ -656,14 +653,12 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in Kokkos::deep_copy(weights, 0.0); Kokkos::deep_copy(weights_rank1, 0.0); - Kokkos::deep_copy(A, 0.0); + Kokkos::deep_copy(A_sph, 0.0); Kokkos::deep_copy(A_rank1, 0.0); Kokkos::deep_copy(rhos, 0.0); - Kokkos::deep_copy(rho_core, 0.0); Kokkos::deep_copy(d_d_min, PairPACEExtrapolation::aceimpl->basis_set->cutoffmax); Kokkos::deep_copy(d_jj_min, -1); - Kokkos::deep_copy(projections, 0.0); Kokkos::deep_copy(d_gamma, 0.0); Kokkos::deep_copy(d_corerep, 0.0); @@ -693,15 +688,6 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in Kokkos::parallel_for("ComputeRadial",policy_radial,*this); } - //ComputeYlm - { - int vector_length = vector_length_default; - int team_size = 16; - check_team_size_for(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - typename Kokkos::TeamPolicy policy_ylm(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - Kokkos::parallel_for("ComputeYlm",policy_ylm,*this); - } - //ComputeAi { int vector_length = vector_length_default; @@ -737,7 +723,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in //ComputeWeights { - typename Kokkos::RangePolicy policy_weights(0, chunk_size * idx_ms_combs_max); + typename Kokkos::RangePolicy policy_weights(0,chunk_size * idx_ms_combs_max); Kokkos::parallel_for("ComputeWeights",policy_weights,*this); } @@ -746,7 +732,7 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in int vector_length = vector_length_default; int team_size = team_size_default; check_team_size_for(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); - typename Kokkos::TeamPolicy policy_derivative(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); + typename Kokkos::TeamPolicy policy_derivative(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); Kokkos::parallel_for("ComputeDerivative",policy_derivative,*this); } @@ -772,16 +758,18 @@ void PairPACEExtrapolationKokkos::compute(int eflag_in, int vflag_in } ev += ev_tmp; - //if flag_compute_extrapolation_grade - copy current d_gamma to extrapolation_grade_gamma + // if flag_compute_extrapolation_grade - copy current d_gamma to extrapolation_grade_gamma + if (flag_compute_extrapolation_grade){ h_gamma = Kokkos::create_mirror_view(d_gamma); Kokkos::deep_copy(h_gamma, d_gamma); memcpy(extrapolation_grade_gamma+chunk_offset, (void *) h_gamma.data(), sizeof(double)*chunk_size); } + if (flag_corerep_factor) { - h_corerep = Kokkos::create_mirror_view(d_corerep); - Kokkos::deep_copy(h_corerep,d_corerep); - memcpy(corerep_factor+chunk_offset, (void *) h_corerep.data(), sizeof(double)*chunk_size); + h_corerep = Kokkos::create_mirror_view(d_corerep); + Kokkos::deep_copy(h_corerep,d_corerep); + memcpy(corerep_factor+chunk_offset, (void *) h_corerep.data(), sizeof(double)*chunk_size); } chunk_offset += chunk_size; @@ -909,18 +897,18 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeNeig Kokkos::MinLoc reducer_scalar(djjmin); // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), - [&](const int offset, minloc_value_type &min_d_dist) { - int j = d_nearest(ii,offset); - j &= NEIGHMASK; - const int jtype = type(j); - auto r = d_rnorms(ii,offset); - const int mu_j = d_map(type(j)); - const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); - if (d < min_d_dist.val) { - min_d_dist.val = d; - min_d_dist.loc = offset; - } - }, reducer_scalar); + [&](const int offset, minloc_value_type &min_d_dist) { + int j = d_nearest(ii,offset); + j &= NEIGHMASK; + const int jtype = type(j); + auto r = d_rnorms(ii,offset); + const int mu_j = d_map(type(j)); + const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); + if (d < min_d_dist.val) { + min_d_dist.val = d; + min_d_dist.loc = offset; + } + }, reducer_scalar); d_d_min(ii) = djjmin.val; d_jj_min(ii) = djjmin.loc;// d_jj_min should be NOT in 0..jnum range, but in 0..d_ncount(<=jnum) } else { @@ -956,28 +944,6 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeRadi /* ---------------------------------------------------------------------- */ -template -KOKKOS_INLINE_FUNCTION -void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeYlm, const typename Kokkos::TeamPolicy::member_type& team) const -{ - // Extract the atom number - int ii = team.team_rank() + team.team_size() * (team.league_rank() % - ((chunk_size+team.team_size()-1)/team.team_size())); - if (ii >= chunk_size) return; - - // Extract the neighbor number - const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size()); - const int ncount = d_ncount(ii); - if (jj >= ncount) return; - - const double xn = d_rhats(ii, jj, 0); - const double yn = d_rhats(ii, jj, 1); - const double zn = d_rhats(ii, jj, 2); - compute_ylm(ii,jj,xn,yn,zn,lmax); -} - -/* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeAi, const typename Kokkos::TeamPolicy::member_type& team) const @@ -999,13 +965,127 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeAi, Kokkos::atomic_add(&A_rank1(ii, mu_j, n), gr(ii, jj, n) * Y00); // rank > 1 - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { - for (int m = 0; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - Kokkos::atomic_add(&A(ii, mu_j, n, idx).re, fr(ii, jj, n, l) * ylm(ii, jj, idx).re); - Kokkos::atomic_add(&A(ii, mu_j, n, idx).im, fr(ii, jj, n, l) * ylm(ii, jj, idx).im); + + // Compute plm and ylm + + // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // prefactors include 1/sqrt(2) factor compared to reference + + complex ylm, phase; + complex phasem, mphasem1; + complex dyx, dyy, dyz; + complex rdy; + + const double rx = d_rhats(ii, jj, 0); + const double ry = d_rhats(ii, jj, 1); + const double rz = d_rhats(ii, jj, 2); + + phase.re = rx; + phase.im = ry; + + double plm_idx,plm_idx1,plm_idx2; + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + int idx_sph = 0; + + // m = 0 + for (int l = 0; l <= lmax; l++) { + // const int idx = l * (l + 1); + + if (l == 0) { + // l=0, m=0 + // plm[0] = Y00/sq1o4pi; //= sq1o4pi; + plm_idx = Y00; //= 1; + } else if (l == 1) { + // l=1, m=0 + plm_idx = Y00 * sq3 * rz; + } else { + // l>=2, m=0 + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + } + + ylm.re = plm_idx; + ylm.im = 0.0; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); + } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + // m = 1 + for (int l = 1; l <= lmax; l++) { + // const int idx = l * (l + 1) + 1; // (l, 1) + + if (l == 1) { + // l=1, m=1 + plm_idx = -sq3o2 * Y00; + } else if (l == 2) { + const double t = dl(l) * plm_idx1; + plm_idx = t * rz; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + } + + ylm = phase * plm_idx; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); + } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + + double plm_mm1_mm1 = -sq3o2 * Y00; // (1, 1) + + // m > 1 + phasem = phase; + for (int m = 2; m <= lmax; m++) { + + mphasem1.re = phasem.re * double(m); + mphasem1.im = phasem.im * double(m); + phasem = phasem * phase; + + for (int l = m; l <= lmax; l++) { + // const int idx = l * (l + 1) + m; + + if (l == m) { + plm_idx = cl(l) * plm_mm1_mm1; // (m+1, m) + plm_mm1_mm1 = plm_idx; + } else if (l == (m + 1)) { + const double t = dl(l) * plm_mm1_mm1; // (m - 1, m - 1) + plm_idx = t * rz; // (m, m) + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); } + + ylm.re = phasem.re * plm_idx; + ylm.im = phasem.im * plm_idx; + + for (int n = 0; n < nradmax; n++) { + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).re, fr(ii, jj, l, n) * ylm.re); + Kokkos::atomic_add(&A_sph(ii, mu_j, idx_sph, n).im, fr(ii, jj, l, n) * ylm.im); + } + + plm_idx2 = plm_idx1; + plm_idx1 = plm_idx; + + idx_sph++; } } @@ -1019,17 +1099,35 @@ template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::operator() (TagPairPACEConjugateAi, const int& ii) const { - //complex conjugate A's (for NEGATIVE (-m) terms) - // for rank > 1 for (int mu_j = 0; mu_j < nelements; mu_j++) { - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { + + // transpose + + int idx_sph = 0; + + for (int m = 0; m <= lmax; m++) { + for (int l = m; l <= lmax; l++) { + const int idx = l * (l + 1) + m; + for (int n = 0; n < nradmax; n++) { + A(ii, mu_j, idx, n) = A_sph(ii, mu_j, idx_sph, n); + } + + idx_sph++; + } + } + + // complex conjugate A's (for NEGATIVE (-m) terms) + // for rank > 1 + + for (int l = 0; l <= lmax; l++) { //fill in -m part in the outer loop using the same m <-> -m symmetry as for Ylm - for (int m = 1; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - const int idxm = l * (l + 1) - m; // (l, -m) - const int factor = m % 2 == 0 ? 1 : -1; - A(ii, mu_j, n, idxm) = A(ii, mu_j, n, idx).conj() * (double)factor; + for (int m = 1; m <= l; m++) { + const int idx = l * (l + 1) + m; // (l, m) + const int idxm = l * (l + 1) - m; // (l, -m) + const int idx_sph = d_idx_sph(idx); + const int factor = m % 2 == 0 ? 1 : -1; + for (int n = 0; n < nradmax; n++) { + A(ii, mu_j, idxm, n) = A_sph(ii, mu_j, idx_sph, n).conj() * (double)factor; } } } @@ -1042,73 +1140,72 @@ template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeRho, const int& iter) const { - const int idx_ms_comb = iter / chunk_size; + const int idx_ms_combs = iter / chunk_size; const int ii = iter % chunk_size; const int i = d_ilist[ii + chunk_offset]; const int mu_i = d_map(type(i)); - if (idx_ms_comb >= d_idx_ms_combs_count(mu_i)) return; + if (idx_ms_combs >= d_idx_ms_combs_count(mu_i)) return; const int ndensity = d_ndensity(mu_i); - const int func_ind = d_func_inds(mu_i, idx_ms_comb); - const int rank = d_rank(mu_i, func_ind); + const int idx_func = d_idx_funcs(mu_i, idx_ms_combs); + const int rank = d_rank(mu_i, idx_func); const int r = rank - 1; // Basis functions B with iterative product and density rho(p) calculation if (rank == 1) { - const int mu = d_mus(mu_i, func_ind, 0); - const int n = d_ns(mu_i, func_ind, 0); + const int mu = d_mus(mu_i, idx_func, 0); + const int n = d_ns(mu_i, idx_func, 0); double A_cur = A_rank1(ii, mu, n - 1); for (int p = 0; p < ndensity; ++p) { //for rank=1 (r=0) only 1 ms-combination exists (ms_ind=0), so index of func.ctildes is 0..ndensity-1 - Kokkos::atomic_add(&rhos(ii, p), d_coeffs(mu_i, func_ind, p) * d_gen_cgs(mu_i, idx_ms_comb) * A_cur); + Kokkos::atomic_add(&rhos(ii, p), d_coeffs(mu_i, idx_func, p) * d_gen_cgs(mu_i, idx_ms_combs) * A_cur); } - - //gamma_i + // gamma_i if (flag_compute_extrapolation_grade) - Kokkos::atomic_add(&projections(ii, func_ind), d_gen_cgs(mu_i, idx_ms_comb) * A_cur); + Kokkos::atomic_add(&projections(ii, idx_func), d_gen_cgs(mu_i, idx_ms_combs) * A_cur); } else { // rank > 1 // loop over {ms} combinations in sum // loop over m, collect B = product of A with given ms - A_forward_prod(ii, idx_ms_comb, 0) = complex::one(); + A_forward_prod(ii, idx_ms_combs, 0) = complex::one(); // fill forward A-product triangle for (int t = 0; t < rank; t++) { //TODO: optimize ns[t]-1 -> ns[t] during functions construction - const int mu = d_mus(mu_i, func_ind, t); - const int n = d_ns(mu_i, func_ind, t); - const int l = d_ls(mu_i, func_ind, t); - const int m = d_ms_combs(mu_i, idx_ms_comb, t); // current ms-combination (of length = rank) + const int mu = d_mus(mu_i, idx_func, t); + const int n = d_ns(mu_i, idx_func, t); + const int l = d_ls(mu_i, idx_func, t); + const int m = d_ms_combs(mu_i, idx_ms_combs, t); // current ms-combination (of length = rank) const int idx = l * (l + 1) + m; // (l, m) - A_list(ii, idx_ms_comb, t) = A(ii, mu, n - 1, idx); - A_forward_prod(ii, idx_ms_comb, t + 1) = A_forward_prod(ii, idx_ms_comb, t) * A_list(ii, idx_ms_comb, t); + A_list(ii, idx_ms_combs, t) = A(ii, mu, idx, n - 1); + A_forward_prod(ii, idx_ms_combs, t + 1) = A_forward_prod(ii, idx_ms_combs, t) * A_list(ii, idx_ms_combs, t); } complex A_backward_prod = complex::one(); // fill backward A-product triangle for (int t = r; t >= 1; t--) { - const complex dB = A_forward_prod(ii, idx_ms_comb, t) * A_backward_prod; // dB - product of all A's except t-th - dB_flatten(ii, idx_ms_comb, t) = dB; + const complex dB = A_forward_prod(ii, idx_ms_combs, t) * A_backward_prod; // dB - product of all A's except t-th + dB_flatten(ii, idx_ms_combs, t) = dB; - A_backward_prod = A_backward_prod * A_list(ii, idx_ms_comb, t); + A_backward_prod = A_backward_prod * A_list(ii, idx_ms_combs, t); } - dB_flatten(ii, idx_ms_comb, 0) = A_forward_prod(ii, idx_ms_comb, 0) * A_backward_prod; + dB_flatten(ii, idx_ms_combs, 0) = A_forward_prod(ii, idx_ms_combs, 0) * A_backward_prod; - const complex B = A_forward_prod(ii, idx_ms_comb, rank); + const complex B = A_forward_prod(ii, idx_ms_combs, rank); for (int p = 0; p < ndensity; ++p) { // real-part only multiplication - Kokkos::atomic_add(&rhos(ii, p), B.real_part_product(d_coeffs(mu_i, func_ind, p) * d_gen_cgs(mu_i, idx_ms_comb))); + Kokkos::atomic_add(&rhos(ii, p), B.real_part_product(d_coeffs(mu_i, idx_func, p) * d_gen_cgs(mu_i, idx_ms_combs))); } - //gamma_i + // gamma_i if (flag_compute_extrapolation_grade) - Kokkos::atomic_add(&projections(ii, func_ind), B.real_part_product(d_gen_cgs(mu_i, idx_ms_comb))); + Kokkos::atomic_add(&projections(ii, idx_func), B.real_part_product(d_gen_cgs(mu_i, idx_ms_combs))); } } @@ -1129,7 +1226,6 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeFS, double evdwl_cut; evdwl = fcut = dfcut = 0.0; - inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); FS_values_and_derivatives(ii, evdwl, mu_i); if (is_zbl) { @@ -1155,7 +1251,6 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeFS, for (int p = 0; p < ndensity; ++p) dF_drho(ii, p) *= fcut; - // tally energy contribution if (eflag) { // E0 shift @@ -1201,52 +1296,58 @@ template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeWeights, const int& iter) const { - const int idx_ms_comb = iter / chunk_size; + const int idx_ms_combs = iter / chunk_size; const int ii = iter % chunk_size; const int i = d_ilist[ii + chunk_offset]; const int mu_i = d_map(type(i)); - if (idx_ms_comb >= d_idx_ms_combs_count(mu_i)) return; + if (idx_ms_combs >= d_idx_ms_combs_count(mu_i)) return; const int ndensity = d_ndensity(mu_i); - const int func_ind = d_func_inds(mu_i, idx_ms_comb); - const int rank = d_rank(mu_i, func_ind); + const int idx_func = d_idx_funcs(mu_i, idx_ms_combs); + const int rank = d_rank(mu_i, idx_func); // Weights and theta calculation if (rank == 1) { - const int mu = d_mus(mu_i, func_ind, 0); - const int n = d_ns(mu_i, func_ind, 0); + const int mu = d_mus(mu_i, idx_func, 0); + const int n = d_ns(mu_i, idx_func, 0); double theta = 0.0; for (int p = 0; p < ndensity; ++p) { // for rank=1 (r=0) only 1 ms-combination exists (ms_ind=0), so index of func.ctildes is 0..ndensity-1 - theta += dF_drho(ii, p) * d_coeffs(mu_i, func_ind, p) * d_gen_cgs(mu_i, idx_ms_comb); + theta += dF_drho(ii, p) * d_coeffs(mu_i, idx_func, p) * d_gen_cgs(mu_i, idx_ms_combs); } Kokkos::atomic_add(&weights_rank1(ii, mu, n - 1), theta); } else { // rank > 1 double theta = 0.0; for (int p = 0; p < ndensity; ++p) - theta += dF_drho(ii, p) * d_coeffs(mu_i, func_ind, p) * d_gen_cgs(mu_i, idx_ms_comb); + theta += dF_drho(ii, p) * d_coeffs(mu_i, idx_func, p) * d_gen_cgs(mu_i, idx_ms_combs); theta *= 0.5; // 0.5 factor due to possible double counting ??? for (int t = 0; t < rank; ++t) { - const int m_t = d_ms_combs(mu_i, idx_ms_comb, t); + const int m_t = d_ms_combs(mu_i, idx_ms_combs, t); const int factor = (m_t % 2 == 0 ? 1 : -1); - const complex dB = dB_flatten(ii, idx_ms_comb, t); - const int mu_t = d_mus(mu_i, func_ind, t); - const int n_t = d_ns(mu_i, func_ind, t); - const int l_t = d_ls(mu_i, func_ind, t); + const complex dB = dB_flatten(ii, idx_ms_combs, t); + const int mu_t = d_mus(mu_i, idx_func, t); + const int n_t = d_ns(mu_i, idx_func, t); + const int l_t = d_ls(mu_i, idx_func, t); const int idx = l_t * (l_t + 1) + m_t; // (l, m) - const complex value = theta * dB; - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idx).re), value.re); - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idx).im), value.im); + const int idx_sph = d_idx_sph(idx); + if (idx_sph >= 0) { + const complex value = theta * dB; + Kokkos::atomic_add(&(weights(ii, mu_t, idx_sph, n_t - 1).re), value.re); + Kokkos::atomic_add(&(weights(ii, mu_t, idx_sph, n_t - 1).im), value.im); + } // update -m_t (that could also be positive), because the basis is half_basis const int idxm = l_t * (l_t + 1) - m_t; // (l, -m) - const complex valuem = theta * dB.conj() * (double)factor; - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idxm).re), valuem.re); - Kokkos::atomic_add(&(weights(ii, mu_t, n_t - 1, idxm).im), valuem.im); + const int idxm_sph = d_idx_sph(idxm); + if (idxm_sph >= 0) { + const complex valuem = theta * dB.conj() * (double)factor; + Kokkos::atomic_add(&(weights(ii, mu_t, idxm_sph, n_t - 1).re), valuem.re); + Kokkos::atomic_add(&(weights(ii, mu_t, idxm_sph, n_t - 1).im), valuem.im); + } } } } @@ -1293,37 +1394,239 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeDeri } // for rank > 1 - for (int n = 0; n < nradmax; n++) { - for (int l = 0; l <= lmax; l++) { - const double R_over_r = fr(ii, jj, n, l) * rinv; - const double DR = dfr(ii, jj, n, l); - // for m >= 0 - for (int m = 0; m <= l; m++) { - const int idx = l * (l + 1) + m; // (l, m) - complex w = weights(ii, mu_j, n, idx); + // compute plm, dplm, ylm and dylm + // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! + // prefactors include 1/sqrt(2) factor compared to reference + + complex ylm,dylm[3]; + complex phase; + complex phasem, mphasem1; + complex dyx, dyy, dyz; + complex rdy; + + const double rx = d_rhats(ii, jj, 0); + const double ry = d_rhats(ii, jj, 1); + const double rz = d_rhats(ii, jj, 2); + + phase.re = rx; + phase.im = ry; + + double plm_idx,plm_idx1,plm_idx2; + double dplm_idx,dplm_idx1,dplm_idx2; + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + int idx_sph = 0; + + // m = 0 + for (int l = 0; l <= lmax; l++) { + // const int idx = l * (l + 1); + + if (l == 0) { + // l=0, m=0 + // plm[0] = Y00/sq1o4pi; //= sq1o4pi; + plm_idx = Y00; //= 1; + dplm_idx = 0.0; + } else if (l == 1) { + // l=1, m=0 + plm_idx = Y00 * sq3 * rz; + dplm_idx = Y00 * sq3; + } else { + // l>=2, m=0 + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm.re = plm_idx; + ylm.im = 0.0; + + dyz.re = dplm_idx; + rdy.re = dyz.re * rz; + + dylm[0].re = -rdy.re * rx; + dylm[0].im = 0.0; + dylm[1].re = -rdy.re * ry; + dylm[1].im = 0.0; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = 0; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); + if (w.re == 0.0 && w.im == 0.0) continue; + + complex grad_phi_nlm[3]; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; + // real-part multiplication only + f_ji[0] += w.real_part_product(grad_phi_nlm[0]); + f_ji[1] += w.real_part_product(grad_phi_nlm[1]); + f_ji[2] += w.real_part_product(grad_phi_nlm[2]); + } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + // m = 1 + for (int l = 1; l <= lmax; l++) { + // const int idx = l * (l + 1) + 1; // (l, 1) + + if (l == 1) { + // l=1, m=1 + plm_idx = -sq3o2 * Y00; + dplm_idx = 0.0; + } else if (l == 2) { + const double t = dl(l) * plm_idx1; + plm_idx = t * rz; + dplm_idx = t; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm = phase * plm_idx; + + dyx.re = plm_idx; + dyx.im = 0.0; + dyy.re = 0.0; + dyy.im = plm_idx; + dyz.re = phase.re * dplm_idx; + dyz.im = phase.im * dplm_idx; + + rdy.re = rx * dyx.re + +rz * dyz.re; + rdy.im = ry * dyy.im + rz * dyz.im; + + dylm[0].re = dyx.re - rdy.re * rx; + dylm[0].im = -rdy.im * rx; + dylm[1].re = -rdy.re * ry; + dylm[1].im = dyy.im - rdy.im * ry; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = dyz.im - rdy.im * rz; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); + if (w.re == 0.0 && w.im == 0.0) continue; + // counting for -m cases if m > 0 + w.re *= 2.0; + w.im *= 2.0; + + complex grad_phi_nlm[3]; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; + // real-part multiplication only + f_ji[0] += w.real_part_product(grad_phi_nlm[0]); + f_ji[1] += w.real_part_product(grad_phi_nlm[1]); + f_ji[2] += w.real_part_product(grad_phi_nlm[2]); + } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; + } + + plm_idx = plm_idx1 = plm_idx2 = 0.0; + dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; + + double plm_mm1_mm1 = -sq3o2 * Y00; // (1, 1) + + // m > 1 + phasem = phase; + for (int m = 2; m <= lmax; m++) { + + mphasem1.re = phasem.re * double(m); + mphasem1.im = phasem.im * double(m); + phasem = phasem * phase; + + for (int l = m; l <= lmax; l++) { + // const int idx = l * (l + 1) + m; + + if (l == m) { + plm_idx = cl(l) * plm_mm1_mm1; // (m+1, m) + dplm_idx = 0.0; + plm_mm1_mm1 = plm_idx; + } else if (l == (m + 1)) { + const double t = dl(l) * plm_mm1_mm1; // (m - 1, m - 1) + plm_idx = t * rz; // (m, m) + dplm_idx = t; + } else { + plm_idx = alm(idx_sph) * (rz * plm_idx1 + blm(idx_sph) * plm_idx2); + dplm_idx = alm(idx_sph) * (plm_idx1 + rz * dplm_idx1 + blm(idx_sph) * dplm_idx2); + } + + ylm.re = phasem.re * plm_idx; + ylm.im = phasem.im * plm_idx; + + dyx = mphasem1 * plm_idx; + dyy.re = -dyx.im; + dyy.im = dyx.re; + dyz = phasem * dplm_idx; + + rdy.re = rx * dyx.re + ry * dyy.re + rz * dyz.re; + rdy.im = rx * dyx.im + ry * dyy.im + rz * dyz.im; + + dylm[0].re = dyx.re - rdy.re * rx; + dylm[0].im = dyx.im - rdy.im * rx; + dylm[1].re = dyy.re - rdy.re * ry; + dylm[1].im = dyy.im - rdy.im * ry; + dylm[2].re = dyz.re - rdy.re * rz; + dylm[2].im = dyz.im - rdy.im * rz; + + for (int n = 0; n < nradmax; n++) { + + const double R_over_r = fr(ii, jj, l, n) * rinv; + const double DR = dfr(ii, jj, l, n); + const complex Y_DR = ylm * DR; + + complex w = weights(ii, mu_j, idx_sph, n); if (w.re == 0.0 && w.im == 0.0) continue; // counting for -m cases if m > 0 - if (m > 0) { - w.re *= 2.0; - w.im *= 2.0; - } - - complex DY[3]; - DY[0] = dylm(ii, jj, idx, 0); - DY[1] = dylm(ii, jj, idx, 1); - DY[2] = dylm(ii, jj, idx, 2); - const complex Y_DR = ylm(ii, jj, idx) * DR; + w.re *= 2.0; + w.im *= 2.0; complex grad_phi_nlm[3]; - grad_phi_nlm[0] = Y_DR * r_hat[0] + DY[0] * R_over_r; - grad_phi_nlm[1] = Y_DR * r_hat[1] + DY[1] * R_over_r; - grad_phi_nlm[2] = Y_DR * r_hat[2] + DY[2] * R_over_r; + grad_phi_nlm[0] = Y_DR * r_hat[0] + dylm[0] * R_over_r; + grad_phi_nlm[1] = Y_DR * r_hat[1] + dylm[1] * R_over_r; + grad_phi_nlm[2] = Y_DR * r_hat[2] + dylm[2] * R_over_r; // real-part multiplication only f_ji[0] += w.real_part_product(grad_phi_nlm[0]); f_ji[1] += w.real_part_product(grad_phi_nlm[1]); f_ji[2] += w.real_part_product(grad_phi_nlm[2]); } + + plm_idx2 = plm_idx1; + dplm_idx2 = dplm_idx1; + + plm_idx1 = plm_idx; + dplm_idx1 = dplm_idx; + + idx_sph++; } } @@ -1461,31 +1764,46 @@ void PairPACEExtrapolationKokkos::v_tally_xyz(EV_FLOAT &ev, const in template void PairPACEExtrapolationKokkos::pre_compute_harmonics(int lmax) { + auto h_idx_sph = Kokkos::create_mirror_view(d_idx_sph); auto h_alm = Kokkos::create_mirror_view(alm); auto h_blm = Kokkos::create_mirror_view(blm); auto h_cl = Kokkos::create_mirror_view(cl); auto h_dl = Kokkos::create_mirror_view(dl); - for (int l = 1; l <= lmax; l++) { - const double lsq = l * l; - const double ld = 2 * l; - const double l1 = (4 * lsq - 1); - const double l2 = lsq - ld + 1; - for (int m = 0; m < l - 1; m++) { - const double msq = m * m; - const double a = sqrt((double(l1)) / (double(lsq - msq))); - const double b = -sqrt((double(l2 - msq)) / (double(4 * l2 - 1))); + Kokkos::deep_copy(h_idx_sph,-1); + + int idx_sph = 0; + for (int m = 0; m <= lmax; m++) { + const double msq = m * m; + for (int l = m; l <= lmax; l++) { const int idx = l * (l + 1) + m; // (l, m) - h_alm(idx) = a; - h_blm(idx) = b; + h_idx_sph(idx) = idx_sph; + + double a = 0.0; + double b = 0.0; + + if (l > 1 && l != m) { + const double lsq = l * l; + const double ld = 2 * l; + const double l1 = (4 * lsq - 1); + const double l2 = lsq - ld + 1; + + a = sqrt((double(l1)) / (double(lsq - msq))); + b = -sqrt((double(l2 - msq)) / (double(4 * l2 - 1))); + } + h_alm(idx_sph) = a; + h_blm(idx_sph) = b; + idx_sph++; } } + idx_sph_max = idx_sph; for (int l = 1; l <= lmax; l++) { h_cl(l) = -sqrt(1.0 + 0.5 / (double(l))); h_dl(l) = sqrt(double(2 * (l - 1) + 3)); } + Kokkos::deep_copy(d_idx_sph, h_idx_sph); Kokkos::deep_copy(alm, h_alm); Kokkos::deep_copy(blm, h_blm); Kokkos::deep_copy(cl, h_cl); @@ -1494,143 +1812,6 @@ void PairPACEExtrapolationKokkos::pre_compute_harmonics(int lmax) /* ---------------------------------------------------------------------- */ -template -KOKKOS_INLINE_FUNCTION -void PairPACEExtrapolationKokkos::compute_barplm(int ii, int jj, double rz, int lmax) const -{ - // requires -1 <= rz <= 1 , NO CHECKING IS PERFORMED !!!!!!!!! - // prefactors include 1/sqrt(2) factor compared to reference - - // l=0, m=0 - // plm(ii, jj, 0, 0) = Y00/sq1o4pi; //= sq1o4pi; - plm(ii, jj, 0) = Y00; //= 1; - dplm(ii, jj, 0) = 0.0; - - if (lmax > 0) { - - // l=1, m=0 - plm(ii, jj, 2) = Y00 * sq3 * rz; - dplm(ii, jj, 2) = Y00 * sq3; - - // l=1, m=1 - plm(ii, jj, 3) = -sq3o2 * Y00; - dplm(ii, jj, 3) = 0.0; - - // loop l = 2, lmax - for (int l = 2; l <= lmax; l++) { - for (int m = 0; m < l - 1; m++) { - const int idx = l * (l + 1) + m; // (l, m) - const int idx1 = (l - 1) * l + m; // (l - 1, m) - const int idx2 = (l - 2) * (l - 1) + m; // (l - 2, m) - plm(ii, jj, idx) = alm(idx) * (rz * plm(ii, jj, idx1) + blm(idx) * plm(ii, jj, idx2)); - dplm(ii, jj, idx) = alm(idx) * (plm(ii, jj, idx1) + rz * dplm(ii, jj, idx1) + blm(idx) * dplm(ii, jj, idx2)); - } - const int idx = l * (l + 1) + l; // (l, l) - const int idx1 = l * (l + 1) + l - 1; // (l, l - 1) - const int idx2 = (l - 1) * l + l - 1; // (l - 1, l - 1) - const double t = dl(l) * plm(ii, jj, idx2); - plm(ii, jj, idx1) = t * rz; - dplm(ii, jj, idx1) = t; - plm(ii, jj, idx) = cl(l) * plm(ii, jj, idx2); - dplm(ii, jj, idx) = 0.0; - } - } -} - -/* ---------------------------------------------------------------------- */ - -template -KOKKOS_INLINE_FUNCTION -void PairPACEExtrapolationKokkos::compute_ylm(int ii, int jj, double rx, double ry, double rz, int lmax) const -{ - // requires rx^2 + ry^2 + rz^2 = 1 , NO CHECKING IS PERFORMED !!!!!!!!! - - complex phase; - complex phasem, mphasem1; - complex dyx, dyy, dyz; - complex rdy; - - phase.re = rx; - phase.im = ry; - - // compute barplm - compute_barplm(ii, jj, rz, lmax); - - // m = 0 - for (int l = 0; l <= lmax; l++) { - const int idx = l * (l + 1); - - ylm(ii, jj, idx).re = plm(ii, jj, idx); - ylm(ii, jj, idx).im = 0.0; - - dyz.re = dplm(ii, jj, idx); - rdy.re = dyz.re * rz; - - dylm(ii, jj, idx, 0).re = -rdy.re * rx; - dylm(ii, jj, idx, 0).im = 0.0; - dylm(ii, jj, idx, 1).re = -rdy.re * ry; - dylm(ii, jj, idx, 1).im = 0.0; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = 0; - } - // m = 1 - for (int l = 1; l <= lmax; l++) { - const int idx = l * (l + 1) + 1; - - ylm(ii, jj, idx) = phase * plm(ii, jj, idx); - - dyx.re = plm(ii, jj, idx); - dyx.im = 0.0; - dyy.re = 0.0; - dyy.im = plm(ii, jj, idx); - dyz.re = phase.re * dplm(ii, jj, idx); - dyz.im = phase.im * dplm(ii, jj, idx); - - rdy.re = rx * dyx.re + +rz * dyz.re; - rdy.im = ry * dyy.im + rz * dyz.im; - - dylm(ii, jj, idx, 0).re = dyx.re - rdy.re * rx; - dylm(ii, jj, idx, 0).im = -rdy.im * rx; - dylm(ii, jj, idx, 1).re = -rdy.re * ry; - dylm(ii, jj, idx, 1).im = dyy.im - rdy.im * ry; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = dyz.im - rdy.im * rz; - } - - // m > 1 - phasem = phase; - for (int m = 2; m <= lmax; m++) { - - mphasem1.re = phasem.re * double(m); - mphasem1.im = phasem.im * double(m); - phasem = phasem * phase; - - for (int l = m; l <= lmax; l++) { - const int idx = l * (l + 1) + m; - - ylm(ii, jj, idx).re = phasem.re * plm(ii, jj, idx); - ylm(ii, jj, idx).im = phasem.im * plm(ii, jj, idx); - - dyx = mphasem1 * plm(ii, jj, idx); - dyy.re = -dyx.im; - dyy.im = dyx.re; - dyz = phasem * dplm(ii, jj, idx); - - rdy.re = rx * dyx.re + ry * dyy.re + rz * dyz.re; - rdy.im = rx * dyx.im + ry * dyy.im + rz * dyz.im; - - dylm(ii, jj, idx, 0).re = dyx.re - rdy.re * rx; - dylm(ii, jj, idx, 0).im = dyx.im - rdy.im * rx; - dylm(ii, jj, idx, 1).re = dyy.re - rdy.re * ry; - dylm(ii, jj, idx, 1).im = dyy.im - rdy.im * ry; - dylm(ii, jj, idx, 2).re = dyz.re - rdy.re * rz; - dylm(ii, jj, idx, 2).im = dyz.im - rdy.im * rz; - } - } -} - -/* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void PairPACEExtrapolationKokkos::cutoff_func_poly(const double r, const double r_in, const double delta_in, double &fc, double &dfc) const @@ -1759,11 +1940,11 @@ void PairPACEExtrapolationKokkos::evaluate_splines(const int ii, con spline_gk.calcSplines(ii, jj, r, gr, dgr); spline_rnl.calcSplines(ii, jj, r, d_values, d_derivatives); - for (int kk = 0; kk < (int)fr.extent(2); kk++) { - for (int ll = 0; ll < (int)fr.extent(3); ll++) { - const int flatten = kk*fr.extent(3) + ll; - fr(ii, jj, kk, ll) = d_values(ii, jj, flatten); - dfr(ii, jj, kk, ll) = d_derivatives(ii, jj, flatten); + for (int ll = 0; ll < (int)fr.extent(2); ll++) { + for (int kk = 0; kk < (int)fr.extent(3); kk++) { + const int flatten = kk*fr.extent(2) + ll; + fr(ii, jj, ll, kk) = d_values(ii, jj, flatten); + dfr(ii, jj, ll, kk) = d_derivatives(ii, jj, flatten); } } @@ -1783,7 +1964,7 @@ void PairPACEExtrapolationKokkos::SplineInterpolatorKokkos::operator rscalelookup = spline.rscalelookup; num_of_functions = spline.num_of_functions; - lookupTable = t_ace_3d4("lookupTable", ntot+1, num_of_functions); + lookupTable = t_ace_3d4_lr("lookupTable", ntot+1, num_of_functions); auto h_lookupTable = Kokkos::create_mirror_view(lookupTable); for (int i = 0; i < ntot+1; i++) for (int j = 0; j < num_of_functions; j++) @@ -1889,10 +2070,6 @@ double PairPACEExtrapolationKokkos::memory_usage() bytes += MemKK::memory_usage(d_derivatives); bytes += MemKK::memory_usage(cr); bytes += MemKK::memory_usage(dcr); - bytes += MemKK::memory_usage(plm); - bytes += MemKK::memory_usage(dplm); - bytes += MemKK::memory_usage(ylm); - bytes += MemKK::memory_usage(dylm); bytes += MemKK::memory_usage(d_ncount); bytes += MemKK::memory_usage(d_mu); bytes += MemKK::memory_usage(d_rhats); @@ -1911,7 +2088,7 @@ double PairPACEExtrapolationKokkos::memory_usage() bytes += MemKK::memory_usage(d_idx_ms_combs_count); bytes += MemKK::memory_usage(d_rank); bytes += MemKK::memory_usage(d_num_ms_combs); - bytes += MemKK::memory_usage(d_func_inds); + bytes += MemKK::memory_usage(d_idx_funcs); bytes += MemKK::memory_usage(d_mus); bytes += MemKK::memory_usage(d_ns); bytes += MemKK::memory_usage(d_ls); @@ -1940,47 +2117,6 @@ double PairPACEExtrapolationKokkos::memory_usage() return bytes; } -/* ---------------------------------------------------------------------- - extract method for extracting value of scale variable - ---------------------------------------------------------------------- */ - -template -void *PairPACEExtrapolationKokkos::extract(const char *str, int &dim) -{ - dim = 0; - //check if str=="flag_compute_extrapolation_grade" then compute extrapolation grades on this iteration - if (strcmp(str, "gamma_flag") == 0) return (void *) &flag_compute_extrapolation_grade; - if (strcmp(str, "corerep_flag") == 0) return (void *) &flag_corerep_factor; - - dim = 2; - if (strcmp(str, "scale") == 0) return (void *) scale; - return nullptr; -} - -/* ---------------------------------------------------------------------- - peratom requests from FixPair - return ptr to requested data - also return ncol = # of quantites per atom - 0 = per-atom vector - 1 or more = # of columns in per-atom array - return NULL if str is not recognized ----------------------------------------------------------------------- */ - -template -void *PairPACEExtrapolationKokkos::extract_peratom(const char *str, int &ncol) -{ - if (strcmp(str, "gamma") == 0) { - ncol = 0; - return (void *) extrapolation_grade_gamma; - } - if (strcmp(str, "corerep") == 0) { - ncol = 0; - return (void *) corerep_factor; - } - - return nullptr; -} - /* ---------------------------------------------------------------------- */ namespace LAMMPS_NS { @@ -1989,4 +2125,3 @@ template class PairPACEExtrapolationKokkos; template class PairPACEExtrapolationKokkos; #endif } - diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.h b/src/KOKKOS/pair_pace_extrapolation_kokkos.h index aa6c49c36d0..df8a0c1740c 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.h +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.h @@ -36,7 +36,6 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { public: struct TagPairPACEComputeNeigh{}; struct TagPairPACEComputeRadial{}; - struct TagPairPACEComputeYlm{}; struct TagPairPACEComputeAi{}; struct TagPairPACEConjugateAi{}; struct TagPairPACEComputeRho{}; @@ -67,9 +66,6 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeRadial,const typename Kokkos::TeamPolicy::member_type& team) const; - KOKKOS_INLINE_FUNCTION - void operator() (TagPairPACEComputeYlm,const typename Kokkos::TeamPolicy::member_type& team) const; - KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeAi,const typename Kokkos::TeamPolicy::member_type& team) const; @@ -99,12 +95,8 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { KOKKOS_INLINE_FUNCTION void operator() (TagPairPACEComputeForce,const int& ii, EV_FLOAT&) const; - - void *extract(const char *str, int &dim) override; - void *extract_peratom(const char *str, int &ncol) override; - protected: - int inum, maxneigh, chunk_size, chunk_offset, idx_ms_combs_max, total_num_functions_max; + int inum, maxneigh, chunk_size, chunk_offset, idx_ms_combs_max, total_num_functions_max, idx_sph_max; int host_flag; int eflag, vflag; @@ -165,12 +157,6 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const; - KOKKOS_INLINE_FUNCTION - void compute_barplm(int, int, double, int) const; - - KOKKOS_INLINE_FUNCTION - void compute_ylm(int, int, double, double, double, int) const; - KOKKOS_INLINE_FUNCTION void cutoff_func_poly(const double, const double, const double, double &, double &) const; @@ -202,15 +188,19 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { typedef Kokkos::View t_ace_1i; typedef Kokkos::View t_ace_2i; + typedef Kokkos::View t_ace_2i_lr; typedef Kokkos::View t_ace_3i; + typedef Kokkos::View t_ace_3i_lr; typedef Kokkos::View t_ace_4i; typedef Kokkos::View t_ace_1d; typedef Kokkos::View t_ace_2d; + typedef Kokkos::View t_ace_2d_lr; typedef Kokkos::View t_ace_2d3; typedef Kokkos::View t_ace_3d; typedef Kokkos::View tc_ace_3d; typedef Kokkos::View t_ace_3d3; typedef Kokkos::View t_ace_3d4; + typedef Kokkos::View t_ace_3d4_lr; typedef Kokkos::View t_ace_4d; typedef Kokkos::View t_ace_1c; typedef Kokkos::View t_ace_2c; @@ -260,25 +250,16 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { th_ace_1d h_gamma; // Spherical Harmonics - void pre_compute_harmonics(int); - - KOKKOS_INLINE_FUNCTION - void compute_barplm(double rz, int lmaxi); - KOKKOS_INLINE_FUNCTION - void compute_ylm(double rx, double ry, double rz, int lmaxi); + void pre_compute_harmonics(int); + t_ace_4c A_sph; + t_ace_1d d_idx_sph; t_ace_1d alm; t_ace_1d blm; t_ace_1d cl; t_ace_1d dl; - t_ace_3d plm; - t_ace_3d dplm; - - t_ace_3c ylm; - t_ace_4c3 dylm; - // short neigh list t_ace_1i d_ncount; t_ace_2d d_mu; @@ -297,20 +278,19 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { t_ace_1d d_rho_core_cutoff; t_ace_1d d_drho_core_cutoff; t_ace_1d d_E0vals; - t_ace_2d d_wpre; - t_ace_2d d_mexp; + t_ace_2d_lr d_wpre; + t_ace_2d_lr d_mexp; // tilde t_ace_1i d_idx_ms_combs_count; t_ace_1i d_total_basis_size; - t_ace_2i d_rank; - t_ace_2i d_num_ms_combs; - t_ace_2i d_func_inds; - t_ace_3i d_mus; - t_ace_3i d_ns; - t_ace_3i d_ls; - t_ace_3i d_ms_combs; -// t_ace_3d d_ctildes; + t_ace_2i_lr d_rank; + t_ace_2i_lr d_num_ms_combs; + t_ace_2i_lr d_idx_funcs; + t_ace_3i_lr d_mus; + t_ace_3i_lr d_ns; + t_ace_3i_lr d_ls; + t_ace_3i_lr d_ms_combs; t_ace_2d d_gen_cgs; t_ace_3d d_coeffs; @@ -321,12 +301,12 @@ class PairPACEExtrapolationKokkos : public PairPACEExtrapolation { int ntot, nlut, num_of_functions; double cutoff, deltaSplineBins, invrscalelookup, rscalelookup; - t_ace_3d4 lookupTable; + t_ace_3d4_lr lookupTable; void operator=(const SplineInterpolator &spline); void deallocate() { - lookupTable = t_ace_3d4(); + lookupTable = t_ace_3d4_lr(); } double memory_usage() { diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 85fd4582982..35b7b5ed827 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -29,11 +29,13 @@ #include "neighbor_kokkos.h" #include "neigh_request.h" +#include "ace-evaluator/ace_version.h" +#include "ace-evaluator/ace_radial.h" + #include "ace-evaluator/ace_c_basis.h" #include "ace-evaluator/ace_evaluator.h" #include "ace-evaluator/ace_recursive.h" -#include "ace-evaluator/ace_version.h" -#include "ace-evaluator/ace_radial.h" + #include namespace LAMMPS_NS { @@ -108,9 +110,9 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(A, "pace:A", natom, nelements, (lmax + 1) * (lmax + 1), nradmax + 1); MemKK::realloc_kokkos(A_rank1, "pace:A_rank1", natom, nelements, nradbase); - MemKK::realloc_kokkos(A_list, "pace:A_list", natom, idx_rho_max, basis_set->rankmax); + MemKK::realloc_kokkos(A_list, "pace:A_list", natom, idx_ms_combs_max, basis_set->rankmax); //size is +1 of max to avoid out-of-boundary array access in double-triangular scheme - MemKK::realloc_kokkos(A_forward_prod, "pace:A_forward_prod", natom, idx_rho_max, basis_set->rankmax + 1); + MemKK::realloc_kokkos(A_forward_prod, "pace:A_forward_prod", natom, idx_ms_combs_max, basis_set->rankmax + 1); MemKK::realloc_kokkos(e_atom, "pace:e_atom", natom); MemKK::realloc_kokkos(rhos, "pace:rhos", natom, basis_set->ndensitymax + 1); // +1 density for core repulsion @@ -127,7 +129,7 @@ void PairPACEKokkos::grow(int natom, int maxneigh) MemKK::realloc_kokkos(d_jj_min, "pace:j_min_pair", natom); MemKK::realloc_kokkos(d_corerep, "pace:corerep", natom); // per-atom corerep - MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_rho_max, basis_set->rankmax); + MemKK::realloc_kokkos(dB_flatten, "pace:dB_flatten", natom, idx_ms_combs_max, basis_set->rankmax); } if (((int)fr.extent(0) < natom) || ((int)fr.extent(1) < maxneigh)) { @@ -179,7 +181,7 @@ void PairPACEKokkos::copy_pertype() h_rho_core_cutoff[n] = basis_set->map_embedding_specifications.at(n).rho_core_cutoff; h_drho_core_cutoff[n] = basis_set->map_embedding_specifications.at(n).drho_core_cutoff; - h_E0vals(n)= basis_set->E0vals(n); + h_E0vals(n) = basis_set->E0vals(n); h_ndensity(n) = basis_set->map_embedding_specifications.at(n).ndensity; @@ -220,10 +222,10 @@ void PairPACEKokkos::copy_pertype() auto h_dcut_in = Kokkos::create_mirror_view(d_dcut_in); for (int mu_i = 0; mu_i < nelements; ++mu_i) { - for (int mu_j = 0; mu_j < nelements; ++mu_j) { - h_cut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).rcut_in; - h_dcut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).dcut_in; - } + for (int mu_j = 0; mu_j < nelements; ++mu_j) { + h_cut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).rcut_in; + h_dcut_in(mu_i,mu_j) = basis_set->map_bond_specifications.at({mu_i,mu_j}).dcut_in; + } } Kokkos::deep_copy(d_cut_in, h_cut_in); Kokkos::deep_copy(d_dcut_in, h_dcut_in); @@ -283,50 +285,50 @@ void PairPACEKokkos::copy_tilde() // flatten loops, get per-element count and max - idx_rho_max = 0; + idx_ms_combs_max = 0; int total_basis_size_max = 0; - MemKK::realloc_kokkos(d_idx_rho_count, "pace:idx_rho_count", nelements); - auto h_idx_rho_count = Kokkos::create_mirror_view(d_idx_rho_count); + MemKK::realloc_kokkos(d_idx_ms_combs_count, "pace:idx_ms_combs_count", nelements); + auto h_idx_ms_combs_count = Kokkos::create_mirror_view(d_idx_ms_combs_count); - for (int n = 0; n < nelements; n++) { - int idx_rho = 0; - const int total_basis_size_rank1 = basis_set->total_basis_size_rank1[n]; - const int total_basis_size = basis_set->total_basis_size[n]; + for (int mu = 0; mu < nelements; mu++) { + int idx_ms_combs = 0; + const int total_basis_size_rank1 = basis_set->total_basis_size_rank1[mu]; + const int total_basis_size = basis_set->total_basis_size[mu]; - ACECTildeBasisFunction *basis = basis_set->basis[n]; + ACECTildeBasisFunction *basis = basis_set->basis[mu]; // rank=1 for (int func_rank1_ind = 0; func_rank1_ind < total_basis_size_rank1; ++func_rank1_ind) - idx_rho++; + idx_ms_combs++; // rank > 1 - for (int func_ind = 0; func_ind < total_basis_size; ++func_ind) { - ACECTildeBasisFunction *func = &basis[func_ind]; + for (int idx_func = 0; idx_func < total_basis_size; ++idx_func) { + ACECTildeBasisFunction *func = &basis[idx_func]; // loop over {ms} combinations in sum for (int ms_ind = 0; ms_ind < func->num_ms_combs; ++ms_ind) - idx_rho++; + idx_ms_combs++; } - h_idx_rho_count(n) = idx_rho; - idx_rho_max = MAX(idx_rho_max, idx_rho); + h_idx_ms_combs_count(mu) = idx_ms_combs; + idx_ms_combs_max = MAX(idx_ms_combs_max, idx_ms_combs); total_basis_size_max = MAX(total_basis_size_max, total_basis_size_rank1 + total_basis_size); } - Kokkos::deep_copy(d_idx_rho_count, h_idx_rho_count); + Kokkos::deep_copy(d_idx_ms_combs_count, h_idx_ms_combs_count); MemKK::realloc_kokkos(d_rank, "pace:rank", nelements, total_basis_size_max); MemKK::realloc_kokkos(d_num_ms_combs, "pace:num_ms_combs", nelements, total_basis_size_max); - MemKK::realloc_kokkos(d_offsets, "pace:offsets", nelements, idx_rho_max); + MemKK::realloc_kokkos(d_idx_funcs, "pace:idx_func", nelements, idx_ms_combs_max); MemKK::realloc_kokkos(d_mus, "pace:mus", nelements, total_basis_size_max, basis_set->rankmax); MemKK::realloc_kokkos(d_ns, "pace:ns", nelements, total_basis_size_max, basis_set->rankmax); MemKK::realloc_kokkos(d_ls, "pace:ls", nelements, total_basis_size_max, basis_set->rankmax); - MemKK::realloc_kokkos(d_ms_combs, "pace:ms_combs", nelements, idx_rho_max, basis_set->rankmax); - MemKK::realloc_kokkos(d_ctildes, "pace:ctildes", nelements, idx_rho_max, basis_set->ndensitymax); + MemKK::realloc_kokkos(d_ms_combs, "pace:ms_combs", nelements, idx_ms_combs_max, basis_set->rankmax); + MemKK::realloc_kokkos(d_ctildes, "pace:ctildes", nelements, idx_ms_combs_max, basis_set->ndensitymax); auto h_rank = Kokkos::create_mirror_view(d_rank); auto h_num_ms_combs = Kokkos::create_mirror_view(d_num_ms_combs); - auto h_offsets = Kokkos::create_mirror_view(d_offsets); + auto h_idx_funcs = Kokkos::create_mirror_view(d_idx_funcs); auto h_mus = Kokkos::create_mirror_view(d_mus); auto h_ns = Kokkos::create_mirror_view(d_ns); auto h_ls = Kokkos::create_mirror_view(d_ls); @@ -335,63 +337,66 @@ void PairPACEKokkos::copy_tilde() // copy values on host - for (int n = 0; n < nelements; n++) { - const int total_basis_size_rank1 = basis_set->total_basis_size_rank1[n]; - const int total_basis_size = basis_set->total_basis_size[n]; + for (int mu = 0; mu < nelements; mu++) { + const int total_basis_size_rank1 = basis_set->total_basis_size_rank1[mu]; + const int total_basis_size = basis_set->total_basis_size[mu]; - ACECTildeBasisFunction *basis_rank1 = basis_set->basis_rank1[n]; - ACECTildeBasisFunction *basis = basis_set->basis[n]; + ACECTildeBasisFunction *basis_rank1 = basis_set->basis_rank1[mu]; + ACECTildeBasisFunction *basis = basis_set->basis[mu]; - const int ndensity = basis_set->map_embedding_specifications.at(n).ndensity; + const int ndensity = basis_set->map_embedding_specifications.at(mu).ndensity; - int idx_rho = 0; + int idx_ms_combs = 0; // rank=1 - for (int offset = 0; offset < total_basis_size_rank1; ++offset) { - ACECTildeBasisFunction *func = &basis_rank1[offset]; - h_rank(n, offset) = 1; - h_mus(n, offset, 0) = func->mus[0]; - h_ns(n, offset, 0) = func->ns[0]; - for (int p = 0; p < ndensity; p++) - h_ctildes(n, idx_rho, p) = func->ctildes[p]; - h_offsets(n, idx_rho) = offset; - idx_rho++; + for (int idx_func = 0; idx_func < total_basis_size_rank1; ++idx_func) { + ACECTildeBasisFunction *func = &basis_rank1[idx_func]; + h_rank(mu, idx_func) = 1; + h_mus(mu, idx_func, 0) = func->mus[0]; + h_ns(mu, idx_func, 0) = func->ns[0]; + + for (int p = 0; p < ndensity; ++p) + h_ctildes(mu, idx_ms_combs, p) = func->ctildes[p]; + + h_idx_funcs(mu, idx_ms_combs) = idx_func; + idx_ms_combs++; } // rank > 1 - for (int func_ind = 0; func_ind < total_basis_size; ++func_ind) { - ACECTildeBasisFunction *func = &basis[func_ind]; + for (int idx_func = 0; idx_func < total_basis_size; ++idx_func) { + ACECTildeBasisFunction *func = &basis[idx_func]; // TODO: check if func->ctildes are zero, then skip - const int offset = total_basis_size_rank1 + func_ind; + const int idx_func_through = total_basis_size_rank1 + idx_func; - const int rank = h_rank(n, offset) = func->rank; - h_num_ms_combs(n, offset) = func->num_ms_combs; + const int rank = h_rank(mu, idx_func_through) = func->rank; + h_num_ms_combs(mu, idx_func_through) = func->num_ms_combs; for (int t = 0; t < rank; t++) { - h_mus(n, offset, t) = func->mus[t]; - h_ns(n, offset, t) = func->ns[t]; - h_ls(n, offset, t) = func->ls[t]; + h_mus(mu, idx_func_through, t) = func->mus[t]; + h_ns(mu, idx_func_through, t) = func->ns[t]; + h_ls(mu, idx_func_through, t) = func->ls[t]; } // loop over {ms} combinations in sum for (int ms_ind = 0; ms_ind < func->num_ms_combs; ++ms_ind) { auto ms = &func->ms_combs[ms_ind * rank]; // current ms-combination (of length = rank) for (int t = 0; t < rank; t++) - h_ms_combs(n, idx_rho, t) = ms[t]; + h_ms_combs(mu, idx_ms_combs, t) = ms[t]; for (int p = 0; p < ndensity; ++p) { // real-part only multiplication - h_ctildes(n, idx_rho, p) = func->ctildes[ms_ind * ndensity + p]; + h_ctildes(mu, idx_ms_combs, p) = func->ctildes[ms_ind * ndensity + p]; } - h_offsets(n, idx_rho) = offset; - idx_rho++; + + h_idx_funcs(mu, idx_ms_combs) = idx_func_through; + idx_ms_combs++; } } } Kokkos::deep_copy(d_rank, h_rank); Kokkos::deep_copy(d_num_ms_combs, h_num_ms_combs); - Kokkos::deep_copy(d_offsets, h_offsets); + Kokkos::deep_copy(d_idx_funcs, h_idx_funcs); Kokkos::deep_copy(d_mus, h_mus); Kokkos::deep_copy(d_ns, h_ns); Kokkos::deep_copy(d_ls, h_ls); @@ -659,7 +664,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) //ComputeRho { - typename Kokkos::RangePolicy policy_rho(0,chunk_size*idx_rho_max); + typename Kokkos::RangePolicy policy_rho(0,chunk_size*idx_ms_combs_max); Kokkos::parallel_for("ComputeRho",policy_rho,*this); } @@ -671,7 +676,7 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) //ComputeWeights { - typename Kokkos::RangePolicy policy_weights(0,chunk_size*idx_rho_max); + typename Kokkos::RangePolicy policy_weights(0,chunk_size * idx_ms_combs_max); Kokkos::parallel_for("ComputeWeights",policy_weights,*this); } @@ -713,7 +718,6 @@ void PairPACEKokkos::compute(int eflag_in, int vflag_in) } chunk_offset += chunk_size; - } // end while if (need_dup) @@ -829,15 +833,15 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen }); if (is_zbl) { - //adapted from https://www.osti.gov/servlets/purl/1429450 - if(ncount>0) { - using minloc_value_type=Kokkos::MinLoc::value_type; - minloc_value_type djjmin; - djjmin.val=1e20; - djjmin.loc=-1; - Kokkos::MinLoc reducer_scalar(djjmin); - // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) - Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), + //adapted from https://www.osti.gov/servlets/purl/1429450 + if (ncount > 0) { + using minloc_value_type=Kokkos::MinLoc::value_type; + minloc_value_type djjmin; + djjmin.val=1e20; + djjmin.loc=-1; + Kokkos::MinLoc reducer_scalar(djjmin); + // loop over ncount (actual neighbours withing cutoff) rather than jnum (total number of neigh in cutoff+skin) + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, ncount), [&](const int offset, minloc_value_type &min_d_dist) { int j = d_nearest(ii,offset); j &= NEIGHMASK; @@ -846,8 +850,8 @@ void PairPACEKokkos::operator() (TagPairPACEComputeNeigh,const typen const int mu_j = d_map(type(j)); const F_FLOAT d = r - (d_cut_in(mu_i, mu_j) - d_dcut_in(mu_i, mu_j)); if (d < min_d_dist.val) { - min_d_dist.val = d; - min_d_dist.loc = offset; + min_d_dist.val = d; + min_d_dist.loc = offset; } }, reducer_scalar); d_d_min(ii) = djjmin.val; @@ -1081,70 +1085,69 @@ template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEComputeRho, const int& iter) const { - const int idx_rho = iter / chunk_size; + const int idx_ms_combs = iter / chunk_size; const int ii = iter % chunk_size; const int i = d_ilist[ii + chunk_offset]; const int mu_i = d_map(type(i)); - if (idx_rho >= d_idx_rho_count(mu_i)) return; + if (idx_ms_combs >= d_idx_ms_combs_count(mu_i)) return; const int ndensity = d_ndensity(mu_i); - const int offset = d_offsets(mu_i, idx_rho); - const int rank = d_rank(mu_i, offset); + const int idx_func = d_idx_funcs(mu_i, idx_ms_combs); + const int rank = d_rank(mu_i, idx_func); const int r = rank - 1; // Basis functions B with iterative product and density rho(p) calculation if (rank == 1) { - const int mu = d_mus(mu_i, offset, 0); - const int n = d_ns(mu_i, offset, 0); + const int mu = d_mus(mu_i, idx_func, 0); + const int n = d_ns(mu_i, idx_func, 0); double A_cur = A_rank1(ii, mu, n - 1); for (int p = 0; p < ndensity; ++p) { //for rank=1 (r=0) only 1 ms-combination exists (ms_ind=0), so index of func.ctildes is 0..ndensity-1 - Kokkos::atomic_add(&rhos(ii, p), d_ctildes(mu_i, idx_rho, p) * A_cur); + Kokkos::atomic_add(&rhos(ii, p), d_ctildes(mu_i, idx_ms_combs, p) * A_cur); } } else { // rank > 1 // loop over {ms} combinations in sum // loop over m, collect B = product of A with given ms - A_forward_prod(ii, idx_rho, 0) = complex::one(); + A_forward_prod(ii, idx_ms_combs, 0) = complex::one(); // fill forward A-product triangle for (int t = 0; t < rank; t++) { //TODO: optimize ns[t]-1 -> ns[t] during functions construction - const int mu = d_mus(mu_i, offset, t); - const int n = d_ns(mu_i, offset, t); - const int l = d_ls(mu_i, offset, t); - const int m = d_ms_combs(mu_i, idx_rho, t); // current ms-combination (of length = rank) + const int mu = d_mus(mu_i, idx_func, t); + const int n = d_ns(mu_i, idx_func, t); + const int l = d_ls(mu_i, idx_func, t); + const int m = d_ms_combs(mu_i, idx_ms_combs, t); // current ms-combination (of length = rank) const int idx = l * (l + 1) + m; // (l, m) - A_list(ii, idx_rho, t) = A(ii, mu, idx, n - 1); - A_forward_prod(ii, idx_rho, t + 1) = A_forward_prod(ii, idx_rho, t) * A_list(ii, idx_rho, t); + A_list(ii, idx_ms_combs, t) = A(ii, mu, idx, n - 1); + A_forward_prod(ii, idx_ms_combs, t + 1) = A_forward_prod(ii, idx_ms_combs, t) * A_list(ii, idx_ms_combs, t); } complex A_backward_prod = complex::one(); // fill backward A-product triangle for (int t = r; t >= 1; t--) { - const complex dB = A_forward_prod(ii, idx_rho, t) * A_backward_prod; // dB - product of all A's except t-th - dB_flatten(ii, idx_rho, t) = dB; + const complex dB = A_forward_prod(ii, idx_ms_combs, t) * A_backward_prod; // dB - product of all A's except t-th + dB_flatten(ii, idx_ms_combs, t) = dB; - A_backward_prod = A_backward_prod * A_list(ii, idx_rho, t); + A_backward_prod = A_backward_prod * A_list(ii, idx_ms_combs, t); } - dB_flatten(ii, idx_rho, 0) = A_forward_prod(ii, idx_rho, 0) * A_backward_prod; + dB_flatten(ii, idx_ms_combs, 0) = A_forward_prod(ii, idx_ms_combs, 0) * A_backward_prod; - const complex B = A_forward_prod(ii, idx_rho, rank); + const complex B = A_forward_prod(ii, idx_ms_combs, rank); for (int p = 0; p < ndensity; ++p) { // real-part only multiplication - Kokkos::atomic_add(&rhos(ii, p), B.real_part_product(d_ctildes(mu_i, idx_rho, p))); + Kokkos::atomic_add(&rhos(ii, p), B.real_part_product(d_ctildes(mu_i, idx_ms_combs, p))); } } } /* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEComputeFS, const int& ii) const @@ -1161,34 +1164,35 @@ void PairPACEKokkos::operator() (TagPairPACEComputeFS, const int& ii evdwl = fcut = dfcut = 0.0; FS_values_and_derivatives(ii, evdwl, mu_i); + if (is_zbl) { - if (d_jj_min(ii) != -1) { - const int mu_jmin = d_mu(ii,d_jj_min(ii)); - F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); - F_FLOAT transition_coordinate = dcutin - d_d_min(ii); // == cutin - r_min - cutoff_func_poly(transition_coordinate, dcutin, dcutin, fcut, dfcut); - dfcut = -dfcut; // invert, because rho_core = cutin - r_min - } else { - // no neighbours - fcut = 1; - dfcut = 0; - } - evdwl_cut = evdwl * fcut + rho_core(ii) * (1 - fcut); // evdwl * fcut + rho_core_uncut - rho_core_uncut* fcut - dF_drho_core(ii) = 1 - fcut; - dF_dfcut(ii) = evdwl * dfcut - rho_core(ii) * dfcut; + if (d_jj_min(ii) != -1) { + const int mu_jmin = d_mu(ii,d_jj_min(ii)); + F_FLOAT dcutin = d_dcut_in(mu_i, mu_jmin); + F_FLOAT transition_coordinate = dcutin - d_d_min(ii); // == cutin - r_min + cutoff_func_poly(transition_coordinate, dcutin, dcutin, fcut, dfcut); + dfcut = -dfcut; // invert, because rho_core = cutin - r_min + } else { + // no neighbours + fcut = 1; + dfcut = 0; + } + evdwl_cut = evdwl * fcut + rho_core(ii) * (1 - fcut); // evdwl * fcut + rho_core_uncut - rho_core_uncut* fcut + dF_drho_core(ii) = 1 - fcut; + dF_dfcut(ii) = evdwl * dfcut - rho_core(ii) * dfcut; } else { - inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); - dF_drho_core(ii) = evdwl * dfcut + 1; - evdwl_cut = evdwl * fcut + rho_core(ii); + inner_cutoff(rho_core(ii), rho_cut, drho_cut, fcut, dfcut); + dF_drho_core(ii) = evdwl * dfcut + 1; + evdwl_cut = evdwl * fcut + rho_core(ii); } for (int p = 0; p < ndensity; ++p) - dF_drho(ii, p) *= fcut; + dF_drho(ii, p) *= fcut; // tally energy contribution if (eflag) { - // E0 shift - evdwl_cut += d_E0vals(mu_i); - e_atom(ii) = evdwl_cut; + // E0 shift + evdwl_cut += d_E0vals(mu_i); + e_atom(ii) = evdwl_cut; } if (flag_corerep_factor) @@ -1201,43 +1205,43 @@ template KOKKOS_INLINE_FUNCTION void PairPACEKokkos::operator() (TagPairPACEComputeWeights, const int& iter) const { - const int idx_rho = iter / chunk_size; + const int idx_ms_combs = iter / chunk_size; const int ii = iter % chunk_size; const int i = d_ilist[ii + chunk_offset]; const int mu_i = d_map(type(i)); - if (idx_rho >= d_idx_rho_count(mu_i)) return; + if (idx_ms_combs >= d_idx_ms_combs_count(mu_i)) return; const int ndensity = d_ndensity(mu_i); - const int offset = d_offsets(mu_i, idx_rho); - const int rank = d_rank(mu_i, offset); + const int idx_func = d_idx_funcs(mu_i, idx_ms_combs); + const int rank = d_rank(mu_i, idx_func); // Weights and theta calculation if (rank == 1) { - const int mu = d_mus(mu_i, offset, 0); - const int n = d_ns(mu_i, offset, 0); + const int mu = d_mus(mu_i, idx_func, 0); + const int n = d_ns(mu_i, idx_func, 0); double theta = 0.0; for (int p = 0; p < ndensity; ++p) { // for rank=1 (r=0) only 1 ms-combination exists (ms_ind=0), so index of func.ctildes is 0..ndensity-1 - theta += dF_drho(ii, p) * d_ctildes(mu_i, idx_rho, p); + theta += dF_drho(ii, p) * d_ctildes(mu_i, idx_ms_combs, p); } Kokkos::atomic_add(&weights_rank1(ii, mu, n - 1), theta); } else { // rank > 1 double theta = 0.0; for (int p = 0; p < ndensity; ++p) - theta += dF_drho(ii, p) * d_ctildes(mu_i, idx_rho, p); + theta += dF_drho(ii, p) * d_ctildes(mu_i, idx_ms_combs, p); theta *= 0.5; // 0.5 factor due to possible double counting ??? for (int t = 0; t < rank; ++t) { - const int m_t = d_ms_combs(mu_i, idx_rho, t); + const int m_t = d_ms_combs(mu_i, idx_ms_combs, t); const int factor = (m_t % 2 == 0 ? 1 : -1); - const complex dB = dB_flatten(ii, idx_rho, t); - const int mu_t = d_mus(mu_i, offset, t); - const int n_t = d_ns(mu_i, offset, t); - const int l_t = d_ls(mu_i, offset, t); + const complex dB = dB_flatten(ii, idx_ms_combs, t); + const int mu_t = d_mus(mu_i, idx_func, t); + const int n_t = d_ns(mu_i, idx_func, t); + const int l_t = d_ls(mu_i, idx_func, t); const int idx = l_t * (l_t + 1) + m_t; // (l, m) const int idx_sph = d_idx_sph(idx); if (idx_sph >= 0) { @@ -1543,10 +1547,10 @@ void PairPACEKokkos::operator() (TagPairPACEComputeDerivative, const if (is_zbl) { if (jj==d_jj_min(ii)) { - // DCRU = 1.0 - f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; - f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; - f_ij(ii, jj, 2) += dF_dfcut(ii) * r_hat[2]; + // DCRU = 1.0 + f_ij(ii, jj, 0) += dF_dfcut(ii) * r_hat[0]; + f_ij(ii, jj, 1) += dF_dfcut(ii) * r_hat[1]; + f_ij(ii, jj, 2) += dF_dfcut(ii) * r_hat[2]; } } } @@ -1990,10 +1994,10 @@ double PairPACEKokkos::memory_usage() bytes += MemKK::memory_usage(d_npoti); bytes += MemKK::memory_usage(d_wpre); bytes += MemKK::memory_usage(d_mexp); - bytes += MemKK::memory_usage(d_idx_rho_count); + bytes += MemKK::memory_usage(d_idx_ms_combs_count); bytes += MemKK::memory_usage(d_rank); bytes += MemKK::memory_usage(d_num_ms_combs); - bytes += MemKK::memory_usage(d_offsets); + bytes += MemKK::memory_usage(d_idx_funcs); bytes += MemKK::memory_usage(d_mus); bytes += MemKK::memory_usage(d_ns); bytes += MemKK::memory_usage(d_ls); diff --git a/src/KOKKOS/pair_pace_kokkos.h b/src/KOKKOS/pair_pace_kokkos.h index bb8c5a1f1a3..e22c61f0ea5 100644 --- a/src/KOKKOS/pair_pace_kokkos.h +++ b/src/KOKKOS/pair_pace_kokkos.h @@ -92,7 +92,7 @@ class PairPACEKokkos : public PairPACE { void operator() (TagPairPACEComputeForce,const int& ii, EV_FLOAT&) const; protected: - int inum, maxneigh, chunk_size, chunk_offset, idx_rho_max, idx_sph_max; + int inum, maxneigh, chunk_size, chunk_offset, idx_ms_combs_max, idx_sph_max; int host_flag; int eflag, vflag; @@ -271,10 +271,10 @@ class PairPACEKokkos : public PairPACE { t_ace_2d_lr d_mexp; // tilde - t_ace_1i d_idx_rho_count; + t_ace_1i d_idx_ms_combs_count; t_ace_2i_lr d_rank; t_ace_2i_lr d_num_ms_combs; - t_ace_2i_lr d_offsets; + t_ace_2i_lr d_idx_funcs; t_ace_3i_lr d_mus; t_ace_3i_lr d_ns; t_ace_3i_lr d_ls; From 66a5f566828d16eb31f0e9faafbcf4b4a27d4494 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 3 Jan 2024 14:13:11 -0700 Subject: [PATCH 294/300] whitespace --- src/KOKKOS/pair_pace_extrapolation_kokkos.cpp | 4 ++-- src/KOKKOS/pair_pace_kokkos.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp index 05978858604..18ecaf6e69c 100644 --- a/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp +++ b/src/KOKKOS/pair_pace_extrapolation_kokkos.cpp @@ -985,7 +985,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeAi, phase.im = ry; double plm_idx,plm_idx1,plm_idx2; - + plm_idx = plm_idx1 = plm_idx2 = 0.0; int idx_sph = 0; @@ -1415,7 +1415,7 @@ void PairPACEExtrapolationKokkos::operator() (TagPairPACEComputeDeri double plm_idx,plm_idx1,plm_idx2; double dplm_idx,dplm_idx1,dplm_idx2; - + plm_idx = plm_idx1 = plm_idx2 = 0.0; dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; diff --git a/src/KOKKOS/pair_pace_kokkos.cpp b/src/KOKKOS/pair_pace_kokkos.cpp index 35b7b5ed827..aaed01510a0 100644 --- a/src/KOKKOS/pair_pace_kokkos.cpp +++ b/src/KOKKOS/pair_pace_kokkos.cpp @@ -930,7 +930,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeAi, const typenam phase.im = ry; double plm_idx,plm_idx1,plm_idx2; - + plm_idx = plm_idx1 = plm_idx2 = 0.0; int idx_sph = 0; @@ -1324,7 +1324,7 @@ void PairPACEKokkos::operator() (TagPairPACEComputeDerivative, const double plm_idx,plm_idx1,plm_idx2; double dplm_idx,dplm_idx1,dplm_idx2; - + plm_idx = plm_idx1 = plm_idx2 = 0.0; dplm_idx = dplm_idx1 = dplm_idx2 = 0.0; From 4fbb913425269ac31906e6571823a4e9fd63bd11 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 11:35:35 -0500 Subject: [PATCH 295/300] skip python tests using numpy that fail randomly on macOS --- unittest/python/CMakeLists.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/unittest/python/CMakeLists.txt b/unittest/python/CMakeLists.txt index b4ba281d934..f3b851620c9 100644 --- a/unittest/python/CMakeLists.txt +++ b/unittest/python/CMakeLists.txt @@ -84,20 +84,26 @@ if(Python_EXECUTABLE) WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCommands PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonNumpy - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonNumpy + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonCapabilities COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-capabilities.py -v WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCapabilities PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonPyLammps - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonPyLammps + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonFormats COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-formats.py -v From e00fc992fcbf899cefb3c409a561ed13e03b3346 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 22 Dec 2023 11:35:35 -0500 Subject: [PATCH 296/300] skip python tests using numpy that fail randomly on macOS --- unittest/python/CMakeLists.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/unittest/python/CMakeLists.txt b/unittest/python/CMakeLists.txt index b4ba281d934..f3b851620c9 100644 --- a/unittest/python/CMakeLists.txt +++ b/unittest/python/CMakeLists.txt @@ -84,20 +84,26 @@ if(Python_EXECUTABLE) WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCommands PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonNumpy - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonNumpy + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-numpy.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonNumpy PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonCapabilities COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-capabilities.py -v WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) set_tests_properties(PythonCapabilities PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") - add_test(NAME PythonPyLammps - COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v - WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + # randomly failing on macOS with python 3.12 + if(NOT APPLE) + add_test(NAME PythonPyLammps + COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v + WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}") + endif() add_test(NAME PythonFormats COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-formats.py -v From 55784019f76c27ce5c3703d379439e123588530b Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Wed, 3 Jan 2024 16:46:06 -0700 Subject: [PATCH 297/300] Fix CPU issue --- src/KOKKOS/pair_kokkos.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index eea2cd5316a..32f50c3bb5d 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -84,8 +84,6 @@ struct PairComputeFunctor { // typename KKDevice::value,Kokkos::MemoryTraits::value> > vatom; KKScatterView dup_vatom; - - NeighListKokkos list; PairComputeFunctor(PairStyle* c_ptr, @@ -109,13 +107,15 @@ struct PairComputeFunctor { } void contribute() { - Kokkos::Experimental::contribute(c.f, dup_f); + if constexpr (std::is_same_v,Kokkos::Experimental::ScatterDuplicated>) { + Kokkos::Experimental::contribute(c.f, dup_f); - if (c.eflag_atom) - Kokkos::Experimental::contribute(c.d_eatom, dup_eatom); + if (c.eflag_atom) + Kokkos::Experimental::contribute(c.d_eatom, dup_eatom); - if (c.vflag_atom) - Kokkos::Experimental::contribute(c.d_vatom, dup_vatom); + if (c.vflag_atom) + Kokkos::Experimental::contribute(c.d_vatom, dup_vatom); + } } // Loop over neighbors of one atom without coulomb interaction @@ -988,11 +988,13 @@ EV_FLOAT pair_compute_neighlist (PairStyle* fpair, std::enable_if_t<(NEIGHFLAG&P Kokkos::TeamPolicy > policy(num_teams,atoms_per_team,vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); + ff.contribute(); } else { PairComputeFunctor ff(fpair,list); Kokkos::TeamPolicy > policy(num_teams,atoms_per_team,vectorsize); if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(policy,ff,ev); else Kokkos::parallel_for(policy,ff); + ff.contribute(); } } else { if (fpair->atom->ntypes > MAX_TYPES_STACKPARAMS) { From 9d7582ec1bb86d0b41f9ae6f1de9e62d81e9db01 Mon Sep 17 00:00:00 2001 From: Stan Gerald Moore Date: Wed, 3 Jan 2024 16:59:11 -0700 Subject: [PATCH 298/300] Small tweak for readability --- src/KOKKOS/pair_kokkos.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index 32f50c3bb5d..95212682849 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -107,7 +107,9 @@ struct PairComputeFunctor { } void contribute() { - if constexpr (std::is_same_v,Kokkos::Experimental::ScatterDuplicated>) { + int need_dup = std::is_same_v; + + if (need_dup) { Kokkos::Experimental::contribute(c.f, dup_f); if (c.eflag_atom) From e26a762f880964497f500434229163d5e82e674c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 4 Jan 2024 11:21:38 -0500 Subject: [PATCH 299/300] improve compatibility of oneapi.cmake preset --- cmake/presets/oneapi.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/presets/oneapi.cmake b/cmake/presets/oneapi.cmake index 2aacf1a1f52..393d1d9b680 100644 --- a/cmake/presets/oneapi.cmake +++ b/cmake/presets/oneapi.cmake @@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) set(OpenMP_C "icx" CACHE STRING "" FORCE) -set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE) +set(OpenMP_C_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_CXX "icpx" CACHE STRING "" FORCE) -set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE) +set(OpenMP_CXX_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE) set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) -set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE) +set(OpenMP_Fortran_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE) set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE) From 1b6dc1fe8cf1e7063f73fd4544f68f45f7075791 Mon Sep 17 00:00:00 2001 From: Jorge Ramirez Date: Sun, 7 Jan 2024 18:38:47 +0100 Subject: [PATCH 300/300] Small correction to fix/ave/correlate/long to show the right output after a restart --- src/EXTRA-FIX/fix_ave_correlate_long.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/EXTRA-FIX/fix_ave_correlate_long.cpp b/src/EXTRA-FIX/fix_ave_correlate_long.cpp index 7fa57af343a..fc1760b353c 100644 --- a/src/EXTRA-FIX/fix_ave_correlate_long.cpp +++ b/src/EXTRA-FIX/fix_ave_correlate_long.cpp @@ -503,7 +503,7 @@ void FixAveCorrelateLong::end_of_step() if (overwrite) { bigint fileend = platform::ftell(fp); if ((fileend > 0) && (platform::ftruncate(fp,fileend))) - error->warning(FLERR,"Error while tuncating output: {}", utils::getsyserror()); + error->warning(FLERR,"Error while truncating output: {}", utils::getsyserror()); } } } @@ -728,7 +728,7 @@ double FixAveCorrelateLong::memory_usage() { void FixAveCorrelateLong::write_restart(FILE *fp) { if (comm->me == 0) { int nsize = 3*npair*numcorrelators*p + 2*npair*numcorrelators - + numcorrelators*p + 2*numcorrelators + 6; + + numcorrelators*p + 2*numcorrelators + 7; int n=0; double *list; memory->create(list,nsize,"correlator:list"); @@ -736,6 +736,7 @@ void FixAveCorrelateLong::write_restart(FILE *fp) { list[n++] = numcorrelators; list[n++] = p; list[n++] = m; + list[n++] = kmax; list[n++] = last_accumulated_step; for (int i=0; i < npair; i++) for (int j=0; j < numcorrelators; j++) { @@ -771,6 +772,7 @@ void FixAveCorrelateLong::restart(char *buf) int numcorrelatorsin = static_cast (list[n++]); int pin = static_cast(list[n++]); int min = static_cast(list[n++]); + kmax = static_cast(list[n++]); last_accumulated_step = static_cast(list[n++]); if ((npairin!=npair) || (numcorrelatorsin!=numcorrelators) || (pin!=(int)p) || (min!=(int)m))

    E6A2d%v57v=SwbaAm?;qyai5LlJaD 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