forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@5472 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
a7f69eac0c
commit
c9495408a1
|
@ -119,7 +119,7 @@ void FixQEQComb::init()
|
|||
nlevels_respa = ((Respa *) update->integrate)->nlevels;
|
||||
|
||||
ngroup = group->count(igroup);
|
||||
if (ngroup == 0.0) error->all("Fix qeq/comb group has no atoms");
|
||||
if (ngroup == 0) error->all("Fix qeq/comb group has no atoms");
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -22,6 +22,7 @@ FixStyle(qeq/comb,FixQEQComb)
|
|||
|
||||
#include "stdio.h"
|
||||
#include "fix.h"
|
||||
#include "lmptype.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
|
@ -40,7 +41,7 @@ class FixQEQComb : public Fix {
|
|||
int me,firstflag;
|
||||
double precision;
|
||||
int nlevels_respa;
|
||||
double ngroup;
|
||||
bigint ngroup;
|
||||
FILE *fp;
|
||||
|
||||
class PairComb *comb;
|
||||
|
|
|
@ -1075,7 +1075,7 @@ void FixSRD::vbin_unpack(double *buf, BinAve *vbin, int n, int *list)
|
|||
|
||||
void FixSRD::collisions_single()
|
||||
{
|
||||
int i,j,k,m,type,nbig,ibin,ibounce,inside,collide_flag;
|
||||
int i,j,k,m,type,mbig,ibin,ibounce,inside,collide_flag;
|
||||
double dt,t_remain;
|
||||
double norm[3],xscoll[3],xbcoll[3],vsnew[3];
|
||||
Big *big;
|
||||
|
@ -1107,11 +1107,11 @@ void FixSRD::collisions_single()
|
|||
dt = dt_big;
|
||||
|
||||
while (collide_flag) {
|
||||
nbig = nbinbig[ibin];
|
||||
if (ibounce == 0) ncheck += nbig;
|
||||
mbig = nbinbig[ibin];
|
||||
if (ibounce == 0) ncheck += mbig;
|
||||
|
||||
collide_flag = 0;
|
||||
for (m = 0; m < nbig; m++) {
|
||||
for (m = 0; m < mbig; m++) {
|
||||
k = binbig[ibin][m];
|
||||
big = &biglist[k];
|
||||
j = big->index;
|
||||
|
@ -1236,7 +1236,7 @@ void FixSRD::collisions_single()
|
|||
|
||||
void FixSRD::collisions_multi()
|
||||
{
|
||||
int i,j,k,m,type,nbig,ibin,ibounce,inside,jfirst,typefirst;
|
||||
int i,j,k,m,type,mbig,ibin,ibounce,inside,jfirst,typefirst;
|
||||
double dt,t_remain,t_first;
|
||||
double norm[3],xscoll[3],xbcoll[3],vsnew[3];
|
||||
double normfirst[3],xscollfirst[3],xbcollfirst[3];
|
||||
|
@ -1268,11 +1268,11 @@ void FixSRD::collisions_multi()
|
|||
dt = dt_big;
|
||||
|
||||
while (1) {
|
||||
nbig = nbinbig[ibin];
|
||||
if (ibounce == 0) ncheck += nbig;
|
||||
mbig = nbinbig[ibin];
|
||||
if (ibounce == 0) ncheck += mbig;
|
||||
|
||||
t_first = 0.0;
|
||||
for (m = 0; m < nbig; m++) {
|
||||
for (m = 0; m < mbig; m++) {
|
||||
k = binbig[ibin][m];
|
||||
big = &biglist[k];
|
||||
j = big->index;
|
||||
|
@ -2236,9 +2236,9 @@ void FixSRD::parameterize()
|
|||
|
||||
// particle counts
|
||||
|
||||
double nbig = 0.0;
|
||||
if (bigexist) nbig = group->count(biggroup);
|
||||
double nsrd = group->count(igroup);
|
||||
bigint mbig = 0;
|
||||
if (bigexist) mbig = group->count(biggroup);
|
||||
bigint nsrd = group->count(igroup);
|
||||
|
||||
// mass_big = total mass of all big particles
|
||||
|
||||
|
@ -2293,7 +2293,7 @@ void FixSRD::parameterize()
|
|||
else
|
||||
ncell = volsrd / (binsize3x*binsize3y);
|
||||
|
||||
srd_per_cell = nsrd / ncell;
|
||||
srd_per_cell = (double) nsrd / ncell;
|
||||
|
||||
// kinematic viscosity of SRD fluid
|
||||
// output in cm^2/sec units, converted by xxt2kmu
|
||||
|
@ -2317,7 +2317,7 @@ void FixSRD::parameterize()
|
|||
if (me == 0) {
|
||||
if (screen) {
|
||||
fprintf(screen,"SRD info:\n");
|
||||
fprintf(screen," SRD/big particles = %g %g\n",nsrd,nbig);
|
||||
fprintf(screen," SRD/big particles = %lu %lu\n",nsrd,mbig);
|
||||
fprintf(screen," big particle diameter max/min = %g %g\n",
|
||||
maxbigdiam,minbigdiam);
|
||||
fprintf(screen," SRD temperature & lamda = %g %g\n",
|
||||
|
@ -2332,7 +2332,7 @@ void FixSRD::parameterize()
|
|||
}
|
||||
if (logfile) {
|
||||
fprintf(logfile,"SRD info:\n");
|
||||
fprintf(logfile," SRD/big particles = %g %g\n",nsrd,nbig);
|
||||
fprintf(logfile," SRD/big particles = %lu %lu\n",nsrd,mbig);
|
||||
fprintf(logfile," big particle diameter max/min = %g %g\n",
|
||||
maxbigdiam,minbigdiam);
|
||||
fprintf(logfile," SRD temperature & lamda = %g %g\n",
|
||||
|
|
|
@ -230,7 +230,7 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) :
|
|||
|
||||
imd_port = atoi(arg[3]);
|
||||
if (imd_port < 1024)
|
||||
error->all("Illegal fix imd parameter. port < 1024.");
|
||||
error->all("Illegal fix imd parameter: port < 1024");
|
||||
|
||||
/* default values for optional flags */
|
||||
unwrap_flag = 0;
|
||||
|
@ -259,7 +259,7 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) :
|
|||
} else if (0 == strcmp(arg[argsdone], "trate")) {
|
||||
imd_trate = atoi(arg[argsdone+1]);
|
||||
} else {
|
||||
error->all("Unknown fix imd parameter.");
|
||||
error->all("Unknown fix imd parameter");
|
||||
}
|
||||
++argsdone; ++argsdone;
|
||||
}
|
||||
|
@ -268,12 +268,11 @@ FixIMD::FixIMD(LAMMPS *lmp, int narg, char **arg) :
|
|||
if (imd_trate < 1)
|
||||
error->all("Illegal fix imd parameter. trate < 1.");
|
||||
|
||||
if (igroup == group->find("all")) {
|
||||
num_coords = static_cast<int> (atom->natoms);
|
||||
} else {
|
||||
num_coords = static_cast<int> (group->count(igroup));
|
||||
if (num_coords <= 0) error->all("Invalid number of group atoms for 'fix imd'");
|
||||
}
|
||||
bigint n;
|
||||
if (igroup == group->find("all")) n = atom->natoms;
|
||||
else n = group->count(igroup);
|
||||
if (n > MAXINT32) error->all("Too many atoms for fix imd");
|
||||
num_coords = static_cast<int> (n);
|
||||
|
||||
MPI_Comm_rank(world,&me);
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "string.h"
|
||||
#include "stdlib.h"
|
||||
#include "compute_reduce.h"
|
||||
#include "lmptype.h"
|
||||
#include "atom.h"
|
||||
#include "update.h"
|
||||
#include "domain.h"
|
||||
|
@ -589,7 +590,7 @@ double ComputeReduce::compute_one(int m, int flag)
|
|||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double ComputeReduce::count(int m)
|
||||
bigint ComputeReduce::count(int m)
|
||||
{
|
||||
int vidx = value2index[m];
|
||||
int aidx = argindex[m];
|
||||
|
@ -601,9 +602,9 @@ double ComputeReduce::count(int m)
|
|||
if (flavor[m] == PERATOM) {
|
||||
return group->count(igroup);
|
||||
} else if (flavor[m] == LOCAL) {
|
||||
double ncount = compute->size_local_rows;
|
||||
double ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
bigint ncount = compute->size_local_rows;
|
||||
bigint ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
|
||||
return ncountall;
|
||||
}
|
||||
} else if (which[m] == FIX) {
|
||||
|
@ -611,15 +612,16 @@ double ComputeReduce::count(int m)
|
|||
if (flavor[m] == PERATOM) {
|
||||
return group->count(igroup);
|
||||
} else if (flavor[m] == LOCAL) {
|
||||
double ncount = fix->size_local_rows;
|
||||
double ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
bigint ncount = fix->size_local_rows;
|
||||
bigint ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
|
||||
return ncountall;
|
||||
}
|
||||
} else if (which[m] == VARIABLE)
|
||||
return group->count(igroup);
|
||||
|
||||
return 0.0;
|
||||
bigint dummy = 0;
|
||||
return dummy;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
|
|
@ -21,6 +21,7 @@ ComputeStyle(reduce,ComputeReduce)
|
|||
#define LMP_COMPUTE_REDUCE_H
|
||||
|
||||
#include "compute.h"
|
||||
#include "lmptype.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
|
@ -53,7 +54,7 @@ class ComputeReduce : public Compute {
|
|||
Pair pairme,pairall;
|
||||
|
||||
virtual double compute_one(int, int);
|
||||
virtual double count(int);
|
||||
virtual bigint count(int);
|
||||
void combine(double &, double, int);
|
||||
};
|
||||
|
||||
|
|
|
@ -220,7 +220,7 @@ double ComputeReduceRegion::compute_one(int m, int flag)
|
|||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double ComputeReduceRegion::count(int m)
|
||||
bigint ComputeReduceRegion::count(int m)
|
||||
{
|
||||
int n = value2index[m];
|
||||
int j = argindex[m];
|
||||
|
@ -235,8 +235,8 @@ double ComputeReduceRegion::count(int m)
|
|||
if (flavor[m] == PERATOM) {
|
||||
return group->count(igroup,iregion);
|
||||
} else if (flavor[m] == LOCAL) {
|
||||
double ncount = compute->size_local_rows;
|
||||
double ncountall;
|
||||
bigint ncount = compute->size_local_rows;
|
||||
bigint ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
return ncountall;
|
||||
}
|
||||
|
@ -245,13 +245,14 @@ double ComputeReduceRegion::count(int m)
|
|||
if (flavor[m] == PERATOM) {
|
||||
return group->count(igroup,iregion);
|
||||
} else if (flavor[m] == LOCAL) {
|
||||
double ncount = fix->size_local_rows;
|
||||
double ncountall;
|
||||
bigint ncount = fix->size_local_rows;
|
||||
bigint ncountall;
|
||||
MPI_Allreduce(&ncount,&ncountall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
return ncountall;
|
||||
}
|
||||
} else if (which[m] == VARIABLE)
|
||||
return group->count(igroup,iregion);
|
||||
|
||||
return 0.0;
|
||||
bigint dummy = 0;
|
||||
return dummy;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ ComputeStyle(reduce/region,ComputeReduceRegion)
|
|||
#define LMP_COMPUTE_REDUCE_REGION_H
|
||||
|
||||
#include "compute_reduce.h"
|
||||
#include "lmptype.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
|
@ -31,7 +32,7 @@ class ComputeReduceRegion : public ComputeReduce {
|
|||
|
||||
private:
|
||||
double compute_one(int, int);
|
||||
double count(int);
|
||||
bigint count(int);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -173,7 +173,7 @@ void Dump::init()
|
|||
if (nprocs > 1 && irregular == NULL)
|
||||
irregular = new Irregular(lmp);
|
||||
|
||||
double size = group->count(igroup);
|
||||
bigint size = group->count(igroup);
|
||||
if (size > MAXINT32) error->all("Too many atoms to dump sort");
|
||||
|
||||
// set reorderflag = 1 if can simply reorder local atoms rather than sort
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "time.h"
|
||||
#include "string.h"
|
||||
#include "dump_dcd.h"
|
||||
#include "lmptype.h"
|
||||
#include "domain.h"
|
||||
#include "atom.h"
|
||||
#include "update.h"
|
||||
|
@ -67,9 +68,11 @@ DumpDCD::DumpDCD(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg)
|
|||
|
||||
// allocate global array for atom coords
|
||||
|
||||
if (igroup == 0) natoms = static_cast<int> (atom->natoms);
|
||||
else natoms = static_cast<int> (group->count(igroup));
|
||||
if (natoms <= 0) error->all("Invalid natoms for dump dcd");
|
||||
bigint n;
|
||||
if (igroup == 0) n = static_cast<int> (atom->natoms);
|
||||
else n = static_cast<int> (group->count(igroup));
|
||||
if (n > MAXINT32) error->all("Too many atoms for dump dcd");
|
||||
natoms = n;
|
||||
|
||||
coords = (float *) memory->smalloc(3*natoms*sizeof(float),"dump:coords");
|
||||
xf = &coords[0*natoms];
|
||||
|
|
|
@ -94,7 +94,7 @@ void FixHeat::init()
|
|||
|
||||
// cannot have 0 atoms in group
|
||||
|
||||
if (group->count(igroup) == 0.0) error->all("Fix heat group has no atoms");
|
||||
if (group->count(igroup) == 0) error->all("Fix heat group has no atoms");
|
||||
masstotal = group->mass(igroup);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ FixMomentum::FixMomentum(LAMMPS *lmp, int narg, char **arg) :
|
|||
|
||||
// cannot have 0 atoms in group
|
||||
|
||||
if (group->count(igroup) == 0.0)
|
||||
if (group->count(igroup) == 0)
|
||||
error->all("Fix momentum group has no atoms");
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ FixRecenter::FixRecenter(LAMMPS *lmp, int narg, char **arg) :
|
|||
|
||||
// cannot have 0 atoms in group
|
||||
|
||||
if (group->count(igroup) == 0.0)
|
||||
if (group->count(igroup) == 0)
|
||||
error->all("Fix recenter group has no atoms");
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "string.h"
|
||||
#include "stdlib.h"
|
||||
#include "group.h"
|
||||
#include "lmptype.h"
|
||||
#include "domain.h"
|
||||
#include "atom.h"
|
||||
#include "force.h"
|
||||
|
@ -481,10 +482,9 @@ void Group::read_restart(FILE *fp)
|
|||
|
||||
/* ----------------------------------------------------------------------
|
||||
count atoms in group
|
||||
compute in double precision in case system is huge
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double Group::count(int igroup)
|
||||
bigint Group::count(int igroup)
|
||||
{
|
||||
int groupbit = bitmask[igroup];
|
||||
|
||||
|
@ -495,18 +495,17 @@ double Group::count(int igroup)
|
|||
for (int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit) n++;
|
||||
|
||||
double nsingle = n;
|
||||
double nall;
|
||||
MPI_Allreduce(&nsingle,&nall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
bigint nsingle = n;
|
||||
bigint nall;
|
||||
MPI_Allreduce(&nsingle,&nall,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
|
||||
return nall;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
count atoms in group and region
|
||||
compute in double precision in case system is huge
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double Group::count(int igroup, int iregion)
|
||||
bigint Group::count(int igroup, int iregion)
|
||||
{
|
||||
int groupbit = bitmask[igroup];
|
||||
Region *region = domain->regions[iregion];
|
||||
|
@ -519,9 +518,9 @@ double Group::count(int igroup, int iregion)
|
|||
for (int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit && region->match(x[i][0],x[i][1],x[i][2])) n++;
|
||||
|
||||
double nsingle = n;
|
||||
double nall;
|
||||
MPI_Allreduce(&nsingle,&nall,1,MPI_DOUBLE,MPI_SUM,world);
|
||||
bigint nsingle = n;
|
||||
bigint nall;
|
||||
MPI_Allreduce(&nsingle,&nall,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
|
||||
return nall;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "stdio.h"
|
||||
#include "pointers.h"
|
||||
#include "lmptype.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
|
@ -34,8 +35,8 @@ class Group : protected Pointers {
|
|||
void write_restart(FILE *);
|
||||
void read_restart(FILE *);
|
||||
|
||||
double count(int); // count atoms in group
|
||||
double count(int,int); // count atoms in group & region
|
||||
bigint count(int); // count atoms in group
|
||||
bigint count(int,int); // count atoms in group & region
|
||||
double mass(int); // total mass of atoms in group
|
||||
double mass(int,int);
|
||||
double charge(int); // total charge of atoms in group
|
||||
|
|
|
@ -536,7 +536,7 @@ void Velocity::zero_momentum()
|
|||
{
|
||||
// cannot have 0 atoms in group
|
||||
|
||||
if (group->count(igroup) == 0.0)
|
||||
if (group->count(igroup) == 0)
|
||||
error->all("Cannot zero momentum of 0 atoms");
|
||||
|
||||
// compute velocity of center-of-mass of group
|
||||
|
@ -569,7 +569,7 @@ void Velocity::zero_rotation()
|
|||
|
||||
// cannot have 0 atoms in group
|
||||
|
||||
if (group->count(igroup) == 0.0)
|
||||
if (group->count(igroup) == 0)
|
||||
error->all("Cannot zero momentum of 0 atoms");
|
||||
|
||||
// compute omega (angular velocity) of group around center-of-mass
|
||||
|
|
Loading…
Reference in New Issue