diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index f53b6a9e3f..2a14a1a37c 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -69,55 +69,57 @@ PairEAM::PairEAM(LAMMPS *lmp) : Pair(lmp) PairEAM::~PairEAM() { - memory->destroy(rho); - memory->destroy(fp); + if (!copymode) { + memory->destroy(rho); + memory->destroy(fp); - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - delete [] map; - delete [] type2frho; - memory->destroy(type2rhor); - memory->destroy(type2z2r); - } - - if (funcfl) { - for (int i = 0; i < nfuncfl; i++) { - delete [] funcfl[i].file; - memory->destroy(funcfl[i].frho); - memory->destroy(funcfl[i].rhor); - memory->destroy(funcfl[i].zr); + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + delete [] map; + delete [] type2frho; + memory->destroy(type2rhor); + memory->destroy(type2z2r); } - memory->sfree(funcfl); + + if (funcfl) { + for (int i = 0; i < nfuncfl; i++) { + delete [] funcfl[i].file; + memory->destroy(funcfl[i].frho); + memory->destroy(funcfl[i].rhor); + memory->destroy(funcfl[i].zr); + } + memory->sfree(funcfl); + } + + if (setfl) { + for (int i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; + delete [] setfl->elements; + delete [] setfl->mass; + memory->destroy(setfl->frho); + memory->destroy(setfl->rhor); + memory->destroy(setfl->z2r); + delete setfl; + } + + if (fs) { + for (int i = 0; i < fs->nelements; i++) delete [] fs->elements[i]; + delete [] fs->elements; + delete [] fs->mass; + memory->destroy(fs->frho); + memory->destroy(fs->rhor); + memory->destroy(fs->z2r); + delete fs; + } + + memory->destroy(frho); + memory->destroy(rhor); + memory->destroy(z2r); + + memory->destroy(frho_spline); + memory->destroy(rhor_spline); + memory->destroy(z2r_spline); } - - if (setfl) { - for (int i = 0; i < setfl->nelements; i++) delete [] setfl->elements[i]; - delete [] setfl->elements; - delete [] setfl->mass; - memory->destroy(setfl->frho); - memory->destroy(setfl->rhor); - memory->destroy(setfl->z2r); - delete setfl; - } - - if (fs) { - for (int i = 0; i < fs->nelements; i++) delete [] fs->elements[i]; - delete [] fs->elements; - delete [] fs->mass; - memory->destroy(fs->frho); - memory->destroy(fs->rhor); - memory->destroy(fs->z2r); - delete fs; - } - - memory->destroy(frho); - memory->destroy(rhor); - memory->destroy(z2r); - - memory->destroy(frho_spline); - memory->destroy(rhor_spline); - memory->destroy(z2r_spline); } /* ---------------------------------------------------------------------- */ diff --git a/src/MANYBODY/pair_eam.h b/src/MANYBODY/pair_eam.h index 6047a20186..ca97175704 100644 --- a/src/MANYBODY/pair_eam.h +++ b/src/MANYBODY/pair_eam.h @@ -25,6 +25,7 @@ PairStyle(eam,PairEAM) namespace LAMMPS_NS { + class PairEAM : public Pair { public: friend class FixSemiGrandCanonicalMC; // Alex Stukowski option @@ -100,8 +101,8 @@ class PairEAM : public Pair { }; Fs *fs; - void allocate(); - void array2spline(); + virtual void allocate(); + virtual void array2spline(); void interpolate(int, double, double *, double **); void grab(FILE *, int, double *);