/*+
    VIDE -- Void IDentification and Examination -- ./c_tools/zobov2/jozov2/zobov.hpp
    Copyright (C) 2010-2014 Guilhem Lavaux
    Copyright (C) 2011-2014 P. M. Sutter

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
#ifndef __ZOBOV_HPP
#define __ZOBOV_HPP

typedef struct Particle {
  float dens;
  int nadj;
  int ncnt;
  int *adj;
} PARTICLE;

typedef struct Zone {
  int core; /* Identity of peak particle */
  int np; /* Number of particles in zone */
  int npjoin; /* Number of particles in the joined void */
  int nadj; /* Number of adjacent zones */
  int nhl; /* Number of zones in final joined void */
  float leak; /* Volume of last leak zone*/
  int *adj; /* Each adjacent zone, with ... */
  float *slv; /* Smallest Linking Volume */
  float denscontrast; /* density contrast */
  double vol; /* Total volume of all particles in the zone */
  double voljoin; /* Total volume of all particles in the joined void */

  int *zonelist; /* Zones bound to the void. */
  int numzones; /* Number of zones bound. */
} ZONE;

typedef struct ZoneT {
  int nadj; /* Number of zones on border */
  int *adj; /* Each adjacent zone, with ... */
  float *slv; /* Smallest Linking Volume */
} ZONET;

#endif
