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

This commit is contained in:
sjplimp 2016-05-31 14:49:49 +00:00
parent 0a01592d0a
commit 9d3d6193f3
3 changed files with 40 additions and 1668 deletions

File diff suppressed because it is too large Load Diff

View File

@ -28,56 +28,9 @@ namespace LAMMPS_NS {
class FixAveSpatial : public Fix {
public:
FixAveSpatial(class LAMMPS *, int, char **);
~FixAveSpatial();
int setmask();
void init();
void setup(int);
void end_of_step();
double compute_array(int,int);
double memory_usage();
private:
int me,nvalues;
int nrepeat,nfreq,irepeat;
bigint nvalid,nvalid_last;
int ndim,normflag,regionflag,overwrite,discard;
char *tstring,*sstring,*idregion;
int *which,*argindex,*value2index;
char **ids;
FILE *fp;
class Region *region;
int ave,nwindow,scaleflag;
int norm,iwindow,window_limit;
double xscale,yscale,zscale;
double bin_volume;
long filepos;
int dim[3],originflag[3],nlayers[3];
double origin[3],delta[3];
double offset[3],invdelta[3];
int maxvar;
double *varatom;
int maxatom;
int *bin;
int nbins,maxbin;
double **coord;
double *count_one,*count_many,*count_sum;
double **values_one,**values_many,**values_sum;
double *count_total,**count_list;
double **values_total,***values_list;
int minflag[3],maxflag[3];
double minvalue[3],maxvalue[3];
void setup_bins();
void atom2bin1d();
void atom2bin2d();
void atom2bin3d();
bigint nextvalid();
~FixAveSpatial() {}
int setmask() {}
void init() {}
};
}
@ -87,106 +40,10 @@ class FixAveSpatial : public Fix {
/* ERROR/WARNING messages:
W: The fix ave/spatial command has been replaced by the more flexible fix ave/chunk and compute chunk/atom commands -- fix ave/spatial will be removed in the summer of 2015
E: The fix ave/spatial command has been removed from LAMMPS
Self-explanatory.
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: Cannot use fix ave/spatial z for 2 dimensional model
Self-explanatory.
E: Same dimension twice in fix ave/spatial
Self-explanatory.
E: No input values for fix ave/spatial
Self-explanatory.
E: Region ID for fix ave/spatial does not exist
Self-explanatory.
E: Cannot open fix ave/spatial file %s
The specified file cannot be opened. Check that the path and name are
correct.
E: Compute ID for fix ave/spatial does not exist
Self-explanatory.
E: Fix ave/spatial compute does not calculate per-atom values
A compute used by fix ave/spatial must generate per-atom values.
E: Fix ave/spatial compute does not calculate a per-atom vector
A compute used by fix ave/spatial must generate per-atom values.
E: Fix ave/spatial compute does not calculate a per-atom array
Self-explanatory.
E: Fix ave/spatial compute vector is accessed out-of-range
The index for the vector is out of bounds.
E: Fix ID for fix ave/spatial does not exist
Self-explanatory.
E: Fix ave/spatial fix does not calculate per-atom values
A fix used by fix ave/spatial must generate per-atom values.
E: Fix ave/spatial fix does not calculate a per-atom vector
A fix used by fix ave/spatial must generate per-atom values.
E: Fix ave/spatial fix does not calculate a per-atom array
Self-explanatory.
E: Fix ave/spatial fix vector is accessed out-of-range
The index for the vector is out of bounds.
E: Variable name for fix ave/spatial does not exist
Self-explanatory.
E: Fix ave/spatial variable is not atom-style variable
A variable used by fix ave/spatial must generate per-atom values.
E: Fix ave/spatial for triclinic boxes requires units reduced
Self-explanatory.
E: Fix ave/spatial settings invalid with changing box size
If the box size changes, only the units reduced option can be
used.
E: Fix for fix ave/spatial not computed at compatible time
Fixes generate their values on specific timesteps. Fix ave/spatial is
requesting a value on a non-allowed timestep.
E: Invalid timestep reset for fix ave/spatial
Resetting the timestep has invalidated the sequence of timesteps this
fix needs to process.
E: Invalid bin bounds in fix ave/spatial
The lo/hi values are inconsistent.
It has been replaced by the more flexible fix ave/chunk and compute
chunk/atom commands. All the fix ave/spatial keywords and options are
available in those two newer commands.
*/

View File

@ -63,6 +63,7 @@ void PairTable::compute(int eflag, int vflag)
int i,j,ii,jj,inum,jnum,itype,jtype,itable;
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
double rsq,factor_lj,fraction,value,a,b;
char estr[128];
int *ilist,*jlist,*numneigh,**firstneigh;
Table *tb;
@ -109,25 +110,37 @@ void PairTable::compute(int eflag, int vflag)
if (rsq < cutsq[itype][jtype]) {
tb = &tables[tabindex[itype][jtype]];
if (rsq < tb->innersq)
error->one(FLERR,"Pair distance < table inner cutoff");
if (rsq < tb->innersq) {
sprintf(estr,"Pair distance < table inner cutoff: "
"ijtype %d %d dist %g",itype,jtype,sqrt(rsq));
error->one(FLERR,estr);
}
if (tabstyle == LOOKUP) {
itable = static_cast<int> ((rsq - tb->innersq) * tb->invdelta);
if (itable >= tlm1)
error->one(FLERR,"Pair distance > table outer cutoff");
if (itable >= tlm1) {
sprintf(estr,"Pair distance > table outer cutoff: "
"ijtype %d %d dist %g",itype,jtype,sqrt(rsq));
error->one(FLERR,estr);
}
fpair = factor_lj * tb->f[itable];
} else if (tabstyle == LINEAR) {
itable = static_cast<int> ((rsq - tb->innersq) * tb->invdelta);
if (itable >= tlm1)
error->one(FLERR,"Pair distance > table outer cutoff");
if (itable >= tlm1) {
sprintf(estr,"Pair distance > table outer cutoff: "
"ijtype %d %d dist %g",itype,jtype,sqrt(rsq));
error->one(FLERR,estr);
}
fraction = (rsq - tb->rsq[itable]) * tb->invdelta;
value = tb->f[itable] + fraction*tb->df[itable];
fpair = factor_lj * value;
} else if (tabstyle == SPLINE) {
itable = static_cast<int> ((rsq - tb->innersq) * tb->invdelta);
if (itable >= tlm1)
error->one(FLERR,"Pair distance > table outer cutoff");
if (itable >= tlm1) {
sprintf(estr,"Pair distance > table outer cutoff: "
"ijtype %d %d dist %g",itype,jtype,sqrt(rsq));
error->one(FLERR,estr);
}
b = (rsq - tb->rsq[itable]) * tb->invdelta;
a = 1.0 - b;
value = a * tb->f[itable] + b * tb->f[itable+1] +