// 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 _REC_XFEM_H_
#define _REC_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 RecXfem
{

  int _dim, _tag;

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

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

  void get_pts_faces();
  void Reconstruire();
  void ReconstruireCyl();

  void ReconstruireCylmf();



protected:
  GModel *_pModel;
  GModel *_pModelUncut;


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

  std::vector<gLevelset *> gLevelsets;

  int nb_faces;
  std::vector<int> nb_pts_face;
  std::vector<npoint3> pts;




};


#endif
