int loin=1; int gauche=2; int droit=3; real up=1; real um=-1; int n=4; border cerc(t=0,2*pi){x = 5*cos(t);y = 5*sin(t); label=loin;} border gh(t=0,1) { x=1+t; y=3; label=gauche; }; border gd(t=0,1) { x=2; y=3-6*t; label=gauche;}; border gb(t=0,1) { x=2-t; y=-3; label=gauche;}; border gg(t=0,1) { x=1; y=-3+6*t; label=gauche;}; border dh(t=0,1) { x=-2+t; y=3; label=droit;}; border dd(t=0,1) { x=-1; y=3-6*t; label=droit;}; border db(t=0,1) { x=-1-t; y=-3; label=droit;}; border dg(t=0,1) { x=-2; y=-3+6*t; label=droit;}; mesh domain = buildmesh(cerc(15*n) + gh(n) + gd(6*n) + gb(n) + gg(6*n) + dh(n) + dd(6*n) + db(n) + dg(6*n)); plot(domain, wait=1); fespace vh(domain,P1); vh u,v; solve condens(u, v) = int2d(domain) (dx(u)*dx(v)+dy(u)*dy(v) ) + on(loin, u=0) + on(gauche, u=up) + on(droit, u=um); plot(u);