Dear all,
I heve few questions on the example Maxwell3dsimple.edp from ffddm examples. I need to solve my own maxwell code in parallel and I am new in parallel computing and need to understand this code in detail, I will be thankful if you help me on this.

what are the roles of two preconditioers VarfEprec and VarfOpt ? while in them also the values of the epsilonEprec is equal to 0 in the code. so the VarfEprec is practically equal to Varf.

in the second preconditioned VarfOpt the fourth line ( int2d(meshName,10)(1ikCrossN(vx,vy,vz)’*CrossN(Ex,Ey,Ez)) ) is defined based on what? and this 10 boundry condition is also from where? because all labels in the mesh were defines 1 and 2.
// for the preconditioner
macro VarfEprec(varfName, meshName, PhName)
varf varfName([Ex,Ey,Ez],[vx,vy,vz]) =
int3d(meshName)(Curl(vx,vy,vz)‘Curl(Ex,Ey,Ez))
+ int3d(meshName)((k^21iepsilonEprec)[vx,vy,vz]’[Ex,Ey,Ez])
+ int2d(meshName,Robin)(1ikCrossN(vx,vy,vz)’*CrossN(Ex,Ey,Ez))
+ on(Dirichlet,Ex=0,Ey=0,Ez=0); // EOM
// for the preconditioner
macro VarfOpt(varfName, meshName, PhName)
varf varfName([Ex,Ey,Ez],[vx,vy,vz]) =
int3d(meshName)(Curl(vx,vy,vz)'Curl(Ex,Ey,Ez))
+ int3d(meshName)((k^21iepsilonEprec)[vx,vy,vz]’[Ex,Ey,Ez])
+ int2d(meshName,Robin)(1ikCrossN(vx,vy,vz)‘CrossN(Ex,Ey,Ez))
+ int2d(meshName,10)(1ik*CrossN(vx,vy,vz)’*CrossN(Ex,Ey,Ez))
+ on(Dirichlet,Ex=0,Ey=0,Ez=0); // EOM

Defining a coarse mesh setup Thc is obligatory for solving maxwell equation? if yes, what is optimum for mysplit value?

in the ffddmplot(M,sqrt(real(u)^2+real(uy)^2+real(uz)^2), “Global solution”); u is equal with ux? because when I change it to ux I get an error.
Thanks for your guidance in advance.