ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/toIbrep/src/toibrep.h
Revision: 280
Committed: Thu Jun 30 19:51:22 2011 UTC (14 years, 2 months ago) by francois
Content type: text/plain
File size: 3173 byte(s)
Log Message:
progression de couche dans le bouchage de trou lors de la construction des level-sets dans toIbrep

File Contents

# Content
1 #ifndef _TOIBREP_
2 #define _TOIBREP_
3
4
5
6 #ifdef WINDOWS_VERSION
7 #ifdef BUILT_DLL_TOIBREP
8 #define DLLPORTTOIBREP __declspec(dllexport)
9 #else
10 #define DLLPORTTOIBREP __declspec(dllimport)
11 #endif
12 #else
13 #define DLLPORTTOIBREP
14 #endif
15
16 #include <string>
17 #include "tpl_octree.h"
18 #include "mg_geometrie_outils.h"
19 #include "IBrep.h"
20
21 class DLLPORTTOIBREP TOIBREP
22 {
23 public:
24 TOIBREP(class MG_GESTIONNAIRE *g,class MG_GEOMETRIE *ge,class FEM_MAILLAGE* femm,int nbpas,class OT_CPU* compt);
25 TOIBREP(class MG_GESTIONNAIRE *g,class MG_GEOMETRIE *ge,class FEM_MAILLAGE* femm,int nbpas);
26 TOIBREP(class MG_GESTIONNAIRE *g,class MG_GEOMETRIE *ge,class FEM_MAILLAGE* femm);
27 TOIBREP(class MG_GESTIONNAIRE *g,class MG_GEOMETRIE *ge,class FEM_MAILLAGE* femm,class OT_CPU* compt);
28 ~TOIBREP();
29 int estdansletetra(class FEM_TETRA *tet,double x,double y, double z);
30 //void importer(std::string nomfichier,class MagXchange* data=NULL,std::string nomfichier2="");
31 IBrep importer(std::string nomfichier,std::string nomfichieribrep,class MG_GROUPE_TOPOLOGIQUE* mggt=NULL);
32
33 void active_affichage(void (*fonc)(char*));
34
35 IBrep exporter_IBrep(string chemin,class FEM_SOLUTION* solution,class FEM_SOLUTION* solution_ele,MG_GROUPE_TOPOLOGIQUE* mggt=NULL);
36 enum ETAT {EXTERIEUR=0,INTERIEUR=1,STRICTINTERIEUR=2};
37
38 private:
39 typedef std::multimap<double,FEM_TETRA*,less<double> > LISTE_FM_TRI;
40 typedef std::map<unsigned long,LISTE_FM_TRI::iterator,less<unsigned long> > LISTE_FM_TRI_ID;
41 typedef std::vector<FEM_TETRA*> LISTE_FM;
42
43 int compare_etat(int etat,int valeur);
44
45 OT_CPU* compteur;
46
47 void remplir_trou(std::vector<class TOIBREP_POINT*> *lst,MG_FACE* face,int orientation);
48 void decoupe_tetra(FEM_TETRA* tet,double* lst,int *nbtet);
49
50 void ajouter_liste(LISTE_FM_TRI& lst,LISTE_FM_TRI_ID &lstid,FEM_TETRA* tet,double val);
51 void supprimer_liste(LISTE_FM_TRI& lst,LISTE_FM_TRI_ID &lstid,FEM_TETRA* tet);
52 void ajouter_liste(LISTE_FM& lst,FEM_TETRA* tet);
53 void supprimer_liste(LISTE_FM& lst,FEM_TETRA* tet);
54
55 double calcul_distance(class FEM_NOEUD* noeud,class MG_ARETE* are,class TOIBREP_POINT *pt,double precision=1e-6);
56 double calcul_distance(FEM_NOEUD* noeud,class MG_FACE* are,TOIBREP_POINT* pt,double *xyz,double *uv,double precision=1e-6);
57 double calculdist(double *n,double x,double y,double z,class FEM_NOEUD* noeud);
58 void levelset0(class FEM_SOLUTION* solution,int numsol);
59 void levelsetn(TPL_MAP_ENTITE<class MG_ELEMENT_TOPOLOGIQUE*> *lst,vector<MG_FACE*> *lstface,class FEM_SOLUTION* solution,FEM_SOLUTION* solution_ele,int numsol);
60 void echantillonne_arete(std::vector<TOIBREP_POINT*> &lst,MG_FACE* face);
61 void echantillonne_sommet(std::vector<TOIBREP_POINT*> &lst,MG_FACE* face);
62 void calcullevelsetpremierepasse(MG_FACE* face,int sens,vector<TOIBREP_POINT*> *lst,int n1,int n2);
63 void calcullevelsetdeuxiemepasse(vector<TOIBREP_POINT*> *lst);
64 void etendrelevelset(FEM_SOLUTION* sol,int numsol);
65 double resoudgradT(FEM_TETRA* tet,int *signe);
66 TPL_OCTREE<class FEM_TETRA*,class FEM_NOEUD*> octree;
67 MG_GEOMETRIE_OUTILS ot;
68 MG_GEOMETRIE* geo;
69 FEM_MAILLAGE* mai;
70 MG_GESTIONNAIRE* gest;
71 int NPAS;
72 int affichageactif;
73 void (*affiche)(char *mess);
74 };
75
76
77
78
79
80
81 #endif