apply clang-format

This commit is contained in:
Axel Kohlmeyer
2024-03-22 23:38:02 -04:00
parent 7bd7396b6a
commit 000c8f510d
3 changed files with 119 additions and 142 deletions

View File

@ -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

View File

@ -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
------------------------------------------------------------------------- */

View File

@ -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();