apply clang-format
This commit is contained in:
@ -58,8 +58,8 @@ class MLIAPData : protected Pointers {
|
||||
// data structures for mliap neighbor list
|
||||
// only neighbors strictly inside descriptor cutoff
|
||||
|
||||
int ntotal; // total number of owned and ghost atoms on this proc
|
||||
int nlistatoms; // current number of atoms in local atom lists
|
||||
int ntotal; // total number of owned and ghost atoms on this proc
|
||||
int nlistatoms; // current number of atoms in local atom lists
|
||||
int nlocal;
|
||||
int nlistatoms_max; // allocated size of descriptor array
|
||||
int natomneigh; // current number of atoms and ghosts in atom neighbor arrays
|
||||
|
||||
@ -18,9 +18,9 @@
|
||||
|
||||
#include "mliap_descriptor_ace.h"
|
||||
|
||||
#include "ace-evaluator/ace_evaluator.h"
|
||||
#include "ace-evaluator/ace_c_basis.h"
|
||||
#include "ace-evaluator/ace_abstract_basis.h"
|
||||
#include "ace-evaluator/ace_c_basis.h"
|
||||
#include "ace-evaluator/ace_evaluator.h"
|
||||
#include "ace-evaluator/ace_types.h"
|
||||
|
||||
#include "atom.h"
|
||||
@ -34,7 +34,6 @@
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <typeinfo>
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
struct ACE_ML_impl {
|
||||
@ -47,33 +46,36 @@ struct ACE_ML_impl {
|
||||
ACECTildeBasisSet *basis_set;
|
||||
ACECTildeEvaluator *ace;
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) : Pointers(_lmp), MLIAPDescriptor(_lmp)
|
||||
MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) :
|
||||
Pointers(_lmp), MLIAPDescriptor(_lmp)
|
||||
{
|
||||
|
||||
acemlimpl = new ACE_ML_impl;
|
||||
allocated_elements = 0;
|
||||
//read in file with CG coefficients or c_tilde coefficients
|
||||
ctilde_file = yacefilename;
|
||||
delete acemlimpl -> basis_set;
|
||||
acemlimpl -> basis_set = new ACECTildeBasisSet(ctilde_file);
|
||||
nelements = acemlimpl -> basis_set->nelements;
|
||||
delete acemlimpl->basis_set;
|
||||
acemlimpl->basis_set = new ACECTildeBasisSet(ctilde_file);
|
||||
nelements = acemlimpl->basis_set->nelements;
|
||||
int tot_num = 0;
|
||||
for (int mu = 0; mu < nelements; mu++) {
|
||||
if ( max_num < acemlimpl -> basis_set->total_basis_size_rank1[mu] + acemlimpl ->basis_set->total_basis_size[mu]) {
|
||||
max_num = acemlimpl -> basis_set->total_basis_size_rank1[mu] + acemlimpl ->basis_set->total_basis_size[mu];
|
||||
for (int mu = 0; mu < nelements; mu++) {
|
||||
if (max_num < acemlimpl->basis_set->total_basis_size_rank1[mu] +
|
||||
acemlimpl->basis_set->total_basis_size[mu]) {
|
||||
max_num = acemlimpl->basis_set->total_basis_size_rank1[mu] +
|
||||
acemlimpl->basis_set->total_basis_size[mu];
|
||||
}
|
||||
tot_num += acemlimpl -> basis_set->total_basis_size_rank1[mu] + acemlimpl ->basis_set->total_basis_size[mu];
|
||||
tot_num += acemlimpl->basis_set->total_basis_size_rank1[mu] +
|
||||
acemlimpl->basis_set->total_basis_size[mu];
|
||||
}
|
||||
|
||||
ndescriptors = max_num;
|
||||
nelements = acemlimpl -> basis_set ->nelements;
|
||||
nelements = acemlimpl->basis_set->nelements;
|
||||
|
||||
memory->destroy(cutsq);
|
||||
|
||||
@ -82,44 +84,40 @@ MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) : Point
|
||||
delete[] elements;
|
||||
allocated_elements = 0;
|
||||
} else if (not allocated_elements) {
|
||||
elements = new char * [nelements];
|
||||
for (int iielem = 0; iielem < nelements; iielem ++){
|
||||
elements = new char *[nelements];
|
||||
for (int iielem = 0; iielem < nelements; iielem++) {
|
||||
elements[iielem] = utils::strdup(acemlimpl->basis_set->elements_name[iielem]);
|
||||
}
|
||||
allocated_elements = 1;
|
||||
}
|
||||
|
||||
memory->create(cutsq,nelements+1,nelements+1,"mliap/descriptor/ace:cutsq");
|
||||
memory->create(cutsq, nelements + 1, nelements + 1, "mliap/descriptor/ace:cutsq");
|
||||
float icmax = 0.0;
|
||||
float icuti, icutj;
|
||||
for (int mui = 0; mui < acemlimpl -> basis_set ->nelements; mui++) {
|
||||
icuti = acemlimpl -> basis_set->radial_functions->cut(mui, mui);
|
||||
for (int mui = 0; mui < acemlimpl->basis_set->nelements; mui++) {
|
||||
icuti = acemlimpl->basis_set->radial_functions->cut(mui, mui);
|
||||
if (icuti > icmax) icmax = icuti;
|
||||
for (int muj = mui+1; muj < acemlimpl -> basis_set ->nelements; muj++) {
|
||||
icutj = acemlimpl -> basis_set->radial_functions->cut(mui, muj);
|
||||
for (int muj = mui + 1; muj < acemlimpl->basis_set->nelements; muj++) {
|
||||
icutj = acemlimpl->basis_set->radial_functions->cut(mui, muj);
|
||||
if (icutj > icmax) icmax = icutj;
|
||||
}
|
||||
}
|
||||
float cutmax = 0.0;
|
||||
float cuti,cutj;
|
||||
float cuti, cutj;
|
||||
float cutfac = 1.0;
|
||||
for (int mui = 0; mui < acemlimpl -> basis_set ->nelements; mui++) {
|
||||
cuti = acemlimpl -> basis_set->radial_functions->cut(mui, mui);
|
||||
for (int mui = 0; mui < acemlimpl->basis_set->nelements; mui++) {
|
||||
cuti = acemlimpl->basis_set->radial_functions->cut(mui, mui);
|
||||
if (cuti > cutmax) cutmax = cuti;
|
||||
|
||||
cutsq[mui][mui] = ((2*cuti*cutfac)*(2*cuti*cutfac));
|
||||
cutsq[mui][mui] = ((2 * cuti * cutfac) * (2 * cuti * cutfac));
|
||||
for (int muj = mui + 1; muj < nelements; muj++) {
|
||||
cutj = acemlimpl -> basis_set->radial_functions->cut(mui, muj);
|
||||
cutsq[mui][muj] = cutsq[muj][mui] = ((2*cuti *cutfac)*(2*cutj*cutfac));
|
||||
cutj = acemlimpl->basis_set->radial_functions->cut(mui, muj);
|
||||
cutsq[mui][muj] = cutsq[muj][mui] = ((2 * cuti * cutfac) * (2 * cutj * cutfac));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MLIAPDescriptorACE::allocate()
|
||||
{
|
||||
}
|
||||
void MLIAPDescriptorACE::allocate() {}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -136,14 +134,12 @@ void MLIAPDescriptorACE::compute_descriptors(class MLIAPData *data)
|
||||
{
|
||||
int max_jnum = -1;
|
||||
int nei = 0;
|
||||
int jtmp =0;
|
||||
int jtmp = 0;
|
||||
for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) {
|
||||
int itmp = data->iatoms[iitmp];
|
||||
jtmp = data->numneighs[iitmp];
|
||||
nei = nei + jtmp;
|
||||
if (jtmp > max_jnum){
|
||||
max_jnum = jtmp;
|
||||
}
|
||||
if (jtmp > max_jnum) { max_jnum = jtmp; }
|
||||
}
|
||||
|
||||
for (int ii = 0; ii < data->nlistatoms; ii++) {
|
||||
@ -151,29 +147,26 @@ void MLIAPDescriptorACE::compute_descriptors(class MLIAPData *data)
|
||||
const int ielemx = data->ielems[ii];
|
||||
const int jnum = data->numneighs[ii];
|
||||
|
||||
delete acemlimpl -> ace;
|
||||
acemlimpl -> ace = new ACECTildeEvaluator(*acemlimpl -> basis_set);
|
||||
acemlimpl -> ace->compute_projections = 1;
|
||||
acemlimpl -> ace->compute_b_grad = 1;
|
||||
delete acemlimpl->ace;
|
||||
acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set);
|
||||
acemlimpl->ace->compute_projections = 1;
|
||||
acemlimpl->ace->compute_b_grad = 1;
|
||||
|
||||
acemlimpl -> ace->element_type_mapping.init(nelements+1);
|
||||
acemlimpl->ace->element_type_mapping.init(nelements + 1);
|
||||
for (int ik = 1; ik <= nelements; ik++) {
|
||||
for(int mu = 0; mu < nelements; mu++){
|
||||
for (int mu = 0; mu < nelements; mu++) {
|
||||
if (mu != -1) {
|
||||
if (mu == ik - 1) {
|
||||
acemlimpl -> ace->element_type_mapping(ik) = mu;
|
||||
}
|
||||
if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
acemlimpl -> ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl -> ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], data->lmp_firstneigh[ii]);
|
||||
for (int icoeff = 0; icoeff < data->ndescriptors; icoeff++){
|
||||
data->descriptors[ii][icoeff] = acemlimpl -> ace -> projections(icoeff);
|
||||
acemlimpl->ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii],
|
||||
data->lmp_firstneigh[ii]);
|
||||
for (int icoeff = 0; icoeff < data->ndescriptors; icoeff++) {
|
||||
data->descriptors[ii][icoeff] = acemlimpl->ace->projections(icoeff);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -189,39 +182,35 @@ void MLIAPDescriptorACE::compute_forces(class MLIAPData *data)
|
||||
|
||||
int max_jnum = -1;
|
||||
int nei = 0;
|
||||
int jtmp =0;
|
||||
int jtmp = 0;
|
||||
for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) {
|
||||
int itmp = data->iatoms[iitmp];
|
||||
jtmp = data->numneighs[iitmp];
|
||||
nei = nei + jtmp;
|
||||
if (jtmp > max_jnum){
|
||||
max_jnum = jtmp;
|
||||
}
|
||||
if (jtmp > max_jnum) { max_jnum = jtmp; }
|
||||
}
|
||||
|
||||
// BEGIN force loop
|
||||
for (int ii = 0; ii < data->nlistatoms; ii++) {
|
||||
const int i = data->iatoms[ii];
|
||||
const int ielem = data->ielems[ii];
|
||||
delete acemlimpl -> ace;
|
||||
acemlimpl -> ace = new ACECTildeEvaluator(*acemlimpl -> basis_set);
|
||||
acemlimpl -> ace->compute_projections = 1;
|
||||
acemlimpl -> ace->compute_b_grad = 1;
|
||||
acemlimpl -> ace->element_type_mapping.init(nelements+1);
|
||||
delete acemlimpl->ace;
|
||||
acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set);
|
||||
acemlimpl->ace->compute_projections = 1;
|
||||
acemlimpl->ace->compute_b_grad = 1;
|
||||
acemlimpl->ace->element_type_mapping.init(nelements + 1);
|
||||
for (int ik = 1; ik <= nelements; ik++) {
|
||||
for(int mu = 0; mu < acemlimpl -> basis_set ->nelements; mu++){
|
||||
for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) {
|
||||
if (mu != -1) {
|
||||
if (mu == ik - 1) {
|
||||
acemlimpl -> ace->element_type_mapping(ik) = mu;
|
||||
}
|
||||
if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const int jnum = data->numneighs[ii];
|
||||
acemlimpl -> ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl -> ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], data->lmp_firstneigh[ii]);
|
||||
acemlimpl->ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii],
|
||||
data->lmp_firstneigh[ii]);
|
||||
int ij0 = ij;
|
||||
int ninside = 0;
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
@ -230,7 +219,7 @@ void MLIAPDescriptorACE::compute_forces(class MLIAPData *data)
|
||||
}
|
||||
|
||||
ij = ij0;
|
||||
const int* const jlist = data->lmp_firstneigh[ii];
|
||||
const int *const jlist = data->lmp_firstneigh[ii];
|
||||
double **x = atom->x;
|
||||
const double xtmp = x[i][0];
|
||||
const double ytmp = x[i][1];
|
||||
@ -238,17 +227,18 @@ void MLIAPDescriptorACE::compute_forces(class MLIAPData *data)
|
||||
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
const int j = jlist[jj];
|
||||
for (int idim = 0; idim < 3; idim++){
|
||||
fij[idim] = 0.0;
|
||||
}
|
||||
for (int idim = 0; idim < 3; idim++) { fij[idim] = 0.0; }
|
||||
for (int iicoeff = 0; iicoeff < ndescriptors; iicoeff++) {
|
||||
DOUBLE_TYPE fx_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,0)*data->betas[ii][iicoeff];
|
||||
DOUBLE_TYPE fy_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,1)*data->betas[ii][iicoeff];
|
||||
DOUBLE_TYPE fz_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,2)*data->betas[ii][iicoeff];
|
||||
DOUBLE_TYPE fx_dB =
|
||||
acemlimpl->ace->neighbours_dB(iicoeff, jj, 0) * data->betas[ii][iicoeff];
|
||||
DOUBLE_TYPE fy_dB =
|
||||
acemlimpl->ace->neighbours_dB(iicoeff, jj, 1) * data->betas[ii][iicoeff];
|
||||
DOUBLE_TYPE fz_dB =
|
||||
acemlimpl->ace->neighbours_dB(iicoeff, jj, 2) * data->betas[ii][iicoeff];
|
||||
// add force contribution from each descriptor
|
||||
fij[0]+=fx_dB;
|
||||
fij[1]+=fy_dB;
|
||||
fij[2]+=fz_dB;
|
||||
fij[0] += fx_dB;
|
||||
fij[1] += fy_dB;
|
||||
fij[2] += fz_dB;
|
||||
f[i][0] += fx_dB;
|
||||
f[i][1] += fy_dB;
|
||||
f[i][2] += fz_dB;
|
||||
@ -259,7 +249,7 @@ void MLIAPDescriptorACE::compute_forces(class MLIAPData *data)
|
||||
const double delx = x[j][0] - xtmp;
|
||||
const double dely = x[j][1] - ytmp;
|
||||
const double delz = x[j][2] - ztmp;
|
||||
double rij_tmp[3] = {delx,dely,delz};
|
||||
double rij_tmp[3] = {delx, dely, delz};
|
||||
if (data->vflag) data->pairmliap->v_tally(i, j, fij, rij_tmp);
|
||||
ij++;
|
||||
}
|
||||
@ -276,58 +266,52 @@ void MLIAPDescriptorACE::compute_force_gradients(class MLIAPData *data)
|
||||
|
||||
int max_jnum = -1;
|
||||
int nei = 0;
|
||||
int jtmp =0;
|
||||
int jtmp = 0;
|
||||
for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) {
|
||||
int itmp = data->iatoms[iitmp];
|
||||
jtmp = data->numneighs[iitmp];
|
||||
nei = nei + jtmp;
|
||||
if (jtmp > max_jnum){
|
||||
max_jnum = jtmp;
|
||||
}
|
||||
if (jtmp > max_jnum) { max_jnum = jtmp; }
|
||||
}
|
||||
|
||||
for (int ii = 0; ii < data->nlistatoms; ii++) {
|
||||
const int i = data->iatoms[ii];
|
||||
const int ielem = data->ielems[ii];
|
||||
delete acemlimpl -> ace;
|
||||
acemlimpl -> ace = new ACECTildeEvaluator(*acemlimpl -> basis_set);
|
||||
acemlimpl -> ace->compute_projections = 1;
|
||||
acemlimpl -> ace->compute_b_grad = 1;
|
||||
delete acemlimpl->ace;
|
||||
acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set);
|
||||
acemlimpl->ace->compute_projections = 1;
|
||||
acemlimpl->ace->compute_b_grad = 1;
|
||||
|
||||
acemlimpl -> ace->element_type_mapping.init(nelements+1);
|
||||
acemlimpl->ace->element_type_mapping.init(nelements + 1);
|
||||
for (int ik = 1; ik <= nelements; ik++) {
|
||||
for(int mu = 0; mu < acemlimpl -> basis_set ->nelements; mu++){
|
||||
for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) {
|
||||
if (mu != -1) {
|
||||
if (mu == ik - 1) {
|
||||
acemlimpl -> ace->element_type_mapping(ik) = mu;
|
||||
}
|
||||
if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const int jnum = data->numneighs[ii];
|
||||
const int* const jlist = data->lmp_firstneigh[ii];
|
||||
acemlimpl -> ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl -> ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], data->lmp_firstneigh[ii]);
|
||||
const int *const jlist = data->lmp_firstneigh[ii];
|
||||
acemlimpl->ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii],
|
||||
data->lmp_firstneigh[ii]);
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
const int j = jlist[jj];
|
||||
for (int inz = 0; inz < data->gamma_nnz; inz++) {
|
||||
const int l = data->gamma_row_index[ii][inz];
|
||||
const int k = data->gamma_col_index[ii][inz];
|
||||
DOUBLE_TYPE fx_dB = acemlimpl -> ace -> neighbours_dB(k,jj,0);
|
||||
DOUBLE_TYPE fy_dB = acemlimpl -> ace -> neighbours_dB(k,jj,1);
|
||||
DOUBLE_TYPE fz_dB = acemlimpl -> ace -> neighbours_dB(k,jj,2);
|
||||
data->gradforce[i][l] += data->gamma[ii][inz] * fx_dB;
|
||||
data->gradforce[i][l + data->yoffset] += data->gamma[ii][inz] * fy_dB;
|
||||
data->gradforce[i][l + data->zoffset] += data->gamma[ii][inz] * fz_dB;
|
||||
data->gradforce[j][l] -= data->gamma[ii][inz] * fx_dB;
|
||||
data->gradforce[j][l + data->yoffset] -= data->gamma[ii][inz] * fy_dB;
|
||||
data->gradforce[j][l + data->zoffset] -= data->gamma[ii][inz] * fz_dB;
|
||||
|
||||
}
|
||||
ij ++;
|
||||
for (int inz = 0; inz < data->gamma_nnz; inz++) {
|
||||
const int l = data->gamma_row_index[ii][inz];
|
||||
const int k = data->gamma_col_index[ii][inz];
|
||||
DOUBLE_TYPE fx_dB = acemlimpl->ace->neighbours_dB(k, jj, 0);
|
||||
DOUBLE_TYPE fy_dB = acemlimpl->ace->neighbours_dB(k, jj, 1);
|
||||
DOUBLE_TYPE fz_dB = acemlimpl->ace->neighbours_dB(k, jj, 2);
|
||||
data->gradforce[i][l] += data->gamma[ii][inz] * fx_dB;
|
||||
data->gradforce[i][l + data->yoffset] += data->gamma[ii][inz] * fy_dB;
|
||||
data->gradforce[i][l + data->zoffset] += data->gamma[ii][inz] * fz_dB;
|
||||
data->gradforce[j][l] -= data->gamma[ii][inz] * fx_dB;
|
||||
data->gradforce[j][l + data->yoffset] -= data->gamma[ii][inz] * fy_dB;
|
||||
data->gradforce[j][l + data->zoffset] -= data->gamma[ii][inz] * fz_dB;
|
||||
}
|
||||
ij++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -341,38 +325,35 @@ void MLIAPDescriptorACE::compute_descriptor_gradients(class MLIAPData *data)
|
||||
int ij = 0;
|
||||
int max_jnum = -1;
|
||||
int nei = 0;
|
||||
int jtmp =0;
|
||||
int jtmp = 0;
|
||||
for (int iitmp = 0; iitmp < data->nlistatoms; iitmp++) {
|
||||
int itmp = data->iatoms[iitmp];
|
||||
jtmp = data->numneighs[iitmp];
|
||||
nei = nei + jtmp;
|
||||
if (jtmp > max_jnum){
|
||||
max_jnum = jtmp;
|
||||
}
|
||||
if (jtmp > max_jnum) { max_jnum = jtmp; }
|
||||
}
|
||||
for (int ii = 0; ii < data->nlistatoms; ii++) {
|
||||
const int i = data->iatoms[ii];
|
||||
const int ielem = data->ielems[ii];
|
||||
delete acemlimpl -> ace;
|
||||
acemlimpl -> ace = new ACECTildeEvaluator(*acemlimpl -> basis_set);
|
||||
acemlimpl -> ace->compute_projections = 1;
|
||||
acemlimpl -> ace->compute_b_grad = 1;
|
||||
delete acemlimpl->ace;
|
||||
acemlimpl->ace = new ACECTildeEvaluator(*acemlimpl->basis_set);
|
||||
acemlimpl->ace->compute_projections = 1;
|
||||
acemlimpl->ace->compute_b_grad = 1;
|
||||
|
||||
acemlimpl -> ace->element_type_mapping.init(nelements+1);
|
||||
acemlimpl->ace->element_type_mapping.init(nelements + 1);
|
||||
for (int ik = 1; ik <= nelements; ik++) {
|
||||
for(int mu = 0; mu < acemlimpl -> basis_set ->nelements; mu++){
|
||||
for (int mu = 0; mu < acemlimpl->basis_set->nelements; mu++) {
|
||||
if (mu != -1) {
|
||||
if (mu == ik - 1) {
|
||||
acemlimpl -> ace->element_type_mapping(ik) = mu;
|
||||
}
|
||||
if (mu == ik - 1) { acemlimpl->ace->element_type_mapping(ik) = mu; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const int* const jlist = data->lmp_firstneigh[ii];
|
||||
const int *const jlist = data->lmp_firstneigh[ii];
|
||||
const int jnum = data->numneighs[ii];
|
||||
acemlimpl -> ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl -> ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii], data->lmp_firstneigh[ii]);
|
||||
acemlimpl->ace->resize_neighbours_cache(jnum);
|
||||
acemlimpl->ace->compute_atom(i, atom->x, atom->type, data->numneighs[ii],
|
||||
data->lmp_firstneigh[ii]);
|
||||
int ij0 = ij;
|
||||
int ninside = 0;
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
@ -386,29 +367,25 @@ void MLIAPDescriptorACE::compute_descriptor_gradients(class MLIAPData *data)
|
||||
|
||||
const int j = jlist[jj];
|
||||
int yoffset = ndescriptors;
|
||||
int zoffset = ndescriptors*2;
|
||||
int zoffset = ndescriptors * 2;
|
||||
for (int iicoeff = 0; iicoeff < ndescriptors; iicoeff++) {
|
||||
DOUBLE_TYPE fx_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,0);
|
||||
DOUBLE_TYPE fy_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,1);
|
||||
DOUBLE_TYPE fz_dB = acemlimpl -> ace -> neighbours_dB(iicoeff,jj,2);
|
||||
// Accumulate dB_k^i/dRi, dB_k^i/dRj
|
||||
DOUBLE_TYPE fx_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 0);
|
||||
DOUBLE_TYPE fy_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 1);
|
||||
DOUBLE_TYPE fz_dB = acemlimpl->ace->neighbours_dB(iicoeff, jj, 2);
|
||||
// Accumulate dB_k^i/dRi, dB_k^i/dRj
|
||||
data->graddesc[ij][iicoeff][0] = fx_dB;
|
||||
data->graddesc[ij][iicoeff][1] = fy_dB;
|
||||
data->graddesc[ij][iicoeff][2] = fz_dB;
|
||||
|
||||
}
|
||||
ij++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MLIAPDescriptorACE::init()
|
||||
{
|
||||
}
|
||||
void MLIAPDescriptorACE::init() {}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
memory usage
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
@ -30,9 +30,9 @@ class MLIAPDescriptorACE : public MLIAPDescriptor {
|
||||
double memory_usage() override;
|
||||
|
||||
double rcutfac;
|
||||
int allocated=0;
|
||||
int max_num=0;
|
||||
char* ctilde_file;
|
||||
int allocated = 0;
|
||||
int max_num = 0;
|
||||
char *ctilde_file;
|
||||
|
||||
protected:
|
||||
virtual void allocate();
|
||||
|
||||
Reference in New Issue
Block a user