USER-INTEL with non-orthogonal box

Hi,

Is the USER-INTEL package set up to work with a non-orthogonal simulation box? My LAMMPS version is 12 Dec 2018. I looked in the Manual and did not find anything mentioned under the restrictions section of the documentation for USER-INTEL package.

why not just run a test and see if you can reproduce the results from a run with the equivalent non-USER-INTEL styles?
you should also upgrade to a newer LAMMPS version, since there have been multiple bugfixes and corrections styles and compiler settings since the version you are using.

axel.

Thanks Axel for the reply. I had tried running equivalent simulations and have been seeing issues. When running with USER-INTEL, the energy/stresses reported by LAMMPS is significantly different depending on whether the box is defined as triclinic (with zero tilts) or as orthorhombic. I.e., just adding the command “change_box all triclinic” to the script changes the reported energy/stresses when running with USER-INTEL. The energy/stresses agrees with the equivalent non-USER-INTEL run when the box has no tilts. Attached is a minimal script to reproduce this (comment/un-comment the line “change_box all triclinic”).

I am using the lammps module available on the NERSC Cori KNL (module load lammps/2018.12.12-knl) and I am running in double precision mode. I invoke the USER-INTEL using the command-line switch (srun -n 68 lmp_cori -in test.in -pk intel 0 mode double -sf intel)

I will try upgrading to a newer LAMMPS version, but wanted to make sure that non-orthogonal boxes are supported in the USER-INTEL package.

test.in (456 Bytes)

Hi Nithin,

Thanks for sending a reproducer. I will take a look. It might be a few days…

Best, - Mike

Hi Nithin,

This is indeed a bug. I expect the fix (https://github.com/lammps/lammps/pull/1813) should be in LAMMPS soon, but you can also edit src/USER-INTEL/npair_intel.cpp in the

Dec 2018 version by changing the two lines prefixed with the ‘-‘ to the lines prefixed with the ‘+’:

diff --git a/src/USER-INTEL/npair_intel.cpp b/src/USER-INTEL/npair_intel.cpp

index a82d3f2…4256e03 100644

— a/src/USER-INTEL/npair_intel.cpp

+++ b/src/USER-INTEL/npair_intel.cpp

@@ -360,7 +360,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list,

if (THREE) ttag[u] = tag[j];

}

  • if (FULL == 0 || TRI == 1) {
  • if (FULL == 0 && TRI != 1) {

icount = 0;

istart = ncount;

IP_PRE_edge_align(istart, sizeof(int));

@@ -392,7 +392,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list,

// ---------------------- Loop over i bin

int n = 0;

  • if (FULL == 0 || TRI == 1) {
  • if (FULL == 0 && TRI != 1) {

#if defined(LMP_SIMD_COMPILER)

#pragma vector aligned

#pragma ivdep

Thanks Michael, for the patch. I rebuilt my 2018 LAMMPS with the patch and it has fixed the issue.

Best,