Merge branch 'master' into USER-DPD_kokkos as of patch 20 Jan 2017.
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="17 Jan 2017 version">
|
||||
<META NAME="docnumber" CONTENT="20 Jan 2017 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
@ -21,7 +21,7 @@
|
||||
<H1></H1>
|
||||
|
||||
LAMMPS Documentation :c,h3
|
||||
17 Jan 2017 version :c,h4
|
||||
20 Jan 2017 version :c,h4
|
||||
|
||||
Version info: :h4
|
||||
|
||||
|
||||
@ -229,11 +229,16 @@ dramatically in z. For example, for a triclinic system with all three
|
||||
tilt factors set to the maximum limit, the PPPM grid should be
|
||||
increased roughly by a factor of 1.5 in the y direction and 2.0 in the
|
||||
z direction as compared to the same system using a cubic orthogonal
|
||||
simulation cell. One way to ensure the accuracy requirement is being
|
||||
met is to run a short simulation at the maximum expected tilt or
|
||||
length, note the required grid size, and then use the
|
||||
simulation cell. One way to handle this issue if you have a long
|
||||
simulation where the box size changes dramatically, is to break it
|
||||
into shorter simulations (multiple "run"_run.html commands). This
|
||||
works because the grid size is re-computed at the beginning of each
|
||||
run. Another way to ensure the descired accuracy requirement is met
|
||||
is to run a short simulation at the maximum expected tilt or length,
|
||||
note the required grid size, and then use the
|
||||
"kspace_modify"_kspace_modify.html {mesh} command to manually set the
|
||||
PPPM grid size to this value.
|
||||
PPPM grid size to this value for the long run. The simulation then
|
||||
will be "too accurate" for some portion of the run.
|
||||
|
||||
RMS force errors in real space for {ewald} and {pppm} are estimated
|
||||
using equation 18 of "(Kolafa)"_#Kolafa, which is also referenced as
|
||||
@ -285,6 +290,8 @@ LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
See "Section 5"_Section_accelerate.html of the manual for
|
||||
more instructions on how to use the accelerated styles effectively.
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
Note that the long-range electrostatic solvers in LAMMPS assume conducting
|
||||
|
||||
@ -43,6 +43,8 @@ using namespace LAMMPS_NS;
|
||||
PairDPDfdt::PairDPDfdt(LAMMPS *lmp) : Pair(lmp)
|
||||
{
|
||||
random = NULL;
|
||||
splitFDT_flag = false;
|
||||
a0_is_zero = false;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -94,7 +96,7 @@ void PairDPDfdt::compute(int eflag, int vflag)
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
if (splitFDT_flag) {
|
||||
for (ii = 0; ii < inum; ii++) {
|
||||
if (!a0_is_zero) for (ii = 0; ii < inum; ii++) {
|
||||
i = ilist[ii];
|
||||
xtmp = x[i][0];
|
||||
ytmp = x[i][1];
|
||||
@ -287,6 +289,8 @@ void PairDPDfdt::coeff(int narg, char **arg)
|
||||
double sigma_one = force->numeric(FLERR,arg[3]);
|
||||
double cut_one = cut_global;
|
||||
|
||||
a0_is_zero = (a0_one == 0.0); // Typical use with SSA is to set a0 to zero
|
||||
|
||||
if (narg == 5) cut_one = force->numeric(FLERR,arg[4]);
|
||||
|
||||
int count = 0;
|
||||
@ -371,6 +375,7 @@ void PairDPDfdt::read_restart(FILE *fp)
|
||||
|
||||
allocate();
|
||||
|
||||
a0_is_zero = true; // start with assumption that a0 is zero
|
||||
int i,j;
|
||||
int me = comm->me;
|
||||
for (i = 1; i <= atom->ntypes; i++)
|
||||
@ -386,6 +391,7 @@ void PairDPDfdt::read_restart(FILE *fp)
|
||||
MPI_Bcast(&a0[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
|
||||
MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
|
||||
a0_is_zero = a0_is_zero && (a0[i][j] == 0.0); // verify the zero assumption
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,6 +50,7 @@ class PairDPDfdt : public Pair {
|
||||
double cut_global;
|
||||
int seed;
|
||||
bool splitFDT_flag;
|
||||
bool a0_is_zero;
|
||||
|
||||
void allocate();
|
||||
|
||||
|
||||
@ -724,7 +724,7 @@ void Neighbor::init_pair()
|
||||
// IJ newton = 1 for newton on, 2 for newton off
|
||||
inewton = requests[i]->newton;
|
||||
if (inewton == 0) inewton = force->newton_pair ? 1 : 2;
|
||||
jnewton = requests[i]->newton;
|
||||
jnewton = requests[j]->newton;
|
||||
if (jnewton == 0) jnewton = force->newton_pair ? 1 : 2;
|
||||
if (inewton != jnewton) continue;
|
||||
|
||||
@ -1100,7 +1100,7 @@ void Neighbor::init_topology()
|
||||
|
||||
void Neighbor::print_pairwise_info()
|
||||
{
|
||||
int i,j,m;
|
||||
int i,m;
|
||||
char str[128];
|
||||
const char *kind;
|
||||
FILE *out;
|
||||
@ -1169,8 +1169,8 @@ void Neighbor::print_pairwise_info()
|
||||
else if (requests[i]->respamiddle) kind = "respa/middle";
|
||||
else if (requests[i]->respaouter) kind = "respa/outer";
|
||||
else if (requests[i]->half_from_full) kind = "half/from/full";
|
||||
if (requests[i]->occasional) fprintf(out,", occasional");
|
||||
else fprintf(out,", perpetual");
|
||||
if (requests[i]->occasional) fprintf(out,", %s, occasional",kind);
|
||||
else fprintf(out,", %s, perpetual",kind);
|
||||
if (requests[i]->ghost) fprintf(out,", ghost");
|
||||
if (requests[i]->ssa) fprintf(out,", ssa");
|
||||
if (requests[i]->omp) fprintf(out,", omp");
|
||||
|
||||
@ -1 +1 @@
|
||||
#define LAMMPS_VERSION "17 Jan 2017"
|
||||
#define LAMMPS_VERSION "20 Jan 2017"
|
||||
|
||||
Reference in New Issue
Block a user