1 /* -*- c++ -*- ----------------------------------------------------------
2    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
3    https://www.lammps.org/, Sandia National Laboratories
4    Steve Plimpton, sjplimp@sandia.gov
5 
6    Copyright (2003) Sandia Corporation.  Under the terms of Contract
7    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
8    certain rights in this software.  This software is distributed under
9    the GNU General Public License.
10 
11    See the README file in the top-level LAMMPS directory.
12 ------------------------------------------------------------------------- */
13 
14 #ifdef PAIR_CLASS
15 // clang-format off
16 PairStyle(ilp/graphene/hbn,PairILPGrapheneHBN);
17 // clang-format on
18 #else
19 
20 #ifndef LMP_PAIR_ILP_GRAPHENE_HBN_H
21 #define LMP_PAIR_ILP_GRAPHENE_HBN_H
22 
23 #include "pair.h"
24 
25 namespace LAMMPS_NS {
26 
27 class PairILPGrapheneHBN : public Pair {
28  public:
29   PairILPGrapheneHBN(class LAMMPS *);
30   virtual ~PairILPGrapheneHBN();
31 
32   virtual void compute(int, int);
33   void settings(int, char **);
34   void coeff(int, char **);
35   double init_one(int, int);
36   void init_style();
37   void ILP_neigh();
38   void calc_normal();
39   void calc_FRep(int, int);
40   void calc_FvdW(int, int);
41   double single(int, int, int, int, double, double, double, double &);
42 
43   static constexpr int NPARAMS_PER_LINE = 13;
44 
45  protected:
46   int me;
47   int maxlocal;            // size of numneigh, firstneigh arrays
48   int pgsize;              // size of neighbor page
49   int oneatom;             // max # of neighbors for one atom
50   MyPage<int> *ipage;      // neighbor list pages
51   int *ILP_numneigh;       // # of pair neighbors for each atom
52   int **ILP_firstneigh;    // ptr to 1st neighbor of each atom
53   int tap_flag;            // flag to turn on/off taper function
54 
55   struct Param {
56     double z0, alpha, epsilon, C, delta, d, sR, reff, C6, S;
57     double delta2inv, seff, lambda, rcut;
58     int ielement, jelement;
59   };
60   Param *params;    // parameter set for I-J interactions
61   int nmax;         // max # of atoms
62 
63   double cut_global;
64   double cut_normal;
65   double **cutILPsq;    // mapping the cutoff from element pairs to parameters
66   double **offset;
67   double **normal;
68   double ***dnormdri;
69   double ****dnormal;
70 
71   void read_file(char *);
72   void allocate();
73 };
74 
75 }    // namespace LAMMPS_NS
76 
77 #endif
78 #endif
79 
80 /* ERROR/WARNING messages:
81 
82 E: Illegal ... command
83 
84 Self-explanatory.  Check the input script syntax and compare to the
85 documentation for the command.  You can use -echo screen as a
86 command-line option when running LAMMPS to see the offending line.
87 
88 E: Incorrect args for pair coefficients
89 
90 Self-explanatory.  Check the input script or data file.
91 
92 E: All pair coeffs are not set
93 
94 All pair coefficients must be set in the data file or by the
95 pair_coeff command before running a simulation.
96 
97 */
98