This commit is contained in:
Aidan Thompson
2022-03-11 15:07:18 -07:00
parent 877b764a36
commit 4d13282120
7 changed files with 21 additions and 56 deletions

View File

@ -161,14 +161,7 @@ void MLIAPDescriptorSNAP::compute_forces(class MLIAPData* data)
for (int jj = 0; jj < ninside; jj++) {
int j = snaptr->inside[jj];
if (chemflag)
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
else
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, 0,
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_deidrj(fij);
@ -237,15 +230,7 @@ void MLIAPDescriptorSNAP::compute_force_gradients(class MLIAPData* data)
for (int jj = 0; jj < ninside; jj++) {
const int j = snaptr->inside[jj];
if (chemflag)
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
else
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, 0,
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_dbidrj();
// Accumulate gamma_lk*dB_k/dRi, -gamma_lk**dB_k/dRj
@ -312,15 +297,7 @@ void MLIAPDescriptorSNAP::compute_descriptor_gradients(class MLIAPData* data)
ij = ij0;
for (int jj = 0; jj < ninside; jj++) {
if (chemflag)
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
else
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, 0,
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_dbidrj();
// Accumulate dB_k^i/dRi, dB_k^i/dRj

View File

@ -301,9 +301,7 @@ void ComputeSNADAtom::compute_peratom()
for (int jj = 0; jj < ninside; jj++) {
const int j = snaptr->inside[jj];
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_dbidrj();
// Accumulate -dBi/dRi, -dBi/dRj

View File

@ -355,9 +355,7 @@ void ComputeSnap::compute_array()
for (int jj = 0; jj < ninside; jj++) {
const int j = snaptr->inside[jj];
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_dbidrj();
// Accumulate dBi/dRi, -dBi/dRj

View File

@ -295,9 +295,7 @@ void ComputeSNAVAtom::compute_peratom()
for (int jj = 0; jj < ninside; jj++) {
const int j = snaptr->inside[jj];
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_dbidrj();
// Accumulate -dBi/dRi*Ri, -dBi/dRj*Rj

View File

@ -182,14 +182,7 @@ void PairSNAP::compute(int eflag, int vflag)
for (int jj = 0; jj < ninside; jj++) {
int j = snaptr->inside[jj];
if (chemflag)
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, snaptr->element[jj],
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
else
snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj],
snaptr->rcutij[jj], jj, 0,
snaptr->rinnerij[jj], snaptr->drinnerij[jj]);
snaptr->compute_duidrj(jj);
snaptr->compute_deidrj(fij);

View File

@ -963,15 +963,15 @@ void SNA::compute_dbidrj()
calculate derivative of Ui w.r.t. atom j
------------------------------------------------------------------------- */
void SNA::compute_duidrj(double* rij, double wj, double rcut, int jj,
int jelem, double rinner, double drinner)
void SNA::compute_duidrj(int jj)
{
double rsq, r, x, y, z, z0, theta0, cs, sn;
double dz0dr;
double rcut = rcutij[jj];
x = rij[0];
y = rij[1];
z = rij[2];
x = rij[jj][0];
y = rij[jj][1];
z = rij[jj][2];
rsq = x * x + y * y + z * z;
r = sqrt(rsq);
double rscale0 = rfac0 * MY_PI / (rcut - rmin0);
@ -981,8 +981,10 @@ void SNA::compute_duidrj(double* rij, double wj, double rcut, int jj,
z0 = r * cs / sn;
dz0dr = z0 / r - (r*rscale0) * (rsq + z0 * z0) / rsq;
elem_duarray = jelem;
compute_duarray(x, y, z, z0, r, dz0dr, wj, rcut, jj, rinner, drinner);
if (chem_flag) elem_duarray = element[jj];
else elem_duarray = 0;
compute_duarray(x, y, z, z0, r, dz0dr, wj[jj], rcut, jj);
}
/* ---------------------------------------------------------------------- */
@ -1137,8 +1139,7 @@ void SNA::compute_uarray(double x, double y, double z,
void SNA::compute_duarray(double x, double y, double z,
double z0, double r, double dz0dr,
double wj, double rcut, int jj,
double rinner, double drinner)
double wj, double rcut, int jj)
{
double r0inv;
double a_r, a_i, b_r, b_i;
@ -1269,8 +1270,8 @@ void SNA::compute_duarray(double x, double y, double z,
double dsfac = compute_dsfac(r, rcut);
if (switch_inner_flag) {
double sfac_inner = compute_sfac_inner(r, rinner, drinner);
dsfac = dsfac*sfac_inner + sfac*compute_dsfac_inner(r, rinner, drinner);
double sfac_inner = compute_sfac_inner(r, rinnerij[jj], drinnerij[jj]);
dsfac = dsfac*sfac_inner + sfac*compute_dsfac_inner(r, rinnerij[jj], drinnerij[jj]);
sfac *= sfac_inner;
}

View File

@ -53,7 +53,7 @@ class SNA : protected Pointers {
// functions for derivatives
void compute_duidrj(double *, double, double, int, int, double, double);
void compute_duidrj(int);
void compute_dbidrj();
void compute_deidrj(double *);
double compute_sfac(double, double);
@ -125,7 +125,7 @@ class SNA : protected Pointers {
double deltacg(int, int, int);
void compute_ncoeff();
void compute_duarray(double, double, double, double, double, double,
double, double, int, double, double);
double, double, int);
// Sets the style for the switching function
// 0 = none