cleaner implementation
This commit is contained in:
@ -180,15 +180,21 @@ void PairSNAP::compute(int eflag, int vflag)
|
|||||||
|
|
||||||
snaptr->compute_deidrj(fij);
|
snaptr->compute_deidrj(fij);
|
||||||
|
|
||||||
f[i][0] += fij[0] * scale[itype][itype];
|
// scaling
|
||||||
f[i][1] += fij[1] * scale[itype][itype];
|
fij[0] *= scale[itype][itype];
|
||||||
f[i][2] += fij[2] * scale[itype][itype];
|
fij[1] *= scale[itype][itype];
|
||||||
f[j][0] -= fij[0] * scale[itype][itype];
|
fij[2] *= scale[itype][itype];
|
||||||
f[j][1] -= fij[1] * scale[itype][itype];
|
|
||||||
f[j][2] -= fij[2] * scale[itype][itype];
|
f[i][0] += fij[0];
|
||||||
|
f[i][1] += fij[1];
|
||||||
|
f[i][2] += fij[2];
|
||||||
|
f[j][0] -= fij[0];
|
||||||
|
f[j][1] -= fij[1];
|
||||||
|
f[j][2] -= fij[2];
|
||||||
|
|
||||||
// tally per-atom virial contribution
|
// tally per-atom virial contribution
|
||||||
|
|
||||||
|
|
||||||
if (vflag)
|
if (vflag)
|
||||||
ev_tally_xyz(i,j,nlocal,newton_pair,0.0,0.0,
|
ev_tally_xyz(i,j,nlocal,newton_pair,0.0,0.0,
|
||||||
fij[0],fij[1],fij[2],
|
fij[0],fij[1],fij[2],
|
||||||
@ -203,7 +209,7 @@ void PairSNAP::compute(int eflag, int vflag)
|
|||||||
// evdwl = energy of atom I, sum over coeffs_k * Bi_k
|
// evdwl = energy of atom I, sum over coeffs_k * Bi_k
|
||||||
|
|
||||||
double* coeffi = coeffelem[ielem];
|
double* coeffi = coeffelem[ielem];
|
||||||
evdwl = coeffi[0] * scale[itype][itype] ;
|
evdwl = coeffi[0] ;
|
||||||
// snaptr->copy_bi2bvec();
|
// snaptr->copy_bi2bvec();
|
||||||
|
|
||||||
// E = beta.B + 0.5*B^t.alpha.B
|
// E = beta.B + 0.5*B^t.alpha.B
|
||||||
@ -211,7 +217,7 @@ void PairSNAP::compute(int eflag, int vflag)
|
|||||||
// linear contributions
|
// linear contributions
|
||||||
|
|
||||||
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
|
||||||
evdwl += coeffi[icoeff+1]*bispectrum[ii][icoeff] * scale[itype][itype];
|
evdwl += coeffi[icoeff+1]*bispectrum[ii][icoeff];
|
||||||
|
|
||||||
// quadratic contributions
|
// quadratic contributions
|
||||||
|
|
||||||
@ -219,13 +225,14 @@ void PairSNAP::compute(int eflag, int vflag)
|
|||||||
int k = ncoeff+1;
|
int k = ncoeff+1;
|
||||||
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
|
||||||
double bveci = bispectrum[ii][icoeff];
|
double bveci = bispectrum[ii][icoeff];
|
||||||
evdwl += 0.5*coeffi[k++]*bveci*bveci * scale[itype][itype];
|
evdwl += 0.5*coeffi[k++]*bveci*bveci;
|
||||||
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) {
|
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) {
|
||||||
double bvecj = bispectrum[ii][jcoeff];
|
double bvecj = bispectrum[ii][jcoeff];
|
||||||
evdwl += coeffi[k++]*bveci*bvecj * scale[itype][itype];
|
evdwl += coeffi[k++]*bveci*bvecj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
evdwl *= scale[itype][itype];
|
||||||
ev_tally_full(i,2.0*evdwl,0.0,0.0,0.0,0.0,0.0);
|
ev_tally_full(i,2.0*evdwl,0.0,0.0,0.0,0.0,0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user