qiskit-community / qiskit-nature

Qiskit Nature is an open-source, quantum computing, framework for solving quantum mechanical natural science problems.
https://qiskit-community.github.io/qiskit-nature/
Apache License 2.0
297 stars 201 forks source link

Low rank representations #654

Open kevinsung opened 2 years ago

kevinsung commented 2 years ago

What should we add?

The low rank representations of the quantum chemistry Hamiltonian (https://www.nature.com/articles/s41534-021-00416-z.pdf) are useful for time evolution as well as variational algorithms. We should add functionality to calculate and use these representations.

Example pseudocode:

electronic_energy = (ElectronicEnergy instance obtained somehow)
df_hamiltonian = low_rank_decomposition(electronic_energy)  # returns a DoubleFactorizedHamiltonian
circuit = simulate_trotter(df_hamiltonian, time, n_steps)  # returns a QuantumCircuit
mrossinek commented 1 year ago

Thanks for updating the proposal above. Can you please also write some pseudo code of what you expect the actual user-facing workflow to look like?

That said, I am not sold on DoubleFactorizedHamiltonian class. With the work done in #1033 we will be able to instead store the low-rank 2-body integrals instead of the standard 4D matrix directly inside the existing framework. See for example how I implemented AO-symmetry aware 2-body tensors here.

kevinsung commented 1 year ago

I've added some pseudocode to the opening post.