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