Nonlinear functional optimization in radial coordinates

I am currently implementing classical density functional theory for a radially symmetric system. In mathematical terms, I am searching for a function $$f(r)$$ that minimizes a functional $$\Omega[f]$$. The simplest part of $$\Omega$$ looks like this: $$\int\limits_0^R r^2 f(r)(\ln(f(r))-1)\mathrm{d}r$$, but there are others that involve convolutions of $$f$$. I am trying to minimize a numerical implementation of $$\Omega$$ using nlopt, which works fine in planar coordinates for the same functional.

$$f(r)$$ is represented as a vector $$f_i$$ which represents samples of $$f$$ at evenly spaced points $$r_i$$. The points start at $$Δr$$ and go up to $$R$$. $$f(0)$$ is irrelevant. There is a constant boundary condition $$f(r>R)=f_∞$$.

However, in radial coordinates, the convergence for small $$r$$ is way worse than for large $$r$$, because of the factor $$r^2$$ (the Jacobian determinant). If I only cared about the value of $$\Omega$$, this would not be a problem, but in this case, $$\Omega$$ is only a vehicle to obtain $$f$$.

Are there libraries that are better suited for this kind of problem? Or is there a different way to fix the problem and keep using nlopt?

• Do you have any conditions on $f$, e.g., any condition on $f(0)$ and/or $f(R)$ ? Since you are doing this numerically, how do you represent $f(r)$ ? By some polynomial or piecewise polynomial ? Maybe you should add this information to your question. – cpraveen Oct 9 '18 at 11:48
• Since I can't figure out how to edit the original question: $f(r)$ is represented as a vector $f_i$ which represents samples of $f$ at evenly spaced points $r_i$. The points start at $\Delta r$ and go up to $R$. $f(0)$ is irrelevant. There is a constant boundary condition $f(r > R) = f_\infty$. – Lucas L. Treffenstädt Oct 9 '18 at 12:57
• If you approximate $f(r)$ by piecewise linear polynomial, atleast you can exactly integrate to get $\Omega$ and you will need the value $f(0)$. Your $f(r)$ must remain positive. You can do change of variable $z(r) = \log f(r)$ and approximate $z(r)$ by piecewise linear polynomial. Once you get $z(r)$ you get $f(r)=\exp(z(r))$ and now positivity of $f(r)$ is not a problem. – cpraveen Oct 9 '18 at 14:10
• Have you tried using something other than equally spaced $r$ values? – Brian Borchers Oct 9 '18 at 14:39
• @PraveenChandrashekar I could try the transform, but as I said, $\Omega$ consists of more than the given integral and the other parts do not contain forms like $\ln(f)$. Also, in my experience, you do not have to impose positivity because the gradients are extreme enough that a gradient-based optimizer will not go there. And yes, I have experimented with uneven spacings. The ones I've tried make the problem worse. I cannot really make the spacing larger near the origin, since I need the resolution I have now. – Lucas L. Treffenstädt Oct 10 '18 at 8:42