git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15324 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -38,6 +38,7 @@ using namespace MathConst;
|
||||
|
||||
enum{ATOM,MOLECULE};
|
||||
enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
||||
enum{DIST_UNIFORM,DIST_GAUSSIAN};
|
||||
|
||||
#define EPSILON 1.0e6
|
||||
|
||||
@ -169,6 +170,10 @@ FixDeposit::FixDeposit(LAMMPS *lmp, int narg, char **arg) :
|
||||
vyhi *= yscale;
|
||||
vzlo *= zscale;
|
||||
vzhi *= zscale;
|
||||
xmid *= xscale;
|
||||
ymid *= yscale;
|
||||
zmid *= zscale;
|
||||
sigma *= xscale; // same as in region sphere
|
||||
tx *= xscale;
|
||||
ty *= yscale;
|
||||
tz *= zscale;
|
||||
@ -336,15 +341,19 @@ void FixDeposit::pre_exchange()
|
||||
attempt++;
|
||||
|
||||
// choose random position for new particle within region
|
||||
|
||||
coord[0] = xlo + random->uniform() * (xhi-xlo);
|
||||
coord[1] = ylo + random->uniform() * (yhi-ylo);
|
||||
coord[2] = zlo + random->uniform() * (zhi-zlo);
|
||||
while (domain->regions[iregion]->match(coord[0],coord[1],coord[2]) == 0) {
|
||||
coord[0] = xlo + random->uniform() * (xhi-xlo);
|
||||
coord[1] = ylo + random->uniform() * (yhi-ylo);
|
||||
coord[2] = zlo + random->uniform() * (zhi-zlo);
|
||||
}
|
||||
if (distflag == DIST_UNIFORM) {
|
||||
do {
|
||||
coord[0] = xlo + random->uniform() * (xhi-xlo);
|
||||
coord[1] = ylo + random->uniform() * (yhi-ylo);
|
||||
coord[2] = zlo + random->uniform() * (zhi-zlo);
|
||||
} while (domain->regions[iregion]->match(coord[0],coord[1],coord[2]) == 0);
|
||||
} else if (distflag == DIST_GAUSSIAN) {
|
||||
do {
|
||||
coord[0] = xmid + random->gaussian() * sigma;
|
||||
coord[1] = ymid + random->gaussian() * sigma;
|
||||
coord[2] = zmid + random->gaussian() * sigma;
|
||||
} while (domain->regions[iregion]->match(coord[0],coord[1],coord[2]) == 0);
|
||||
} else error->all(FLERR,"Unknown particle distribution in fix deposit");
|
||||
|
||||
// adjust vertical coord by offset
|
||||
|
||||
@ -644,6 +653,9 @@ void FixDeposit::options(int narg, char **arg)
|
||||
maxattempt = 10;
|
||||
rateflag = 0;
|
||||
vxlo = vxhi = vylo = vyhi = vzlo = vzhi = 0.0;
|
||||
distflag = DIST_UNIFORM;
|
||||
sigma = 1.0;
|
||||
xmid = ymid = zmid = 0.0;
|
||||
scaleflag = 1;
|
||||
targetflag = 0;
|
||||
|
||||
@ -759,6 +771,14 @@ void FixDeposit::options(int narg, char **arg)
|
||||
else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1;
|
||||
else error->all(FLERR,"Illegal fix deposit command");
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"gaussian") == 0) {
|
||||
if (iarg+5 > narg) error->all(FLERR,"Illegal fix deposit command");
|
||||
xmid = force->numeric(FLERR,arg[iarg+1]);
|
||||
ymid = force->numeric(FLERR,arg[iarg+2]);
|
||||
zmid = force->numeric(FLERR,arg[iarg+3]);
|
||||
sigma = force->numeric(FLERR,arg[iarg+4]);
|
||||
distflag = DIST_GAUSSIAN;
|
||||
iarg += 5;
|
||||
} else if (strcmp(arg[iarg],"target") == 0) {
|
||||
if (iarg+4 > narg) error->all(FLERR,"Illegal fix deposit command");
|
||||
tx = force->numeric(FLERR,arg[iarg+1]);
|
||||
|
||||
Reference in New Issue
Block a user