// Bimaterial_xfem - A solver for bimaterial problems using X-FEM
// Copyright (C) 2012-2018 Frederic Duboeuf
//
// See the LICENSE file for license information.
// Please report all bugs and problems to <duboeuf@outlook.com>.

#ifndef _BIMATERIAL_XFEM_SOLVER_H_
#define _BIMATERIAL_XFEM_SOLVER_H_

#include "elasticCutmeshXfemSolver.h"
#include "bimaterialXfemDomain.h"
#include "genDataLS.h"
#include "genLevelSet.h"
#include "levelSetDomain.h"

class BimaterialXfemSolver : public ElasticCutmeshXfemSolver
{
protected :
  genDataLS* DataLS;
  genLevelSet genLS;
  std::vector<LevelSetDomain*> LSDomains;
  std::vector<BimaterialDomain*> BiDomains;

public :
  BimaterialXfemSolver() {DataLS = new genDataLS; Data = DataLS; pAssembler=NULL;}
  virtual ~BimaterialXfemSolver();
  //read data file
  virtual void readInputFile(const std::string &fileName);
  // builds local supports
  virtual void CheckProperties();
  // build the problem function spaces
  virtual void CreateFunctionSpaces();

  virtual PView* buildLevelSetView(const std::string &postFileName, int num=0);
  virtual PView* buildEnrichmentFunctionView(const std::string &postFileName, int num=0);
};


#endif // _BIMATERIAL_XFEM_SOLVER_H_
