diff --git a/src/GPU/fix_gpu.cpp b/src/GPU/fix_gpu.cpp index c10af08d32..081eb3a3a2 100644 --- a/src/GPU/fix_gpu.cpp +++ b/src/GPU/fix_gpu.cpp @@ -94,6 +94,7 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : _gpu_mode = GPU_NEIGH; _particle_split = 1.0; int nthreads = 1; + int newtonflag = 0; int threads_per_atom = -1; double binsize = -1; char *opencl_flags = NULL; @@ -113,6 +114,11 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : if (_particle_split == 0.0 || _particle_split > 1.0) error->all(FLERR,"Illegal package GPU command"); iarg += 2; + } else if (strcmp(arg[iarg],"newton") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal package gpu command"); + if (strcmp(arg[iarg]+1,"off") == 0) newtonflag = 0; + else if (strcmp(arg[iarg]+1,"on") == 0) newtonflag = 1; + else error->all(FLERR,"Illegal package gpu command"); } else if (strcmp(arg[iarg],"gpuID") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal package gpu command"); first_gpu = force->inumeric(FLERR,arg[iarg+1]); @@ -150,9 +156,12 @@ FixGPU::FixGPU(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR,"No OpenMP support compiled in"); #endif - // set newton_pair = 0 since required by all GPU pair styles + // set newton pair flag + // require newtonflag = 0 since currently required by all GPU pair styles - force->newton_pair = 0; + if (newtonflag == 1) error->all(FLERR,"Illegal package gpu command"); + + force->newton_pair = newtonflag; if (force->newton_pair || force->newton_bond) force->newton = 1; else force->newton = 0;