Obtaining orbital energies at the OMP2 level

Is it possible to print to orbital energies at the OMP2 level, and How it can be done?

Probably not the best way to go, but you can write the wfn to a molden file and extract orbital energies there.

e_mp2, wfn_mp2 = psi4.energy('omp2', molecule=o2, return_wfn=True)
psi4.molden(wfn_mp2, "mp2.molden")

Thank you very much, sir.

Ignore what @crduan said. It is wrong. That will print the SCF orbital energies.

If you are doing DF-OMP2, the default in Psi4
DF-OMP2 will never save the DF-OMP2 orbital energies to the original wavefunction, so trying to write a Molden file to get them will not work.

There is currently no way in Psi4 to do this. The problem is that although you should be able to print them by setting OCC_ORBS_PRINT, the code that prints them is in the semi_canonic function, which my sample test doesn’t run.

This is a @bozkaya problem.

Out of curiosity, what are you looking at the OMP2 orbital energies for?

If you are doing conventional OMP2:
Setting OCC_ORBS_PRINT to true will print them, easy as that!

@hmdrpthk, sorry for the misleading information, please ignore that.

@jmisiewicz, how do you (or how can users) know that orbitals in the molden are not at a post-HF level? Is that the case for all post-HF methods? I just think it is intuitive that people will think the molden being written contains up-to-date information. If it does not, probably it should best throwing out a warning?

I could tell because when I checked the orbital energies, they matched the SCF ones.

Psi’s handling of orbital energies and orbitals for orbital-optimized methods is… not what I would call consistent across different modules right now. We have a similar problem with densities. This is something I want to fix in the next year, but it’s not a top priority.

1 Like

Thank you very much for your answer, which I could understand by looking at the output file as it is printing SCF orbital energies.