Trying to write a parallel version, in fact, is it wrong?
load “PETSc-complex” // PETSc plugin
macro dimension()2// EOM // 2D or 3D
include “macro_ddm.idp”
real omega=1,lambda=0.5;//
real Tf=0.5;
real t0=0;
int m1=4,n1=4;
mesh Th=square(m1,n1,[x,y]);
fespace Xhf(Th,P2);
real dt=Tf/b(mm-1);
Xhf psai2,u,F,F1,F2;
Xhf psai0=(exp(-2x^2-2y^2))(x+1iy)/(x^2+y^2+1);
Xhf psait0=1ipsai0;
Xhfpsai1=psai0+dtpsait0;
real m=abs(psai1);
varf va(psai2, u)= int2d(Th)(2psai1u/(dt^2))
+int2d(Th)(0.5dx(psai2)dx(u)+0.5dy(psai2)dy(u))
+int2d(Th)(0.5psai2u)+on(1,2,3,4,psai2=0);
varf rhs(psai1,u)=int2d(Th)(2psai1u/(dt^2));
varf rhs1(psai0,u)=-int2d(Th)(psai0u/(dt^2))
-int2d(Th)(0.5dx(psai0)dx(u)+0.5dy(psai0)dy(u));
Mat A;
createMat(Th, A, P2); //
A = va(Xhf, Xhf);
Mat B;
createMat(Th, B, P2); //
B = rhs1(Xhf, Xhf);
Mat C;
createMat(Th, C, P2); //
C= rhs(Xhf, Xhf);
for ( real t=0+2dt; t<=Tf ; t+=dt)
{
F1= B * psai0;
F2=C * psai1;
F=F1+F2;
set(A, sparams ="-pc_factor_mat_solver_type mumps ");
psai2=A^-1 * F;
psai0=psai1;
psai1=psai2;
}