MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
CAD4FE_mailleur2d.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// CAD4FE_mailleur2d.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef mailleur2dH
23 #define mailleur2dH
24 
25 #include "CAD4FE_Mesher_platform.h"
26 
27 #ifdef BORLANDCPP
28  #include <map.h>
29 #else
30  #include <map>
31 #endif
32 #include <string>
33 #include <sstream>
34 #include <fstream>
35 
36 #include "ot_decalage_parametre.h"
37 #include "mg_noeud.h"
38 #include "mg_segment.h"
39 #include "mg_maillage.h"
40 #include "mg_geometrie.h"
41 #include "mg_face.h"
42 #include "fct_taille_face.h"
43 #include "tpl_grille.h"
44 
45 #include "CAD4FE_mailleur.h"
46 #include "CAD4FE_mg_front_2D.h"
47 #include "CAD4FE_m3d_MCTriangle.h"
48 #include "CAD4FE_MCSegment.h"
49 #include "CAD4FE_MCNode.h"
50 #include "CAD4FE_MCFace.h"
51 
52 
53 #define CAS_FRONT_3 1
54 #define CAS_FRONT_4 2
55 #define CAS_FERME_CAVITE_P 3
56 #define CAS_FERME_CAVITE_S 4
57 #define CAS_FERME_CAVITE 5
58 #define CAS_GENERAL 6
59 #define CAS_FRONT_3X 7
60 
61 #define PASTROUVE 10
62 #define TROUVE 11
63 
64 #define TOUS_SEGMENT 20
65 #define TOUS_FRONT 21
66 #define RIEN 22
67 
68 #define NOEUD_CREE 30
69 #define FRONT_RENCONTRE 31
70 #define ERREUR 32
71 
72 namespace CAD4FE {
73 
74 class MAILLEUR2D:public MAILLEUR
75 {
76 public :
77 typedef std::multimap<double,MG_FRONT_2D*,std::less<double> > FRONT;
78 typedef std::multimap<double,M3D_MCTriangle*,std::less<double> > ORDRE_TRIANGLE;
79 
80 MAILLEUR2D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,MCFace* __mcFace, FCT_TAILLE* fct_taille=NULL);
81 ~MAILLEUR2D();
82 
83 
84 
85 void maille(void);
86 void maille(MCFace* __mcFace);
87 
88 void initialise_lst_tri_qual(MCFace* __mcFace);
89 void optimise(MCFace* __mcFace);
90 void optimise_bascule_segment(MCFace* __mcFace);
92 int debug;
93 void ClearLog();
94 
95 private :
97 
98 void initialise_frontiere(MCFace* __mcFace);
99 void cree_grille(MCFace* __mcFace);
100 void initialise_front(MCFace* __mcFace);
101 void initialise_front (MCFace * __mcFace, std::set<MCVertex*> __isolatedInteriorVertices);
102 void progresse_front(MCFace* __mcFace);
103 
104 int traite_front(int type_front,MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
116 int noeud_est_dans_triangle(MCNode* noeud,MG_TRIANGLE *triangle);
117 int noeud_est_dans_triangle(MCNode* noeud,MCNode *noeud1,MCNode *noeud2,MCNode *noeud3);
118 int triangle_est_dans_bon_sens(MCFace* face,MCNode* noeud1,MCNode *noeud2,MCNode *noeud3);
120 int triangles_sont_dans_meme_sens(MCFace* face,MCNode* noeud1,MCNode *noeud2,MCNode *noeud2bis,MCNode *noeud3);
121 int genere_noeud(MCFace* __mcFace, MCNode *__interiorIsolatedNode, MG_FRONT_2D **front_rencontre,MCNode **noeud_rencontre);
122 int genere_noeud(MCFace* __mcFace,MG_FRONT_2D* front,MG_FRONT_2D **front_rencontre,MCNode **noeud);
123 int insere_segment(MCFace *mgface,MCSegment **nv_segment,MCNode* noeud1,MCNode* noeud2,int type_verication,double __tolerance = 0.0);
124 void supprime_segment(MCSegment *__segment);
125 MCTriangle* insere_triangle(MG_ELEMENT_TOPOLOGIQUE* topo, MCNode *mgnoeud1, MCNode *mgnoeud2, MCNode *mgnoeud3);
126 int bouge_point(MCFace* __mcFace, MCNode *mg_noeud, double& crit, MCNode **__result);
127 void verifie_front();
128 
129 int examine_solution(double sol1,double sol2,int type);
130 
131 double calcule_distance_metrique(MG_FACE* mgface,double u1,double v1,double u2,double v2,double du,double dv);
132 
133 MG_FRONT_2D* ajouter_front(FRONT& front,MCNode* noeud1,MCNode* noeud2,MCSegment* segment);
134 void ajouter_front(FRONT& front,MG_FRONT_2D *ft);
135 MG_FRONT_2D* get_front(FRONT& front,unsigned int num);
136 unsigned int get_nb_front(FRONT& front);
137 void supprimer_front(MG_FRONT_2D* ft);
139 void supprimer_front(MG_SEGMENT * seg);
140 void echange_de_front(FRONT& front_original,FRONT& front_destination,MG_FRONT_2D* ft);
141 
142 void export_ivanim();
144 
145 void WriteLog(std::string __text);
146 
151 
152 
163 std::map<MG_ELEMENT_TOPOLOGIQUE*,int> _nbTriangles;
164 std::ofstream _logFile;
165 };
166 
167 }
168 
169 
170 
171 
172 #endif
CAD4FE::MAILLEUR2D::identifie_front_cas_front_3x
int identifie_front_cas_front_3x(MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:145
CAD4FE::MAILLEUR2D::export_ivanim_all_faces
void export_ivanim_all_faces()
Definition: CAD4FE_mailleur2d.cpp:347
CAD4FE::MAILLEUR2D::traite_front_cas_ferme_cavite
int traite_front_cas_ferme_cavite(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:262
MG_SEGMENT
Definition: mg_segment.h:38
CAD4FE::MAILLEUR2D::FRONT
std::multimap< double, MG_FRONT_2D *, std::less< double > > FRONT
Definition: CAD4FE_mailleur2d.h:77
mg_geometrie.h
CAD4FE::MAILLEUR2D::ajouter_front
MG_FRONT_2D * ajouter_front(FRONT &front, MCNode *noeud1, MCNode *noeud2, MCSegment *segment)
Definition: CAD4FE_mailleur2d.cpp:1054
CAD4FE::MAILLEUR2D::front_courant
FRONT front_courant
Definition: CAD4FE_mailleur2d.h:158
CAD4FE::MAILLEUR2D::traite_front
int traite_front(int type_front, MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:40
CAD4FE::MAILLEUR2D::initialise_lst_tri_qual
void initialise_lst_tri_qual(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:964
CAD4FE_Mesher_platform.h
CAD4FE::MAILLEUR2D::get_front
MG_FRONT_2D * get_front(FRONT &front, unsigned int num)
Definition: CAD4FE_mailleur2d.cpp:1068
CAD4FE::MCSegment
Definition: CAD4FE_MCSegment.h:50
CAD4FE::MAILLEUR2D::verifie_front
void verifie_front()
Definition: CAD4FE_mailleur2d_traite_Front.cpp:521
CAD4FE::MAILLEUR2D::identifie_front_cas_front_4x
int identifie_front_cas_front_4x(MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
CAD4FE::MAILLEUR2D::echange_de_front
void echange_de_front(FRONT &front_original, FRONT &front_destination, MG_FRONT_2D *ft)
Definition: CAD4FE_mailleur2d.cpp:1186
TPL_GRILLE
Definition: tpl_grille.h:121
CAD4FE::MAILLEUR2D::~MAILLEUR2D
~MAILLEUR2D()
Definition: CAD4FE_mailleur2d.cpp:50
CAD4FE_mailleur.h
MG_TRIANGLE
Definition: mg_triangle.h:38
FCT_TAILLE
Definition: fct_taille.h:30
CAD4FE::MAILLEUR2D::ORDRE_TRIANGLE
std::multimap< double, M3D_MCTriangle *, std::less< double > > ORDRE_TRIANGLE
Definition: CAD4FE_mailleur2d.h:78
mg_noeud.h
CAD4FE::MAILLEUR2D::maille
void maille(void)
Definition: CAD4FE_mailleur2d.cpp:57
ot_decalage_parametre.h
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
CAD4FE::MAILLEUR2D::filenameNbTriangles
char filenameNbTriangles[5000]
Definition: CAD4FE_mailleur2d.h:91
CAD4FE::MAILLEUR2D::grille_de_frontiere
TPL_GRILLE< MCSegment * > * grille_de_frontiere
Definition: CAD4FE_mailleur2d.h:156
CAD4FE::MAILLEUR2D::calcule_distance_metrique
double calcule_distance_metrique(MG_FACE *mgface, double u1, double v1, double u2, double v2, double du, double dv)
Definition: CAD4FE_mailleur2d_outil.cpp:584
CAD4FE::MAILLEUR2D::traite_front_cas_ferme_cavite_p
int traite_front_cas_ferme_cavite_p(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:344
CAD4FE::MAILLEUR2D::mg_geometrie
MG_GEOMETRIE * mg_geometrie
Definition: CAD4FE_mailleur2d.h:148
CAD4FE::MAILLEUR2D::supprimer_front
void supprimer_front(MG_FRONT_2D *ft)
Definition: CAD4FE_mailleur2d.cpp:1117
CAD4FE::MAILLEUR2D::supprime_segment
void supprime_segment(MCSegment *__segment)
Definition: CAD4FE_mailleur2d_outil.cpp:217
CAD4FE::MAILLEUR2D::triangles_sont_dans_meme_sens
int triangles_sont_dans_meme_sens(MCFace *face, MCNode *noeud1, MCNode *noeud2, MCNode *noeud2bis, MCNode *noeud3)
Definition: CAD4FE_mailleur2d_outil.cpp:677
mg_segment.h
CAD4FE::MAILLEUR2D::lst_tri_qual
ORDRE_TRIANGLE lst_tri_qual
Definition: CAD4FE_mailleur2d.h:161
CAD4FE::MAILLEUR2D::noeud_est_dans_triangle
int noeud_est_dans_triangle(MCNode *noeud, MG_TRIANGLE *triangle)
Definition: CAD4FE_mailleur2d_outil.cpp:52
CAD4FE::MAILLEUR2D::WriteLog
void WriteLog(std::string __text)
Definition: CAD4FE_mailleur2d.cpp:71
CAD4FE::MAILLEUR2D::examine_solution
int examine_solution(double sol1, double sol2, int type)
CAD4FE::MAILLEUR2D::initialise_front
void initialise_front(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:503
MG_NOEUD
Definition: mg_noeud.h:41
CAD4FE::MAILLEUR2D::lst_tri_qual2
ORDRE_TRIANGLE lst_tri_qual2
Definition: CAD4FE_mailleur2d.h:162
CAD4FE::MCTriangle
Definition: CAD4FE_MCTriangle.h:39
CAD4FE::MAILLEUR2D::traite_front_cas_front_3x
int traite_front_cas_front_3x(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:102
CAD4FE_mg_front_2D.h
tpl_grille.h
CAD4FE::MAILLEUR2D::traite_front_cas_front_4x
int traite_front_cas_front_4x(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
CAD4FE::MAILLEUR2D::grille_de_segment
TPL_GRILLE< MCSegment * > * grille_de_segment
Definition: CAD4FE_mailleur2d.h:155
CAD4FE::MAILLEUR2D::initialise_frontiere
void initialise_frontiere(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:394
CAD4FE::MAILLEUR2D::optimise
void optimise(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:977
CAD4FE::MAILLEUR2D::debug
int debug
Definition: CAD4FE_mailleur2d.h:92
CAD4FE::MAILLEUR2D::traite_front_cas_front_4
int traite_front_cas_front_4(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:164
CAD4FE::MAILLEUR
Definition: CAD4FE_mailleur.h:29
CAD4FE::MAILLEUR2D::traite_front_cas_general
int traite_front_cas_general(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:421
CAD4FE::MAILLEUR2D::get_nb_front
unsigned int get_nb_front(FRONT &front)
Definition: CAD4FE_mailleur2d.cpp:1076
CAD4FE::MAILLEUR2D::segment_frontiere
TPL_LISTE_ENTITE< MG_SEGMENT * > segment_frontiere
Definition: CAD4FE_mailleur2d.h:153
CAD4FE::MAILLEUR2D::trouver_front
MG_FRONT_2D * trouver_front(MG_NOEUD *no1, MG_NOEUD *no2)
Definition: CAD4FE_mailleur2d.cpp:1082
CAD4FE_MCSegment.h
CAD4FE::MAILLEUR2D::insere_segment
int insere_segment(MCFace *mgface, MCSegment **nv_segment, MCNode *noeud1, MCNode *noeud2, int type_verication, double __tolerance=0.0)
Definition: CAD4FE_mailleur2d_outil.cpp:118
CAD4FE::MAILLEUR2D::ClearLog
void ClearLog()
Definition: CAD4FE_mailleur2d.cpp:81
CAD4FE::MAILLEUR2D::traite_front_cas_ferme_cavite_s
int traite_front_cas_ferme_cavite_s(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:383
CAD4FE::MAILLEUR2D::triangle_est_dans_bon_sens
int triangle_est_dans_bon_sens(MCFace *face, MCNode *noeud1, MCNode *noeud2, MCNode *noeud3)
Definition: CAD4FE_mailleur2d_outil.cpp:694
CAD4FE::MAILLEUR2D::triangle_est_dans_bon_sens_front
int triangle_est_dans_bon_sens_front(MG_FRONT_2D *front, MCNode *noeud3)
Definition: CAD4FE_mailleur2d_outil.cpp:873
CAD4FE::MAILLEUR2D::lst_front_superpose
FRONT lst_front_superpose
Definition: CAD4FE_mailleur2d.h:160
CAD4FE::MAILLEUR2D::metrique
FCT_TAILLE * metrique
Definition: CAD4FE_mailleur2d.h:150
CAD4FE_MCNode.h
mg_maillage.h
CAD4FE_m3d_MCTriangle.h
CAD4FE::MAILLEUR2D::MAILLEUR2D
MAILLEUR2D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, MCFace *__mcFace, FCT_TAILLE *fct_taille=NULL)
Definition: CAD4FE_mailleur2d.cpp:42
CAD4FE::MAILLEUR2D::_nbTriangles
std::map< MG_ELEMENT_TOPOLOGIQUE *, int > _nbTriangles
Definition: CAD4FE_mailleur2d.h:163
CAD4FE::MAILLEUR2D
Definition: CAD4FE_mailleur2d.h:74
CAD4FE::MAILLEUR2D::genere_noeud
int genere_noeud(MCFace *__mcFace, MCNode *__interiorIsolatedNode, MG_FRONT_2D **front_rencontre, MCNode **noeud_rencontre)
Definition: CAD4FE_mailleur2d_outil.cpp:223
CAD4FE::MAILLEUR2D::export_ivanim
void export_ivanim()
Definition: CAD4FE_mailleur2d.cpp:185
CAD4FE::MAILLEUR2D::bouge_point
int bouge_point(MCFace *__mcFace, MCNode *mg_noeud, double &crit, MCNode **__result)
Definition: CAD4FE_mailleur2d_outil.cpp:711
CAD4FE::MAILLEUR2D::identifie_front_cas_front_4
int identifie_front_cas_front_4(MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
MG_GEOMETRIE
Definition: mg_geometrie.h:84
CAD4FE
Definition: CAD4FE_ClosestPoint_Segment_MG_ARETE.h:34
CAD4FE::MAILLEUR2D::progresse_front
void progresse_front(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:734
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_SEGMENT * >
CAD4FE::MCNode
Definition: CAD4FE_MCNode.h:47
CAD4FE::MAILLEUR2D::cree_grille
void cree_grille(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:429
CAD4FE::MAILLEUR2D::noeud_frontiere
TPL_LISTE_ENTITE< MG_NOEUD * > noeud_frontiere
Definition: CAD4FE_mailleur2d.h:154
CAD4FE::MAILLEUR2D::grille_de_front
TPL_GRILLE< MG_FRONT_2D * > * grille_de_front
Definition: CAD4FE_mailleur2d.h:157
CAD4FE::MG_FRONT_2D
Definition: CAD4FE_mg_front_2D.h:35
CAD4FE::MAILLEUR2D::insere_triangle
MCTriangle * insere_triangle(MG_ELEMENT_TOPOLOGIQUE *topo, MCNode *mgnoeud1, MCNode *mgnoeud2, MCNode *mgnoeud3)
Definition: CAD4FE_mailleur2d_outil.cpp:651
CAD4FE::MAILLEUR2D::front_attente
FRONT front_attente
Definition: CAD4FE_mailleur2d.h:159
MG_FACE
Definition: mg_face.h:34
CAD4FE::MCFace
Definition: CAD4FE_MCFace.h:50
CAD4FE_MCFace.h
CAD4FE::MAILLEUR2D::mg_maillage
MG_MAILLAGE * mg_maillage
Definition: CAD4FE_mailleur2d.h:147
CAD4FE::MAILLEUR2D::optimise_bascule_segment
void optimise_bascule_segment(MCFace *__mcFace)
Definition: CAD4FE_mailleur2d.cpp:957
mg_face.h
CAD4FE::MAILLEUR2D::creation_metrique
int creation_metrique
Definition: CAD4FE_mailleur2d.h:96
CAD4FE::MAILLEUR2D::_mcFace
MCFace * _mcFace
Definition: CAD4FE_mailleur2d.h:149
CAD4FE::MAILLEUR2D::_logFile
std::ofstream _logFile
Definition: CAD4FE_mailleur2d.h:164
fct_taille_face.h
CAD4FE::MAILLEUR2D::traite_front_cas_front_3
int traite_front_cas_front_3(MCFace *__mcFace, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
Definition: CAD4FE_mailleur2d_traite_Front.cpp:65