#ifdef PAIR_CLASS
PairStyle(resquared,PairRESquared)
#else
#ifndef LMP_PAIR_RESQUARED_H
#define LMP_PAIR_RESQUARED_H
#include "pair.h"
namespace LAMMPS_NS {
class PairRESquared : public Pair {
public:
PairRESquared(LAMMPS *lmp);
virtual ~PairRESquared();
virtual void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
virtual void init_style();
double init_one(int, int);
void write_restart(FILE *);
void read_restart(FILE *);
void write_restart_settings(FILE *);
void read_restart_settings(FILE *);
protected:
enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE};
double cut_global;
double **cut;
double **shape1; double **shape2; double *lshape; double **well; double **epsilon,**sigma;
int **form;
double **lj1,**lj2,**lj3,**lj4;
double **offset;
int *setwell;
class AtomVecEllipsoid *avec;
struct RE2Vars {
double A[3][3]; double aTe[3][3]; double gamma[3][3];
double sa[3][3]; double lA[3][3][3]; double lAtwo[3][3][3]; double lAsa[3][3][3]; };
void allocate();
void precompute_i(const int i,RE2Vars &ws);
double det_prime(const double m[3][3], const double m2[3][3]);
double resquared_analytic(const int i, const int j,
const RE2Vars &wi, const RE2Vars &wj,
const double *r, const double rsq,
double *fforce, double *ttor,
double *rtor);
double resquared_lj(const int i, const int j, const RE2Vars &wi,
const double *r, const double rsq, double *fforce,
double *ttor, bool calc_torque);
double cr60; double b_alpha; double solv_f_a; double solv_f_r; };
}
#endif
#endif