Solver for complex-valued Maxwell equation

I am solving a complex-valued Maxwell equation, as follows:

load “lapack”
load “MUMPS”
load “PETSc-complex”
load “Element_Mixte3d”

func Pk = Edge03d;
fespace Vhk(Th,Pk, periodic = [[1,y,z],[2,y,z],[3,x,z],[4,x,z],[5,x,y],[6,x,y]]);
varf cprob(def(V), def(W)) = int3d(Th, qforder = 4)(1.0/mur*(Bx(V)Bx(W) + By(V)By(W) + Bz(V)Bz(W)) - k0^2nn(VxWx + VyWy + VzWz));
matrix<complex> A = cprob(Vhk, Vhk, solver = “MUMPS”); // cell problem

It seems the solution precision is not awesome. I am wondering on how to improve it. I mean, can I replace solver = “MUMPS” by something more appropriate to the problem I am dealing with?Thanks!