From 02572a4099a6dfc6dc7ddae2c908446a54a491b3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer <akohlmey@gmail.com> Date: Tue, 18 Jul 2017 14:41:38 -0400 Subject: [PATCH] add workaround that allows pair style quip to work with -DLAMMPS_BIGBIG, assuming tags are still only 32-bit signed integer --- src/USER-QUIP/pair_quip.cpp | 47 +++++++++++++++++++++++-------------- src/USER-QUIP/pair_quip.h | 5 ---- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/USER-QUIP/pair_quip.cpp b/src/USER-QUIP/pair_quip.cpp index ccd71235e7..fa946641a5 100644 --- a/src/USER-QUIP/pair_quip.cpp +++ b/src/USER-QUIP/pair_quip.cpp @@ -125,26 +125,37 @@ void PairQUIP::compute(int eflag, int vflag) lattice[8] = domain->zprd; #if defined(LAMMPS_BIGBIG) - error->all(FLERR,"Pair style quip does not support -DLAMMPS_BIGBIG"); - // quip_lammps_longint_wrapper( - // (&nlocal,&nghost,atomic_numbers,tag, - // &inum,&sum_num_neigh,ilist, - // quip_num_neigh,quip_neigh,lattice, - // quip_potential,&n_quip_potential,&x[0][0], - // &quip_energy,quip_local_e,quip_virial,quip_local_virial,quip_force); + int *tmptag = new int[ntotal]; + int tmplarge = 0, toolarge = 0; + for (ii = 0; ii < ntotal; ++ii) { + tmptag[ii] = tag[ii]; + if (tag[ii] > MAXSMALLINT) tmplarge=1; + } + MPI_Allreduce(&tmplarge,&toolarge,1,MPI_INT,MPI_MAX,comm); + if (toolarge > 0) + error->all(FLERR,"Pair style quip does not support 64-bit atom IDs"); + + quip_lammps_wrapper(&nlocal,&nghost,atomic_numbers,tmptag, + &inum,&sum_num_neigh,ilist, + quip_num_neigh,quip_neigh,lattice, + quip_potential,&n_quip_potential,&x[0][0], + &quip_energy,quip_local_e,quip_virial, + quip_local_virial,quip_force); + + delete[] tmptag; #else - quip_lammps_wrapper - (&nlocal,&nghost,atomic_numbers,tag, - &inum,&sum_num_neigh,ilist, - quip_num_neigh,quip_neigh,lattice, - quip_potential,&n_quip_potential,&x[0][0], - &quip_energy,quip_local_e,quip_virial,quip_local_virial,quip_force); + quip_lammps_wrapper(&nlocal,&nghost,atomic_numbers,tag, + &inum,&sum_num_neigh,ilist, + quip_num_neigh,quip_neigh,lattice, + quip_potential,&n_quip_potential,&x[0][0], + &quip_energy,quip_local_e,quip_virial, + quip_local_virial,quip_force); #endif iquip = 0; for (ii = 0; ii < ntotal; ii++) { for( jj = 0; jj < 3; jj++ ) { - f[ii][jj] = quip_force[iquip]; + f[ii][jj] += quip_force[iquip]; iquip++; } } @@ -175,11 +186,11 @@ void PairQUIP::compute(int eflag, int vflag) vatom[ii][1] += quip_local_virial[iatom+4]; vatom[ii][2] += quip_local_virial[iatom+8]; vatom[ii][3] += (quip_local_virial[iatom+3] + - quip_local_virial[iatom+1])*0.5; + quip_local_virial[iatom+1])*0.5; vatom[ii][4] += (quip_local_virial[iatom+2] + - quip_local_virial[iatom+6])*0.5; + quip_local_virial[iatom+6])*0.5; vatom[ii][5] += (quip_local_virial[iatom+5] + - quip_local_virial[iatom+7])*0.5; + quip_local_virial[iatom+7])*0.5; iatom += 9; } } @@ -202,6 +213,8 @@ void PairQUIP::compute(int eflag, int vflag) void PairQUIP::settings(int narg, char **arg) { if (narg != 0) error->all(FLERR,"Illegal pair_style command"); + if (strncmp(force->pair->style,"hybrid",6) == 0) + error->all(FLERR,"Pair style quip is not compatible with hybrid styles"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-QUIP/pair_quip.h b/src/USER-QUIP/pair_quip.h index c785792410..985a43fd7e 100644 --- a/src/USER-QUIP/pair_quip.h +++ b/src/USER-QUIP/pair_quip.h @@ -29,11 +29,6 @@ extern "C" int*, int*, double*, int*, int*, double*, double*, double*, double*, double*, double*); - // void quip_lammps_longint_wrapper(int*, int*, int*, int64_t*, - // int*, int*, int*, - // int*, int*, double*, - // int*, int*, double*, - // double*, double*, double*, double*, double*); void quip_lammps_potential_initialise(int*, int*, double*, char*, int*, char*, int*); } -- GitLab