git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@3763 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -349,16 +349,29 @@ double ComputeReduce::compute_scalar()
|
|||||||
|
|
||||||
double one = compute_one(0,-1);
|
double one = compute_one(0,-1);
|
||||||
|
|
||||||
if (mode == SUM)
|
if (mode == SUM) {
|
||||||
|
if (flavor[0] == GLOBAL)
|
||||||
|
scalar = one;
|
||||||
|
else
|
||||||
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
|
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
|
||||||
else if (mode == MINN)
|
} else if (mode == MINN) {
|
||||||
|
if (flavor[0] == GLOBAL)
|
||||||
|
scalar = one;
|
||||||
|
else
|
||||||
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MIN,world);
|
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MIN,world);
|
||||||
else if (mode == MAXX)
|
} else if (mode == MAXX) {
|
||||||
|
if (flavor[0] == GLOBAL)
|
||||||
|
scalar = one;
|
||||||
|
else
|
||||||
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MAX,world);
|
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MAX,world);
|
||||||
else if (mode == AVE) {
|
} else if (mode == AVE) {
|
||||||
|
if (flavor[0] == GLOBAL)
|
||||||
|
scalar = one;
|
||||||
|
else
|
||||||
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
|
MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
|
||||||
scalar /= count(0);
|
scalar /= count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return scalar;
|
return scalar;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,21 +387,36 @@ void ComputeReduce::compute_vector()
|
|||||||
indices[m] = index;
|
indices[m] = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == SUM)
|
if (mode == SUM) {
|
||||||
MPI_Allreduce(onevec,vector,size_vector,MPI_DOUBLE,MPI_SUM,world);
|
for (int m = 0; m < nvalues; m++) {
|
||||||
|
if (flavor[m] == GLOBAL)
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
else
|
||||||
|
MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
}
|
||||||
|
|
||||||
else if (mode == MINN) {
|
} else if (mode == MINN) {
|
||||||
if (!replace)
|
if (!replace) {
|
||||||
MPI_Allreduce(onevec,vector,size_vector,MPI_DOUBLE,MPI_MIN,world);
|
for (int m = 0; m < nvalues; m++) {
|
||||||
else {
|
if (flavor[m] == GLOBAL)
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
else
|
||||||
|
MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_MIN,world);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (int m = 0; m < nvalues; m++)
|
for (int m = 0; m < nvalues; m++)
|
||||||
if (replace[m] < 0) {
|
if (replace[m] < 0) {
|
||||||
|
if (flavor[m] == GLOBAL) {
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
owner[m] = me;
|
||||||
|
} else {
|
||||||
pairme.value = onevec[m];
|
pairme.value = onevec[m];
|
||||||
pairme.proc = me;
|
pairme.proc = me;
|
||||||
MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MINLOC,world);
|
MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MINLOC,world);
|
||||||
vector[m] = pairall.value;
|
vector[m] = pairall.value;
|
||||||
owner[m] = pairall.proc;
|
owner[m] = pairall.proc;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (int m = 0; m < nvalues; m++)
|
for (int m = 0; m < nvalues; m++)
|
||||||
if (replace[m] >= 0) {
|
if (replace[m] >= 0) {
|
||||||
if (me == owner[replace[m]])
|
if (me == owner[replace[m]])
|
||||||
@ -398,17 +426,27 @@ void ComputeReduce::compute_vector()
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (mode == MAXX) {
|
} else if (mode == MAXX) {
|
||||||
if (!replace)
|
if (!replace) {
|
||||||
MPI_Allreduce(onevec,vector,size_vector,MPI_DOUBLE,MPI_MAX,world);
|
for (int m = 0; m < nvalues; m++) {
|
||||||
else {
|
if (flavor[m] == GLOBAL)
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
else
|
||||||
|
MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_MAX,world);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (int m = 0; m < nvalues; m++)
|
for (int m = 0; m < nvalues; m++)
|
||||||
if (replace[m] < 0) {
|
if (replace[m] < 0) {
|
||||||
|
if (flavor[m] == GLOBAL) {
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
owner[m] = me;
|
||||||
|
} else {
|
||||||
pairme.value = onevec[m];
|
pairme.value = onevec[m];
|
||||||
pairme.proc = me;
|
pairme.proc = me;
|
||||||
MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world);
|
MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world);
|
||||||
vector[m] = pairall.value;
|
vector[m] = pairall.value;
|
||||||
owner[m] = pairall.proc;
|
owner[m] = pairall.proc;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (int m = 0; m < nvalues; m++)
|
for (int m = 0; m < nvalues; m++)
|
||||||
if (replace[m] >= 0) {
|
if (replace[m] >= 0) {
|
||||||
if (me == owner[replace[m]])
|
if (me == owner[replace[m]])
|
||||||
@ -418,8 +456,13 @@ void ComputeReduce::compute_vector()
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (mode == AVE) {
|
} else if (mode == AVE) {
|
||||||
MPI_Allreduce(onevec,vector,size_vector,MPI_DOUBLE,MPI_MAX,world);
|
for (int m = 0; m < nvalues; m++) {
|
||||||
for (int m = 0; m < nvalues; m++) vector[m] /= count(m);
|
if (flavor[m] == GLOBAL)
|
||||||
|
vector[m] = onevec[m];
|
||||||
|
else
|
||||||
|
MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
vector[m] /= count(m);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,6 +494,7 @@ double ComputeReduce::compute_one(int m, int flag)
|
|||||||
if (mode == SUM) one = 0.0;
|
if (mode == SUM) one = 0.0;
|
||||||
else if (mode == MINN) one = BIG;
|
else if (mode == MINN) one = BIG;
|
||||||
else if (mode == MAXX) one = -BIG;
|
else if (mode == MAXX) one = -BIG;
|
||||||
|
else if (mode == AVE) one = 0.0;
|
||||||
|
|
||||||
if (which[m] == X) {
|
if (which[m] == X) {
|
||||||
double **x = atom->x;
|
double **x = atom->x;
|
||||||
|
|||||||
Reference in New Issue
Block a user