forked from lijiext/lammps
Adding in a new slab option for Jeremy Templeton. Invoked by "kspace_modify slab nozforce", which run slab mode with no long-range z forces.
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@8464 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
56ca4db42c
commit
4a0601f875
|
@ -94,7 +94,7 @@ void Ewald::init()
|
|||
|
||||
if (slabflag == 0 && domain->nonperiodic > 0)
|
||||
error->all(FLERR,"Cannot use nonperiodic boundaries with Ewald");
|
||||
if (slabflag == 1) {
|
||||
if (slabflag) {
|
||||
if (domain->xperiodic != 1 || domain->yperiodic != 1 ||
|
||||
domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1)
|
||||
error->all(FLERR,"Incorrect boundaries with slab Ewald");
|
||||
|
@ -382,7 +382,7 @@ void Ewald::compute(int eflag, int vflag)
|
|||
for (i = 0; i < nlocal; i++) {
|
||||
f[i][0] += qscale * q[i]*ek[i][0];
|
||||
f[i][1] += qscale * q[i]*ek[i][1];
|
||||
f[i][2] += qscale * q[i]*ek[i][2];
|
||||
if (slabflag != 2) f[i][2] += qscale * q[i]*ek[i][2];
|
||||
}
|
||||
|
||||
// global energy
|
||||
|
@ -426,7 +426,7 @@ void Ewald::compute(int eflag, int vflag)
|
|||
|
||||
// 2d slab correction
|
||||
|
||||
if (slabflag) slabcorr();
|
||||
if (slabflag == 1) slabcorr();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -131,7 +131,7 @@ void PPPM::init()
|
|||
|
||||
if (slabflag == 0 && domain->nonperiodic > 0)
|
||||
error->all(FLERR,"Cannot use nonperiodic boundaries with PPPM");
|
||||
if (slabflag == 1) {
|
||||
if (slabflag) {
|
||||
if (domain->xperiodic != 1 || domain->yperiodic != 1 ||
|
||||
domain->boundary[2][0] != 1 || domain->boundary[2][1] != 1)
|
||||
error->all(FLERR,"Incorrect boundaries with slab PPPM");
|
||||
|
@ -800,7 +800,7 @@ void PPPM::compute(int eflag, int vflag)
|
|||
|
||||
// 2d slab correction
|
||||
|
||||
if (slabflag) slabcorr();
|
||||
if (slabflag == 1) slabcorr();
|
||||
|
||||
// convert atoms back from lamda to box coords
|
||||
|
||||
|
@ -2247,7 +2247,7 @@ void PPPM::fieldforce()
|
|||
const double qfactor = force->qqrd2e * scale * q[i];
|
||||
f[i][0] += qfactor*ekx;
|
||||
f[i][1] += qfactor*eky;
|
||||
f[i][2] += qfactor*ekz;
|
||||
if (slabflag != 2) f[i][2] += qfactor*ekz;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -189,14 +189,18 @@ void KSpace::modify_params(int narg, char **arg)
|
|||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"slab") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal kspace_modify command");
|
||||
slab_volfactor = atof(arg[iarg+1]);
|
||||
if (strcmp(arg[iarg+1],"nozforce") == 0) {
|
||||
slabflag = 2;
|
||||
} else {
|
||||
slabflag = 1;
|
||||
slab_volfactor = atof(arg[iarg+1]);
|
||||
if (slab_volfactor <= 1.0)
|
||||
error->all(FLERR,"Bad kspace_modify slab parameter");
|
||||
if (slab_volfactor < 2.0 && comm->me == 0)
|
||||
error->warning(FLERR,"Kspace_modify slab param < 2.0 may "
|
||||
"cause unphysical behavior");
|
||||
}
|
||||
iarg += 2;
|
||||
if (slab_volfactor <= 1.0)
|
||||
error->all(FLERR,"Bad kspace_modify slab parameter");
|
||||
if (slab_volfactor < 2.0 && comm->me == 0)
|
||||
error->warning(FLERR,"Kspace_modify slab param < 2.0 may "
|
||||
"cause unphysical behavior");
|
||||
slabflag = 1;
|
||||
} else if (strcmp(arg[iarg],"compute") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal kspace_modify command");
|
||||
if (strcmp(arg[iarg+1],"yes") == 0) compute_flag = 1;
|
||||
|
|
Loading…
Reference in New Issue