diff --git a/src/fix_nve_limit.cpp b/src/fix_nve_limit.cpp index 25b3b3c4c752d2f59028304cef211317498671f9..6195c4f9449f447a141ae0423907559717f1d7cc 100644 --- a/src/fix_nve_limit.cpp +++ b/src/fix_nve_limit.cpp @@ -31,6 +31,10 @@ FixNVELimit::FixNVELimit(LAMMPS *lmp, int narg, char **arg) : { if (narg != 4) error->all("Illegal fix nve/limit command"); + scalar_flag = 1; + scalar_vector_freq = 1; + extscalar = 1; + xlimit = atof(arg[3]); } @@ -53,6 +57,7 @@ void FixNVELimit::init() dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; vlimitsq = (xlimit/dtv) * (xlimit/dtv); + ncount = 0; if (strcmp(update->integrate_style,"respa") == 0) step_respa = ((Respa *) update->integrate)->step; @@ -85,6 +90,7 @@ void FixNVELimit::initial_integrate() vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; if (vsq > vlimitsq) { + ncount++; scale = sqrt(vlimitsq/vsq); v[i][0] *= scale; v[i][1] *= scale; @@ -107,6 +113,7 @@ void FixNVELimit::initial_integrate() vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; if (vsq > vlimitsq) { + ncount++; scale = sqrt(vlimitsq/vsq); v[i][0] *= scale; v[i][1] *= scale; @@ -145,6 +152,7 @@ void FixNVELimit::final_integrate() vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; if (vsq > vlimitsq) { + ncount++; scale = sqrt(vlimitsq/vsq); v[i][0] *= scale; v[i][1] *= scale; @@ -163,6 +171,7 @@ void FixNVELimit::final_integrate() vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; if (vsq > vlimitsq) { + ncount++; scale = sqrt(vlimitsq/vsq); v[i][0] *= scale; v[i][1] *= scale; @@ -202,3 +211,15 @@ void FixNVELimit::reset_dt() dtf = 0.5 * update->dt * force->ftm2v; vlimitsq = (xlimit/dtv) * (xlimit/dtv); } + +/* ---------------------------------------------------------------------- + energy of indenter interaction +------------------------------------------------------------------------- */ + +double FixNVELimit::compute_scalar() +{ + double one = ncount; + double all; + MPI_Allreduce(&one,&all,1,MPI_DOUBLE,MPI_SUM,world); + return all; +} diff --git a/src/fix_nve_limit.h b/src/fix_nve_limit.h index 2c1d61dd8bdc4408146a9d85dd019e6ec3131d62..a0c804ebf898c4c64c81972170a6d5f05ed816c7 100644 --- a/src/fix_nve_limit.h +++ b/src/fix_nve_limit.h @@ -28,11 +28,12 @@ class FixNVELimit : public Fix { void initial_integrate_respa(int, int); void final_integrate_respa(int); void reset_dt(); + double compute_scalar(); private: double dtv,dtf; double *step_respa; - int mass_require; + int mass_require,ncount; double xlimit,vlimitsq; }; diff --git a/src/neighbor.cpp b/src/neighbor.cpp index f0013714eae869c7841b53f504864c988580d85b..9904e73bda77e7f2bd81741bba189c5c0fa2aeee 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -434,7 +434,7 @@ void Neighbor::init() } // detect lists that are connected to other lists - // if-the-else sequence is important + // if-then-else sequence is important // since don't want to re-process skip or copy lists further down // skip: point this list at request->otherlist, copy skip info from request // copy: point this list at request->otherlist