MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur3d_recuperation.cpp
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 //####// mailleur3d_recuperation.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "gestionversion.h"
24 #include "fct_taille.h"
25 #include "mg_volume.h"
26 #include "m3d_triangle.h"
27 
28 
29 
30 
31 
32 MAILLEUR3D_RECUPERATION::MAILLEUR3D_RECUPERATION(MG_MAILLAGE* mgmai,MG_VOLUME* mgvol,FCT_TAILLE* fct_taille,bool save):MAILLEUR3D(mgmai,mgmai->get_mg_geometrie(),fct_taille,save,mgvol)
33 {
34 
35 }
36 
37 
39 {
40 }
41 
42 
43 
45 {
46 LISTE_MG_TRIANGLE::iterator it;
48  {
49  M3D_TRIANGLE* nvtri=(M3D_TRIANGLE*)tri;
50  nvtri->change_nouveau_numero(0);
52  if (nvtri->get_lien_topologie()!=NULL)
53  if (nvtri->get_lien_topologie()->get_dimension()==2)
54  if (((MG_FACE*)nvtri->get_lien_topologie())->get_mg_coface(0)->get_orientation()==-1)
56 
57 
58  }
59 
60 
61 LISTE_MG_TETRA::iterator ittet;
62 for (MG_TETRA* tet=mg_maillage->get_premier_tetra(ittet);tet!=NULL;tet=mg_maillage->get_suivant_tetra(ittet))
63  {
64  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle1(),0);
65  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle2(),1);
66  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle3(),2);
67  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle4(),3);
68  }
69 
70 
72  {
73  M3D_TRIANGLE* mtri=(M3D_TRIANGLE*)tri;
74  //if ((mtri->get_nouveau_numero()==0) || ((mtri->get_nouveau_numero()==1) && (mtri->get_lien_topologie()->get_dimension()==3) ))
75  if ((mtri->get_nouveau_numero()==0) || ((mtri->get_nouveau_numero()==1) && (mtri->get_frontiere()!=1) ))
76  {
78  ajouter_front_courant(MAGIC::MAILLEURFRONTALETAT::NONFORCE,tri->get_noeud1(),tri->get_noeud2(),tri->get_noeud3(),mtri);
80  ajouter_front_courant(MAGIC::MAILLEURFRONTALETAT::NONFORCE,tri->get_noeud2(),tri->get_noeud1(),tri->get_noeud3(),mtri);
81  }
83 
84  }
85 
86 }
87 
88 
90 {
92 MG_NOEUD* no1;
93 MG_NOEUD* no2;
94 MG_NOEUD* no3;
95 if (num==0)
96  {
97  no1=tet->get_noeud1();
98  no2=tet->get_noeud3();
99  no3=tet->get_noeud2();
100  }
101 if (num==1)
102  {
103  no1=tet->get_noeud1();
104  no2=tet->get_noeud2();
105  no3=tet->get_noeud4();
106  }
107 if (num==2)
108  {
109  no1=tet->get_noeud2();
110  no2=tet->get_noeud3();
111  no3=tet->get_noeud4();
112  }
113 if (num==3)
114  {
115  no1=tet->get_noeud1();
116  no2=tet->get_noeud4();
117  no3=tet->get_noeud3();
118  }
119 OT_VECTEUR_3D vec1(no1->get_coord(),no2->get_coord());
120 OT_VECTEUR_3D vec2(no1->get_coord(),no3->get_coord());
121 OT_VECTEUR_3D normext=vec1&vec2;
122 OT_VECTEUR_3D vec3(tri->get_noeud1()->get_coord(),tri->get_noeud2()->get_coord());
123 OT_VECTEUR_3D vec4(tri->get_noeud1()->get_coord(),tri->get_noeud3()->get_coord());
124 OT_VECTEUR_3D normtri=vec3&vec4;
127 }
MAILLEUR3D_RECUPERATION::recherche_front_triangle
void recherche_front_triangle(MG_TETRA *tet, class M3D_TRIANGLE *tri, int num)
Definition: mailleur3d_recuperation.cpp:89
MAILLEUR3D::ajouter_front_courant
virtual MG_FRONT_3D * ajouter_front_courant(int numero_front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
Definition: mailleur3d.cpp:267
MG_TETRA::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_tetra.cpp:148
fct_taille.h
gestionversion.h
MAGIC::MAILLEURFRONTALETAT::FRONT_PAS_A_INVERSE
@ FRONT_PAS_A_INVERSE
Definition: mg_definition.h:109
MG_TETRA::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_tetra.cpp:143
MAGIC::MAILLEURFRONTALETAT::NONFORCE
@ NONFORCE
Definition: mg_definition.h:114
MG_MAILLAGE::get_premier_tetra
MG_TETRA * get_premier_tetra(LISTE_MG_TETRA::iterator &it)
Definition: mg_maillage.cpp:1374
MAGIC::MAILLEURFRONTALETAT::FRONT_A_INVERSE
@ FRONT_A_INVERSE
Definition: mg_definition.h:109
M3D_TRIANGLE::change_etat_front
virtual void change_etat_front(int num)
Definition: m3d_triangle.cpp:63
M3D_TRIANGLE
Definition: m3d_triangle.h:31
m3d_triangle.h
MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF
@ FRONT_NONACTIF
Definition: mg_definition.h:109
M3D_TRIANGLE::get_frontiere
virtual int get_frontiere(void)
Definition: m3d_triangle.cpp:160
MG_ELEMENT_TOPOLOGIQUE::get_dimension
virtual int get_dimension(void)=0
MAILLEUR3D::mg_maillage
MG_MAILLAGE * mg_maillage
Definition: mailleur3d.h:167
MG_TRIANGLE
Definition: mg_triangle.h:38
FCT_TAILLE
Definition: fct_taille.h:30
MG_VOLUME
Definition: mg_volume.h:33
MAILLEUR3D
Definition: mailleur3d.h:51
MG_TETRA
Definition: mg_tetra.h:37
MG_MAILLAGE::get_suivant_tetra
MG_TETRA * get_suivant_tetra(LISTE_MG_TETRA::iterator &it)
Definition: mg_maillage.cpp:1382
MG_ELEMENT_MAILLAGE::get_nouveau_numero
virtual int get_nouveau_numero(void)
Definition: mg_element_maillage.cpp:81
MG_MAILLAGE::get_premier_triangle
MG_TRIANGLE * get_premier_triangle(LISTE_MG_TRIANGLE::iterator &it)
Definition: mg_maillage.cpp:912
M3D_TRIANGLE::get_etat_front
virtual int get_etat_front(void)
Definition: m3d_triangle.cpp:67
MG_NOEUD
Definition: mg_noeud.h:41
MG_NOEUD::get_coord
virtual double * get_coord(void)
Definition: mg_noeud.cpp:92
mailleur3d_recuperation.h
MG_ELEMENT_MAILLAGE::change_nouveau_numero
virtual void change_nouveau_numero(int num)
Definition: mg_element_maillage.cpp:76
MG_TRIANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_triangle.cpp:131
MAILLEUR3D_RECUPERATION::~MAILLEUR3D_RECUPERATION
virtual ~MAILLEUR3D_RECUPERATION()
Definition: mailleur3d_recuperation.cpp:38
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
MG_TRIANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_triangle.cpp:126
MG_TETRA::get_noeud4
virtual MG_NOEUD * get_noeud4(void)
Definition: mg_tetra.cpp:158
MAILLEUR3D_RECUPERATION::cree_front
void cree_front(MG_VOLUME *mgvol)
Definition: mailleur3d_recuperation.cpp:44
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
MG_TRIANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_triangle.cpp:137
MG_TETRA::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_tetra.cpp:153
MG_MAILLAGE::get_suivant_triangle
MG_TRIANGLE * get_suivant_triangle(LISTE_MG_TRIANGLE::iterator &it)
Definition: mg_maillage.cpp:920
MG_MAILLAGE
Definition: mg_maillage.h:62
MAILLEUR3D_RECUPERATION::MAILLEUR3D_RECUPERATION
MAILLEUR3D_RECUPERATION(MG_MAILLAGE *mgmai, MG_VOLUME *mgvol, FCT_TAILLE *fct_taille, bool save)
Definition: mailleur3d_recuperation.cpp:32
MG_FACE
Definition: mg_face.h:34
mg_volume.h