MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
m3d_triangle.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 //####// m3d_triangle.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 
26 
27 
28 #include "m3d_triangle.h"
29 #include "mg_maillage.h"
30 
31 
32 
33 
34 
35 
36 
37 M3D_TRIANGLE::M3D_TRIANGLE(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,int origine):MG_TRIANGLE(num,topo,mgnoeud1,mgnoeud2,mgnoeud3,mgsegment1,mgsegment2,mgsegment3,origine),nb_voisin(0),etat_front(MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF),frontiere(0)
38 {
39 }
40 
41 
42 M3D_TRIANGLE::M3D_TRIANGLE(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,int origine):MG_TRIANGLE(topo,mgnoeud1,mgnoeud2,mgnoeud3,mgsegment1,mgsegment2,mgsegment3,origine),nb_voisin(0),etat_front(MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF),frontiere(0)
43 {
44 }
45 
46 M3D_TRIANGLE::M3D_TRIANGLE(M3D_TRIANGLE& mdd):MG_TRIANGLE(mdd),nb_voisin(mdd.nb_voisin),frontiere(mdd.frontiere)
47 {
48  voisin[0]=mdd.voisin[0];
49  voisin[1]=mdd.voisin[1];
50 }
51 
53 {
54 }
55 
56 
58 {
60 }
61 
62 
64 {
65  etat_front=num;
66 }
68 {
69  return etat_front;
70 }
71 
72 
74 {
75  mgfront=ft;
76 }
77 
79 {
80  return mgfront;
81 }
82 
83 
85 {
86  if (nb_voisin==0)
87  {
88  voisin[0]=tet;
89  voisin[1]=NULL;
90  nb_voisin=1;
91  return 1;
92  }
93  if (nb_voisin==1)
94  {
95  voisin[1]=tet;
96  nb_voisin=2;
97  return 1;
98  }
99  return 0;
100 }
101 
103 {
104  if (nb_voisin==1)
105  {
106  voisin[0]=NULL;
107  voisin[1]=NULL;
108  nb_voisin=0;
109  return 1;
110  }
111  if (nb_voisin==2)
112  {
113  if (voisin[0]==tet)
114  {
115  voisin[0]=voisin[1];
116  voisin[1]=NULL;
117  nb_voisin=1;
118  return 1;
119  }
120  else
121  {
122  voisin[1]=NULL;
123  nb_voisin=1;
124  return 1;
125  }
126  }
127  return 0;
128 }
129 
131 {
132  if ((num<0) && (num>1)) return NULL;
133  return voisin[num];
134 }
135 
136 
138 {
139  return nb_voisin;
140 }
141 
142 
143 
145 {
146  return qualite;
147 }
148 
150 {
151  qualite=val;
152 }
153 
155 {
156 if (frontiere==0)frontiere=1; else frontiere=0;
157 }
158 
159 
161 {
162 return frontiere;
163 }
164 
165 void M3D_TRIANGLE::enregistrer(std::ostream& o)
166 {
167  if ((liaison_topologique==NULL) && (MG_MAILLAGE::DIMENSIONMAILLAGESANSTOPO!=2) && (frontiere==0) ) return;
168  if (liaison_topologique==NULL) o << "%" << get_id() << "=TRIANGLE(NULL,$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << "," << origine_creation << ");" << std::endl;
169  else if (liaison_topologique->get_dimension()==2) o << "%" << get_id() << "=TRIANGLE($"<< get_lien_topologie()->get_id() << ",$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << "," << origine_creation << ");" << std::endl;
170 }
M3D_TRIANGLE::nb_voisin
int nb_voisin
Definition: m3d_triangle.h:64
MG_SEGMENT
Definition: mg_segment.h:38
gestionversion.h
M3D_TRIANGLE::etat_front
int etat_front
Definition: m3d_triangle.h:61
MG_FRONT_3D
Definition: CAD4FE_mg_front_3d.h:42
M3D_TRIANGLE::get_nb_voisin
virtual int get_nb_voisin(void)
Definition: m3d_triangle.cpp:137
MG_ELEMENT_MAILLAGE::origine_creation
int origine_creation
Definition: mg_element_maillage.h:72
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
M3D_TRIANGLE::change_frontiere
virtual void change_frontiere(void)
Definition: m3d_triangle.cpp:154
M3D_TRIANGLE::ajouter_voisin
virtual int ajouter_voisin(class MG_TETRA *tet)
Definition: m3d_triangle.cpp:84
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
M3D_TRIANGLE::get_mgfront
virtual class MG_FRONT_3D * get_mgfront(void)
Definition: m3d_triangle.cpp:78
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
MG_TRIANGLE
Definition: mg_triangle.h:38
MG_TRIANGLE::noeud3
class MG_NOEUD * noeud3
Definition: mg_triangle.h:76
MG_TETRA
Definition: mg_tetra.h:37
M3D_TRIANGLE::M3D_TRIANGLE
M3D_TRIANGLE(unsigned long num, MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_SEGMENT *mgsegment1, class MG_SEGMENT *mgsegment2, class MG_SEGMENT *mgsegment3, int origine)
Definition: m3d_triangle.cpp:37
M3D_TRIANGLE::frontiere
int frontiere
Definition: m3d_triangle.h:66
M3D_TRIANGLE::mgfront
class MG_FRONT_3D * mgfront
Definition: m3d_triangle.h:62
M3D_TRIANGLE::get_type_entite
virtual int get_type_entite(void)
Definition: m3d_triangle.cpp:57
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
MAGIC
Definition: mg_fast_marching.cpp:40
MG_MAILLAGE::DIMENSIONMAILLAGESANSTOPO
static int DIMENSIONMAILLAGESANSTOPO
Definition: mg_maillage.h:177
M3D_TRIANGLE::~M3D_TRIANGLE
virtual ~M3D_TRIANGLE()
Definition: m3d_triangle.cpp:52
M3D_TRIANGLE::get_etat_front
virtual int get_etat_front(void)
Definition: m3d_triangle.cpp:67
MG_NOEUD
Definition: mg_noeud.h:41
MG_ELEMENT_MAILLAGE::liaison_topologique
MG_ELEMENT_TOPOLOGIQUE * liaison_topologique
Definition: mg_element_maillage.h:69
MG_TRIANGLE::noeud2
class MG_NOEUD * noeud2
Definition: mg_triangle.h:75
FRONT_NONACTIF
const unsigned int FRONT_NONACTIF
Definition: CAD4FE_m3d_MCTriangle.h:30
M3D_TRIANGLE::voisin
class MG_TETRA * voisin[2]
Definition: m3d_triangle.h:63
M3D_TRIANGLE::change_mgfront
virtual void change_mgfront(class MG_FRONT_3D *ft)
Definition: m3d_triangle.cpp:73
M3D_TRIANGLE::supprimer_voisin
virtual int supprimer_voisin(class MG_TETRA *tet)
Definition: m3d_triangle.cpp:102
M3D_TRIANGLE::get_voisin
virtual class MG_TETRA * get_voisin(int num)
Definition: m3d_triangle.cpp:130
mg_maillage.h
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
MG_TRIANGLE::noeud1
class MG_NOEUD * noeud1
Definition: mg_triangle.h:74
M3D_TRIANGLE::get_qualite
virtual double get_qualite(void)
Definition: m3d_triangle.cpp:144
M3D_TRIANGLE::qualite
double qualite
Definition: m3d_triangle.h:65
MAGIC::TYPE_ENTITE::IDM3D_TRIANGLE
@ IDM3D_TRIANGLE
Definition: mg_definition.h:69
M3D_TRIANGLE::change_qualite
virtual void change_qualite(double val)
Definition: m3d_triangle.cpp:149
M3D_TRIANGLE::enregistrer
virtual void enregistrer(std::ostream &o)
Definition: m3d_triangle.cpp:165