Re: [firedrake] Solver error -- Provided residual is not a linear form
Hi Anna, Are you intending that the u-dependence in maximum should be maintained during the solve? After doing the interpolation, there will be no symbolic record of where maximum's values came from. That's probably not the cause of the error message though. It says that the form is not a linear form. This might mean that you accidentally included some TrialFunction (which turns it into a bilinear form) or perhaps forgot a factor of dx or dS somewhere (which stops it from being a form). all the best --cjc On 14 May 2017 at 21:30, Anna Kalogirou <A.Kalogirou@leeds.ac.uk> wrote:
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? 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
Best wishes,
Anna.
-- http://www.imperial.ac.uk/people/colin.cotter www.cambridge.org/9781107663916
Hi Colin, Thanks, indeed I had forgotten a trial function in my residual. Yes I do need the the u-dependence in the maximum during the solve. If I substitute the definition of maximum into the residual, i.e. write F = v*(u + 0.5*(u + abs(u)))*dx gives the error ufl.log.UFLException: UFL conditions cannot be evaluated as bool in a Python context. Will it work if I use assign instead of interpolate? Best, Anna. On 15 May 2017, at 07:59, Colin Cotter <colin.cotter@imperial.ac.uk<mailto:colin.cotter@imperial.ac.uk>> wrote: Hi Anna, Are you intending that the u-dependence in maximum should be maintained during the solve? After doing the interpolation, there will be no symbolic record of where maximum's values came from. That's probably not the cause of the error message though. It says that the form is not a linear form. This might mean that you accidentally included some TrialFunction (which turns it into a bilinear form) or perhaps forgot a factor of dx or dS somewhere (which stops it from being a form). all the best --cjc On 14 May 2017 at 21:30, Anna Kalogirou <A.Kalogirou@leeds.ac.uk<mailto:A.Kalogirou@leeds.ac.uk>> wrote: 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? 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 Best wishes, Anna. -- http://www.imperial.ac.uk/people/colin.cotter www.cambridge.org/9781107663916<http://www.cambridge.org/9781107663916> [http://assets.cambridge.org/97811076/63916/cover/9781107663916.jpg] _______________________________________________ firedrake mailing list firedrake@imperial.ac.uk<mailto:firedrake@imperial.ac.uk> https://mailman.ic.ac.uk/mailman/listinfo/firedrake
participants (2)
-
Anna Kalogirou
-
Colin Cotter