1 |
#ifndef _TOXFEM_ |
2 |
#define _TOXFEM_ |
3 |
|
4 |
|
5 |
|
6 |
#ifdef WINDOWS_VERSION |
7 |
#ifdef BUILT_DLL_TOXFEM |
8 |
#define DLLPORTTOXFEM __declspec(dllexport) |
9 |
#else |
10 |
#define DLLPORTTOXFEM __declspec(dllimport) |
11 |
#endif |
12 |
#else |
13 |
#define DLLPORTTOXFEM |
14 |
#endif |
15 |
|
16 |
#include <string> |
17 |
#include "tpl_octree.h" |
18 |
#include "mg_geometrie_outils.h" |
19 |
|
20 |
class DLLPORTTOXFEM TOXFEM |
21 |
{ |
22 |
public: |
23 |
TOXFEM(class MG_GESTIONNAIRE *g,class MG_GEOMETRIE *ge,class FEM_MAILLAGE* femm,int nbpas=50); |
24 |
~TOXFEM(); |
25 |
int estdansletetra(class FEM_TETRA *tet,double x,double y, double z); |
26 |
//void importer(std::string nomfichier,class MagXchange* data=NULL,std::string nomfichier2=""); |
27 |
void importer(std::string nomfichier,std::string nomfichieribrep,class MG_GROUPE_TOPOLOGIQUE* mggt=NULL); |
28 |
|
29 |
|
30 |
|
31 |
void exporter_IBrep(string chemin,class FEM_SOLUTION* solution,MG_GROUPE_TOPOLOGIQUE* mggt=NULL); |
32 |
|
33 |
|
34 |
private: |
35 |
typedef std::multimap<double,FEM_TETRA*,less<double> > LISTE_FM_TRI; |
36 |
typedef std::map<unsigned long,LISTE_FM_TRI::iterator,less<unsigned long> > LISTE_FM_TRI_ID; |
37 |
typedef std::vector<FEM_TETRA*> LISTE_FM; |
38 |
|
39 |
void ajouter_liste(LISTE_FM_TRI& lst,LISTE_FM_TRI_ID &lstid,FEM_TETRA* tet,double val); |
40 |
void supprimer_liste(LISTE_FM_TRI& lst,LISTE_FM_TRI_ID &lstid,FEM_TETRA* tet); |
41 |
void ajouter_liste(LISTE_FM& lst,FEM_TETRA* tet); |
42 |
void supprimer_liste(LISTE_FM& lst,FEM_TETRA* tet); |
43 |
|
44 |
double calcul_distance(class FEM_NOEUD* noeud,class MG_ARETE* are,class TOXFEM_POINT *pt,double precision=1e-6); |
45 |
double calcul_distance(FEM_NOEUD* noeud,class MG_FACE* are,TOXFEM_POINT* pt,double precision=1e-6); |
46 |
double calculdist(double *n,double x,double y,double z,class FEM_NOEUD* noeud); |
47 |
void levelset0(class FEM_SOLUTION* solution,int numsol); |
48 |
void levelsetn(TPL_MAP_ENTITE<class MG_ELEMENT_TOPOLOGIQUE*> *lst,vector<MG_FACE*> *lstface,class FEM_SOLUTION* solution,int numsol); |
49 |
void calcullevelsetpremierepasse(FEM_SOLUTION *solution,int numsol,MG_FACE* face,int sens,vector<TOXFEM_POINT*> *lst,int n1,int n2); |
50 |
void calcullevelsetdeuxiemepasse(FEM_SOLUTION *solution,int numsol,vector<TOXFEM_POINT*> *lst); |
51 |
void etendrelevelset(FEM_SOLUTION* sol,int numsol); |
52 |
double resoudgradT(FEM_TETRA* tet,int *signe); |
53 |
TPL_OCTREE<class FEM_TETRA*,class FEM_NOEUD*> octree; |
54 |
MG_GEOMETRIE_OUTILS ot; |
55 |
MG_GEOMETRIE* geo; |
56 |
FEM_MAILLAGE* mai; |
57 |
MG_GESTIONNAIRE* gest; |
58 |
int NPAS; |
59 |
}; |
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
#endif |