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 }
void change_lien_topologie(MG_ELEMENT_TOPOLOGIQUE *topo)
virtual void enregistrer_contraintes(std::ostream &o, double version)
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
virtual void enregistrer_ccf(std::ostream &o, double version)
virtual void ajouter_element(MG_ELEMENT_MAILLAGE *ele)
virtual bool est_une_topo_element(void)
virtual int get_nb_element(void)
virtual BOITE_3D get_boite_3D(void)
virtual ~MG_FACE_ELEMENT()
void enregistrer(std::ostream &o, double version)
virtual MG_ELEMENT_MAILLAGE * get_element(int i)
unsigned long get_id()
virtual double get_z(void)
Definition: mg_noeud.cpp:87
virtual double get_y(void)
Definition: mg_noeud.cpp:82
virtual double get_x(void)
Definition: mg_noeud.cpp:77
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
virtual MG_NOEUD * get_noeud4(void)
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
int get_nb(void)
Definition: tpl_set.h:78
X get(int num)
Definition: tpl_set.h:84
X get_suivant(ITERATEUR &it)
Definition: tpl_set.h:107