ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur3d_structure.cpp
Revision: 463
Committed: Fri Nov 15 00:14:00 2013 UTC (11 years, 6 months ago) by chebbi
File size: 2330 byte(s)
Log Message:
Ajout d'un mailleur structuré

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     #include <vector>
10    
11    
12     MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE(double xmintmp, double xmaxtmp, double ymintmp, double ymaxtmp, double zmintmp, double zmaxtmp
13     , int ntmp, int mtmp, int ktmp,MG_GESTIONNAIRE*gesttmp):MAILLEUR(),
14     xmin(xmintmp),xmax(xmaxtmp),ymin(ymintmp),ymax(ymaxtmp),zmin(zmintmp),zmax(zmaxtmp),n(ntmp),m(mtmp),k(ktmp),gest(gesttmp)
15     {
16     }
17    
18     MAILLEUR3D_STRUCTURE::MAILLEUR3D_STRUCTURE( MAILLEUR3D_STRUCTURE& mdd):MAILLEUR(mdd),
19     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)
20     {
21     }
22    
23     MAILLEUR3D_STRUCTURE::~MAILLEUR3D_STRUCTURE()
24     {
25     }
26    
27     void MAILLEUR3D_STRUCTURE::maille()
28     {
29     affiche((char*)"Création d'un maillage MG structuré");
30     double intx, inty, intz;
31     intx=fabs(xmax-xmin)/n;
32     inty=fabs(ymax-ymin)/m;
33     intz=fabs(zmax-zmin)/k;
34     MG_GEOMETRIE* geo= NULL;
35     MG_MAILLAGE* mai=new MG_MAILLAGE(NULL);
36     gest->ajouter_mg_maillage(mai);
37     std::vector<MG_NOEUD*> vecnod;
38     for (int l=0; l<=k ;l++)
39     {
40     for (int j=0; j<=m;j++)
41     {
42     for (int i=0; i<=n;i++)
43     {
44     double z=zmin+(l*intz);
45     double y=ymin+(j*inty);
46     double x=xmin+(i*intx);
47     MG_NOEUD* nou=mai->ajouter_mg_noeud(NULL,x,y,z,MAILLEUR_AUTO);
48     vecnod.push_back(nou);
49     }
50     }
51     }
52     for(int l=0; l<k;l++)
53     {
54     for(int j=0; j<m;j++)
55     {
56     for(int i=0; i<n;i++)
57     {
58     MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(m+1)*(n+1))];
59     MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(m+1)*(n+1))];
60     MG_NOEUD* nod3=vecnod[(i+1)+(n+1)*(j+1)+(l*(m+1)*(n+1))];
61     MG_NOEUD* nod4=vecnod[i+(n+1)*(j+1)+(l*(m+1)*(n+1))];
62     MG_NOEUD* nod5=vecnod[i+((n+1)*j)+((l+1)*(m+1)*(n+1))];
63     MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+((l+1)*(m+1)*(n+1))];
64     MG_NOEUD* nod7=vecnod[(i+1)+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
65     MG_NOEUD* nod8=vecnod[i+(n+1)*(j+1)+((l+1)*(m+1)*(n+1))];
66     MG_HEXA *hexa=mai->ajouter_mg_hexa(NULL,nod1,nod2,nod3,nod4,nod5,nod6,nod7,nod8,MAILLEUR_AUTO);
67     }
68     }
69     }
70     affiche((char*)"Création d'un maillage FEM structuré");
71     FEM_MAILLAGE* fem = new FEM_MAILLAGE(geo, mai,1);
72     gest->ajouter_fem_maillage(fem);
73     fem->construire();
74     }