diff --git a/src/SNAP/compute_sna_atom.cpp b/src/SNAP/compute_sna_atom.cpp index a2c1f55788e64b57e14b671cbf7e88767af47a57..5ca63a7e850b27ed9420ee86985273475638d54e 100644 --- a/src/SNAP/compute_sna_atom.cpp +++ b/src/SNAP/compute_sna_atom.cpp @@ -115,7 +115,8 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) : } else error->all(FLERR,"Illegal compute sna/atom command"); } - snaptr = new SNA*[comm->nthreads]; + nthreads = comm->nthreads; + snaptr = new SNA*[nthreads]; #if defined(_OPENMP) #pragma omp parallel default(none) shared(lmp,rfac0,twojmax,rmin0,switchflag,bzeroflag) #endif @@ -146,6 +147,8 @@ ComputeSNAAtom::~ComputeSNAAtom() memory->destroy(radelem); memory->destroy(wjelem); memory->destroy(cutsq); + for (int tid = 0; tid<nthreads; tid++) + delete snaptr[tid]; delete [] snaptr; } diff --git a/src/SNAP/compute_sna_atom.h b/src/SNAP/compute_sna_atom.h index b22eea71b5ae2b103a0fcaee2dadf1b1a1d835bb..2f6fb189963f99c823bb2397f6cbc651e50d318f 100644 --- a/src/SNAP/compute_sna_atom.h +++ b/src/SNAP/compute_sna_atom.h @@ -45,6 +45,7 @@ class ComputeSNAAtom : public Compute { class SNA** snaptr; double cutmax; int quadraticflag; + int nthreads; }; } diff --git a/src/SNAP/compute_snad_atom.cpp b/src/SNAP/compute_snad_atom.cpp index 800d1942e3f9da7a18f30d0c3e9b4241b39e3534..da56555055285899456c4a4aefa1c11711aa107e 100644 --- a/src/SNAP/compute_snad_atom.cpp +++ b/src/SNAP/compute_snad_atom.cpp @@ -148,6 +148,8 @@ ComputeSNADAtom::~ComputeSNADAtom() memory->destroy(radelem); memory->destroy(wjelem); memory->destroy(cutsq); + for (int tid = 0; tid<nthreads; tid++) + delete snaptr[tid]; delete [] snaptr; } diff --git a/src/SNAP/compute_snad_atom.h b/src/SNAP/compute_snad_atom.h index a33e6047c2c2bd0fca6d25d8a2b948fef9f7d4f9..92003a9bc572ba57e0a7a79294b3190ccea433e1 100644 --- a/src/SNAP/compute_snad_atom.h +++ b/src/SNAP/compute_snad_atom.h @@ -47,6 +47,7 @@ class ComputeSNADAtom : public Compute { class SNA** snaptr; double cutmax; int quadraticflag; + int nthreads; }; } diff --git a/src/SNAP/compute_snav_atom.cpp b/src/SNAP/compute_snav_atom.cpp index 2b823f7b8b5804071a50723d2296d2e15c7d55b0..27bfc1bef0b972d6507173f3fe1523a7d21783e9 100644 --- a/src/SNAP/compute_snav_atom.cpp +++ b/src/SNAP/compute_snav_atom.cpp @@ -142,6 +142,9 @@ ComputeSNAVAtom::~ComputeSNAVAtom() memory->destroy(radelem); memory->destroy(wjelem); memory->destroy(cutsq); + + for (int tid = 0; tid<nthreads; tid++) + delete snaptr[tid]; delete [] snaptr; } diff --git a/src/SNAP/compute_snav_atom.h b/src/SNAP/compute_snav_atom.h index 7d39786ef98723991b5e35a28c3e219daeb2d8db..9be5e1d3896aed6a881e444c3d71b2574aac4e58 100644 --- a/src/SNAP/compute_snav_atom.h +++ b/src/SNAP/compute_snav_atom.h @@ -46,6 +46,7 @@ class ComputeSNAVAtom : public Compute { double *wjelem; class SNA** snaptr; int quadraticflag; + int nthreads; }; }