Commit af8e97de authored by Gilles MARCKMANN's avatar Gilles MARCKMANN

make it compile with seq branch of Xfiles

parent 3adc4c04
......@@ -47,6 +47,7 @@ find_package(ANN)
find_package(BLAS2)
find_package(LAPACK2)
find_package(METIS)
find_package(Xcut)
file(GLOB SOURCES src/*)
list(APPEND EXTERNAL_INCLUDES
......@@ -81,14 +82,15 @@ list(APPEND EXTERNAL_LIBRARIES
${TAUCS_LIBRARIES}
${METIS_LIBRARIES}
${ANN_LIBRARIES}
# ${CGAL_LIBRARIES}
${XCUT_LIBRARIES}
${CGAL_LIBRARIES}
-lboost_system
)
if(FASTMARCHINGINTERFACE)
add_definitions(-DHAVE_FASTMARCHING)
find_package(FastMarching)
list(APPEND EXTERNAL_INCLUDES ${FASTMARCHING_INCLUDE_DIR})
#list(APPEND EXTERNAL_LIBRARIES ${FASTMARCHING_LIBRARIES})
set(CXXFLAGS "${CXXFLAGS} -std=c++11")
endif(FASTMARCHINGINTERFACE)
......
This diff is collapsed.
/*
This source code is subject to non-permissive licence,
see the TLSDuctile/LICENSE file for conditions.
*/
#ifndef _TLSDuctile_FormulationQSRemeshAniso_h_
#define _TLSDuctile_FormulationQSRemeshAniso_h_
#include "FormulationQS.h"
......@@ -28,6 +24,9 @@ public:
xfem::xLevelSet lsetAdapt;
std::function<void (xfem::xMesh&)> tagger;
xMesh *backupMesh;
private:
void updateLevelSetField();
void xReadFromParaview(std::string, std::string, xfem::xField&,xfem::xMesh&);
......@@ -38,8 +37,82 @@ private:
void projectPhiOnMesh(xMesh *mesh_new, std::map<mEntity *, double> &projectedValues);
void xAssignPhiValues(xField &field, xMesh *mesh, std::map<mEntity *, double> &projectedValues);
std::list<AOMD::mEntity*> constructDelocalizedList(xfem::xLevelSet&);
const double epsilon_ratio;
bool doRestart;
};
#include "mPoint.h"
template <class T>
class xEvalOnOtherMesh : public xfem::xEval<T>
{
public :
//Constructeur **********
xEvalOnOtherMesh(const xfem::xEval<T> &evalInit_, xMesh& meshInit_) : evalInit(evalInit_),meshInit(meshInit_) {}
//Operateur *****************
void operator()(const xGeomElem* geo_appro, const xGeomElem* geo_integ, T& resu) const
{
//On recupere les coordonnees globales
Trellis_Util::mPoint xyz = geo_integ->getXYZ(); //On recupere les coordonnees du point considere
//Recharge de l'element d'approx =============
std::set<AOMD::mEntity*> elts; //On cree un "set" d'elements
meshInit.locateElement(xyz,elts); //On cherche tous les elements qui contiennent xyz et on les met dans le set
//if(elts.begin()==elts.end()){std::cout<<"ERREUR dans le xEvalWiOnAll : Le noeud "<<xyz<<" n'est pas dans le maillage\nContenu du-dit maillage :\n";meshInit.printAll();throw;}
if(elts.begin()==elts.end()){
std::cout<<"ERREUR dans xEvalOnOtherMesh : Le noeud "<<xyz(0) <<" "<< xyz(1) <<" n'est pas dans le maillage"<<endl;
resu *= 0.;
return;
}
//on extrait l'element parmis tous les elements
AOMD::mEntity* eltInit=0; //On cree un element unique
eltInit=*(elts.begin()); //...et on dit que c'est le premier element du set
//Plus simple ici : les noeuds sont dupliques : xyz doit forcement etre place sur un noeud de meshInit
//donc pas la peine de chercher la partition (qui n'existe pas, vue la maniere dont fonctionne le code ici)
#if 0
//Recuperation de l'element d'integration (sous-element) =========
xfem::xPartition partition;
xMesh::getPartition(eltInit, partition, xfem::xAcceptAll());//Recupere les sous elements
mEntity* elemIntegInit=0; //Element selectionne
Trellis_Util::LagrangeMappingBuilder mapping_builder;//Mapping
double u,v,w;//??
for(xfem::xPartition::iterator it=partition.begin();it!=partition.end();it++)
{
mEntity* e=*it;
Trellis_Util::Mapping* mapping = mapping_builder.BuildMapping(e);
if (mapping->interiorCheck (e, xyz, u, v, w))
elemIntegInit=*it;
delete mapping;
}
xGeomElem geoApproInit(eltInit); //Espace d'approximation (l'element entier)
xGeomElem geoIntegInit(elemIntegInit);//Espace d'inegration (sous-element)
//MAJ des coordonnees du point de calcul sur geo_Fine !
geoApproInit.setUVWForXYZ(xyz);
geoIntegInit.setUVWForXYZ(xyz);
#else
xGeomElem geoApproInit(eltInit);
xGeomElem geoIntegInit(eltInit);
geoApproInit.setUVWForXYZ(xyz);
geoIntegInit.setUVWForXYZ(xyz);
#endif
evalInit(&geoApproInit,&geoIntegInit,resu); //On evalue
} //Fin de l'operateur
private :
const xfem::xEval<T> &evalInit;
xfem::xMesh &meshInit;
};
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment