Commit f9bc81b9 authored by Tim Mattox's avatar Tim Mattox
Browse files

Merge branch 'master' into USER-DPD_kokkos as of patch 20 Jan 2017.

parents 0887ff12 caea8973
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
<!-- 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

+11 −4
Original line number Diff line number Diff line
@@ -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
+7 −1
Original line number Diff line number Diff line
@@ -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
      }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ class PairDPDfdt : public Pair {
  double cut_global;
  int seed;
  bool splitFDT_flag;
  bool a0_is_zero;

  void allocate();

+4 −4
Original line number Diff line number Diff line
@@ -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");
Loading