Commit 46ee159f authored by Aidan Thompson's avatar Aidan Thompson
Browse files

Added custom tally functions

parent 3cb825c3
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -241,10 +241,11 @@ void MLIAPDescriptorSNAP::backward(NeighList* list, double **beta, int vflag)
      f[j][1] -= fij[1];
      f[j][2] -= fij[2];

      // tally per-atom virial contribution
      // add in gloabl and per-atom virial contributions
      // this is optional and has no effect on force calculation
      
      if (vflag)
        pairmliap->ev_tally_xyz(i,j,nlocal,newton_pair,0.0,0.0,
        pairmliap->v_tally(i,j,
                     fij[0],fij[1],fij[2],
                     -snaptr->rij[jj][0],-snaptr->rij[jj][1],
                     -snaptr->rij[jj][2]);
+4 −1
Original line number Diff line number Diff line
@@ -57,6 +57,9 @@ void MLIAPModelLinear::gradient(NeighList* list, double **descriptors, double **
    for (int icoeff = 0; icoeff < ndescriptors; icoeff++)
      beta[ii][icoeff] = coeffi[icoeff+1];

    // add in contributions to global and per-atom energy
    // this is optional and has no effect on force calculation

    if (eflag) {

      // energy of atom I
@@ -69,7 +72,7 @@ void MLIAPModelLinear::gradient(NeighList* list, double **descriptors, double **
      for (int icoeff = 0; icoeff < ndescriptors; icoeff++)
        etmp += coeffi[icoeff+1]*descriptors[ii][icoeff];
      
      pairmliap->ev_tally_full(i,2.0*etmp,0.0,0.0,0.0,0.0,0.0);
      pairmliap->e_tally(i,etmp);
    }
  }
}
+4 −1
Original line number Diff line number Diff line
@@ -70,6 +70,9 @@ void MLIAPModelQuadratic::gradient(NeighList* list, double **descriptors, double
      }
    }

    // add in contributions to global and per-atom energy
    // this is optional and has no effect on force calculation
 
    if (eflag) {

      // energy of atom I
@@ -93,7 +96,7 @@ void MLIAPModelQuadratic::gradient(NeighList* list, double **descriptors, double
          etmp += coeffi[k++]*bveci*bvecj;
        }
      }
      pairmliap->ev_tally_full(i,2.0*etmp,0.0,0.0,0.0,0.0,0.0);
      pairmliap->e_tally(i,etmp);
    }
  }
}
+57 −0
Original line number Diff line number Diff line
@@ -216,6 +216,63 @@ void PairMLIAP::coeff(int narg, char **arg)
    error->all(FLERR,"Incompatible model and descriptor definitions");
}

/* ----------------------------------------------------------------------
   add energy of atom i to global and per-atom energy
   this is called by MLIAPModel::gradient()
------------------------------------------------------------------------- */

void PairMLIAP::e_tally(int i, double evdwl)
{
  if (eflag_global) eng_vdwl += evdwl;
  if (eflag_atom) eatom[i] += evdwl;
}

/* ----------------------------------------------------------------------
   add virial contribution into global and per-atom accumulators
   this is called by MLIAPDescriptor::backward()
------------------------------------------------------------------------- */

void PairMLIAP::v_tally(int i, int j,
                        double fx, double fy, double fz,
                        double delx, double dely, double delz)
{
  double v[6];

  if (vflag_either) {
    v[0] = delx*fx;
    v[1] = dely*fy;
    v[2] = delz*fz;
    v[3] = delx*fy;
    v[4] = delx*fz;
    v[5] = dely*fz;

    if (vflag_global) {
      virial[0] += v[0];
      virial[1] += v[1];
      virial[2] += v[2];
      virial[3] += v[3];
      virial[4] += v[4];
      virial[5] += v[5];
    }

    if (vflag_atom) {
      vatom[i][0] += 0.5*v[0];
      vatom[i][1] += 0.5*v[1];
      vatom[i][2] += 0.5*v[2];
      vatom[i][3] += 0.5*v[3];
      vatom[i][4] += 0.5*v[4];
      vatom[i][5] += 0.5*v[5];

      vatom[j][0] += 0.5*v[0];
      vatom[j][1] += 0.5*v[1];
      vatom[j][2] += 0.5*v[2];
      vatom[j][3] += 0.5*v[3];
      vatom[j][4] += 0.5*v[4];
      vatom[j][5] += 0.5*v[5];
    }
  }
}

/* ----------------------------------------------------------------------
   init specific to this pair style
------------------------------------------------------------------------- */
+4 −0
Original line number Diff line number Diff line
@@ -31,6 +31,10 @@ public:
  virtual void compute(int, int);
  void settings(int, char **);
  virtual void coeff(int, char **);
  void e_tally(int, double);
  void v_tally(int, int,
               double, double, double,
               double, double, double);
  virtual void init_style();
  virtual double init_one(int, int);
  virtual double memory_usage();
Loading