MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur3d_structure.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_structure.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include <stdio.h>
23 #include <math.h>
24 #include "mg_gestionnaire.h"
25 #include "mailleur3d_structure.h"
26 #include "mg_maillage.h"
27 #include "fem_maillage.h"
28 #include "fem_hexa20.h"
29 #include "mg_geometrie.h"
30 #include "mg_sommet_noeud.h"
31 #include "mg_arete_element.h"
32 #include "mg_face_element.h"
33 #include "mg_volume_element.h"
34 #include <vector>
35 
36 
37 struct integrale
38 {
39  double ti;
40  double li;
41 };
42 
43 MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE(double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, double zmintmp, double zmaxtmp,int ntmp, int mtmp, int ktmp,MG_GESTIONNAIRE*gesttmp,int avecgeo,double unit):MAILLEUR(false),xmin(xmintmp),xmax(xmaxtmp),ymin(ymintmp),ymax(ymaxtmp),zmin(zmintmp),zmax(zmaxtmp),n(ntmp),m(mtmp),k(ktmp),gest(gesttmp),geovirtuel(avecgeo),densitevariable(false),unite(unit),nbfonction(0)
44 {
45 }
46 MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE( double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, double zmintmp, double zmaxtmp,double (*fx)(double),double (*fy)(double),double (*fz)(double),MG_GESTIONNAIRE* gesttmp,int avecgeo,double unit):MAILLEUR(false),xmin(xmintmp),xmax(xmaxtmp),ymin(ymintmp),ymax(ymaxtmp),zmin(zmintmp),zmax(zmaxtmp),gest(gesttmp),geovirtuel(avecgeo),enx(fx),eny(fy),enz(fz),densitevariable(true),unite(unit),nbfonction(0)
47 {
48 }
49 
51 xmin(mdd.xmin),xmax(mdd.xmax),ymin(mdd.ymin),ymax(mdd.ymax),zmin(mdd.zmin),zmax(mdd.zmax),n(mdd.n),m(mdd.m),k(mdd.k),gest(mdd.gest),nbfonction(mdd.nbfonction)
52 {
53 }
54 
56 {
57 }
58 
59 
60 void MAILLEUR3D_STRUCTURE::discretise(std::vector<double> &tab,double min,double max,int &nb,double (*en)(double))
61 {
62  double t1=0;
63  double t2=1;
64  std::vector<integrale> tab_integrale;
65  double ti,tii,t;
66  double longueur_metrique=0.;
67  tii=t1;
68  double dt=1./pas;
69  do
70  {
71  ti=tii;
72  tii=ti+(t2-t1)*dt;
73  if (tii>t2) tii=t2;
74  t=0.7886751345*ti+0.2113248654*tii;
75  double facteur1=(max-min)/(*en)(t);
76  t=0.7886751345*tii+0.2113248654*ti;
77  double facteur2=(max-min)/(*en)(t);
78  longueur_metrique=longueur_metrique+0.5*(tii-ti)*(facteur1+facteur2);
79  integrale pas;
80  pas.ti=ti;
81  pas.li=longueur_metrique;
82  tab_integrale.insert(tab_integrale.end(),pas);
83  }
84  while (tii<t2);
85  nb=(int)floor(longueur_metrique);
86  if (longueur_metrique-floor(longueur_metrique)>0.5) nb++;
87  if (nb<1) nb=1;
88  double valeur_cible=longueur_metrique/nb;
89  tab.push_back(min);
90  int nbcree=0;
91  int nb_pas_integrale=tab_integrale.size();
92  for (int i=0;i<nb_pas_integrale;i++)
93  {
94  while ((tab_integrale[i].li>(nbcree+1)*valeur_cible) && (nbcree<nb-1))
95  {
96  double ti=tab_integrale[i].ti;
97  double tii=t2;
98  double li=0.;
99  if (i!=0) li=tab_integrale[i-1].li;
100  double lii=tab_integrale[i].li;
101  if (i!=nb_pas_integrale-1) tii=tab_integrale[i+1].ti;
102  t=ti+(tii-ti)/(lii-li)*((nbcree+1)*valeur_cible-li);
103  double x=min+t*(max-min);
104  tab.push_back(x);
105  nbcree++;
106  }
107  }
108  tab.push_back(max);
109 
110 }
112 {
113 nbfonction=nb;
114 }
115 
117 {
118  affiche((char*)"Création d'un maillage MG structuré");
119  double intx, inty, intz;
120  std::vector<double> tabx,taby,tabz;
121  if (densitevariable==false)
122  {
123  intx=fabs(xmax-xmin)/n;
124  inty=fabs(ymax-ymin)/m;
125  intz=fabs(zmax-zmin)/k;
126  }
127  else
128  {
129  discretise(tabx,xmin,xmax,n,enx);
130  discretise(taby,ymin,ymax,m,eny);
131  discretise(tabz,zmin,zmax,k,enz);
132  }
133 
134  MG_GEOMETRIE* geo= NULL;
135  MG_SOMMET_NOEUD *som1=NULL;
136  MG_SOMMET_NOEUD *som2=NULL;
137  MG_SOMMET_NOEUD *som3=NULL;
138  MG_SOMMET_NOEUD *som4=NULL;
139  MG_SOMMET_NOEUD *som5=NULL;
140  MG_SOMMET_NOEUD *som6=NULL;
141  MG_SOMMET_NOEUD *som7=NULL;
142  MG_SOMMET_NOEUD *som8=NULL;
143  MG_ARETE_ELEMENT* are1=NULL;
144  MG_ARETE_ELEMENT* are2=NULL;
145  MG_ARETE_ELEMENT* are3=NULL;
146  MG_ARETE_ELEMENT* are4=NULL;
147  MG_ARETE_ELEMENT* are5=NULL;
148  MG_ARETE_ELEMENT* are6=NULL;
149  MG_ARETE_ELEMENT* are7=NULL;
150  MG_ARETE_ELEMENT* are8=NULL;
151  MG_ARETE_ELEMENT* are9=NULL;
152  MG_ARETE_ELEMENT* are10=NULL;
153  MG_ARETE_ELEMENT* are11=NULL;
154  MG_ARETE_ELEMENT* are12=NULL;
155  MG_FACE_ELEMENT* face1=NULL;
156  MG_FACE_ELEMENT* face2=NULL;
157  MG_FACE_ELEMENT* face3=NULL;
158  MG_FACE_ELEMENT* face4=NULL;
159  MG_FACE_ELEMENT* face5=NULL;
160  MG_FACE_ELEMENT* face6=NULL;
161  MG_VOLUME_ELEMENT* vol=NULL;
162  if (geovirtuel==true)
163  {
164  geo=new MG_GEOMETRIE((char*)"VIRTUEL",(char*)"VIRTUEL");
167  som1=new MG_SOMMET_NOEUD();
168  geo->ajouter_mg_sommet(som1);
169  som2=new MG_SOMMET_NOEUD();
170  geo->ajouter_mg_sommet(som2);
171  som3=new MG_SOMMET_NOEUD();
172  geo->ajouter_mg_sommet(som3);
173  som4=new MG_SOMMET_NOEUD();
174  geo->ajouter_mg_sommet(som4);
175  som5=new MG_SOMMET_NOEUD();
176  geo->ajouter_mg_sommet(som5);
177  som6=new MG_SOMMET_NOEUD();
178  geo->ajouter_mg_sommet(som6);
179  som7=new MG_SOMMET_NOEUD();
180  geo->ajouter_mg_sommet(som7);
181  som8=new MG_SOMMET_NOEUD();
182  geo->ajouter_mg_sommet(som8);
183  are1=new MG_ARETE_ELEMENT();
184  geo->ajouter_mg_arete(are1);
185  are2=new MG_ARETE_ELEMENT();
186  geo->ajouter_mg_arete(are2);
187  are3=new MG_ARETE_ELEMENT();
188  geo->ajouter_mg_arete(are3);
189  are4=new MG_ARETE_ELEMENT();
190  geo->ajouter_mg_arete(are4);
191  are5=new MG_ARETE_ELEMENT();
192  geo->ajouter_mg_arete(are5);
193  are6=new MG_ARETE_ELEMENT();
194  geo->ajouter_mg_arete(are6);
195  are7=new MG_ARETE_ELEMENT();
196  geo->ajouter_mg_arete(are7);
197  are8=new MG_ARETE_ELEMENT();
198  geo->ajouter_mg_arete(are8);
199  are9=new MG_ARETE_ELEMENT();
200  geo->ajouter_mg_arete(are9);
201  are10=new MG_ARETE_ELEMENT();
202  geo->ajouter_mg_arete(are10);
203  are11=new MG_ARETE_ELEMENT();
204  geo->ajouter_mg_arete(are11);
205  are12=new MG_ARETE_ELEMENT();
206  geo->ajouter_mg_arete(are12);
207  face1=new MG_FACE_ELEMENT();
208  geo->ajouter_mg_face(face1);
209  face2=new MG_FACE_ELEMENT();
210  geo->ajouter_mg_face(face2);
211  face3=new MG_FACE_ELEMENT();
212  geo->ajouter_mg_face(face3);
213  face4=new MG_FACE_ELEMENT();
214  geo->ajouter_mg_face(face4);
215  face5=new MG_FACE_ELEMENT();
216  geo->ajouter_mg_face(face5);
217  face6=new MG_FACE_ELEMENT();
218  geo->ajouter_mg_face(face6);
219  vol=new MG_VOLUME_ELEMENT();
220  geo->ajouter_mg_volume(vol);
221  for (int i=0;i<nbfonction;i++)
222  {
223  MG_GEOM_FONCTION *fonc=new MG_GEOM_FONCTION(0);
224  geo->ajouter_mg_geom_fonction(fonc);
225  }
226  }
227  MG_MAILLAGE* mai=new MG_MAILLAGE(geo);
228  gest->ajouter_mg_maillage(mai);
229  std::vector<MG_NOEUD*> vecnod;
230  for (int l=0; l<=k ;l++)
231  {
232  for (int j=0; j<=m;j++)
233  {
234  for (int i=0; i<=n;i++)
235  {
236  MG_ELEMENT_TOPOLOGIQUE *topo=NULL;
237  if (geovirtuel)
238  {
239  if ((i==0) && (j==0) && (l==0)) topo=som1;
240  else if ((i==0) && (j==m) && (l==0)) topo=som2;
241  else if ((i==0) && (j==m) && (l==k)) topo=som3;
242  else if ((i==0) && (j==0) && (l==k)) topo=som4;
243  else if ((i==n) && (j==0) && (l==0)) topo=som5;
244  else if ((i==n) && (j==m) && (l==0)) topo=som6;
245  else if ((i==n) && (j==m) && (l==k)) topo=som7;
246  else if ((i==n) && (j==0) && (l==k)) topo=som8;
247  else if ((j==0) && (l==0)) topo=are1;
248  else if ((j==m) && (l==0)) topo=are2;
249  else if ((j==m) && (l==k)) topo=are3;
250  else if ((j==0) && (l==k)) topo=are4;
251  else if ((i==0) && (l==0)) topo=are5;
252  else if ((i==n) && (l==0)) topo=are6;
253  else if ((i==n) && (l==k)) topo=are7;
254  else if ((i==0) && (l==k)) topo=are8;
255  else if ((i==0) && (j==0)) topo=are9;
256  else if ((i==n) && (j==0)) topo=are10;
257  else if ((i==n) && (j==m)) topo=are11;
258  else if ((i==0) && (j==m)) topo=are12;
259  else if (i==0) topo=face1;
260  else if (i==n) topo=face2;
261  else if (j==0) topo=face3;
262  else if (j==m) topo=face4;
263  else if (l==0) topo=face5;
264  else if (l==k) topo=face6;
265  else topo=vol;
266  }
267  double x,y,z;
268  if (densitevariable==false)
269  {
270  z=zmin+(l*intz);
271  y=ymin+(j*inty);
272  x=xmin+(i*intx);
273  }
274  else
275  {
276  x=tabx[i];
277  y=taby[j];
278  z=tabz[l];
279  }
281  vecnod.push_back(nou);
282  if (geovirtuel)
283  {
284  if ((i==0) && (j==0) && (l==0)) som1->change_mg_noeud(nou);
285  else if ((i==0) && (j==m) && (l==0)) som2->change_mg_noeud(nou);
286  else if ((i==0) && (j==m) && (l==k)) som3->change_mg_noeud(nou);
287  else if ((i==0) && (j==0) && (l==k)) som4->change_mg_noeud(nou);
288  else if ((i==n) && (j==0) && (l==0)) som5->change_mg_noeud(nou);
289  else if ((i==n) && (j==m) && (l==0)) som6->change_mg_noeud(nou);
290  else if ((i==n) && (j==m) && (l==k)) som7->change_mg_noeud(nou);
291  else if ((i==n) && (j==0) && (l==k)) som8->change_mg_noeud(nou);
292  }
293  }
294  }
295  }
296 if (geovirtuel)
297  {
298  for(int i=0; i<n;i++)
299  {
300  int j=0,l=0;
301  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
302  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
304  j=m,l=0;
305  MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
306  MG_NOEUD* nod4=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
308  j=m,l=k;
309  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
310  MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
312  j=0,l=k;
313  MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
314  MG_NOEUD* nod8=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
316  }
317  for(int j=0; j<m;j++)
318  {
319  int i=0,l=0;
320  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
321  MG_NOEUD* nod2=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
323  i=n,l=0;
324  MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
325  MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
327  i=n,l=k;
328  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
329  MG_NOEUD* nod6=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
331  i=0,l=k;
332  MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
333  MG_NOEUD* nod8=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
335  }
336  for(int l=0; l<k;l++)
337  {
338  int i=0,j=0;
339  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
340  MG_NOEUD* nod2=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
342  i=n,j=0;
343  MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
344  MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
346  i=n,j=m;
347  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
348  MG_NOEUD* nod6=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
350  i=0,j=m;
351  MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
352  MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
354  }
355  for (int j=0;j<m;j++)
356  for (int l=0;l<k;l++)
357  {
358  int i=0;
359  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
360  MG_NOEUD* nod2=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
361  MG_NOEUD* nod3=vecnod[i+((n+1)*(j+1))+((l+1)*(m+1)*(n+1))];
362  MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
363  i=n;
364  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
365  MG_NOEUD* nod6=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
366  MG_NOEUD* nod7=vecnod[i+((n+1)*(j+1))+((l+1)*(m+1)*(n+1))];
367  MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
368  mai->ajouter_mg_quadrangle(face1,nod1,nod4,nod3,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
369  mai->ajouter_mg_quadrangle(face2,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
370  }
371  for (int i=0;i<n;i++)
372  for (int l=0;l<k;l++)
373  {
374  int j=0;
375  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
376  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
377  MG_NOEUD* nod3=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
378  MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
379  j=m;
380  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
381  MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
382  MG_NOEUD* nod7=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
383  MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
384  mai->ajouter_mg_quadrangle(face3,nod1,nod2,nod3,nod4,MAGIC::ORIGINE::MAILLEUR_AUTO);
385  mai->ajouter_mg_quadrangle(face4,nod7,nod6,nod5,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
386  }
387  for (int i=0;i<n;i++)
388  for (int j=0;j<m;j++)
389  {
390  int l=0;
391  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
392  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
393  MG_NOEUD* nod3=vecnod[(i+1)+((n+1)*(j+1))+(l*(m+1)*(n+1))];
394  MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
395  l=k;
396  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
397  MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
398  MG_NOEUD* nod7=vecnod[(i+1)+((n+1)*(j+1))+(l*(m+1)*(n+1))];
399  MG_NOEUD* nod8=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
400  mai->ajouter_mg_quadrangle(face5,nod1,nod4,nod3,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
401  mai->ajouter_mg_quadrangle(face6,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
402  }
403  }
404  for(int l=0; l<k;l++)
405  {
406  for(int j=0; j<m;j++)
407  {
408  for(int i=0; i<n;i++)
409  {
410  MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
411  MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
412  MG_NOEUD* nod3=vecnod[(i+1)+(n+1)*(j+1)+(l*(m+1)*(n+1))];
413  MG_NOEUD* nod4=vecnod[i+(n+1)*(j+1)+(l*(m+1)*(n+1))];
414  MG_NOEUD* nod5=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
415  MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
416  MG_NOEUD* nod7=vecnod[(i+1)+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
417  MG_NOEUD* nod8=vecnod[i+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
418  MG_HEXA *hexa=mai->ajouter_mg_hexa(vol,nod1,nod2,nod3,nod4,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
419  }
420  }
421  }
423  mai->change_param_structure(b,n,m,k);
424  /*affiche((char*)"Création d'un maillage FEM structuré");
425  FEM_MAILLAGE* fem = new FEM_MAILLAGE(geo, mai,1);
426  gest->ajouter_fem_maillage(fem);
427  fem->construire();*/
428  return OK;
429 }
mg_geometrie.h
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
MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE
MAILLEUR3D_STRUCTURE(double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, double zmintmp, double zmaxtmp, int ntmp, int mtmp, int ktmp, MG_GESTIONNAIRE *gesttmp, int avecgeo=false, double unit=1.)
Definition: mailleur3d_structure.cpp:43
MAILLEUR3D_STRUCTURE::xmin
double xmin
Definition: mailleur3d_structure.h:47
MG_GEOMETRIE::change_valeur_unite
void change_valeur_unite(double val)
Definition: mg_geometrie.cpp:2657
mg_gestionnaire.h
MG_MAILLAGE::change_param_structure
void change_param_structure(BOITE_3D btmp, int nxtmp, int nytmp, int nztmp)
Definition: mg_maillage.cpp:2663
fem_maillage.h
MG_GEOMETRIE::ajouter_mg_volume
virtual int ajouter_mg_volume(MG_VOLUME *mgvol)
Definition: mg_geometrie.cpp:1642
mg_arete_element.h
MAILLEUR3D_STRUCTURE::ymin
double ymin
Definition: mailleur3d_structure.h:49
MAILLEUR3D_STRUCTURE::discretise
virtual void discretise(std::vector< double > &tab, double min, double max, int &nb, double(*en)(double))
Definition: mailleur3d_structure.cpp:60
MAGIC_AFFICHE::affiche
virtual void affiche(char *mess)
Definition: magic_affiche.cpp:43
OK
const int OK
Definition: mg_definition.h:38
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MAILLEUR::pas
int pas
Definition: mailleur.h:56
MG_GEOMETRIE::ajouter_mg_sommet
virtual int ajouter_mg_sommet(MG_SOMMET *mgsom)
Definition: mg_geometrie.cpp:497
MG_HEXA
Definition: mg_hexa.h:37
MAILLEUR3D_STRUCTURE::geovirtuel
bool geovirtuel
Definition: mailleur3d_structure.h:57
MAILLEUR3D_STRUCTURE::enz
double(* enz)(double)
Definition: mailleur3d_structure.h:61
MAILLEUR3D_STRUCTURE::nbfonction
int nbfonction
Definition: mailleur3d_structure.h:63
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
MG_GESTIONNAIRE::ajouter_mg_maillage
int ajouter_mg_maillage(MG_MAILLAGE *mgmai)
Definition: mg_gestionnaire.cpp:521
integrale::ti
double ti
Definition: CAD4FE_mailleur1d.cpp:40
MG_ARETE_ELEMENT
Definition: mg_arete_element.h:32
MG_MAILLAGE::ajouter_mg_hexa
MG_HEXA * ajouter_mg_hexa(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, class MG_NOEUD *mgnoeud5, class MG_NOEUD *mgnoeud6, class MG_NOEUD *mgnoeud7, class MG_NOEUD *mgnoeud8, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:1390
MAILLEUR3D_STRUCTURE::eny
double(* eny)(double)
Definition: mailleur3d_structure.h:60
MG_GEOMETRIE::ajouter_mg_geom_fonction
virtual int ajouter_mg_geom_fonction(MG_GEOM_FONCTION *mggeofon)
Definition: mg_geometrie.cpp:2141
mg_volume_element.h
MAILLEUR3D_STRUCTURE::m
int m
Definition: mailleur3d_structure.h:54
MG_GESTIONNAIRE::ajouter_mg_geometrie
int ajouter_mg_geometrie(MG_GEOMETRIE *mggeo)
Definition: mg_gestionnaire.cpp:306
integrale
Definition: CAD4FE_mailleur1d.cpp:38
MG_NOEUD
Definition: mg_noeud.h:41
integrale::li
double li
Definition: CAD4FE_mailleur1d.cpp:41
MG_GEOM_FONCTION
Definition: mg_geom_fonction.h:29
MAILLEUR3D_STRUCTURE::zmax
double zmax
Definition: mailleur3d_structure.h:52
mg_face_element.h
mg_sommet_noeud.h
MG_VOLUME_ELEMENT
Definition: mg_volume_element.h:32
MG_GEOMETRIE::ajouter_mg_face
virtual int ajouter_mg_face(MG_FACE *mgface)
Definition: mg_geometrie.cpp:1210
MAILLEUR3D_STRUCTURE::ymax
double ymax
Definition: mailleur3d_structure.h:50
MAILLEUR3D_STRUCTURE::enx
double(* enx)(double)
Definition: mailleur3d_structure.h:59
mailleur3d_structure.h
BOITE_3D
Definition: ot_boite_3d.h:27
mg_maillage.h
MG_GEOMETRIE::ajouter_mg_arete
virtual int ajouter_mg_arete(MG_ARETE *mgarete)
Definition: mg_geometrie.cpp:759
MAILLEUR3D_STRUCTURE::ajouter_fonction_geometrie
virtual void ajouter_fonction_geometrie(int nb)
Definition: mailleur3d_structure.cpp:111
MAILLEUR3D_STRUCTURE::gest
MG_GESTIONNAIRE * gest
Definition: mailleur3d_structure.h:56
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MAILLEUR3D_STRUCTURE::densitevariable
bool densitevariable
Definition: mailleur3d_structure.h:58
MAILLEUR3D_STRUCTURE::maille
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur3d_structure.cpp:116
MAILLEUR
Definition: mailleur.h:33
MAILLEUR3D_STRUCTURE::~MAILLEUR3D_STRUCTURE
virtual ~MAILLEUR3D_STRUCTURE()
Definition: mailleur3d_structure.cpp:55
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MAILLEUR3D_STRUCTURE::zmin
double zmin
Definition: mailleur3d_structure.h:51
MAILLEUR3D_STRUCTURE::xmax
double xmax
Definition: mailleur3d_structure.h:48
MG_MAILLAGE
Definition: mg_maillage.h:62
fem_hexa20.h
MG_FACE_ELEMENT
Definition: mg_face_element.h:32
MAILLEUR3D_STRUCTURE::unite
double unite
Definition: mailleur3d_structure.h:62
MAILLEUR3D_STRUCTURE::n
int n
Definition: mailleur3d_structure.h:53
MG_SOMMET_NOEUD
Definition: mg_sommet_noeud.h:33
MAGIC::ORIGINE::MAILLEUR_AUTO
@ MAILLEUR_AUTO
Definition: mg_definition.h:79
MAILLEUR3D_STRUCTURE::k
int k
Definition: mailleur3d_structure.h:55
MG_SOMMET_NOEUD::change_mg_noeud
virtual void change_mg_noeud(MG_NOEUD *notmp)
Definition: mg_sommet_noeud.cpp:117
MAILLEUR3D_STRUCTURE
Definition: mailleur3d_structure.h:35
MG_MAILLAGE::ajouter_mg_quadrangle
MG_QUADRANGLE * ajouter_mg_quadrangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:930
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
m
#define m(i, j)