//definicija konstant in funkcij real phi0=pi/2.; // kot, ki doloca mejo med Dirichletovim in Neummanovim robom real a=3.,b=2.; // polosi elipse func f=-1; // gostota sile na obmocju //definicija obmocja in robnih pogojev border Gamma1(t=-phi0,phi0) {x=a*cos(t);y=b*sin(t);}; //rob Gamma1 //prvi del elipse border Gamma2(t=phi0,2*pi-phi0) {x=a*cos(t);y=b*sin(t);}; //rob Gamma2 //drugi del elipse int n1=25,n2=25; //stevilo delilnih tock na posameznih delih roba func g0=0.; //Dirichletov pogoj na rob1 func g1=0.; //Neumanov pogoj na rob2 // definicija triangulacije mesh Th = buildmesh (Gamma1(n1)+Gamma2(n2)); // definicija prostora koncnih elementov (P1 so odsekoma linearni) fespace Vh(Th,P1); //definicija resitve u in testnih funkcij v Vh u,v; // resitev problema v sibki obliki solve Poisson(u,v,solver=LU) = int2d(Th)(dx(u)*dx(v) + dy(u)*dy(v)) // togostni del - int2d(Th)(f*v)-int1d(Th,Gamma2)(g1*v) // desna stran +on(Gamma1,u=g0); //Dirihletovi robni pogoji plot(u,fill=1,dim=2,wait=1,nbiso=100); //risanje grafa cout << " u(0,0)= " << u(0,0) << endl; //plot(u,dim=2,nbiso=50,fill=1,ps="slika1.eps",wait=true); //izpis grafa na datoteko