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;
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
enum{XLO,XHI,YLO,YHI,ZLO,ZHI};
|
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)
|
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2)
|
||||||
error->all(FLERR,"Cannot use fix wall zlo/zhi for a 2d simulation");
|
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;
|
int flag = 0;
|
||||||
for (int m = 0; m < nwall; m++)
|
for (int m = 0; m < nwall; m++)
|
||||||
if (wallstyle[m] == CONSTANT) flag = 1;
|
if (wallstyle[m] != EDGE) flag = 1;
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
if (scaleflag && domain->lattice == NULL)
|
if (scaleflag && domain->lattice == NULL)
|
||||||
error->all(FLERR,"Use of fix wall with undefined lattice");
|
error->all(FLERR,"Use of fix wall with undefined lattice");
|
||||||
|
|
||||||
double xscale,yscale,zscale;
|
|
||||||
if (scaleflag) {
|
if (scaleflag) {
|
||||||
xscale = domain->lattice->xlattice;
|
xscale = domain->lattice->xlattice;
|
||||||
yscale = domain->lattice->ylattice;
|
yscale = domain->lattice->ylattice;
|
||||||
@ -144,12 +143,11 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
}
|
}
|
||||||
else xscale = yscale = zscale = 1.0;
|
else xscale = yscale = zscale = 1.0;
|
||||||
|
|
||||||
double scale;
|
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallwhich[m] < YLO) scale = xscale;
|
if (wallstyle[m] != CONSTANT) continue;
|
||||||
else if (wallwhich[m] < ZLO) scale = yscale;
|
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
||||||
else scale = zscale;
|
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
||||||
if (wallstyle[m] == CONSTANT) coord0[m] *= scale;
|
else coord0[m] *= zscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,9 +252,12 @@ void FixWall::post_force(int vflag)
|
|||||||
|
|
||||||
double coord;
|
double coord;
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] == VARIABLE)
|
if (wallstyle[m] == VARIABLE) {
|
||||||
coord = input->variable->compute_equal(varindex[m]);
|
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);
|
wall_particle(m,wallwhich[m],coord);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,6 +44,7 @@ class FixWall : public Fix {
|
|||||||
int varindex[6];
|
int varindex[6];
|
||||||
int eflag,varflag;
|
int eflag,varflag;
|
||||||
double ewall[7],ewall_all[7];
|
double ewall[7],ewall_all[7];
|
||||||
|
double xscale,yscale,zscale;
|
||||||
int nlevels_respa;
|
int nlevels_respa;
|
||||||
double dt;
|
double dt;
|
||||||
int fldflag;
|
int fldflag;
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
using namespace LAMMPS_NS;
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
enum{XLO,XHI,YLO,YHI,ZLO,ZHI};
|
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++)
|
for (int m = 0; m < nwall; m++)
|
||||||
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2)
|
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;
|
int flag = 0;
|
||||||
for (int m = 0; m < nwall; m++)
|
for (int m = 0; m < nwall; m++)
|
||||||
if (wallstyle[m] == CONSTANT) flag = 1;
|
if (wallstyle[m] != EDGE) flag = 1;
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
if (scaleflag && domain->lattice == NULL)
|
if (scaleflag && domain->lattice == NULL)
|
||||||
error->all(FLERR,"Use of fix wall with undefined lattice");
|
error->all(FLERR,"Use of fix wall with undefined lattice");
|
||||||
|
|
||||||
double xscale,yscale,zscale;
|
|
||||||
if (scaleflag) {
|
if (scaleflag) {
|
||||||
xscale = domain->lattice->xlattice;
|
xscale = domain->lattice->xlattice;
|
||||||
yscale = domain->lattice->ylattice;
|
yscale = domain->lattice->ylattice;
|
||||||
@ -124,12 +124,11 @@ FixWallReflect::FixWallReflect(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
}
|
}
|
||||||
else xscale = yscale = zscale = 1.0;
|
else xscale = yscale = zscale = 1.0;
|
||||||
|
|
||||||
double scale;
|
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallwhich[m] < YLO) scale = xscale;
|
if (wallstyle[m] != CONSTANT) continue;
|
||||||
else if (wallwhich[m] < ZLO) scale = yscale;
|
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
||||||
else scale = zscale;
|
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
||||||
if (wallstyle[m] == CONSTANT) coord0[m] *= scale;
|
else coord0[m] *= zscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,9 +197,12 @@ void FixWallReflect::post_integrate()
|
|||||||
if (varflag) modify->clearstep_compute();
|
if (varflag) modify->clearstep_compute();
|
||||||
|
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] == VARIABLE)
|
if (wallstyle[m] == VARIABLE) {
|
||||||
coord = input->variable->compute_equal(varindex[m]);
|
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;
|
dim = wallwhich[m] / 2;
|
||||||
side = wallwhich[m] % 2;
|
side = wallwhich[m] % 2;
|
||||||
|
|||||||
@ -39,6 +39,7 @@ class FixWallReflect : public Fix {
|
|||||||
char *varstr[6];
|
char *varstr[6];
|
||||||
int varindex[6];
|
int varindex[6];
|
||||||
int varflag;
|
int varflag;
|
||||||
|
double xscale,yscale,zscale;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user