#ifdef PAIR_CLASS
PairStyle(body/rounded/polygon,PairBodyRoundedPolygon)
#else
#ifndef LMP_PAIR_BODY_ROUNDED_POLYGON_H
#define LMP_PAIR_BODY_ROUNDED_POLYGON_H
#include "pair.h"
namespace LAMMPS_NS {
class PairBodyRoundedPolygon : public Pair {
public:
PairBodyRoundedPolygon(class LAMMPS *);
~PairBodyRoundedPolygon();
void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
void init_style();
double init_one(int, int);
struct Contact {
int ibody, jbody; int vertex; int edge; double xv[3]; double xe[3]; double separation; };
protected:
double **k_n; double **k_na; double c_n; double c_t; double mu; double delta_ua; double cut_inner;
class AtomVecBody *avec;
class BodyRoundedPolygon *bptr;
double **discrete; int ndiscrete; int dmax; int *dnum; int *dfirst; int nmax;
double **edge; int nedge; int edmax; int *ednum; int *edfirst; int ednummax;
double *enclosing_radius; double *rounded_radius; double *maxerad;
void allocate();
void body2space(int);
void sphere_against_sphere(int i, int j, double delx, double dely, double delz,
double rsq, double k_n, double k_na,
double** x, double** v, double** f, int evflag);
int vertex_against_edge(int i, int j, double k_n, double k_na,
double** x, double** f, double** torque,
tagint* tag, Contact* contact_list,
int &num_contacts, double &evdwl, double* facc);
int compute_distance_to_vertex(int ibody, int edge_index, double* xmi,
double rounded_radius, double* x0,
double x0_rounded_radius, double cut_inner,
double &d, double hi[3], double &t,
int &contact);
void contact_forces(Contact& contact, double j_a,
double** x, double** v, double** angmom, double** f,
double** torque, double &evdwl, double* facc);
double contact_separation(const Contact& c1, const Contact& c2);
void sum_torque(double* xm, double *x, double fx,
double fy, double fz, double* torque);
int opposite_sides(double* x1, double* x2, double* a, double* b);
void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
double *inertia, double *quat, double* vi);
inline void distance(const double* x2, const double* x1, double& r);
};
}
#endif
#endif