1
2////////////////////////////////////
3// Optimisation d'une 'grue'         //
4// � volume constant              //
5// avec un maillage sous-jacent   //
6// qu'on adpate a x^2 et y ^2 mais avec une
7// erreur constante //
8// plante de temps a autre (depend de niter !!!)
9////////////////////////////////////
10// Nom du fichier de sauvegarde
11string sauve="grue";
12
13// nombre d'it�rations
14int niter=1;
15
16//nombre de sauvegardes du maillage (<niter)
17int nsave=20;
18
19//coefficient d'exag�ration de la d�formation
20real exa=1;
21
22//pas
23real pas=0.01;
24
25//pr�cision du calcul
26real errcalc=0.001;//
27
28//finesse du maillage de structure
29real errground=0.01;
30
31//initialisation du compteur des sauvergardes
32int nsaved=0;
33
34//compliance
35real compliance;
36
37//fonction d�finissant la zone � optimiser (=1 sur la fronti�re optimisable, =0 sinon)
38func cutx =(y>1)*(x<4);
39func cuty =(y>1)*(x<4);
40
41//d�finition des bords de la forme
42//label =
43// 1:Condition de Dirichlet
44// 2:Condition Libre
45// 3:Condition de Neuman non nulles
46
47border a1(t=8,9) {x=5; y=t;label=3;}; // logement de la charge
48border b(t=5,0)  {x=t; y=9;label=2;}; // haut de la grue
49border c1(t=1.5,5) {x=t; y=8;label=2;}; //bras de la grue
50border d2(t=9,0) {x=-0.5+0.5/9*t; y=t;label=2;}; //cote gauche de la grue
51border d1(t=0,8) {x=0.5+t/8; y=t;label=2;} //cote droit de la grue
52border e(t=-0.5,0.5) {x=t; y=0;label=1;}; //base de la grue
53
54// forces appliqu�es
55func g1=0;
56func g2=-1;
57
58// coefficients de Young et de Lam�
59real lambda=12;
60real mu=6;
61
62
63// coefficients de Lam� du mat�riau
64cout <<"lambda,mu ="<<lambda<<","<<mu <<endl;
65
66// construction du maillage de structure de la forme
67mesh Shground= buildmesh(e(5)+d1(20)+c1(10)+a1(5)+b(25)+d2(20));
68mesh Sh=Shground;
69
70fespace Vh(Sh,[P1,P1]);
71Vh [uu,vv],[w,s];
72
73// Calcul du d�placement de la structure
74problem elasticite([uu,vv],[w,s],solver=CG,eps=1.0e-6) =
75    int2d(Sh)(
76               2*mu*(dx(uu)*dx(w)+dy(vv)*dy(s)+((dx(vv)+dy(uu))*(dx(s)+dy(w)))/2)
77              +lambda*(dx(uu)+dy(vv))*(dx(w)+dy(s))
78	)
79    + int1d(Sh,3) (g1*w+g2*s)
80    +on(1,uu=0,vv=0)
81;
82
83elasticite;
84
85cout << "adaptation"<<endl;
86Sh = adaptmesh  (Sh,[uu,vv],err=errcalc);
87plot(Sh,wait=1);
88
89elasticite;//Segmentation Fault !!!
90