Derives from PairILPGrapheneHBN instead of Pair

Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
This commit is contained in:
pgao
2022-04-23 14:26:13 +08:00
parent da520bf8b7
commit b631411985
2 changed files with 463 additions and 846 deletions

File diff suppressed because it is too large Load Diff

View File

@ -20,50 +20,26 @@ PairStyle(ilp/graphene/hbn/opt,PairILPGrapheneHBNOpt);
#ifndef LMP_PAIR_ILP_GRAPHENE_HBN_OPT_H
#define LMP_PAIR_ILP_GRAPHENE_HBN_OPT_H
#include "pair.h"
#include "pair_ilp_graphene_hbn.h"
namespace LAMMPS_NS {
class PairILPGrapheneHBNOpt : public Pair {
class PairILPGrapheneHBNOpt : public PairILPGrapheneHBN {
public:
PairILPGrapheneHBNOpt(class LAMMPS *);
virtual ~PairILPGrapheneHBNOpt();
~PairILPGrapheneHBNOpt() override;
virtual void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
double init_one(int, int);
void init_style();
void calc_single_normal(int i, int *ILP_neigh, int nneigh, double *normal, double (*dnormdri)[3],
double (*dnormdrk)[3][3]);
void update_internal_list();
double single(int, int, int, int, double, double, double, double &);
template <int, int, int> void eval();
static constexpr int NPARAMS_PER_LINE = 13;
void compute(int, int) override;
void init_style() override;
protected:
int me;
int maxlocal; // size of numneigh, firstneigh arrays
int tap_flag; // flag to turn on/off taper function
struct Param {
double z0, alpha, epsilon, C, delta, d, sR, reff, C6, S;
double delta2inv, seff, lambda, rcut, seffinv;
int ielement, jelement;
};
Param *params; // parameter set for I-J interactions
int nmax; // max # of atoms
double cut_global;
double cut_normal;
double **cutILPsq; // mapping the cutoff from element pairs to parameters
double **offset;
int *layered_neigh;
int **first_layered_neigh;
int *num_intra, *num_inter, *num_vdw;
int inum_max, jnum_max;
void read_file(char *);
void allocate();
void computeILP(int, int);
inline void cross_deriv(double *pv, double (*dpv)[3][3], double (*vet)[3], int j, int k, int l);
inline void calc_dnormal(double (*dnormal)[3][3], double (*dn1)[3][3], double *n1, double nn,
double nn2);
inline void ev_tally_buffer(int i, int j, double *ei, double *vi, double *ej, double *vj,
int nlocal, int newton_pair, double evdwl, double ecoul, double fx,
double fy, double fz, double delx, double dely, double delz);
};
} // namespace LAMMPS_NS