git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1472 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -58,6 +58,7 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
flagx = flagy = flagz = 1;
|
flagx = flagy = flagz = 1;
|
||||||
for (int i = 1; i <= atom->ntypes; i++) ratio[i] = 1.0;
|
for (int i = 1; i <= atom->ntypes; i++) ratio[i] = 1.0;
|
||||||
iregion = -1;
|
iregion = -1;
|
||||||
|
scalefactor = 1.0;
|
||||||
|
|
||||||
int iarg = 7;
|
int iarg = 7;
|
||||||
while (iarg < narg) {
|
while (iarg < narg) {
|
||||||
@ -76,9 +77,15 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
ratio[itype] = scale;
|
ratio[itype] = scale;
|
||||||
iarg += 3;
|
iarg += 3;
|
||||||
} else if (strcmp(arg[iarg],"region") == 0) {
|
} else if (strcmp(arg[iarg],"region") == 0) {
|
||||||
|
if (iarg+2 > narg) error->all("Illegal fix langevin command");
|
||||||
iregion = domain->find_region(arg[iarg+1]);
|
iregion = domain->find_region(arg[iarg+1]);
|
||||||
if (iregion == -1) error->all("Fix langevin region ID does not exist");
|
if (iregion == -1) error->all("Fix langevin region ID does not exist");
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg],"weight") == 0) {
|
||||||
|
if (iarg+2 > narg) error->all("Illegal fix langevin command");
|
||||||
|
scalefactor = atof(arg[iarg+1]);
|
||||||
|
if (scalefactor <= 0.0) error->all("Illegal fix langevin command");
|
||||||
|
iarg += 2;
|
||||||
} else error->all("Illegal fix langevin command");
|
} else error->all("Illegal fix langevin command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,7 +121,7 @@ void FixLangevin::init()
|
|||||||
|
|
||||||
for (int i = 1; i <= atom->ntypes; i++) {
|
for (int i = 1; i <= atom->ntypes; i++) {
|
||||||
gfactor1[i] = - atom->mass[i] / t_period / force->ftm2v;
|
gfactor1[i] = - atom->mass[i] / t_period / force->ftm2v;
|
||||||
gfactor2[i] = sqrt(atom->mass[i]) *
|
gfactor2[i] = scalefactor * sqrt(atom->mass[i]) *
|
||||||
sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / force->ftm2v;
|
sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / force->ftm2v;
|
||||||
gfactor1[i] *= 1.0/ratio[i];
|
gfactor1[i] *= 1.0/ratio[i];
|
||||||
gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
||||||
@ -203,7 +210,7 @@ void FixLangevin::reset_target(double t_new)
|
|||||||
void FixLangevin::reset_dt()
|
void FixLangevin::reset_dt()
|
||||||
{
|
{
|
||||||
for (int i = 1; i <= atom->ntypes; i++) {
|
for (int i = 1; i <= atom->ntypes; i++) {
|
||||||
gfactor2[i] = sqrt(atom->mass[i]) *
|
gfactor2[i] = scalefactor * sqrt(atom->mass[i]) *
|
||||||
sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / force->ftm2v;
|
sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / force->ftm2v;
|
||||||
gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@ class FixLangevin : public Fix {
|
|||||||
double t_start,t_stop,t_period;
|
double t_start,t_stop,t_period;
|
||||||
int flagx,flagy,flagz,iregion;
|
int flagx,flagy,flagz,iregion;
|
||||||
double *gfactor1,*gfactor2,*ratio;
|
double *gfactor1,*gfactor2,*ratio;
|
||||||
|
double scalefactor;
|
||||||
|
|
||||||
int nlevels_respa;
|
int nlevels_respa;
|
||||||
class RanMars *random;
|
class RanMars *random;
|
||||||
|
|||||||
Reference in New Issue
Block a user