hello everyone;
can you help me to optimize my program .
my programme try to solve an inverse problem using KMF algorithm
/////////////////////////////// Programme ////////////////////////////////
////////////////// debut: Mesh /////////////////
int [int] Labels=[0,1,2,3];
real x0 = 0.;
real x1 = 1.;
real y0 = 0.;
real y1 = 1.;
int n = 10;
int m = 100;
mesh Th = square(n, m, [x0+(x1-x0)*x, y0+(y1-y0)*y],label=Labels,flags=1);
//plot(Th,wait=true);
//////////////// Fin: Mesh ////////////////////
//////////////// Data ////////////////////
int k=20;
//////////////// Definition des probemes ////////////////////
fespace Vh(Th,P1);
Vh W0,W1,W2,vW;
Vh Wex=6.*(x+y);
Vh Wguess=0;
//////////////// Probleme P0 ////////////////////
problem PW0(W0,vW,solver=sparsesolver)= int2d(Th)(Gradient(W0)’*Gradient(vW))
+ on(0,W0=Wex)
+ on(2,W0=Wex)
+ on(3,W0=Wex)
- int1d(Th,1)(Neumann(Wguess)*vW); // guess q0
PW0;
Wguess=W0;
//////////////// Probleme P1 ////////////////////
problem PW1(W1,vW,solver=sparsesolver)= int2d(Th)(Gradient(W1)’*Gradient(vW))
+ on(0,W1=Wex)
+ on(2,W1=Wex)
+ on(3,W1=Wex)
- int1d(Th,1)(Neumann(W0)*vW);
//////////////// Probleme P2 ////////////////////
problem PW2(W2,vW,solver=sparsesolver)= int2d(Th)(Gradient(W2)’*Gradient(vW))
- int1d(Th,0)(Neumann(W1)*vW)
- int1d(Th,2)(Neumann(W1)*vW)
- int1d(Th,3)(Neumann(W1)*vW)
+ on(1,W2=Wex);
for (int i=0;i<k;i++)
{
PW1;
PW2;
W0=W2;
}
plot(Wguess, wait=1,fill=true, cmm=“W0”,value=true,dim=2,boundary=1);
plot(W1, wait=1,fill=true, cmm=“W1”,value=true,dim=2,boundary=1);
plot(W2, wait=1,fill=true, cmm=“W2”,value=true,dim=2,boundary=1);
plot(Wex, wait=1,fill=true, cmm=“Wex”,value=true,dim=2,boundary=1);