// gen_LevelSet - An automatic generator of meshes from level-sets
// Copyright (C) 2012-2026 Eric Bechet, Frederic Duboeuf
//
// See the LICENSE file for license information.
// Please report all bugs and problems to <bechet@cadxfem.org> or <duboeuf@outlook.com>.


#ifndef _LEVELSET_SOLVER_H_
#define _LEVELSET_SOLVER_H_

#include <memory>
#include "genSolver.h"
#include "genDataLS.h"
#include "genLevelSet.h"
#include "levelSetDomain.h"


class LevelSetSolver : public genSolver
{
protected :
  genDataLS* DataLS;
  genLevelSet genLS;
  std::vector<LevelSetDomain*> LSDomains;
  // model name
  std::string modelname;

public :
  LevelSetSolver() {DataLS = new genDataLS; Data = DataLS;}
  virtual ~LevelSetSolver();
  // read data file
  virtual void readInputFile(const std::string &fileName);
  // builds local supports
  virtual void CheckProperties();
  // cut the mesh
  virtual void solve();
};

#endif //_LEVELSET_SOLVER_H_