git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1153 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2007-11-08 23:31:09 +00:00
parent 120b2941cc
commit 5a13f66838
3 changed files with 16 additions and 5 deletions

View File

@ -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);
}

View File

@ -27,6 +27,7 @@ class ComputeSum : public Compute {
void compute_vector();
private:
double *onevec;
class Compute **compute;
};

View File

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