Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More user-friendly excited state properties of degenerate states #127

Open
golnik opened this issue Apr 15, 2021 · 5 comments
Open

More user-friendly excited state properties of degenerate states #127

golnik opened this issue Apr 15, 2021 · 5 comments
Labels
feature New feature or request

Comments

@golnik
Copy link

golnik commented Apr 15, 2021

adcc produces weird results for the electric dipole moments of excited states in SiH4 molecule. My input is shown below:

import psi4
import adcc

mol = psi4.geometry('''
units angstrom
symmetry c1
no_reorient
	Si	 0.0000000	 0.0000000	 0.0000000
	H	 0.8529540	 0.8529540	 0.8529540
	H	-0.8529540	-0.8529540	 0.8529540
	H	-0.8529540	 0.8529540	-0.8529540
	H	 0.8529540	-0.8529540	-0.8529540
''')

#psi4.core.be_quiet()
psi4.set_options({
	'basis': 'cc-pvdz',
	'e_convergence': 1e-10
})
scf_e, scf_wfn = psi4.energy('SCF',properties=["DIPOLE"],return_wfn=True)

state = adcc.adc2x(scf_wfn,n_singlets=3,frozen_core=0)

print(state.describe(state_dipole_moments=True))

which gives the following values for the excited states properties

+-----------------------------------------------------------------------------------------+
| adc2x                                                              singlet ,  converged |
+-----------------------------------------------------------------------------------------+
|  #        excitation energy     osc str    |v1|^2    |v2|^2      state dipole moment    |
|          (au)           (eV)                                                            |
|  0     0.3513249      9.560038   0.0000    0.9175   0.08248   -0.4507   0.0881   0.1206 |
|  1     0.3513252      9.560045   0.0000    0.9175   0.08253    0.3140  -0.3652   0.2189 |
|  2     0.3513281      9.560125   0.0000    0.9176   0.08241    0.1368   0.2757  -0.3386 |
+-----------------------------------------------------------------------------------------+

I expected to get zeros for these states. Even if the values are not zeros, they should be at least symmetric for degenerate states. Same computations performed with pyscf backend produce absolutely random values which change each run.

The ADC module in Q-Chem seems to give the correct answer.

@maxscheurer
Copy link
Member

maxscheurer commented Apr 15, 2021

Thanks for reporting this. Would you be so kind to attach your Q-Chem output file? This would help a lot to get to the bottom of the issue.

@mfherbst
Copy link
Member

mfherbst commented Apr 15, 2021

Thanks for reporting this.

I expected to get zeros for these states. Even if the values are not zeros, they should be at least symmetric for degenerate states. Same computations performed with pyscf backend produce absolutely random values which change each run.

I don't agree with your assessment. Since these states are degenerate there is no "preferred" orientation of the excitation vectors in space. Just keep in mind that any linear combination of the three states is also an eigenstate, such that one could obtain an infinite number of representations of the eigenspace composed of these three excitation vectors. During the diagonalisation of the ADC matrix the eigensolver converges to one such representation (implying one spatial orientation) of the three excitations, depending on some random input. This implies that the orientation (and thus the obtained dipole moments on an individual state) may differ each run.
Physically this is no problem, because all measurable properties will have equal contribution from these three degenerate excitations. In other words the measured dipole moment of the excited state at 9.56 eV is the average of the dipole moments from all three states. If you form that average (component by component) you get a zero dipole moment (within the numerical tolerance).

Regarding Q-Chem: This code solves the eigensystem with a different algorithm, which afaik is fully deterministic, so you get the same numbers each time. But since these are degenerate states, there is no "correct" dipole moment for them. It's the sum that matters.

@mfherbst
Copy link
Member

mfherbst commented Apr 17, 2021

Indeed I checked with Q-Chem. Even with symmetry disabled they get a dipole moment of identically zero for all three states. I can see how this is nicer from a user perspective and I wonder how they manage that. I'll think about it, but I'm not sure what can reasonably be done here to be fair.

@golnik
Copy link
Author

golnik commented Apr 19, 2021

Thanks for your replies. Clearly, there is some logic in such a behavior of adcc program for degenerate electronic states. However, as you also noticed, the symmetric dipole moments produced by Q-Chem (I also benchmarked it with EOM-CC, TDDFT, CI etc. in other packages like molpro and gaussian which all give the same answer) are much easier to understand from a user point of view. A particular reason why I thought there is a bug in adcc is because I scanned PES and dipole moments along nuclear degrees of freedom. One obtains a smooth PES and "logical" dipole moments for displaced geometries but gets a "nonsense" (now I understand that it is correct) for the fully symmetric configuration. So, I was confused by this unexpected jump in properties when moving from one geometry to the other. As far as I understand from your reply, it does not make much sense to visualize individual densities of these degenerate states because transition amplitudes also make sense only for a combination of states?

@maxscheurer maxscheurer added the feature New feature or request label Apr 19, 2021
@maxscheurer maxscheurer changed the title Possible bug with computing excited states properties More user-friendly excited state properties of degenerate states Apr 19, 2021
@maxscheurer
Copy link
Member

Sorry for your frustration with the adcc results. I've added the "feature" badge to this PR, such that we can keep track of it more easily, and maybe incorporate an adcc-side enhancement if we find the time for it.

Using Python, you could of course a) find the degenerate states and compute the dipole moment manually and
b) compute linear combinations of vectors/etc. for all the other properties you want to consider.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants