qiskit-community / qiskit-aqua

Quantum Algorithms & Applications (**DEPRECATED** since April 2021 - see readme for more info)
https://qiskit.org/aqua
Apache License 2.0
573 stars 376 forks source link

[Feature] HF/DFT Embedding #1258

Closed mrossinek closed 4 years ago

mrossinek commented 4 years ago

What is the expected improvement?

To add an implementation of the HF and DFT embedding schemes proposed in this paper: https://arxiv.org/abs/2009.01872.

The aforementioned paper provides an algorithm which allows embedding a quantum computing calculation into a DFT calculation. We already have a basic implementation based on the development version of Qiskit which we will open a PR for once the paper is published.

In the meantime, we can use this issue to discuss some of the implementation aspects which involve the paper. At this time, I can say that the implementation can be separated into 3 logically separate blocks. I will outline the concepts of each of these below.

1. HF Embedding

The first block is a simple extension of the QMolecule class. It adds a new static method called active_space_reduction which can be used to achieve a proper HF embedding through calculating the inactive Fock operator which is in turn used instead of the 1-electron integrals in all further calculations. This allows the specification of an active space to which the quantum calculation is being restricted.

Some more notes:

2. PySCFDriver Refactoring

In order to prepare the final goal (which is the DFT Embedding) we need to refactor the PySCFDriver (which is for now the only supported driver). Since the PyQuanteDriver has common aspects with the PySCFDriver I have extended the refactoring to it as well, where applicable. This refactoring includes the following aspects:

3. DFT Embedding

Since this DFT Embedding poses a fully fledged application of Qiskit within the chemistry submodule, I have implemented this algorithm as a new class in the qiskit.chemistry.applications module. The implementation is currently limited to be used with the PySCFDriver but supports full configuration in most (I dare not say, all) other aspects. Further driver support is a WIP. After the successful integration of the previous two paragraphs, this change should essentially only involve the addition of the new class and corresponding unittests.

If you would like to learn more about the algorithm please check out the paper. To highlight the most important aspects of the DFT embedding scheme I have included its technical visualization below.

DFT Embedding Scheme

mrossinek commented 4 years ago

Sorry for the duplicate.