// Reconstruction - A tool for building cad models from meshes
// Copyright (C) 2010-2026 Eric Bechet, Borhen Louhichi
//
// See the LICENSE file for license information and contributions.
// Please report all bugs and problems to <bechet@cadxfem.org>.

#ifndef _BREP_XFEM_H_
#define _BREP_XFEM_H_

#include <map>
#include <string>
#include "SVector3.h"
#include "dofManager.h"
#include "simpleFunction.h"
#include "functionSpace.h"
#include "gmshLevelset.h"
#include "nutil.h"

#include "RecIncludes.h"


class GModel;

class BrepXfem
{

  int _dim, _tag;

public:
  BrepXfem(int tag)
  {
    _tag=tag;
  }
  virtual ~BrepXfem() {}

  void Explorer();

  void readInputFile(const std::string &meshFileName);
  void setMesh(const std::string &meshFileName);

  void setMesh0(const std::string &meshFileName);
  void setMesh1(const std::string &meshFileName);
  void setMesh2(const std::string &meshFileName);

  void setMesh00(const std::string &meshFileName);





protected:
  GModel *_pModel;
  GModel *_pModelUncut;


  gLevelset *_ls; // for bimaterial interface
  gLevelset *_ls_cut; // for void

  std::vector<gLevelset *> gLevelsets;

  TopoDS_Solid shape;






};


#endif
