adc-connect / adcc

adcc: Seamlessly connect your program to ADC
https://adc-connect.org
GNU General Public License v3.0
32 stars 19 forks source link

How to obtain the one-particle density matrix of the MP ground state #128

Open Edumars opened 3 years ago

Edumars commented 3 years ago

Hi Michael & Maximilian, I wonder if there is a way to extract information about the ground state from the ADCC code, specifically the reduced density matrix corresponding to the reference ground state.

If the second order Møller-Plesset can be considered the ground state for an ADC(2) excited state calculation, another possibility could be requesting an MP2 calculation from the host program. Please advise. Thanks a lot

mfherbst commented 3 years ago

What do you mean by "reduced density matrix"? You can get the MP2 one-particle density in the AO or MO representation if that's what you are after.

That can be done by ground_state.density(), which returns a OneParticleOperator that you can convert to a numpy array or convent to the AO basis and return as a numpy array (like a transition or state density).

In this ground_state is the LazyMp object contained in the state or which you can construct from your host program solution via LazyMp(scfres), where scfres is the host program solution you would otherwise pass to the adcc.adcN function.

maxscheurer commented 3 years ago

I would also like to point out that there are different theoretical approaches to evaluate a one-particle density matrix for MP2, i.e., unrelaxed, relaxed, and expectation value. adcc implements the expectation value approach, also for excited state densities. For further details on the similarities and differences of the Lagrangian and expectation-value-based schemes I recommend this publication.