Following up on my previous email, I have found a workaround to those issues, but now I have a problem with the solvers:
Traceback (most recent call last):
  File "/Users/matak/Downloads/Inequality-constraint-Rockafellar/solvers.py", line 32, in solver_F
    F_problem = NonlinearVariationalProblem(F_solve, w)#, aP=Ap)
  File "/Users/matak/firedrake/src/firedrake/firedrake/variational_solver.py", line 47, in __init__
    raise ValueError("Provided residual is not a linear form")
ValueError: Provided residual is not a linear form
 
There two issues here:
1. I cannot give a preconditioning matrix aP -- is this not possible for nonlinear problems?
As the documentation for NonlinearVariationalProblem suggests, you can provide Jp, a UFL form for the preconditioning Jacobian. This is the equivalent of aP.
 
2. I suspect the error above is because I have functions that depend on the solution, and I don’t know if that is acceptable in firedrake. I have something like the following:
u = Function(V)
v = TestFunction(V)
maximum = interpolate(0.5*(u
 + abs(u)), V)
F = v*(u + maximum)*dx
 
 
Actually, as Colin sort of says, as far as Firedrake is concerned, maximum does not depend on u. This is because doing the interpolation breaks the symbolic link between u and maximum. In the code you have written, maximum does not get updated
 inside the variational solver as the guess for u gets updated. Whether that is what you wanted to do or not depends on the maths of your problem.
The error you are seeing, however, is caused by the Form having two arguments. This almost certainly means you have a TrialFunction in your nonlinear problem, which makes no sense.
Regards,
David