def METHOD_NAME(Map, Matrix, LHS, RHS, ExactSolution, List):
  Prec = ML.MultiLevelPreconditioner(Matrix, False);
  Prec.SetParameterList(List);
  Prec.ComputePreconditioner();
  Solver = AztecOO.AztecOO(Matrix, LHS, RHS)
  Solver.SetPrecOperator(Prec)
  if (List['solver'] == "gmres"):
    Solver.SetAztecOption(AztecOO.AZ_solver, AztecOO.AZ_gmres);
  elif List['solver'] == "cg":
    Solver.SetAztecOption(AztecOO.AZ_solver, AztecOO.AZ_gmres);
  else:
    print "Solver type not correct"
  Solver.SetAztecOption(AztecOO.AZ_output, 16);
  err = Solver.Iterate(List['iters'], List['tol']) 