cclib / cclib

Parsers and algorithms for computational chemistry logfiles
https://cclib.github.io/
BSD 3-Clause "New" or "Revised" License
333 stars 168 forks source link

Understanding the 'reference point' in moments #1147

Closed oliver-s-lee closed 2 years ago

oliver-s-lee commented 2 years ago

Howdy, good day and apologies in advance for what I suspect is a naive question.

I'm having trouble understanding and interpreting the first item of moments. The documentation describes this as the 'the reference point used in the multipole expansion, which is normally the center of mass', but I'm afraid I don't really follow what this means. Does the value of this reference have a meaningful impact on the rest of the values of moments, or is it of relatively little importance? I note that in the Gaussian parser this value is always set to [0.0, 0.0, 0.0], and in Turbomole output I've never not seen a value of 0,0,0 either...

If for, example, the reference point was [0.1, 0.2, 0.3] would the rest of moments be comparable to another calculation where the reference was [0.0, 0.0, 0.0], or would some processing of the moments be required to make them comparable?

berquist commented 2 years ago

I don't think it's a naive question, because a lot of people don't know where this comes from, and programs also can hide aspects of this.

A moment is calculated as a one-electron expectation value over the moment operator: $$ \left(\phi{\mu}|\mathfrak{M}(\mathbf{r})|\phi{\nu}\right) = \int\int\int d\mathbf{r}_1 d\mathbf{r}_2 d\mathbf{r}_3 \left[ (x_1-A_x)^{a_x} (y_1-A_y)^{a_y} (z_1-A_z)^{a_z} e^{-\zeta_a |\mathbf{r}_1 - \mathbf{A}|^2} \right] \mathfrak{M}(\mathbf{r}_3) \left[ (x_2-B_x)^{b_x} (y_2-B_y)^{b_y} (z_2-B_z)^{b_z} e^{-\zeta_b |\mathbf{r}_2 - \mathbf{B}|^2} \right] $$ $$ \mathfrak{M}(\mathbf{r}_3) = (x_3 - C_x)^{c_x} (y_3 - C_y)^{c_y} (z_3 - C_z)^{c_z} $$ where the operator looks like a Gaussian basis function without the exponential part: it has an origin $\mathbf{C}$ which serves as the expansion or reference point.

Whether or not this point matters depends on a few things. It is true that the components of the moments change with the origin, however the norm of each moment (the "total" dipole moment...) should be invariant to expansion point. This is not true for charged systems, so when the moments are important for analysis, a point that minimizes the norm might be used (center of electronic charge). There is also the center of nuclear charge, the center of mass, and the Cartesian origin (not just because cclib might accidentally present it this way).

If for, example, the reference point was [0.1, 0.2, 0.3] would the rest of moments be comparable to another calculation where the reference was [0.0, 0.0, 0.0], or would some processing of the moments be required to make them comparable?

Generally speaking, they are not. Consider the integral above before it's contracted with the density $P_{\mu\nu}$ (which gives the value printed in an output file). Even then I don't think you can just "translate" it to a different origin because of the integration over $\mathbf{r}_3$. You would need to generate new integrals in the AO basis with the different origin, and most programs don't offer control over this other than redoing the whole calculation, if they even let you change the origin to begin with.

oliver-s-lee commented 2 years ago

Many thanks for the detailed response, this clears it up quite a lot. Worrying that the situation is so complicated, but it seems like there's not much to be done about it in any case other than to record the origin coords? Curious that I've not really seen this discussed in the literature before, even in papers that discuss calculated dipole moments, I guess this is one of those things that is glossed over a lot.

berquist commented 2 years ago

record the origin coords?

I would not be surprised if this is inconsistent across parsers, but yes.

even in papers that discuss calculated dipole moments

My suspicion is that it works out because the origin is consistent between calculations.