From 5a13f6683862f5d020251b80fac248a3cf2137d3 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 8 Nov 2007 23:31:09 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1153 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/compute_sum.cpp | 15 +++++++++++---- src/compute_sum.h | 1 + src/neighbor.cpp | 5 ++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/compute_sum.cpp b/src/compute_sum.cpp index 20443deb5e..0ef29340dc 100644 --- a/src/compute_sum.cpp +++ b/src/compute_sum.cpp @@ -62,10 +62,12 @@ ComputeSum::ComputeSum(LAMMPS *lmp, int narg, char **arg) : if (size == 0) { scalar_flag = 1; vector = NULL; + onevec = NULL; } else { vector_flag = 1; size_vector = size; vector = new double[size_vector]; + onevec = new double[size_vector]; } for (int i = 1; i < npre; i++) { @@ -81,6 +83,7 @@ ComputeSum::~ComputeSum() { delete [] compute; delete [] vector; + delete [] onevec; } /* ---------------------------------------------------------------------- */ @@ -115,14 +118,16 @@ double ComputeSum::compute_scalar() int *mask = atom->mask; int nlocal = atom->nlocal; - scalar = 0.0; + double one = 0.0; for (int icompute = 0; icompute < npre; icompute++) { double *scalar_atom = compute[icompute]->scalar_atom; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) scalar += scalar_atom[i]; + if (mask[i] & groupbit) one += scalar_atom[i]; } + MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world); + return scalar; } @@ -144,13 +149,15 @@ void ComputeSum::compute_vector() int *mask = atom->mask; int nlocal = atom->nlocal; - for (j = 0; j < size_vector; j++) vector[j] = 0.0; + for (j = 0; j < size_vector; j++) onevec[j] = 0.0; for (int icompute = 0; icompute < npre; icompute++) { double **vector_atom = compute[icompute]->vector_atom; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) for (j = 0; j < size_vector; j++) - vector[j] += vector_atom[i][j]; + onevec[j] += vector_atom[i][j]; } + + MPI_Allreduce(onevec,vector,size_vector,MPI_DOUBLE,MPI_SUM,world); } diff --git a/src/compute_sum.h b/src/compute_sum.h index f766ec09d7..d38e35017f 100644 --- a/src/compute_sum.h +++ b/src/compute_sum.h @@ -27,6 +27,7 @@ class ComputeSum : public Compute { void compute_vector(); private: + double *onevec; class Compute **compute; }; diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 74db8ef73a..1f2f809151 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -67,7 +67,7 @@ Neighbor::Neighbor(LAMMPS *lmp) : Pointers(lmp) every = 1; delay = 10; dist_check = 1; - pgsize = 10000; + pgsize = 100000; oneatom = 2000; cutneighsq = NULL; @@ -189,6 +189,9 @@ void Neighbor::init() if (delay > 0 && (delay % every) != 0) error->all("Neighbor delay must be 0 or multiple of every setting"); + if (pgsize < 10*oneatom) + error->all("Neighbor page size must be >= 10x the one atom setting"); + // ------------------------------------------------------------------ // settings