Commit ef9a9eee authored by Benoit Le's avatar Benoit Le

Update to take into account last commits in Xfiles + clang format

Takes into account commit 65fe407b in Xfiles
parent 96390621
This diff is collapsed.
/*
/*
This file is a part of eXlibris C++ Library
under the GNU General Public License:
See the LICENSE.md files for terms and
See the LICENSE.md files for terms and
conditions.
*/
#ifndef _TLSDuctile_FormulationQSRemeshAniso_h_
......@@ -10,76 +10,75 @@
class PreProcessing;
class TLSSolver;
#include "xMesh.h"
#include "mEntity.h"
#include "xField.h"
#include "xLevelSet.h"
#include "xMesh.h"
using xfem::xMesh;
using AOMD::mEntity;
class QSFormulRemeshAniso : public QSFormulation {
public:
QSFormulRemeshAniso(TLSGeom&, TLSSolver&,
const xfem::xData&, const xParseData&,
PreProcessing&, PostProcessing&, std::function<void (xMesh&)> );
virtual ~QSFormulRemeshAniso();
// void setBCDefinition(std::vector<std::tuple<std::function<bool (const Trellis_Util::mPoint&) >, int, int> >& BCDEF);
// std::vector<std::tuple<std::function<bool (const Trellis_Util::mPoint&) >, int, int> > BCDEF;
xfem::xLevelSet lsetAdapt;
std::function<void (xMesh&)> tagger;
xMesh *backupMesh;
private:
void updateLevelSetField();
void xReadFromParaview(std::string, std::string, xfem::xField<>&,xMesh&);
//void xReadFromParaviewxLevelSet(std::string, std::string, xfem::xLevelSet&,xMesh&);
void xReadFromParaviewxLevelSet(std::string, std::string, xfem::xLevelSet&);
void remesh();
void buildLSAdaptationField();
void projectPhiOnMesh(xMesh *mesh_new, std::map<mEntity *, double> &projectedValues);
void xAssignPhiValues(xfem::xField<> &field, xMesh *mesh, std::map<mEntity *, double> &projectedValues);
std::list<AOMD::mEntity*> constructDelocalizedList(xfem::xLevelSet&);
bool doRestart;
class QSFormulRemeshAniso : public QSFormulation
{
public:
QSFormulRemeshAniso(TLSGeom &, TLSSolver &, const xfem::xData &, const xParseData &, PreProcessing &, PostProcessing &,
std::function<void(xMesh &)>);
virtual ~QSFormulRemeshAniso();
// void setBCDefinition(std::vector<std::tuple<std::function<bool (const Trellis_Util::mPoint&) >, int, int> >& BCDEF);
// std::vector<std::tuple<std::function<bool (const Trellis_Util::mPoint&) >, int, int> > BCDEF;
xfem::xLevelSet lsetAdapt;
std::function<void(xMesh &)> tagger;
xMesh *backupMesh;
private:
void updateLevelSetField();
void xReadFromParaview(std::string, std::string, xfem::xField<> &, xMesh &);
// void xReadFromParaviewxLevelSet(std::string, std::string, xfem::xLevelSet&,xMesh&);
void xReadFromParaviewxLevelSet(std::string, std::string, xfem::xLevelSet &);
void remesh();
void buildLSAdaptationField();
void projectPhiOnMesh(xMesh *mesh_new, std::map<mEntity *, double> &projectedValues);
void xAssignPhiValues(xfem::xField<> &field, xMesh *mesh, std::map<mEntity *, double> &projectedValues);
std::list<AOMD::mEntity *> constructDelocalizedList(xfem::xLevelSet &);
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 xfem::xGeomElem* geo_appro, const xfem::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;
}
public:
// Constructeur **********
xEvalOnOtherMesh(const xfem::xEval<T> &evalInit_, xMesh &meshInit_) : evalInit(evalInit_), meshInit(meshInit_) {}
// Operateur *****************
void operator()(const xfem::xGeomElem *geo_appro, const xfem::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
// 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)
// 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;
......@@ -102,22 +101,17 @@ public :
geoApproInit.setUVWForXYZ(xyz);
geoIntegInit.setUVWForXYZ(xyz);
#else
xfem::xGeomElem geoApproInit(eltInit);
xfem::xGeomElem geoIntegInit(eltInit);
geoApproInit.setUVWForXYZ(xyz);
geoIntegInit.setUVWForXYZ(xyz);
xfem::xGeomElem geoApproInit(eltInit);
xfem::xGeomElem geoIntegInit(eltInit);
geoApproInit.setUVWForXYZ(xyz);
geoIntegInit.setUVWForXYZ(xyz);
#endif
evalInit(&geoApproInit,&geoIntegInit,resu); //On evalue
} //Fin de l'operateur
evalInit(&geoApproInit, &geoIntegInit, resu); // On evalue
} // Fin de l'operateur
private :
const xfem::xEval<T> &evalInit;
xMesh &meshInit;
private:
const xfem::xEval<T> &evalInit;
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