I have a coupled set of PDEs that need to be solved as part of a larger problem. I am currently approaching this by computing spatial derivatives with finite differences and using PETSc's nonlinear conjugate gradient solver. This does converge in terms of an absolute tolerance, however, when I started thinking about the structure of my equations, I've noticed a problem.
Consider $$\partial_x F\!\left(x\right) = G\!\left(x\right)$$ where $F$, $G$ are given by $$ F\!\left(x\right) = \frac{1}{1 + f\left(x\right)^2} $$ $$ G\!\left(x\right) = \frac{f(x)}{1 + f\left(x\right)^2}. $$ We would be solving for $f\!\left(x\right)$. (This is not one of the equations I am solving, but it's similar in structure and just an illustration anyway.)
What would stop the nonlinear solver from, say, making $f\!\left(x\right)$ larger and larger until the "signal" (residual) falls below the "noise" (tolerance) level?
I've observed this happening in my own equations, and I think that my "convergence" might not be real. Yet the solver is doing exactly what it should, and what I asked it to do. Is there a way around this problem? Or is this not a problem at all?