Summary
The documentation for the dipole keyword is ambiguous about whether it expects Cartesian body-fixed components or reduced spherical tensor components. For perpendicular transitions (|ΔΛ|=1), these differ by a factor of √2, leading to a factor of 2 error in Einstein A coefficients and lifetimes.
Numerical testing confirms that dipole and dipole-x with the same Cartesian input values produce identical results. However, multiple documentation sources suggest they should differ:
- Eq. 42 in the paper defines spherical tensor components with the standard √2 factor (μ₊₁ = ∓(1/√2)(μ_x ± iμ_y))
- The readthedocs fields page describes
dipole-x as "related to the Cartesian-representation," implying dipole uses a different (spherical/Lambda) representation
- The quadrupole documentation explicitly states "Duo requires quadrupole moment curves to be provided in the spherical irreducible representation," which creates a natural inference that dipole works the same way
The molpro_duo() subroutine in diatom.f90 does apply a -sqrt(0.5) factor when converting dipole-x input, but this is exactly cancelled by the |x⟩,|y⟩ → |+Λ⟩,|-Λ⟩ unitary transformation, making the net conversion just a sign flip.
Test case
Two-state CH model (X²Π ↔ B²Σ⁻, ΔΛ=1) with the same TDM curve:
| Input method |
Einstein A (s⁻¹) |
dipole + raw Cartesian μ_x |
4.592×10⁶ |
dipole-x + raw Cartesian μ_x |
4.592×10⁶ |
dipole + μ_x/√2 |
2.296×10⁶ |
Impact
This ambiguity is causing users to unnecessarily divide their ab initio Cartesian TDMs by √2 before providing them to Duo, resulting in lifetimes that are 2× too large. This came up in a Reddit thread where at least one user was affected, and they mention a published calculation that may also have this error.
Suggestion
A note in the dipole documentation clarifying that the Cartesian body-fixed component should be used directly would prevent this confusion. Something like:
For perpendicular transitions (|ΔΛ|=1), dipole expects the same numerical value as the Cartesian body-fixed component (e.g. μ_x). Do not apply the √2 conversion to spherical tensor components; this is handled internally. dipole and dipole-x accept the same numerical values.
Summary
The documentation for the
dipolekeyword is ambiguous about whether it expects Cartesian body-fixed components or reduced spherical tensor components. For perpendicular transitions (|ΔΛ|=1), these differ by a factor of √2, leading to a factor of 2 error in Einstein A coefficients and lifetimes.Numerical testing confirms that
dipoleanddipole-xwith the same Cartesian input values produce identical results. However, multiple documentation sources suggest they should differ:dipole-xas "related to the Cartesian-representation," implyingdipoleuses a different (spherical/Lambda) representationThe
molpro_duo()subroutine indiatom.f90does apply a-sqrt(0.5)factor when convertingdipole-xinput, but this is exactly cancelled by the |x⟩,|y⟩ → |+Λ⟩,|-Λ⟩ unitary transformation, making the net conversion just a sign flip.Test case
Two-state CH model (X²Π ↔ B²Σ⁻, ΔΛ=1) with the same TDM curve:
dipole+ raw Cartesian μ_xdipole-x+ raw Cartesian μ_xdipole+ μ_x/√2Impact
This ambiguity is causing users to unnecessarily divide their ab initio Cartesian TDMs by √2 before providing them to Duo, resulting in lifetimes that are 2× too large. This came up in a Reddit thread where at least one user was affected, and they mention a published calculation that may also have this error.
Suggestion
A note in the
dipoledocumentation clarifying that the Cartesian body-fixed component should be used directly would prevent this confusion. Something like: