More
This commit is contained in:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user