#include <list>
#include "lava.h"


class grid_t {
 public:
  grid_t(double min_x, double min_y, double min_z,
	 double max_x, double max_y, double max_z,
	 int nx, int ny, int nz);
  ~grid_t();  
  list<lava_t*>* cellptr(int x, int y, int z);
  void whichcell(const vector &position, int *cell_x, int *cell_y, int *cell_z);
  void add(lava_t *lava);
  void update(const vector &old_position, const vector &new_position, lava_t *lava);

  // private:
  int grid_nx, grid_ny, grid_nz;
  double grid_min_x, grid_min_y, grid_min_z;
  double grid_max_x, grid_max_y, grid_max_z;
  double grid_scale_x, grid_scale_y, grid_scale_z;
  list<lava_t*> **grid;

};




