MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur_particule_fine.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 //####// mailleur_particule_fine.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// Derniere modification par francois
20 //####// mer 10 jui 2024 18:13:26 EDT
21 //####//------------------------------------------------------------
22 //####//------------------------------------------------------------
23 
24 #include "gestionversion.h"
26 #include "mg_definition.h"
27 #include "mg_volume.h"
28 #include "mg_face.h"
29 #include "mg_element_topologique.h"
30 #include "mg_maillage.h"
31 #include "constantegeo.h"
32 #include <math.h>
33 
34 
35 MAILLEUR_PARTICULE_FINE::MAILLEUR_PARTICULE_FINE ( MG_VOLUME* vol, MG_MAILLAGE* mai ):MAILLEUR3D(mai,NULL,NULL,false,vol),typegeo(MAGIC::TYPEVOLUME::SPHERE)
36 {
37 }
38 
39 
41 {
42 }
43 
44 
46 {
47 typegeo=num;
48 }
49 
50 
51 
53 {
56 return 0;
57 }
58 
59 
61 {
66 for (MG_ELEMENT_TOPOLOGIQUE *ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
67  if (ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::SOMMET)
68  {
69  MG_SOMMET* som=(MG_SOMMET*)ele;
70  double xyz[3];
71  som->get_point()->evaluer(xyz);
73  }
74 
75 
76 MG_FACE* plan[2];
77 MG_FACE* cyl[2];
78 int numplan=0;
79 int numcyl=0;
81 for (int i=0;i<nb;i++)
82  {
86  {
87  plan[numplan]=face;
88  numplan++;
89  }
91  {
92  cyl[numcyl]=face;
93  numcyl++;
94  }
95  }
96 double longref=-100.;
97 TPL_LISTE_ENTITE<MG_SEGMENT*> segment_plan[2];
98 TPL_LISTE_ENTITE<MG_SEGMENT*> segment_generatrice[2];
99 for (int iplan=0;iplan<2;iplan++)
100 {
101 int nbarete=plan[iplan]->get_mg_boucle(0)->get_nb_mg_coarete();
103 for (int i=0;i<nbarete;i++)
104  {
105  MG_ARETE* are= plan[iplan]->get_mg_boucle(0)->get_mg_coarete(i)->get_arete();
107  {
108  double t1;
109  double t2;
110  double xyz1[3];
111  double xyz2[3];
112  are->get_cosommet1()->get_sommet()->get_point()->evaluer(xyz1);
113  are->get_cosommet2()->get_sommet()->get_point()->evaluer(xyz2);
114  are->get_courbe()->inverser(t1,xyz1);
115  are->get_courbe()->inverser(t2,xyz2);
116  if (t2<t1+1e-10) t2=t2+are->get_courbe()->get_periode();
117  double difft=t2-t1;
118  int nbseg=difft/2./M_PI*4.;
121  MG_NOEUD *nocour=nodep;
122  for (int j=0;j<nbseg-1;j++)
123  {
124  double t=t1+(j+1)*1.0/nbseg*difft;
125  double xyz[3];
126  are->get_courbe()->evaluer(t,xyz);
127  MG_NOEUD* no=mg_maillage->ajouter_mg_noeud(are,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
129  segment_plan[iplan].ajouter(seg);
130  if (longref<0.) longref=seg->get_longueur();
131  nocour=no;
132  }
134  segment_plan[iplan].ajouter(seg);
135  }
136  }
137 }
138 
139 for (int icyl=0;icyl<numcyl;icyl++)
140  {
141  int nbcoarete=cyl[icyl]->get_mg_boucle(0)->get_nb_mg_coarete();
143  for (int i=0;i<nbcoarete;i++)
144  listare.ajouter(cyl[icyl]->get_mg_boucle(0)->get_mg_coarete(i)->get_arete());
145  int nbarete=listare.get_nb();
146  for (int i=0;i<nbarete;i++)
147  {
148  MG_ARETE* are= listare.get(i);
150  {
153  OT_VECTEUR_3D vec(nodep->get_coord(),noarr->get_coord());
154  double longueur=vec.get_longueur();
155  int nbseg=longueur/longref+1;
156  double xyz1[3];
157  double xyz2[3];
158  double t1;
159  double t2;
160  are->get_cosommet1()->get_sommet()->get_point()->evaluer(xyz1);
161  are->get_cosommet2()->get_sommet()->get_point()->evaluer(xyz2);
162  are->get_courbe()->inverser(t1,xyz1);
163  are->get_courbe()->inverser(t2,xyz2);
164  MG_NOEUD *nocour=nodep;
165  for (int j=0;j<nbseg-1;j++)
166  {
167  double t=t1+(j+1)*1.0/nbseg*(t2-t1);
168  double xyz[3];
169  are->get_courbe()->evaluer(t,xyz);
170  MG_NOEUD* no=mg_maillage->ajouter_mg_noeud(are,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
172  segment_generatrice[icyl].ajouter(seg);
173  nocour=no;
174  }
176  segment_generatrice[icyl].ajouter(seg);
177 
178  }
179  }
180  }
181 for (int iplan=0;iplan<2;iplan++)
182  {
183  MG_NOEUD *no1=segment_plan[iplan].get(0)->get_noeud1();
184  MG_NOEUD *no2=segment_plan[iplan].get(0)->get_noeud2();
185  MG_NOEUD *no3=segment_plan[iplan].get(1)->get_noeud2();
186  MG_NOEUD *no4=segment_plan[iplan].get(2)->get_noeud2();
187  MG_TRIANGLE* tri1=insere_triangle(plan[iplan],no1,no2,no3,MAGIC::ORIGINE::MAILLEUR_AUTO);
188  MG_TRIANGLE* tri2=insere_triangle(plan[iplan],no1,no3,no4,MAGIC::ORIGINE::MAILLEUR_AUTO);
189  oriente_tri(tri1);
190  oriente_tri(tri2);
191  }
192 MG_SEGMENT* segaextruder[4];
193 for (int i=0;i<4;i++)
194  segaextruder[i]=segment_plan[0].get(i);
195 for (int i=0;i<segment_generatrice[0].get_nb();i++)
196  {
197  MG_SEGMENT* segextrupremier=segment_generatrice[0].get(i);
198  MG_SEGMENT* segextrudernier=segment_generatrice[0].get(segment_generatrice[0].get_nb()-i-1);
199  OT_VECTEUR_3D dirpremier(segextrupremier->get_noeud1()->get_coord(),segextrupremier->get_noeud1()->get_coord());
200  OT_VECTEUR_3D dirdernier(segextrudernier->get_noeud2()->get_coord(),segextrudernier->get_noeud1()->get_coord());
201  MG_NOEUD *no1,*no2,*no3,*no4;
202  MG_SEGMENT *segextru;
203  bool sens;
204  OT_VECTEUR_3D dir;
205  if (segaextruder[0]->get_noeud1()==segextrupremier->get_noeud1())
206  {
207  dir=dirpremier;
208  segextru=segextrupremier;
209  sens=true;
210  no1=segaextruder[0]->get_noeud1();
211  no2=segaextruder[0]->get_noeud2();
212  }
213  if (segaextruder[0]->get_noeud1()==segextrupremier->get_noeud2())
214  {
215  dir=-dirpremier;
216  segextru=segextrupremier;
217  sens=false;
218  no1=segaextruder[0]->get_noeud1();
219  no2=segaextruder[0]->get_noeud2();
220  }
221  if (segaextruder[0]->get_noeud1()==segextrudernier->get_noeud1())
222  {
223  dir=-dirdernier;
224  segextru=segextrudernier;
225  sens=true;
226  no1=segaextruder[0]->get_noeud1();
227  no2=segaextruder[0]->get_noeud2();
228  }
229  if (segaextruder[0]->get_noeud1()==segextrudernier->get_noeud2())
230  {
231  dir=dirdernier;
232  segextru=segextrudernier;
233  sens=false;
234  no1=segaextruder[0]->get_noeud1();
235  no2=segaextruder[0]->get_noeud2();
236  }
237  if (segaextruder[0]->get_noeud2()==segextrupremier->get_noeud1())
238  {
239  dir=dirpremier;
240  segextru=segextrupremier;
241  sens=true;
242  no1=segaextruder[0]->get_noeud1();
243  no2=segaextruder[0]->get_noeud2();
244  }
245  if (segaextruder[0]->get_noeud2()==segextrupremier->get_noeud2())
246  {
247  dir=-dirpremier;
248  segextru=segextrupremier;
249  sens=false;
250  no1=segaextruder[0]->get_noeud2();
251  no2=segaextruder[0]->get_noeud1();
252  }
253  if (segaextruder[0]->get_noeud2()==segextrudernier->get_noeud1())
254  {
255  dir=-dirdernier;
256  segextru=segextrudernier;
257  sens=true;
258  no1=segaextruder[0]->get_noeud2();
259  no2=segaextruder[0]->get_noeud1();
260  }
261  if (segaextruder[0]->get_noeud2()==segextrudernier->get_noeud2())
262  {
263  dir=dirdernier;
264  segextru=segextrudernier;
265  sens=false;
266  no1=segaextruder[0]->get_noeud2();
267  no2=segaextruder[0]->get_noeud1();
268  }
269  if (segaextruder[1]->get_noeud1()==no2)
270  no3=segaextruder[1]->get_noeud2();
271  else
272  no3=segaextruder[1]->get_noeud1();
273  if (segaextruder[2]->get_noeud1()==no3)
274  no4=segaextruder[2]->get_noeud2();
275  else
276  no4=segaextruder[2]->get_noeud1();
277 
278  MG_NOEUD* no5;
279  if (sens) no5=segextru->get_noeud2(); else no5=segextru->get_noeud1();
280  OT_VECTEUR_3D base(no2->get_coord());
281  OT_VECTEUR_3D vec=base+dir;
282  double *xyz=vec.get_xyz();
283  MG_NOEUD *no6,*no7,*no8;
284  if (i!=segment_generatrice[0].get_nb()-1)
285  {
286  no6=mg_maillage->ajouter_mg_noeud(cyl[0],xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
287  if (segment_generatrice[1].get_nb()!=0) no7=segment_generatrice[0].get(i)->get_noeud2(); /* verifier le sens de l'autre generatrice */
288  else
289  {
290  OT_VECTEUR_3D base(no3->get_coord());
291  OT_VECTEUR_3D vec=base+dir;
292  double *xyz=vec.get_xyz();
293  no7=mg_maillage->ajouter_mg_noeud(cyl[0],xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
294  }
295  OT_VECTEUR_3D base2(no4->get_coord());
296  vec=base2+dir;
297  xyz=vec.get_xyz();
298  if (segment_generatrice[1].get_nb()!=0) no8=mg_maillage->ajouter_mg_noeud(cyl[1],xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
299  else no8=mg_maillage->ajouter_mg_noeud(cyl[0],xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
300  }
301  else
302  {
303  if (segment_plan[1].get(0)->get_noeud1()==no5) no6=segment_plan[1].get(0)->get_noeud2(); else no6=segment_plan[1].get(0)->get_noeud1();
304  if (segment_plan[1].get(1)->get_noeud1()==no6) no7=segment_plan[1].get(1)->get_noeud2(); else no7=segment_plan[1].get(1)->get_noeud1();
305  if (segment_plan[1].get(2)->get_noeud1()==no7) no8=segment_plan[1].get(2)->get_noeud2(); else no7=segment_plan[1].get(2)->get_noeud1();
306  }
311  oriente_tri(tri1);
312  oriente_tri(tri2);
313  oriente_tri(tri3);
314  oriente_tri(tri4);
315  int numcourcyl=0;
316  if (segment_generatrice[1].get_nb()!=0) numcourcyl=1;
317  MG_TRIANGLE* tri5=insere_triangle(cyl[numcourcyl],no3,no4,no7,MAGIC::ORIGINE::MAILLEUR_AUTO);
318  MG_TRIANGLE* tri6=insere_triangle(cyl[numcourcyl],no4,no7,no8,MAGIC::ORIGINE::MAILLEUR_AUTO);
319  MG_TRIANGLE* tri7=insere_triangle(cyl[numcourcyl],no4,no1,no5,MAGIC::ORIGINE::MAILLEUR_AUTO);
320  MG_TRIANGLE* tri8=insere_triangle(cyl[numcourcyl],no5,no8,no4,MAGIC::ORIGINE::MAILLEUR_AUTO);
321  oriente_tri(tri5);
322  oriente_tri(tri6);
323  oriente_tri(tri7);
324  oriente_tri(tri8);
325  segaextruder[0]=mg_maillage->get_mg_segment(no5->get_id(),no6->get_id());
326  segaextruder[1]=mg_maillage->get_mg_segment(no6->get_id(),no7->get_id());
327  segaextruder[2]=mg_maillage->get_mg_segment(no7->get_id(),no8->get_id());
328  segaextruder[3]=mg_maillage->get_mg_segment(no8->get_id(),no5->get_id());
329  MG_TETRA *tet1=insere_tetra(mg_volume,no5,no6,no7,no2);
330  MG_TETRA *tet2=insere_tetra(mg_volume,no7,no3,no2,no1);
331  MG_TETRA *tet3=insere_tetra(mg_volume,no5,no1,no2,no7);
332  MG_TETRA *tet4=insere_tetra(mg_volume,no7,no8,no5,no4);
333  MG_TETRA *tet5=insere_tetra(mg_volume,no7,no1,no5,no4);
334  MG_TETRA *tet6=insere_tetra(mg_volume,no7,no3,no4,no1);
335  oriente_tet(tet1);
336  oriente_tet(tet2);
337  oriente_tet(tet3);
338  oriente_tet(tet4);
339  oriente_tet(tet5);
340  oriente_tet(tet6);
341 
342  }
343 
344 
345 }
346 
348 {
353 for (MG_ELEMENT_TOPOLOGIQUE *ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
354  if (ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::SOMMET)
355  {
356  MG_SOMMET* som=(MG_SOMMET*)ele;
357  double xyz[3];
358  som->get_point()->evaluer(xyz);
359  MG_NOEUD* no=mg_maillage->ajouter_mg_noeud(som,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
360  lstnoeud.ajouter(no);
361  }
362 for (MG_ELEMENT_TOPOLOGIQUE *ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
363  if (ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::ARETE)
364  {
365  MG_ARETE* are=(MG_ARETE*)ele;
366  double t1=are->get_tmin();
367  double t2=are->get_tmax();
368  double t=0.5*(t1+t2);
369  double xyz[3];
370  are->get_courbe()->evaluer(t,xyz);
371  MG_NOEUD* no=mg_maillage->ajouter_mg_noeud(are,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
372  lstnoeud.ajouter(no);
377  }
378 for (MG_ELEMENT_TOPOLOGIQUE *ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
379  if (ele->get_type()==MG_ELEMENT_TOPOLOGIQUE::FACE)
380  {
381  MG_FACE* face=(MG_FACE*)ele;
382  double uv[3];
383  double xyz[3];
384  uv[0]=M_PI/2.;uv[1]=0.;
385  face->evaluer(uv,xyz);
386  MG_NOEUD* no1=mg_maillage->ajouter_mg_noeud(face,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
387  uv[0]=M_PI;
388  face->evaluer(uv,xyz);
389  MG_NOEUD* no2=mg_maillage->ajouter_mg_noeud(face,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
390  uv[0]=3.*M_PI/2.;
391  face->evaluer(uv,xyz);
392  MG_NOEUD* no3=mg_maillage->ajouter_mg_noeud(face,xyz[0],xyz[1],xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
393  lstnoeud.ajouter(no1);
394  lstnoeud.ajouter(no2);
395  lstnoeud.ajouter(no3);
396  MG_TRIANGLE* tri1=insere_triangle(face,lstnoeud.get(2),lstnoeud.get(0),lstnoeud.get(3),MAGIC::ORIGINE::MAILLEUR_AUTO);
397  MG_TRIANGLE* tri2=insere_triangle(face,lstnoeud.get(3),lstnoeud.get(0),lstnoeud.get(4),MAGIC::ORIGINE::MAILLEUR_AUTO);
398  MG_TRIANGLE* tri3=insere_triangle(face,lstnoeud.get(4),lstnoeud.get(0),lstnoeud.get(5),MAGIC::ORIGINE::MAILLEUR_AUTO);
399  MG_TRIANGLE* tri4=insere_triangle(face,lstnoeud.get(5),lstnoeud.get(0),lstnoeud.get(2),MAGIC::ORIGINE::MAILLEUR_AUTO);
400  MG_TRIANGLE* tri5=insere_triangle(face,lstnoeud.get(2),lstnoeud.get(1),lstnoeud.get(3),MAGIC::ORIGINE::MAILLEUR_AUTO);
401  MG_TRIANGLE* tri6=insere_triangle(face,lstnoeud.get(3),lstnoeud.get(1),lstnoeud.get(4),MAGIC::ORIGINE::MAILLEUR_AUTO);
402  MG_TRIANGLE* tri7=insere_triangle(face,lstnoeud.get(4),lstnoeud.get(1),lstnoeud.get(5),MAGIC::ORIGINE::MAILLEUR_AUTO);
403  MG_TRIANGLE* tri8=insere_triangle(face,lstnoeud.get(5),lstnoeud.get(1),lstnoeud.get(2),MAGIC::ORIGINE::MAILLEUR_AUTO);
404  oriente_tri(tri1);
405  oriente_tri(tri2);
406  oriente_tri(tri3);
407  oriente_tri(tri4);
408  oriente_tri(tri5);
409  oriente_tri(tri6);
410  oriente_tri(tri7);
411  oriente_tri(tri8);
412  }
413 MG_TETRA* tet1=insere_tetra(mg_volume,lstnoeud.get(2),lstnoeud.get(5),lstnoeud.get(3),lstnoeud.get(0));
414 MG_TETRA* tet2=insere_tetra(mg_volume,lstnoeud.get(5),lstnoeud.get(4),lstnoeud.get(3),lstnoeud.get(0));
415 MG_TETRA* tet3=insere_tetra(mg_volume,lstnoeud.get(2),lstnoeud.get(5),lstnoeud.get(3),lstnoeud.get(1));
416 MG_TETRA* tet4=insere_tetra(mg_volume,lstnoeud.get(5),lstnoeud.get(4),lstnoeud.get(3),lstnoeud.get(1));
417 oriente_tet(tet1);
418 oriente_tet(tet2);
419 oriente_tet(tet3);
420 oriente_tet(tet4);
421 }
422 
423 
425 {
426 MG_NOEUD* no1=tri->get_noeud1();
427 MG_NOEUD* no2=tri->get_noeud2();
428 MG_NOEUD* no3=tri->get_noeud3();
429 OT_VECTEUR_3D n1n2(no1->get_coord(),no2->get_coord());
430 OT_VECTEUR_3D n1n3(no1->get_coord(),no3->get_coord());
431 OT_VECTEUR_3D normal=n1n3&n1n2;
432 double* xyz=no1->get_coord();
433 double uv[3],nxyz[3];
434 ((MG_FACE*)tri->get_lien_topologie())->inverser(uv,xyz);
435 ((MG_FACE*)tri->get_lien_topologie())->calcul_normale_unitaire(uv,nxyz);
436 OT_VECTEUR_3D dir(nxyz);
437 dir.norme();
438 normal.norme();
439 double ps=normal*dir;
440 if (ps<0) tri->inverse_sens();
441 }
442 
444 {
445 MG_NOEUD* no1=tet->get_noeud1();
446 MG_NOEUD* no2=tet->get_noeud2();
447 MG_NOEUD* no3=tet->get_noeud3();
448 MG_NOEUD* no4=tet->get_noeud4();
449 OT_VECTEUR_3D n1n2(no1->get_coord(),no2->get_coord());
450 OT_VECTEUR_3D n1n3(no1->get_coord(),no3->get_coord());
451 OT_VECTEUR_3D n1n4(no1->get_coord(),no4->get_coord());
452 OT_VECTEUR_3D pvec=n1n2&n1n3;
453 double ps=pvec*n1n4;
454 if (ps<0) tet->inverse_sens();
455 }
456 
457 
458 
459 
460 
MG_ARETE::get_cosommet2
virtual class MG_COSOMMET * get_cosommet2(void)
Definition: mg_arete.cpp:85
TPL_MAP_ENTITE::get_premier
virtual X get_premier(ITERATEUR &it)
Definition: tpl_map_entite.h:112
MG_SEGMENT
Definition: mg_segment.h:38
MG_TETRA::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_tetra.cpp:148
MG_ELEMENT_TOPOLOGIQUE::ARETE
@ ARETE
Definition: mg_element_topologique.h:55
gestionversion.h
MG_BOUCLE::get_nb_mg_coarete
virtual int get_nb_mg_coarete(void)
Definition: mg_boucle.cpp:78
MG_COURBE::inverser
virtual void inverser(double &t, double *xyz, double precision=1e-6)=0
MG_MAILLAGE::ajouter_mg_segment
MG_SEGMENT * ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, int origine, double longue=0.0, unsigned long num=0)
Definition: mg_maillage.cpp:565
TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * >
MG_SURFACE::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)=0
MG_SEGMENT::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_segment.cpp:113
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MG_TETRA::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_tetra.cpp:143
MAILLEUR_PARTICULE_FINE::MAILLEUR_PARTICULE_FINE
MAILLEUR_PARTICULE_FINE(MG_VOLUME *vol, MG_MAILLAGE *mai)
Definition: mailleur_particule_fine.cpp:35
MAILLEUR_PARTICULE_FINE::~MAILLEUR_PARTICULE_FINE
virtual ~MAILLEUR_PARTICULE_FINE()
Definition: mailleur_particule_fine.cpp:40
MAILLEUR_PARTICULE_FINE::maille_sphere
virtual void maille_sphere(void)
Definition: mailleur_particule_fine.cpp:347
MG_COFACE::get_face
virtual MG_FACE * get_face(void)
Definition: mg_coface.cpp:58
MAILLEUR_PARTICULE_FINE::maille_cylindre
virtual void maille_cylindre(void)
Definition: mailleur_particule_fine.cpp:60
MAILLEUR3D::mg_maillage
MG_MAILLAGE * mg_maillage
Definition: mailleur3d.h:167
MG_TRIANGLE
Definition: mg_triangle.h:38
MAILLEUR_PARTICULE_FINE::active_type_particule
virtual void active_type_particule(int num)
Definition: mailleur_particule_fine.cpp:45
MG_VOLUME
Definition: mg_volume.h:33
MAILLEUR3D
Definition: mailleur3d.h:51
MG_TETRA
Definition: mg_tetra.h:37
MG_ARETE::get_tmin
virtual double get_tmin(void)
Definition: mg_arete.cpp:179
MAGIC::TYPEVOLUME::CYLINDRE
@ CYLINDRE
Definition: mg_definition.h:185
MG_VOLUME::get_mg_coquille
virtual MG_COQUILLE * get_mg_coquille(int num)
Definition: mg_volume.cpp:70
MG_ELEMENT_TOPOLOGIQUE::get_lien_maillage
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
Definition: mg_element_topologique.cpp:62
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
SPHERE
@ SPHERE
Definition: ve_definition.h:32
MAGIC
Definition: mg_fast_marching.cpp:40
MG_FACE::evaluer
virtual void evaluer(double *uv, double *xyz)
Definition: mg_face.cpp:192
MAILLEUR3D::insere_triangle
virtual class MG_TRIANGLE * insere_triangle(class MG_ELEMENT_TOPOLOGIQUE *mgvol, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, int origine)
Definition: mailleur3d_outil.cpp:307
MG_SEGMENT::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_segment.cpp:108
TPL_MAP_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_map_entite.h:83
MG_NOEUD
Definition: mg_noeud.h:41
TPL_SET::get_nb
int get_nb(void)
Definition: tpl_set.h:78
OT_VECTEUR_3D::get_xyz
virtual double * get_xyz(void)
Definition: ot_mathematique.cpp:449
constantegeo.h
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
MG_NOEUD::get_coord
virtual double * get_coord(void)
Definition: mg_noeud.cpp:92
MG_ELEMENT_TOPOLOGIQUE::FACE
@ FACE
Definition: mg_element_topologique.h:55
MAILLEUR_PARTICULE_FINE::typegeo
int typegeo
Definition: mailleur_particule_fine.h:55
TPL_LISTE_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_liste_entite.h:67
MG_SOMMET::get_point
virtual MG_POINT * get_point(void)
Definition: mg_sommet.cpp:52
OT_VECTEUR_3D::norme
virtual void norme(void)
Definition: ot_mathematique.cpp:494
MG_TRIANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_triangle.cpp:131
GEOMETRIE::CONST::Co_PLAN
@ Co_PLAN
Definition: constantegeo.h:32
MG_COSOMMET::get_sommet
virtual MG_SOMMET * get_sommet(void)
Definition: mg_cosommet.cpp:83
TPL_LISTE_ENTITE::get
virtual X get(int num)
Definition: tpl_liste_entite.h:72
MG_COURBE::evaluer
virtual void evaluer(double t, double *xyz)=0
MAGIC::TYPEVOLUME::SPHERE
@ SPHERE
Definition: mg_definition.h:185
MAILLEUR3D::mg_volume
MG_VOLUME * mg_volume
Definition: mailleur3d.h:169
MG_MAILLAGE::get_mg_segment
MG_SEGMENT * get_mg_segment(unsigned int num)
Definition: mg_maillage.cpp:619
MAILLEUR_PARTICULE_FINE::oriente_tri
virtual void oriente_tri(MG_TRIANGLE *tri)
Definition: mailleur_particule_fine.cpp:424
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
TPL_SET::get
X get(int num)
Definition: tpl_set.h:84
MG_COURBE::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)=0
MG_TRIANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_triangle.cpp:126
MAILLEUR_PARTICULE_FINE::maille
virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur_particule_fine.cpp:52
mg_maillage.h
MG_BOUCLE::get_mg_coarete
virtual MG_COARETE * get_mg_coarete(int num)
Definition: mg_boucle.cpp:84
MG_TETRA::get_noeud4
virtual MG_NOEUD * get_noeud4(void)
Definition: mg_tetra.cpp:158
MG_TETRA::inverse_sens
virtual void inverse_sens(void)
Definition: mg_tetra.cpp:183
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
mg_element_topologique.h
mailleur_particule_fine.h
MG_ARETE::get_courbe
virtual class MG_COURBE * get_courbe(void)
Definition: mg_arete.cpp:89
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
mg_definition.h
MG_ELEMENT_TOPOLOGIQUE::SOMMET
@ SOMMET
Definition: mg_element_topologique.h:55
TPL_MAP_ENTITE::get
virtual X get(int num)
Definition: tpl_map_entite.h:89
MAILLEUR_PARTICULE_FINE::oriente_tet
virtual void oriente_tet(MG_TETRA *tet)
Definition: mailleur_particule_fine.cpp:443
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_TRIANGLE::inverse_sens
virtual void inverse_sens(void)
Definition: mg_triangle.cpp:157
OT_VECTEUR_3D::get_longueur
virtual double get_longueur(void) const
Definition: ot_mathematique.cpp:483
MG_COURBE::get_periode
virtual double get_periode(void)=0
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< double >
MG_SEGMENT::get_longueur
virtual double get_longueur(void)
Definition: mg_segment.cpp:125
MG_COQUILLE::get_nb_mg_coface
virtual int get_nb_mg_coface(void)
Definition: mg_coquille.cpp:76
MG_COQUILLE::get_mg_coface
virtual MG_COFACE * get_mg_coface(int num)
Definition: mg_coquille.cpp:90
GEOMETRIE::CONST::Co_LINE
@ Co_LINE
Definition: constantegeo.h:32
MG_ARETE
Definition: mg_arete.h:36
MG_FACE
Definition: mg_face.h:34
MG_FACE::get_mg_boucle
virtual MG_BOUCLE * get_mg_boucle(int num)
Definition: mg_face.cpp:72
MG_ARETE::get_cosommet1
virtual class MG_COSOMMET * get_cosommet1(void)
Definition: mg_arete.cpp:81
TPL_MAP_ENTITE::get_suivant
virtual X get_suivant(ITERATEUR &it)
Definition: tpl_map_entite.h:120
MG_SOMMET
Definition: mg_sommet.h:35
MAGIC::ORIGINE::MAILLEUR_AUTO
@ MAILLEUR_AUTO
Definition: mg_definition.h:79
MG_COARETE::get_arete
virtual MG_ARETE * get_arete(void)
Definition: mg_coarete.cpp:58
mg_face.h
MG_ARETE::get_tmax
virtual double get_tmax(void)
Definition: mg_arete.cpp:184
GEOMETRIE::CONST::Co_CIRCLE
@ Co_CIRCLE
Definition: constantegeo.h:32
MG_POINT::evaluer
virtual void evaluer(double *xyz)=0
MG_FACE::get_surface
virtual MG_SURFACE * get_surface(void)
Definition: mg_face.cpp:109
MAILLEUR::param
OT_PARAMETRES param
Definition: mailleur.h:57
MG_VOLUME::get_topologie_sousjacente
virtual void get_topologie_sousjacente(TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * > *lst)
Definition: mg_volume.cpp:90
GEOMETRIE::CONST::Co_CYLINDRE
@ Co_CYLINDRE
Definition: constantegeo.h:32
MAILLEUR3D::insere_tetra
virtual class MG_TETRA * insere_tetra(class MG_ELEMENT_TOPOLOGIQUE *mgvol, class MG_FRONT_3D *ft, MG_NOEUD *noeud4, int type, TPL_MAP_ENTITE< class MG_TRIANGLE * > &liste_intersection)
Definition: mailleur3d_outil.cpp:147
mg_volume.h
MG_MAILLAGE::ajouter_mg_noeud
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:421