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:
I have exposed the same functionality in the Hamiltonian class (similarly to how freeze_core is exposed)
the active space can even be selected manually (i.e. it is not limited to be a symmetric selection around the Fermi level)
unittests are also in place
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:
deprecation of HFMethodType in favor of pyscfd.MethodType and pyquantd.MethodType
deprecation of hf_method in favor of method (in both, PySCFDriver and PyQuanteDriver)
DFT support in both drivers
support for disabling the dipole integral computation in PySCFDriver
support for QMolecule construction based on a PySCF chkfile
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.
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 calledactive_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:
Hamiltonian
class (similarly to howfreeze_core
is exposed)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 thePyQuanteDriver
has common aspects with thePySCFDriver
I have extended the refactoring to it as well, where applicable. This refactoring includes the following aspects:HFMethodType
in favor ofpyscfd.MethodType
andpyquantd.MethodType
hf_method
in favor ofmethod
(in both,PySCFDriver
andPyQuanteDriver
)PySCFDriver
QMolecule
construction based on a PySCFchkfile
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 theqiskit.chemistry.applications
module. The implementation is currently limited to be used with thePySCFDriver
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.