MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_face_element.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 //####// mg_face_element.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #include "mg_face_element.h"
26 
27 
28 
29 MG_FACE_ELEMENT::MG_FACE_ELEMENT(unsigned long num):MG_FACE("",num,NULL,0)
30 {
31 }
32 
34 {
35 }
36 
38 {
39 }
40 
42 {
43 }
44 
46 {
47 return true;
48 }
49 
50 
52 {
53 ele->change_lien_topologie(this);
54 }
55 
57 {
58 double xmax=-1e308,ymax=-1e308,zmax=-1e308;
59 double xmin=1e308,ymin=1e308,zmin=1e308;
61 for (MG_ELEMENT_MAILLAGE* ele=get_lien_maillage()->get_premier(it);ele!=NULL;ele=get_lien_maillage()->get_suivant(it))
62  {
63  if (ele->get_type_entite()==MAGIC::TYPE_ENTITE::IDMG_TRIANGLE)
64  {
65  MG_TRIANGLE* tri=(MG_TRIANGLE*)ele;
66 
67  double x=tri->get_noeud1()->get_x();
68  double y=tri->get_noeud1()->get_y();
69  double z=tri->get_noeud1()->get_z();
70  xmax=std::max(xmax,x);
71  ymax=std::max(ymax,y);
72  zmax=std::max(zmax,z);
73  xmin=std::min(xmin,x);
74  ymin=std::min(ymin,y);
75  zmin=std::min(zmin,z);
76  x=tri->get_noeud2()->get_x();
77  y=tri->get_noeud2()->get_y();
78  z=tri->get_noeud2()->get_z();
79  xmax=std::max(xmax,x);
80  ymax=std::max(ymax,y);
81  zmax=std::max(zmax,z);
82  xmin=std::min(xmin,x);
83  ymin=std::min(ymin,y);
84  zmin=std::min(zmin,z);
85  x=tri->get_noeud3()->get_x();
86  y=tri->get_noeud3()->get_y();
87  z=tri->get_noeud3()->get_z();
88  xmax=std::max(xmax,x);
89  ymax=std::max(ymax,y);
90  zmax=std::max(zmax,z);
91  xmin=std::min(xmin,x);
92  ymin=std::min(ymin,y);
93  zmin=std::min(zmin,z);
94  }
95  if (ele->get_type_entite()==MAGIC::TYPE_ENTITE::IDMG_QUADRANGLE)
96  {
97  MG_QUADRANGLE* qua=(MG_QUADRANGLE*)ele;
98 
99  double x=qua->get_noeud1()->get_x();
100  double y=qua->get_noeud1()->get_y();
101  double z=qua->get_noeud1()->get_z();
102  xmax=std::max(xmax,x);
103  ymax=std::max(ymax,y);
104  zmax=std::max(zmax,z);
105  xmin=std::min(xmin,x);
106  ymin=std::min(ymin,y);
107  zmin=std::min(zmin,z);
108  x=qua->get_noeud2()->get_x();
109  y=qua->get_noeud2()->get_y();
110  z=qua->get_noeud2()->get_z();
111  xmax=std::max(xmax,x);
112  ymax=std::max(ymax,y);
113  zmax=std::max(zmax,z);
114  xmin=std::min(xmin,x);
115  ymin=std::min(ymin,y);
116  zmin=std::min(zmin,z);
117  x=qua->get_noeud3()->get_x();
118  y=qua->get_noeud3()->get_y();
119  z=qua->get_noeud3()->get_z();
120  xmax=std::max(xmax,x);
121  ymax=std::max(ymax,y);
122  zmax=std::max(zmax,z);
123  xmin=std::min(xmin,x);
124  ymin=std::min(ymin,y);
125  zmin=std::min(zmin,z);
126  x=qua->get_noeud4()->get_x();
127  y=qua->get_noeud4()->get_y();
128  z=qua->get_noeud4()->get_z();
129  xmax=std::max(xmax,x);
130  ymax=std::max(ymax,y);
131  zmax=std::max(zmax,z);
132  xmin=std::min(xmin,x);
133  ymin=std::min(ymin,y);
134  zmin=std::min(zmin,z);
135  }
136 
137  }
138 BOITE_3D boite(xmin,ymin,zmin,xmax,ymax,zmax);
139 return boite;
140 }
141 
142 
144 {
145 return get_lien_maillage()->get(i);
146 }
147 
149 {
150 return get_lien_maillage()->get_nb();
151 }
152 
153 void MG_FACE_ELEMENT::enregistrer(std::ostream& o,double version)
154 {
155  int nb=get_nb_ccf();
156  int nbele=get_nb_element();
157  o <<"%" << get_id() << "=FACE_ELEMENT(" << nbele << ",(";
158  /*for (int i=0;i<nbele;i++)
159  if (i!=nbele-1) o << "$" << get_element(i)->get_id() << ",";
160  else o << "$" << get_element(nbele-1)->get_id() ;*/
161  o << "),";
162  if (version>2.35)
163  {
164  enregistrer_contraintes(o,version);
165  o << ",";
166  }
167  enregistrer_ccf(o,version);
168  o << ");" << std::endl;
169 }
gestionversion.h
MG_FACE_ELEMENT::get_element
virtual MG_ELEMENT_MAILLAGE * get_element(int i)
Definition: mg_face_element.cpp:143
MG_FACE_ELEMENT::est_une_topo_element
virtual bool est_une_topo_element(void)
Definition: mg_face_element.cpp:45
MG_FACE_ELEMENT::enregistrer
void enregistrer(std::ostream &o, double version)
Definition: mg_face_element.cpp:153
MG_NOEUD::get_z
virtual double get_z(void)
Definition: mg_noeud.cpp:87
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
TPL_SET
Definition: tpl_set.h:34
MG_QUADRANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_quadrangle.cpp:150
MG_ELEMENT_MAILLAGE
Definition: mg_element_maillage.h:38
MG_FACE_ELEMENT::MG_FACE_ELEMENT
MG_FACE_ELEMENT()
Definition: mg_face_element.cpp:33
MG_ELEMENT_MAILLAGE::change_lien_topologie
void change_lien_topologie(MG_ELEMENT_TOPOLOGIQUE *topo)
Definition: mg_element_maillage.cpp:56
MG_TRIANGLE
Definition: mg_triangle.h:38
MG_FACE_ELEMENT::get_nb_element
virtual int get_nb_element(void)
Definition: mg_face_element.cpp:148
MG_QUADRANGLE
Definition: mg_quadrangle.h:39
MG_ELEMENT_TOPOLOGIQUE::get_lien_maillage
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
Definition: mg_element_topologique.cpp:62
MG_FACE_ELEMENT::ajouter_element
virtual void ajouter_element(MG_ELEMENT_MAILLAGE *ele)
Definition: mg_face_element.cpp:51
MG_ELEMENT_TOPOLOGIQUE::get_nb_ccf
virtual int get_nb_ccf(void)
Definition: mg_element_topologique.cpp:154
TPL_SET::get_nb
int get_nb(void)
Definition: tpl_set.h:78
mg_face_element.h
MG_TRIANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_triangle.cpp:131
MG_NOEUD::get_x
virtual double get_x(void)
Definition: mg_noeud.cpp:77
MAGIC::TYPE_ENTITE::IDMG_QUADRANGLE
@ IDMG_QUADRANGLE
Definition: mg_definition.h:69
TPL_SET::get
X get(int num)
Definition: tpl_set.h:84
MG_TRIANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_triangle.cpp:126
BOITE_3D
Definition: ot_boite_3d.h:27
MAGIC::TYPE_ENTITE::IDMG_TRIANGLE
@ IDMG_TRIANGLE
Definition: mg_definition.h:69
MG_TRIANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_triangle.cpp:137
MG_ELEMENT_TOPOLOGIQUE::enregistrer_ccf
virtual void enregistrer_ccf(std::ostream &o, double version)
Definition: mg_element_topologique.cpp:364
MG_QUADRANGLE::get_noeud4
virtual MG_NOEUD * get_noeud4(void)
Definition: mg_quadrangle.cpp:161
MG_QUADRANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_quadrangle.cpp:156
MG_FACE_ELEMENT
Definition: mg_face_element.h:32
MG_FACE
Definition: mg_face.h:34
MG_QUADRANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_quadrangle.cpp:145
MG_ELEMENT_TOPOLOGIQUE::enregistrer_contraintes
virtual void enregistrer_contraintes(std::ostream &o, double version)
Definition: mg_element_topologique.cpp:403
MG_FACE_ELEMENT::~MG_FACE_ELEMENT
virtual ~MG_FACE_ELEMENT()
Definition: mg_face_element.cpp:41
TPL_SET::get_suivant
X get_suivant(ITERATEUR &it)
Definition: tpl_set.h:107
MG_NOEUD::get_y
virtual double get_y(void)
Definition: mg_noeud.cpp:82
MG_FACE_ELEMENT::get_boite_3D
virtual BOITE_3D get_boite_3D(void)
Definition: mg_face_element.cpp:56