#ifdef COMPUTE_CLASS
ComputeStyle(voronoi/atom,ComputeVoronoi)
#else
#ifndef LMP_COMPUTE_VORONOI_H
#define LMP_COMPUTE_VORONOI_H
#include "compute.h"
namespace voro {
class container;
class container_poly;
class voronoicell_neighbor;
}
namespace LAMMPS_NS {
class ComputeVoronoi : public Compute {
public:
ComputeVoronoi(class LAMMPS *, int, char **);
~ComputeVoronoi();
void init();
void compute_peratom();
void compute_vector();
void compute_local();
double memory_usage();
int pack_forward_comm(int, int *, double *, int, int *);
void unpack_forward_comm(int, int, double *);
private:
voro::container *con_mono;
voro::container_poly *con_poly;
void buildCells();
void checkOccupation();
void loopCells();
void processCell(voro::voronoicell_neighbor&, int);
int nmax, rmax, maxedge, sgroupbit;
char *radstr;
double fthresh, ethresh;
double **voro;
double *edge, *sendvector, *rfield;
enum { VOROSURF_NONE, VOROSURF_ALL, VOROSURF_GROUP } surface;
bool onlyGroup, occupation;
tagint *tags, oldmaxtag;
int *occvec, *sendocc, *lroot, *lnext, lmax, oldnatoms, oldnall;
int faces_flag, nfaces, nfacesmax;
double **faces;
};
}
#endif
#endif