psi4 / psi4numpy

Combining Psi4 and Numpy for education and development.
BSD 3-Clause "New" or "Revised" License
330 stars 151 forks source link

Adds ADC(2) reference implementations #105

Closed obackhouse closed 3 years ago

obackhouse commented 3 years ago

Description

This PR adds reference implementations for the ADC(2) method, with a separate implementation for ionization potentials, electron affinities and excitation energies. The implementations are based on an RHF reference, but use spin-orbitals as the equations are nicer there. There is also a helper script with a function to perform the Davidson algorithm for an arbitrary matrix, or function defining a matrix-vector product. The latter is adapted from the EOM-CCSD implementation. These are not particularly efficient, but should be a simple enough showcase of the iterative eigensolver to keep the scaling down.

I have tested these scripts against PySCF for the IP and EA, and against adcc for the EE. The codes will not account for degeneracy in n_states nor separate singlets and triplet EEs as adcc does, but the energies themselves match.

What are your new additions? Please provide a brief list.

Any questions for the community?

codecov-io commented 3 years ago

Codecov Report

Merging #105 (40d8c84) into master (3847966) will not change coverage. The diff coverage is n/a.

obackhouse commented 3 years ago

This looks really great overall! I don't have much ADC experience. Do you have any recommendations for reviewers? If not we can ping the rest of the maintainers here.

I can ask either of the adcc developers, who I believe are familiar with psi4? Up to you. I will get to your review comments this weekend.

dgasmith commented 3 years ago

@obackhouse That would be fantastic on the adcc developers! Someone closer to these codes is always very welcome.

dgasmith commented 3 years ago

@maxscheurer Thanks for the review! Can you approve and merge?

maxscheurer commented 3 years ago

I have no privileges to merge PRs 😄