Merge pull request #1707 from charlessievers/lammps_gjf

Lammps gjf small updates
This commit is contained in:
Axel Kohlmeyer
2019-10-08 23:06:36 +02:00
committed by GitHub
2 changed files with 20 additions and 11 deletions

View File

@ -246,11 +246,11 @@ velocity given in "Gronbech-Jensen/Farago"_#Gronbech-Jensen; this velocity
is shown to be systematically lower than the target temperature by a small
amount, which grows quadratically with the timestep.
The {gjf} option {vhalf} outputs the 2GJ half-step velocity given in
"Gronbech Jensen/Gronbech-Jensen"_#2Gronbech-Jensen; this velocity is shown
to not have any linear statistical errors for any stable time step.
"Gronbech Jensen/Gronbech-Jensen"_#2Gronbech-Jensen; for linear systems,
this velocity is shown to not have any statistical errors for any stable time step.
An overview of statistically correct Boltzmann and Maxwell-Boltzmann
sampling of true on-site and true half-step velocities is given in
"Gronbech-Jensen_#1Gronbech-Jensen.
"Gronbech-Jensen"_#1Gronbech-Jensen.
Regardless of the choice of output velocity, the sampling of the configurational
distribution of atom positions is the same, and linearly consistent with the
target temperature.

View File

@ -240,7 +240,7 @@ void FixLangevin::init()
if (strcmp(id,modify->fix[i]->id) == 0) before = 0;
else if ((modify->fmask[i] && utils::strmatch(modify->fix[i]->style,"^nve")) && before) flag = 1;
}
if (flag && comm->me == 0)
if (flag)
error->all(FLERR,"Fix langevin gjf should come before fix nve");
}
@ -1007,12 +1007,21 @@ void FixLangevin::reset_dt()
{
if (atom->mass) {
for (int i = 1; i <= atom->ntypes; i++) {
if (gjfflag)
gfactor2[i] = sqrt(atom->mass[i]) *
sqrt(2.0*force->boltz/t_period/update->dt/force->mvv2e) /
force->ftm2v;
else
gfactor2[i] = sqrt(atom->mass[i]) *
sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) /
force->ftm2v;
gfactor2[i] *= 1.0/sqrt(ratio[i]);
}
}
if (gjfflag) {
gjfa = (1.0-update->dt/2.0/t_period)/(1.0+update->dt/2.0/t_period);
gjfsib = sqrt(1.0+update->dt/2.0/t_period);
}
}
/* ---------------------------------------------------------------------- */