ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur3d_structure.cpp
Revision: 835
Committed: Tue Oct 11 18:47:18 2016 UTC (8 years, 7 months ago) by francois
File size: 14911 byte(s)
Log Message:
calcul du maillage FEM decouple dans le mailleur structure
ajout de fonction geometrie a priori dans le mailleur structure

File Contents

# User Rev Content
1 chebbi 463 #include <stdio.h>
2     #include <math.h>
3     #include "mg_gestionnaire.h"
4     #include "mailleur3d_structure.h"
5     #include "mg_maillage.h"
6     #include "fem_maillage.h"
7     #include "fem_hexa20.h"
8     #include "mg_geometrie.h"
9 francois 576 #include "mg_sommet_noeud.h"
10     #include "mg_arete_element.h"
11     #include "mg_face_element.h"
12     #include "mg_volume_element.h"
13 chebbi 463 #include <vector>
14    
15    
16 francois 585 struct integrale
17     {
18     double ti;
19     double li;
20     };
21    
22 francois 835 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)
23 chebbi 463 {
24     }
25 francois 835 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)
26 francois 585 {
27     }
28    
29 chebbi 463 MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE( MAILLEUR3D_STRUCTURE& mdd):MAILLEUR(mdd),
30 francois 835 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)
31 chebbi 463 {
32     }
33    
34     MAILLEUR3D_STRUCTURE::~MAILLEUR3D_STRUCTURE()
35     {
36     }
37    
38 francois 585
39     void MAILLEUR3D_STRUCTURE::discretise(std::vector<double> &tab,double min,double max,int &nb,double (*en)(double))
40     {
41     double t1=0;
42     double t2=1;
43     std::vector<integrale> tab_integrale;
44     double ti,tii,t;
45     double longueur_metrique=0.;
46     tii=t1;
47     double dt=1./pas;
48     do
49     {
50     ti=tii;
51     tii=ti+(t2-t1)*dt;
52     if (tii>t2) tii=t2;
53     t=0.7886751345*ti+0.2113248654*tii;
54     double facteur1=(max-min)/(*en)(t);
55     t=0.7886751345*tii+0.2113248654*ti;
56     double facteur2=(max-min)/(*en)(t);
57     longueur_metrique=longueur_metrique+0.5*(tii-ti)*(facteur1+facteur2);
58     integrale pas;
59     pas.ti=ti;
60     pas.li=longueur_metrique;
61     tab_integrale.insert(tab_integrale.end(),pas);
62     }
63     while (tii<t2);
64     nb=(int)floor(longueur_metrique);
65     if (longueur_metrique-floor(longueur_metrique)>0.5) nb++;
66     if (nb<1) nb=1;
67     double valeur_cible=longueur_metrique/nb;
68     tab.push_back(min);
69     int nbcree=0;
70     int nb_pas_integrale=tab_integrale.size();
71     for (int i=0;i<nb_pas_integrale;i++)
72     {
73     while ((tab_integrale[i].li>(nbcree+1)*valeur_cible) && (nbcree<nb-1))
74     {
75     double ti=tab_integrale[i].ti;
76     double tii=t2;
77     double li=0.;
78     if (i!=0) li=tab_integrale[i-1].li;
79     double lii=tab_integrale[i].li;
80     if (i!=nb_pas_integrale-1) tii=tab_integrale[i+1].ti;
81     t=ti+(tii-ti)/(lii-li)*((nbcree+1)*valeur_cible-li);
82     double x=min+t*(max-min);
83     tab.push_back(x);
84     nbcree++;
85     }
86     }
87     tab.push_back(max);
88    
89     }
90 francois 835 void MAILLEUR3D_STRUCTURE::ajouter_fonction_geometrie(int nb)
91     {
92     nbfonction=nb;
93     }
94 francois 585
95 francois 551 void MAILLEUR3D_STRUCTURE::maille(MG_GROUPE_TOPOLOGIQUE* mggt)
96 chebbi 463 {
97     affiche((char*)"Création d'un maillage MG structuré");
98     double intx, inty, intz;
99 francois 585 std::vector<double> tabx,taby,tabz;
100     if (densitevariable==false)
101     {
102     intx=fabs(xmax-xmin)/n;
103     inty=fabs(ymax-ymin)/m;
104     intz=fabs(zmax-zmin)/k;
105     }
106     else
107     {
108     discretise(tabx,xmin,xmax,n,enx);
109     discretise(taby,ymin,ymax,m,eny);
110     discretise(tabz,zmin,zmax,k,enz);
111     }
112 mejri 750
113 chebbi 463 MG_GEOMETRIE* geo= NULL;
114 francois 576 MG_SOMMET_NOEUD *som1=NULL;
115     MG_SOMMET_NOEUD *som2=NULL;
116     MG_SOMMET_NOEUD *som3=NULL;
117     MG_SOMMET_NOEUD *som4=NULL;
118     MG_SOMMET_NOEUD *som5=NULL;
119     MG_SOMMET_NOEUD *som6=NULL;
120     MG_SOMMET_NOEUD *som7=NULL;
121     MG_SOMMET_NOEUD *som8=NULL;
122     MG_ARETE_ELEMENT* are1=NULL;
123     MG_ARETE_ELEMENT* are2=NULL;
124     MG_ARETE_ELEMENT* are3=NULL;
125     MG_ARETE_ELEMENT* are4=NULL;
126     MG_ARETE_ELEMENT* are5=NULL;
127     MG_ARETE_ELEMENT* are6=NULL;
128     MG_ARETE_ELEMENT* are7=NULL;
129     MG_ARETE_ELEMENT* are8=NULL;
130     MG_ARETE_ELEMENT* are9=NULL;
131     MG_ARETE_ELEMENT* are10=NULL;
132     MG_ARETE_ELEMENT* are11=NULL;
133     MG_ARETE_ELEMENT* are12=NULL;
134     MG_FACE_ELEMENT* face1=NULL;
135     MG_FACE_ELEMENT* face2=NULL;
136     MG_FACE_ELEMENT* face3=NULL;
137     MG_FACE_ELEMENT* face4=NULL;
138     MG_FACE_ELEMENT* face5=NULL;
139     MG_FACE_ELEMENT* face6=NULL;
140     MG_VOLUME_ELEMENT* vol=NULL;
141     if (geovirtuel==true)
142     {
143     geo=new MG_GEOMETRIE((char*)"VIRTUEL",(char*)"VIRTUEL");
144 francois 591 geo->change_valeur_unite(unite);
145 francois 576 gest->ajouter_mg_geometrie(geo);
146     som1=new MG_SOMMET_NOEUD(NULL);
147     geo->ajouter_mg_sommet(som1);
148     som2=new MG_SOMMET_NOEUD(NULL);
149     geo->ajouter_mg_sommet(som2);
150     som3=new MG_SOMMET_NOEUD(NULL);
151     geo->ajouter_mg_sommet(som3);
152     som4=new MG_SOMMET_NOEUD(NULL);
153     geo->ajouter_mg_sommet(som4);
154     som5=new MG_SOMMET_NOEUD(NULL);
155     geo->ajouter_mg_sommet(som5);
156     som6=new MG_SOMMET_NOEUD(NULL);
157     geo->ajouter_mg_sommet(som6);
158     som7=new MG_SOMMET_NOEUD(NULL);
159     geo->ajouter_mg_sommet(som7);
160     som8=new MG_SOMMET_NOEUD(NULL);
161     geo->ajouter_mg_sommet(som8);
162     are1=new MG_ARETE_ELEMENT();
163     geo->ajouter_mg_arete(are1);
164     are2=new MG_ARETE_ELEMENT();
165     geo->ajouter_mg_arete(are2);
166     are3=new MG_ARETE_ELEMENT();
167     geo->ajouter_mg_arete(are3);
168     are4=new MG_ARETE_ELEMENT();
169     geo->ajouter_mg_arete(are4);
170     are5=new MG_ARETE_ELEMENT();
171     geo->ajouter_mg_arete(are5);
172     are6=new MG_ARETE_ELEMENT();
173     geo->ajouter_mg_arete(are6);
174     are7=new MG_ARETE_ELEMENT();
175     geo->ajouter_mg_arete(are7);
176     are8=new MG_ARETE_ELEMENT();
177     geo->ajouter_mg_arete(are8);
178     are9=new MG_ARETE_ELEMENT();
179     geo->ajouter_mg_arete(are9);
180     are10=new MG_ARETE_ELEMENT();
181     geo->ajouter_mg_arete(are10);
182     are11=new MG_ARETE_ELEMENT();
183     geo->ajouter_mg_arete(are11);
184     are12=new MG_ARETE_ELEMENT();
185     geo->ajouter_mg_arete(are12);
186     face1=new MG_FACE_ELEMENT();
187     geo->ajouter_mg_face(face1);
188     face2=new MG_FACE_ELEMENT();
189     geo->ajouter_mg_face(face2);
190     face3=new MG_FACE_ELEMENT();
191     geo->ajouter_mg_face(face3);
192     face4=new MG_FACE_ELEMENT();
193     geo->ajouter_mg_face(face4);
194     face5=new MG_FACE_ELEMENT();
195     geo->ajouter_mg_face(face5);
196     face6=new MG_FACE_ELEMENT();
197     geo->ajouter_mg_face(face6);
198     vol=new MG_VOLUME_ELEMENT();
199     geo->ajouter_mg_volume(vol);
200 francois 835 for (int i=0;i<nbfonction;i++)
201     {
202     MG_GEOM_FONCTION *fonc=new MG_GEOM_FONCTION(0);
203     geo->ajouter_mg_geom_fonction(fonc);
204     }
205 francois 576 }
206     MG_MAILLAGE* mai=new MG_MAILLAGE(geo);
207 chebbi 463 gest->ajouter_mg_maillage(mai);
208     std::vector<MG_NOEUD*> vecnod;
209     for (int l=0; l<=k ;l++)
210     {
211     for (int j=0; j<=m;j++)
212     {
213     for (int i=0; i<=n;i++)
214     {
215 francois 576 MG_ELEMENT_TOPOLOGIQUE *topo=NULL;
216     if (geovirtuel)
217     {
218     if ((i==0) && (j==0) && (l==0)) topo=som1;
219     else if ((i==0) && (j==m) && (l==0)) topo=som2;
220     else if ((i==0) && (j==m) && (l==k)) topo=som3;
221     else if ((i==0) && (j==0) && (l==k)) topo=som4;
222     else if ((i==n) && (j==0) && (l==0)) topo=som5;
223     else if ((i==n) && (j==m) && (l==0)) topo=som6;
224     else if ((i==n) && (j==m) && (l==k)) topo=som7;
225     else if ((i==n) && (j==0) && (l==k)) topo=som8;
226     else if ((j==0) && (l==0)) topo=are1;
227     else if ((j==m) && (l==0)) topo=are2;
228     else if ((j==m) && (l==k)) topo=are3;
229     else if ((j==0) && (l==k)) topo=are4;
230     else if ((i==0) && (l==0)) topo=are5;
231     else if ((i==n) && (l==0)) topo=are6;
232     else if ((i==n) && (l==k)) topo=are7;
233     else if ((i==0) && (l==k)) topo=are8;
234     else if ((i==0) && (j==0)) topo=are9;
235     else if ((i==n) && (j==0)) topo=are10;
236     else if ((i==n) && (j==m)) topo=are11;
237     else if ((i==0) && (j==m)) topo=are12;
238     else if (i==0) topo=face1;
239     else if (i==n) topo=face2;
240     else if (j==0) topo=face3;
241     else if (j==m) topo=face4;
242     else if (l==0) topo=face5;
243     else if (l==k) topo=face6;
244     else topo=vol;
245     }
246 francois 585 double x,y,z;
247     if (densitevariable==false)
248     {
249     z=zmin+(l*intz);
250     y=ymin+(j*inty);
251     x=xmin+(i*intx);
252     }
253     else
254     {
255     x=tabx[i];
256     y=taby[j];
257     z=tabz[l];
258     }
259 francois 791 MG_NOEUD* nou=mai->ajouter_mg_noeud(topo,x,y,z,MAGIC::ORIGINE::MAILLEUR_AUTO);
260 chebbi 463 vecnod.push_back(nou);
261 francois 576 if (geovirtuel)
262     {
263     if ((i==0) && (j==0) && (l==0)) som1->change_mg_noeud(nou);
264     else if ((i==0) && (j==m) && (l==0)) som2->change_mg_noeud(nou);
265     else if ((i==0) && (j==m) && (l==k)) som3->change_mg_noeud(nou);
266     else if ((i==0) && (j==0) && (l==k)) som4->change_mg_noeud(nou);
267     else if ((i==n) && (j==0) && (l==0)) som5->change_mg_noeud(nou);
268     else if ((i==n) && (j==m) && (l==0)) som6->change_mg_noeud(nou);
269     else if ((i==n) && (j==m) && (l==k)) som7->change_mg_noeud(nou);
270     else if ((i==n) && (j==0) && (l==k)) som8->change_mg_noeud(nou);
271     }
272     }
273 chebbi 463 }
274     }
275 francois 576 if (geovirtuel)
276     {
277     for(int i=0; i<n;i++)
278     {
279     int j=0,l=0;
280     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
281     MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
282 francois 791 mai->ajouter_mg_segment(are1,nod1,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
283 francois 576 j=m,l=0;
284     MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
285     MG_NOEUD* nod4=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
286 francois 791 mai->ajouter_mg_segment(are2,nod3,nod4,MAGIC::ORIGINE::MAILLEUR_AUTO);
287 francois 576 j=m,l=k;
288     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
289     MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
290 francois 791 mai->ajouter_mg_segment(are3,nod5,nod6,MAGIC::ORIGINE::MAILLEUR_AUTO);
291 francois 576 j=0,l=k;
292     MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
293     MG_NOEUD* nod8=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
294 francois 791 mai->ajouter_mg_segment(are4,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
295 francois 576 }
296     for(int j=0; j<m;j++)
297     {
298     int i=0,l=0;
299     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
300     MG_NOEUD* nod2=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
301 francois 791 mai->ajouter_mg_segment(are5,nod1,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
302 francois 576 i=n,l=0;
303     MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
304     MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
305 francois 791 mai->ajouter_mg_segment(are6,nod3,nod4,MAGIC::ORIGINE::MAILLEUR_AUTO);
306 francois 576 i=n,l=k;
307     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
308     MG_NOEUD* nod6=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
309 francois 791 mai->ajouter_mg_segment(are7,nod5,nod6,MAGIC::ORIGINE::MAILLEUR_AUTO);
310 francois 576 i=0,l=k;
311     MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
312     MG_NOEUD* nod8=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
313 francois 791 mai->ajouter_mg_segment(are8,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
314 francois 576 }
315     for(int l=0; l<k;l++)
316     {
317     int i=0,j=0;
318     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
319     MG_NOEUD* nod2=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
320 francois 791 mai->ajouter_mg_segment(are9,nod1,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
321 francois 576 i=n,j=0;
322     MG_NOEUD* nod3=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
323     MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
324 francois 791 mai->ajouter_mg_segment(are10,nod3,nod4,MAGIC::ORIGINE::MAILLEUR_AUTO);
325 francois 576 i=n,j=m;
326     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
327     MG_NOEUD* nod6=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
328 francois 791 mai->ajouter_mg_segment(are11,nod5,nod6,MAGIC::ORIGINE::MAILLEUR_AUTO);
329 francois 576 i=0,j=m;
330     MG_NOEUD* nod7=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
331     MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
332 francois 791 mai->ajouter_mg_segment(are12,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
333 francois 576 }
334     for (int j=0;j<m;j++)
335     for (int l=0;l<k;l++)
336     {
337     int i=0;
338     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
339     MG_NOEUD* nod2=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
340     MG_NOEUD* nod3=vecnod[i+((n+1)*(j+1))+((l+1)*(m+1)*(n+1))];
341     MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
342     i=n;
343     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
344     MG_NOEUD* nod6=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
345     MG_NOEUD* nod7=vecnod[i+((n+1)*(j+1))+((l+1)*(m+1)*(n+1))];
346     MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
347 francois 791 mai->ajouter_mg_quadrangle(face1,nod1,nod4,nod3,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
348     mai->ajouter_mg_quadrangle(face2,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
349 francois 576 }
350     for (int i=0;i<n;i++)
351     for (int l=0;l<k;l++)
352     {
353     int j=0;
354     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
355     MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
356     MG_NOEUD* nod3=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
357     MG_NOEUD* nod4=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
358     j=m;
359     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
360     MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
361     MG_NOEUD* nod7=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
362     MG_NOEUD* nod8=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
363 francois 791 mai->ajouter_mg_quadrangle(face3,nod1,nod2,nod3,nod4,MAGIC::ORIGINE::MAILLEUR_AUTO);
364     mai->ajouter_mg_quadrangle(face4,nod7,nod6,nod5,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
365 francois 576 }
366     for (int i=0;i<n;i++)
367     for (int j=0;j<m;j++)
368     {
369     int l=0;
370     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
371     MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
372     MG_NOEUD* nod3=vecnod[(i+1)+((n+1)*(j+1))+(l*(m+1)*(n+1))];
373     MG_NOEUD* nod4=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
374     l=k;
375     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
376     MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
377     MG_NOEUD* nod7=vecnod[(i+1)+((n+1)*(j+1))+(l*(m+1)*(n+1))];
378     MG_NOEUD* nod8=vecnod[i+((n+1)*(j+1))+(l*(m+1)*(n+1))];
379 francois 791 mai->ajouter_mg_quadrangle(face5,nod1,nod4,nod3,nod2,MAGIC::ORIGINE::MAILLEUR_AUTO);
380     mai->ajouter_mg_quadrangle(face6,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
381 francois 576 }
382     }
383     for(int l=0; l<k;l++)
384 chebbi 463 {
385     for(int j=0; j<m;j++)
386     {
387     for(int i=0; i<n;i++)
388     {
389     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
390     MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
391     MG_NOEUD* nod3=vecnod[(i+1)+(n+1)*(j+1)+(l*(m+1)*(n+1))];
392     MG_NOEUD* nod4=vecnod[i+(n+1)*(j+1)+(l*(m+1)*(n+1))];
393     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
394     MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
395     MG_NOEUD* nod7=vecnod[(i+1)+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
396     MG_NOEUD* nod8=vecnod[i+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
397 francois 791 MG_HEXA *hexa=mai->ajouter_mg_hexa(vol,nod1,nod2,nod3,nod4,nod5,nod6,nod7,nod8,MAGIC::ORIGINE::MAILLEUR_AUTO);
398 francois 576 }
399 chebbi 463 }
400     }
401 francois 465 BOITE_3D b(xmin,ymin,zmin,xmax,ymax,zmax);
402     mai->change_param_structure(b,n,m,k);
403 francois 835 /*affiche((char*)"Création d'un maillage FEM structuré");
404 chebbi 463 FEM_MAILLAGE* fem = new FEM_MAILLAGE(geo, mai,1);
405     gest->ajouter_fem_maillage(fem);
406 francois 835 fem->construire();*/
407 chebbi 463 }