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(edip/multi,PairEDIPMulti); 17 // clang-format on 18 #else 19 20 #ifndef LMP_PAIR_EDIP_MULTI_H 21 #define LMP_PAIR_EDIP_MULTI_H 22 23 #include "pair.h" 24 25 namespace LAMMPS_NS { 26 27 class PairEDIPMulti : public Pair { 28 public: 29 PairEDIPMulti(class LAMMPS *); 30 virtual ~PairEDIPMulti(); 31 virtual void compute(int, int); 32 void settings(int, char **); 33 void coeff(int, char **); 34 double init_one(int, int); 35 void init_style(); 36 37 protected: 38 struct Param { 39 double A, B; // coefficients for pair interaction I-J 40 double cutoffA; // cut-off distance for pair interaction I-J 41 double cutoffC; // lower cut-off distance for calculating Z_I 42 double alpha; // coefficient for calculating Z_I 43 double beta; // attractive term for pair I-J 44 double sigma; // cut-off coefficient for pair I-J 45 double rho; // pair I-J 46 double gamma; // coefficient for three-body interaction I-J-K 47 double eta, lambda; // coefficients for function h(l,Z) 48 double mu, Q0; // coefficients for function Q(Z) 49 double u1, u2, u3, u4; // coefficients for function tau(Z) 50 double cutsq; 51 int ielement, jelement, kelement; 52 }; 53 54 double *preForceCoord; 55 56 double cutmax; // max cutoff for all elements 57 Param *params; // parameter set for an I-J-K interaction 58 59 void allocate(); 60 void allocatePreLoops(void); 61 void deallocatePreLoops(void); 62 63 void read_file(char *); 64 void setup(); 65 66 void edip_pair(double, double, Param *, double &, double &, double &); 67 void edip_fc(double, Param *, double &, double &); 68 void edip_fcut2(double, Param *, double &, double &); 69 void edip_tau(double, Param *, double &, double &); 70 void edip_h(double, double, Param *, double &, double &, double &); 71 void edip_fcut3(double, Param *, double &, double &); 72 }; 73 74 } // namespace LAMMPS_NS 75 76 #endif 77 #endif 78