I’m using dolfinx with a Newton solver to solve a nonlinear problem derived from a free energy functional. How can I be sure that the solution I get is indeed the global minimum, and not a local minimum corresponding to a metastable state? How can I find all the minima?
In general, there is no guarantee that the nonlinear solver will converge the global minimum, as you say you may end up finding a local one. There are several techniques to try and find different minima at every run, but the specific one to employ will likely depend on your problem. For instance, the simplest option that comes to mind is starting your newton solver from different initial guesses, and collecting the resulting converged solutions (which may be different). More sophisticated methods exist, for instance deflation.