git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@7202 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -28,7 +28,7 @@
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
enum{XLO,XHI,YLO,YHI,ZLO,ZHI};
|
||||
enum{NONE,EDGE,CONSTANT,VARIABLE};
|
||||
enum{EDGE,CONSTANT,VARIABLE};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -126,17 +126,16 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
||||
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2)
|
||||
error->all(FLERR,"Cannot use fix wall zlo/zhi for a 2d simulation");
|
||||
|
||||
// scale coord for CONSTANT walls
|
||||
// scale factors for CONSTANT and VARIABLE walls
|
||||
|
||||
int flag = 0;
|
||||
for (int m = 0; m < nwall; m++)
|
||||
if (wallstyle[m] == CONSTANT) flag = 1;
|
||||
if (wallstyle[m] != EDGE) flag = 1;
|
||||
|
||||
if (flag) {
|
||||
if (scaleflag && domain->lattice == NULL)
|
||||
error->all(FLERR,"Use of fix wall with undefined lattice");
|
||||
|
||||
double xscale,yscale,zscale;
|
||||
if (scaleflag) {
|
||||
xscale = domain->lattice->xlattice;
|
||||
yscale = domain->lattice->ylattice;
|
||||
@ -144,12 +143,11 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
||||
}
|
||||
else xscale = yscale = zscale = 1.0;
|
||||
|
||||
double scale;
|
||||
for (int m = 0; m < nwall; m++) {
|
||||
if (wallwhich[m] < YLO) scale = xscale;
|
||||
else if (wallwhich[m] < ZLO) scale = yscale;
|
||||
else scale = zscale;
|
||||
if (wallstyle[m] == CONSTANT) coord0[m] *= scale;
|
||||
if (wallstyle[m] != CONSTANT) continue;
|
||||
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
||||
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
||||
else coord0[m] *= zscale;
|
||||
}
|
||||
}
|
||||
|
||||
@ -254,9 +252,12 @@ void FixWall::post_force(int vflag)
|
||||
|
||||
double coord;
|
||||
for (int m = 0; m < nwall; m++) {
|
||||
if (wallstyle[m] == VARIABLE)
|
||||
if (wallstyle[m] == VARIABLE) {
|
||||
coord = input->variable->compute_equal(varindex[m]);
|
||||
else coord = coord0[m];
|
||||
if (wallwhich[m] < YLO) coord *= xscale;
|
||||
else if (wallwhich[m] < ZLO) coord *= yscale;
|
||||
else coord *= zscale;
|
||||
} else coord = coord0[m];
|
||||
|
||||
wall_particle(m,wallwhich[m],coord);
|
||||
}
|
||||
|
||||
@ -44,6 +44,7 @@ class FixWall : public Fix {
|
||||
int varindex[6];
|
||||
int eflag,varflag;
|
||||
double ewall[7],ewall_all[7];
|
||||
double xscale,yscale,zscale;
|
||||
int nlevels_respa;
|
||||
double dt;
|
||||
int fldflag;
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
enum{XLO,XHI,YLO,YHI,ZLO,ZHI};
|
||||
enum{NONE,EDGE,CONSTANT,VARIABLE};
|
||||
enum{EDGE,CONSTANT,VARIABLE};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -104,19 +104,19 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
for (int m = 0; m < nwall; m++)
|
||||
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2)
|
||||
error->all(FLERR,"Cannot use fix wall/reflect zlo/zhi for a 2d simulation");
|
||||
error->all(FLERR,
|
||||
"Cannot use fix wall/reflect zlo/zhi for a 2d simulation");
|
||||
|
||||
// scale coord for CONSTANT walls
|
||||
// scale factors for CONSTANT and VARIABLE walls
|
||||
|
||||
int flag = 0;
|
||||
for (int m = 0; m < nwall; m++)
|
||||
if (wallstyle[m] == CONSTANT) flag = 1;
|
||||
if (wallstyle[m] != EDGE) flag = 1;
|
||||
|
||||
if (flag) {
|
||||
if (scaleflag && domain->lattice == NULL)
|
||||
error->all(FLERR,"Use of fix wall with undefined lattice");
|
||||
|
||||
double xscale,yscale,zscale;
|
||||
if (scaleflag) {
|
||||
xscale = domain->lattice->xlattice;
|
||||
yscale = domain->lattice->ylattice;
|
||||
@ -124,12 +124,11 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) :
|
||||
}
|
||||
else xscale = yscale = zscale = 1.0;
|
||||
|
||||
double scale;
|
||||
for (int m = 0; m < nwall; m++) {
|
||||
if (wallwhich[m] < YLO) scale = xscale;
|
||||
else if (wallwhich[m] < ZLO) scale = yscale;
|
||||
else scale = zscale;
|
||||
if (wallstyle[m] == CONSTANT) coord0[m] *= scale;
|
||||
if (wallstyle[m] != CONSTANT) continue;
|
||||
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
||||
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
||||
else coord0[m] *= zscale;
|
||||
}
|
||||
}
|
||||
|
||||
@ -198,9 +197,12 @@ void FixWallReflect::post_integrate()
|
||||
if (varflag) modify->clearstep_compute();
|
||||
|
||||
for (int m = 0; m < nwall; m++) {
|
||||
if (wallstyle[m] == VARIABLE)
|
||||
if (wallstyle[m] == VARIABLE) {
|
||||
coord = input->variable->compute_equal(varindex[m]);
|
||||
else coord = coord0[m];
|
||||
if (wallwhich[m] < YLO) coord *= xscale;
|
||||
else if (wallwhich[m] < ZLO) coord *= yscale;
|
||||
else coord *= zscale;
|
||||
} else coord = coord0[m];
|
||||
|
||||
dim = wallwhich[m] / 2;
|
||||
side = wallwhich[m] % 2;
|
||||
|
||||
@ -39,6 +39,7 @@ class FixWallReflect : public Fix {
|
||||
char *varstr[6];
|
||||
int varindex[6];
|
||||
int varflag;
|
||||
double xscale,yscale,zscale;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user