git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@9295 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -115,8 +115,8 @@ void PairBrownian::compute(int eflag, int vflag)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -503,7 +503,7 @@ void PairBrownian::init_style()
|
|||||||
flagdeform = 1;
|
flagdeform = 1;
|
||||||
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
||||||
flagwall = 1; // Walls exist
|
flagwall = 1; // Walls exist
|
||||||
if (((FixWall *) modify->fix[i])->varflag ) {
|
if (((FixWall *) modify->fix[i])->xflag ) {
|
||||||
flagwall = 2; // Moving walls exist
|
flagwall = 2; // Moving walls exist
|
||||||
wallfix = (FixWall *) modify->fix[i];
|
wallfix = (FixWall *) modify->fix[i];
|
||||||
}
|
}
|
||||||
@ -523,10 +523,10 @@ void PairBrownian::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
// Since fix->wall->init happens after pair->init_style
|
// Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|||||||
@ -101,8 +101,8 @@ void PairBrownianPoly::compute(int eflag, int vflag)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -363,10 +363,10 @@ void PairBrownianPoly::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
// Since fix->wall->init happens after pair->init_style
|
// Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|||||||
@ -181,8 +181,8 @@ void PairLubricate::compute(int eflag, int vflag)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -597,7 +597,7 @@ void PairLubricate::init_style()
|
|||||||
}
|
}
|
||||||
if (strstr(modify->fix[i]->style,"wall") != NULL){
|
if (strstr(modify->fix[i]->style,"wall") != NULL){
|
||||||
flagwall = 1; // Walls exist
|
flagwall = 1; // Walls exist
|
||||||
if (((FixWall *) modify->fix[i])->varflag ) {
|
if (((FixWall *) modify->fix[i])->xflag ) {
|
||||||
flagwall = 2; // Moving walls exist
|
flagwall = 2; // Moving walls exist
|
||||||
wallfix = (FixWall *) modify->fix[i];
|
wallfix = (FixWall *) modify->fix[i];
|
||||||
}
|
}
|
||||||
@ -619,10 +619,10 @@ void PairLubricate::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
//Since fix->wall->init happens after pair->init_style
|
//Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|||||||
@ -627,8 +627,8 @@ void PairLubricateU::compute_Fh(double **x)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -866,8 +866,8 @@ void PairLubricateU::compute_RU()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -1143,8 +1143,8 @@ void PairLubricateU::compute_RU(double **x)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -1879,7 +1879,7 @@ void PairLubricateU::init_style()
|
|||||||
flagdeform = 1;
|
flagdeform = 1;
|
||||||
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
||||||
flagwall = 1; // Walls exist
|
flagwall = 1; // Walls exist
|
||||||
if (((FixWall *) modify->fix[i])->varflag ) {
|
if (((FixWall *) modify->fix[i])->xflag ) {
|
||||||
flagwall = 2; // Moving walls exist
|
flagwall = 2; // Moving walls exist
|
||||||
wallfix = (FixWall *) modify->fix[i];
|
wallfix = (FixWall *) modify->fix[i];
|
||||||
}
|
}
|
||||||
@ -1899,10 +1899,10 @@ void PairLubricateU::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
//Since fix->wall->init happens after pair->init_style
|
//Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|||||||
@ -379,8 +379,8 @@ void PairLubricateUPoly::compute_Fh(double **x)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -660,8 +660,8 @@ void PairLubricateUPoly::compute_RU(double **x)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -1212,7 +1212,7 @@ void PairLubricateUPoly::init_style()
|
|||||||
flagdeform = 1;
|
flagdeform = 1;
|
||||||
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
else if (strstr(modify->fix[i]->style,"wall") != NULL){
|
||||||
flagwall = 1; // Walls exist
|
flagwall = 1; // Walls exist
|
||||||
if (((FixWall *) modify->fix[i])->varflag ) {
|
if (((FixWall *) modify->fix[i])->xflag ) {
|
||||||
flagwall = 2; // Moving walls exist
|
flagwall = 2; // Moving walls exist
|
||||||
wallfix = (FixWall *) modify->fix[i];
|
wallfix = (FixWall *) modify->fix[i];
|
||||||
}
|
}
|
||||||
@ -1233,10 +1233,10 @@ void PairLubricateUPoly::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
//Since fix->wall->init happens after pair->init_style
|
//Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|||||||
@ -165,8 +165,8 @@ void PairLubricatePoly::compute(int eflag, int vflag)
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
if (side == 0) walllo[dim] = wallcoord;
|
if (side == 0) walllo[dim] = wallcoord;
|
||||||
@ -492,7 +492,7 @@ void PairLubricatePoly::init_style()
|
|||||||
}
|
}
|
||||||
if (strstr(modify->fix[i]->style,"wall") != NULL){
|
if (strstr(modify->fix[i]->style,"wall") != NULL){
|
||||||
flagwall = 1; // Walls exist
|
flagwall = 1; // Walls exist
|
||||||
if (((FixWall *) modify->fix[i])->varflag ) {
|
if (((FixWall *) modify->fix[i])->xflag ) {
|
||||||
flagwall = 2; // Moving walls exist
|
flagwall = 2; // Moving walls exist
|
||||||
wallfix = (FixWall *) modify->fix[i];
|
wallfix = (FixWall *) modify->fix[i];
|
||||||
}
|
}
|
||||||
@ -511,10 +511,10 @@ void PairLubricatePoly::init_style()
|
|||||||
for (int m = 0; m < wallfix->nwall; m++){
|
for (int m = 0; m < wallfix->nwall; m++){
|
||||||
int dim = wallfix->wallwhich[m] / 2;
|
int dim = wallfix->wallwhich[m] / 2;
|
||||||
int side = wallfix->wallwhich[m] % 2;
|
int side = wallfix->wallwhich[m] % 2;
|
||||||
if (wallfix->wallstyle[m] == VARIABLE){
|
if (wallfix->xstyle[m] == VARIABLE){
|
||||||
wallfix->varindex[m] = input->variable->find(wallfix->varstr[m]);
|
wallfix->xindex[m] = input->variable->find(wallfix->xstr[m]);
|
||||||
//Since fix->wall->init happens after pair->init_style
|
//Since fix->wall->init happens after pair->init_style
|
||||||
wallcoord = input->variable->compute_equal(wallfix->varindex[m]);
|
wallcoord = input->variable->compute_equal(wallfix->xindex[m]);
|
||||||
}
|
}
|
||||||
else wallcoord = wallfix->coord0[m];
|
else wallcoord = wallfix->coord0[m];
|
||||||
|
|
||||||
|
|||||||
106
src/fix_wall.cpp
106
src/fix_wall.cpp
@ -49,6 +49,8 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
fldflag = 0;
|
fldflag = 0;
|
||||||
int pbcflag = 0;
|
int pbcflag = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++) xstr[i] = estr[i] = sstr[i] = NULL;
|
||||||
|
|
||||||
int iarg = 3;
|
int iarg = 3;
|
||||||
while (iarg < narg) {
|
while (iarg < narg) {
|
||||||
if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) ||
|
if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) ||
|
||||||
@ -70,23 +72,41 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
wallwhich[nwall] = newwall;
|
wallwhich[nwall] = newwall;
|
||||||
if (strcmp(arg[iarg+1],"EDGE") == 0) {
|
if (strcmp(arg[iarg+1],"EDGE") == 0) {
|
||||||
wallstyle[nwall] = EDGE;
|
xstyle[nwall] = EDGE;
|
||||||
int dim = wallwhich[nwall] / 2;
|
int dim = wallwhich[nwall] / 2;
|
||||||
int side = wallwhich[nwall] % 2;
|
int side = wallwhich[nwall] % 2;
|
||||||
if (side == 0) coord0[nwall] = domain->boxlo[dim];
|
if (side == 0) coord0[nwall] = domain->boxlo[dim];
|
||||||
else coord0[nwall] = domain->boxhi[dim];
|
else coord0[nwall] = domain->boxhi[dim];
|
||||||
} else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) {
|
} else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) {
|
||||||
wallstyle[nwall] = VARIABLE;
|
xstyle[nwall] = VARIABLE;
|
||||||
int n = strlen(&arg[iarg+1][2]) + 1;
|
int n = strlen(&arg[iarg+1][2]) + 1;
|
||||||
varstr[nwall] = new char[n];
|
xstr[nwall] = new char[n];
|
||||||
strcpy(varstr[nwall],&arg[iarg+1][2]);
|
strcpy(xstr[nwall],&arg[iarg+1][2]);
|
||||||
} else {
|
} else {
|
||||||
wallstyle[nwall] = CONSTANT;
|
xstyle[nwall] = CONSTANT;
|
||||||
coord0[nwall] = atof(arg[iarg+1]);
|
coord0[nwall] = atof(arg[iarg+1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
epsilon[nwall] = atof(arg[iarg+2]);
|
if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) {
|
||||||
sigma[nwall] = atof(arg[iarg+3]);
|
int n = strlen(&arg[iarg+2][2]) + 1;
|
||||||
|
estr[nwall] = new char[n];
|
||||||
|
strcpy(estr[nwall],&arg[iarg+2][2]);
|
||||||
|
estyle[nwall] = VARIABLE;
|
||||||
|
} else {
|
||||||
|
epsilon[nwall] = atof(arg[iarg+2]);
|
||||||
|
estyle[nwall] = CONSTANT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr(arg[iarg+3],"v_") == arg[iarg+3]) {
|
||||||
|
int n = strlen(&arg[iarg+3][2]) + 1;
|
||||||
|
sstr[nwall] = new char[n];
|
||||||
|
strcpy(sstr[nwall],&arg[iarg+3][2]);
|
||||||
|
sstyle[nwall] = VARIABLE;
|
||||||
|
} else {
|
||||||
|
sigma[nwall] = atof(arg[iarg+3]);
|
||||||
|
sstyle[nwall] = CONSTANT;
|
||||||
|
}
|
||||||
|
|
||||||
cutoff[nwall] = atof(arg[iarg+4]);
|
cutoff[nwall] = atof(arg[iarg+4]);
|
||||||
nwall++;
|
nwall++;
|
||||||
iarg += 5;
|
iarg += 5;
|
||||||
@ -136,11 +156,11 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// scale factors for CONSTANT and VARIABLE walls
|
// scale factors for wall position 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] != EDGE) flag = 1;
|
if (xstyle[m] != EDGE) flag = 1;
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
if (scaleflag && domain->lattice == NULL)
|
if (scaleflag && domain->lattice == NULL)
|
||||||
@ -154,18 +174,24 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
else xscale = yscale = zscale = 1.0;
|
else xscale = yscale = zscale = 1.0;
|
||||||
|
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] != CONSTANT) continue;
|
if (xstyle[m] != CONSTANT) continue;
|
||||||
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
if (wallwhich[m] < YLO) coord0[m] *= xscale;
|
||||||
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
|
||||||
else coord0[m] *= zscale;
|
else coord0[m] *= zscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// set varflag if any wall positions are variable
|
// set xflag if any wall positions are variable
|
||||||
|
// set vflag if any wall positions are variable
|
||||||
|
// set wstyle to VARIABLE if either epsilon or sigma is a variable
|
||||||
|
|
||||||
varflag = 0;
|
vflag = xflag = 0;
|
||||||
for (int m = 0; m < nwall; m++)
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] == VARIABLE) varflag = 1;
|
if (xstyle[m] == VARIABLE) xflag = 1;
|
||||||
|
if (xflag || estyle[m] == VARIABLE || sstyle[m] == VARIABLE) vflag = 1;
|
||||||
|
if (estyle[m] == VARIABLE || sstyle[m] == VARIABLE) wstyle[m] = VARIABLE;
|
||||||
|
else wstyle[m] = CONSTANT;
|
||||||
|
}
|
||||||
|
|
||||||
eflag = 0;
|
eflag = 0;
|
||||||
for (int m = 0; m <= nwall; m++) ewall[m] = 0.0;
|
for (int m = 0; m <= nwall; m++) ewall[m] = 0.0;
|
||||||
@ -175,8 +201,11 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
FixWall::~FixWall()
|
FixWall::~FixWall()
|
||||||
{
|
{
|
||||||
for (int m = 0; m < nwall; m++)
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] == VARIABLE) delete [] varstr[m];
|
delete [] xstr[m];
|
||||||
|
delete [] estr[m];
|
||||||
|
delete [] sstr[m];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -203,12 +232,27 @@ void FixWall::init()
|
|||||||
dt = update->dt;
|
dt = update->dt;
|
||||||
|
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] != VARIABLE) continue;
|
if (xstyle[m] == VARIABLE) {
|
||||||
varindex[m] = input->variable->find(varstr[m]);
|
xindex[m] = input->variable->find(xstr[m]);
|
||||||
if (varindex[m] < 0)
|
if (xindex[m] < 0)
|
||||||
error->all(FLERR,"Variable name for fix wall does not exist");
|
error->all(FLERR,"Variable name for fix wall does not exist");
|
||||||
if (!input->variable->equalstyle(varindex[m]))
|
if (!input->variable->equalstyle(xindex[m]))
|
||||||
error->all(FLERR,"Variable for fix wall is invalid style");
|
error->all(FLERR,"Variable for fix wall is invalid style");
|
||||||
|
}
|
||||||
|
if (estyle[m] == VARIABLE) {
|
||||||
|
eindex[m] = input->variable->find(estr[m]);
|
||||||
|
if (eindex[m] < 0)
|
||||||
|
error->all(FLERR,"Variable name for fix wall does not exist");
|
||||||
|
if (!input->variable->equalstyle(eindex[m]))
|
||||||
|
error->all(FLERR,"Variable for fix wall is invalid style");
|
||||||
|
}
|
||||||
|
if (sstyle[m] == VARIABLE) {
|
||||||
|
sindex[m] = input->variable->find(sstr[m]);
|
||||||
|
if (sindex[m] < 0)
|
||||||
|
error->all(FLERR,"Variable name for fix wall does not exist");
|
||||||
|
if (!input->variable->equalstyle(sindex[m]))
|
||||||
|
error->all(FLERR,"Variable for fix wall is invalid style");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup coefficients
|
// setup coefficients
|
||||||
@ -256,23 +300,31 @@ void FixWall::post_force(int vflag)
|
|||||||
for (int m = 0; m <= nwall; m++) ewall[m] = 0.0;
|
for (int m = 0; m <= nwall; m++) ewall[m] = 0.0;
|
||||||
|
|
||||||
// coord = current position of wall
|
// coord = current position of wall
|
||||||
// evaluate variable if necessary, wrap with clear/add
|
// evaluate variables if necessary, wrap with clear/add
|
||||||
|
// for epsilon/sigma variables need to re-invoke precompute()
|
||||||
|
|
||||||
if (varflag) modify->clearstep_compute();
|
if (vflag) modify->clearstep_compute();
|
||||||
|
|
||||||
double coord;
|
double coord;
|
||||||
for (int m = 0; m < nwall; m++) {
|
for (int m = 0; m < nwall; m++) {
|
||||||
if (wallstyle[m] == VARIABLE) {
|
if (xstyle[m] == VARIABLE) {
|
||||||
coord = input->variable->compute_equal(varindex[m]);
|
coord = input->variable->compute_equal(xindex[m]);
|
||||||
if (wallwhich[m] < YLO) coord *= xscale;
|
if (wallwhich[m] < YLO) coord *= xscale;
|
||||||
else if (wallwhich[m] < ZLO) coord *= yscale;
|
else if (wallwhich[m] < ZLO) coord *= yscale;
|
||||||
else coord *= zscale;
|
else coord *= zscale;
|
||||||
} else coord = coord0[m];
|
} else coord = coord0[m];
|
||||||
|
if (wstyle[m] == VARIABLE) {
|
||||||
|
if (estyle[m] == VARIABLE)
|
||||||
|
epsilon[m] = input->variable->compute_equal(eindex[m]);
|
||||||
|
if (sstyle[m] == VARIABLE)
|
||||||
|
sigma[m] = input->variable->compute_equal(sindex[m]);
|
||||||
|
precompute(m);
|
||||||
|
}
|
||||||
|
|
||||||
wall_particle(m,wallwhich[m],coord);
|
wall_particle(m,wallwhich[m],coord);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (varflag) modify->addstep_compute(update->ntimestep + 1);
|
if (vflag) modify->addstep_compute(update->ntimestep + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|||||||
@ -20,6 +20,14 @@ namespace LAMMPS_NS {
|
|||||||
|
|
||||||
class FixWall : public Fix {
|
class FixWall : public Fix {
|
||||||
public:
|
public:
|
||||||
|
int nwall;
|
||||||
|
int wallwhich[6];
|
||||||
|
double coord0[6];
|
||||||
|
int xflag; // 1 if any wall position is a variable
|
||||||
|
int xstyle[6];
|
||||||
|
int xindex[6];
|
||||||
|
char *xstr[6];
|
||||||
|
|
||||||
FixWall(class LAMMPS *, int, char **);
|
FixWall(class LAMMPS *, int, char **);
|
||||||
virtual ~FixWall();
|
virtual ~FixWall();
|
||||||
int setmask();
|
int setmask();
|
||||||
@ -36,20 +44,15 @@ class FixWall : public Fix {
|
|||||||
virtual void precompute(int) = 0;
|
virtual void precompute(int) = 0;
|
||||||
virtual void wall_particle(int, int, double) = 0;
|
virtual void wall_particle(int, int, double) = 0;
|
||||||
|
|
||||||
int nwall;
|
|
||||||
int wallwhich[6];
|
|
||||||
double coord0[6];
|
|
||||||
int varflag;
|
|
||||||
int wallstyle[6];
|
|
||||||
int varindex[6];
|
|
||||||
char *varstr[6];
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
double epsilon[6],sigma[6],cutoff[6];
|
double epsilon[6],sigma[6],cutoff[6];
|
||||||
double ewall[7],ewall_all[7];
|
double ewall[7],ewall_all[7];
|
||||||
double xscale,yscale,zscale;
|
double xscale,yscale,zscale;
|
||||||
int eflag;
|
int estyle[6],sstyle[6],wstyle[6];
|
||||||
|
int eindex[6],sindex[6];
|
||||||
|
char *estr[6],*sstr[6];
|
||||||
|
int vflag; // 1 if any wall position,epsilon,sigma is a var
|
||||||
|
int eflag; // per-wall flag for energy summation
|
||||||
int nlevels_respa;
|
int nlevels_respa;
|
||||||
double dt;
|
double dt;
|
||||||
int fldflag;
|
int fldflag;
|
||||||
|
|||||||
Reference in New Issue
Block a user