ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/toIbrep/src/toibrep.h
Revision: 309
Committed: Tue Jan 24 15:25:16 2012 UTC (13 years, 3 months ago) by francois
Content type: text/plain
File size: 3764 byte(s)
Log Message:
Preparation du maillage FEM pour inclure de nouveaux élements non necessairement triangle/tetra

File Contents

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