Example 1: Qiskit VQE calculation on water
In this example, we will demonstrate how to use qc2 in conjunction with Qiskit-Nature for conducting a simple VQE run on water molecule. We utilize the VQE class as implemented in qc2’s algorithms package along with Qiskit Estimator primitive to calculate the exact expectation values using StateVector.
Import required packages
[1]:
# ASE molecule object
from ase.build import molecule
# Qiskit-related packages
from qiskit_algorithms.optimizers import SLSQP
from qiskit.primitives import Estimator
# ignore package import warnings
import warnings
warnings.filterwarnings('ignore')
# qc2 packages
from qc2.data import qc2Data
from qc2.ase import PySCF
from qc2.algorithms.utils import ActiveSpace
from qc2.algorithms.qiskit import VQE
Instantiate qc2Data class and run qc2-ASE calculator
[2]:
# set Atoms object
mol = molecule('H2O')
# instantiate qc2Data class
qc2data = qc2Data(
molecule=mol,
filename='h2o.fcidump',
schema='fcidump'
)
# specify the qchem calculator
qc2data.molecule.calc = PySCF(method='scf.RHF', basis='sto-3g')
# run calculation and save qchem data in the hdf5 file
qc2data.run()
* Reference energy (Hartree): -74.9644048239943
* Saving qchem data in h2o.fcidump
This generates a h2o.fcidump file containing all relevant qchem data according to FCIDump data format. To check the its content, run the following command in your shell:
[3]:
!cat h2o.fcidump
&FCI NORB= 7,NELEC=10,MS2=0,
ORBSYM=1,1,1,1,1,1,1,
ISYM=1,
&END
4.744698428255592 1 1 1 1
-0.4173800898849752 1 1 2 1
1.005211918627975 1 1 2 2
0.7971148584938965 1 1 3 3
-0.1830679567998194 1 1 4 1
0.1307548586916885 1 1 4 2
0.9947114361358266 1 1 4 4
1.115338088402927 1 1 5 5
-0.2346877760095918 1 1 6 1
0.3054358577503106 1 1 6 2
4.849365429112798e-15 1 1 6 3
-0.2236262384530495 1 1 6 4
0.8020591161419615 1 1 6 6
3.001597269643609e-15 1 1 7 1
-3.79570366054821e-15 1 1 7 2
0.3627647940282153 1 1 7 3
3.406870408020704e-15 1 1 7 4
0.865905577454096 1 1 7 7
-0.4173800898849752 2 1 1 1
0.05834680472960329 2 1 2 1
-0.01312418976546786 2 1 2 2
-0.004422553508655442 2 1 3 3
0.0225570184748541 2 1 4 1
-0.009156616358056119 2 1 4 2
-0.01338768068157959 2 1 4 4
-0.01172118955502111 2 1 5 5
0.03533880821525183 2 1 6 1
-0.006584282554693888 2 1 6 2
0.002357929587235088 2 1 6 4
-0.007021043708700192 2 1 6 6
-0.007453552241065682 2 1 7 3
-0.009328489006372976 2 1 7 7
1.005211918627975 2 2 1 1
-0.01312418976546791 2 2 2 1
0.7274142267697928 2 2 2 2
0.6429787755935467 2 2 3 3
-0.01581145753791582 2 2 4 1
-0.001937507883311278 2 2 4 2
0.6744466538693478 2 2 4 4
0.7476529642842836 2 2 5 5
-0.0008116642009734926 2 2 6 1
0.1423338611984036 2 2 6 2
2.060505654294295e-15 2 2 6 3
-0.09754893393611025 2 2 6 4
0.6130641206798808 2 2 6 6
-1.705032561656325e-15 2 2 7 2
0.1398649168466556 2 2 7 3
1.31329818365512e-15 2 2 7 4
0.6228599325576134 2 2 7 7
0.0109663838119732 3 1 3 1
0.01768533985739107 3 1 3 2
0.003390295389880111 3 1 4 3
0.003128874185460554 3 1 6 3
0.01522083247995657 3 1 7 1
0.01394178936836742 3 1 7 2
0.009556726148861704 3 1 7 4
0.009063549750067236 3 1 7 6
0.01768533985739108 3 2 3 1
0.1434022388961857 3 2 3 2
-0.02065313082769067 3 2 4 3
-0.0396681936102178 3 2 6 3
2.390638788002052e-15 3 2 6 6
0.02295772851133174 3 2 7 1
0.04133626522915177 3 2 7 2
0.07706053589022074 3 2 7 4
0.09758762344445403 3 2 7 6
-2.332089881670515e-15 3 2 7 7
0.7971148584938966 3 3 1 1
-0.004422553508655418 3 3 2 1
0.6429787755935468 3 3 2 2
0.6300490242657308 3 3 3 3
-0.006421689899582046 3 3 4 1
-0.006680137095363951 3 3 4 2
0.5959678274707184 3 3 4 4
0.6268924370427446 3 3 5 5
0.0002643524882726576 3 3 6 1
0.07534780032194555 3 3 6 2
-0.04373992069248159 3 3 6 4
0.5701014568339132 3 3 6 6
-1.011366457750627e-15 3 3 7 2
0.09015588138839585 3 3 7 3
0.6085814834244394 3 3 7 7
-0.1830679567998193 4 1 1 1
0.02255701847485409 4 1 2 1
-0.0158114575379158 4 1 2 2
-0.006421689899582058 4 1 3 3
0.02754473282303477 4 1 4 1
0.01880674307530224 4 1 4 2
0.01114155094337524 4 1 4 4
-0.005107626464150599 4 1 5 5
0.0003125904042156436 4 1 6 1
-0.01865732304495988 4 1 6 2
0.00214862489527982 4 1 6 4
-0.0209623590556697 4 1 6 6
0.0007722856267565661 4 1 7 3
-0.004158409575623874 4 1 7 7
0.1307548586916884 4 2 1 1
-0.00915661635805611 4 2 2 1
-0.00193750788331127 4 2 2 2
-0.006680137095364011 4 2 3 3
0.01880674307530224 4 2 4 1
0.1246436972245292 4 2 4 2
0.1040484405315457 4 2 4 4
0.0700769106683265 4 2 5 5
-0.02043036203681521 4 2 6 1
-0.02153677097332159 4 2 6 2
-0.03340173017582129 4 2 6 4
-0.05776037337336463 4 2 6 6
0.07678080123189156 4 2 7 3
1.174066505029759e-15 4 2 7 6
0.01412779594662342 4 2 7 7
0.00339029538988011 4 3 3 1
-0.02065313082769067 4 3 3 2
0.04785847085727147 4 3 4 3
0.02928096801404865 4 3 6 3
-1.124458581230638e-15 4 3 6 6
0.004865900400129327 4 3 7 1
0.03404255040966146 4 3 7 2
0.001043475871893153 4 3 7 4
-0.04885190310188137 4 3 7 6
1.074687315378879e-15 4 3 7 7
0.9947114361358265 4 4 1 1
-0.01338768068157956 4 4 2 1
0.6744466538693477 4 4 2 2
0.5959678274707184 4 4 3 3
0.01114155094337524 4 4 4 1
0.1040484405315457 4 4 4 2
0.7762507180020017 4 4 4 4
0.7260376902958305 4 4 5 5
-0.0190369413075492 4 4 6 1
0.08601370940944414 4 4 6 2
2.325599482426662e-15 4 4 6 3
-0.1229088961634469 4 4 6 4
0.5491094735745693 4 4 6 6
0.1585407260120994 4 4 7 3
1.720229035840603e-15 4 4 7 4
0.6058183134590612 4 4 7 7
0.02603770448607256 5 1 5 1
0.03250568804743786 5 1 5 2
0.01339382601636875 5 1 5 4
0.0155292088120708 5 1 6 5
0.03250568804743786 5 2 5 1
0.1448063051627464 5 2 5 2
0.04691239073790691 5 2 5 4
0.05849179842859509 5 2 6 5
0.02861121519359749 5 3 5 3
0.02370319498932771 5 3 7 5
0.01339382601636875 5 4 5 1
0.04691239073790692 5 4 5 2
0.05544992801454113 5 4 5 4
0.001182112689947983 5 4 6 5
1.115338088402927 5 5 1 1
-0.01172118955502111 5 5 2 1
0.7476529642842836 5 5 2 2
0.6268924370427446 5 5 3 3
-0.005107626464150599 5 5 4 1
0.0700769106683265 5 5 4 2
0.7260376902958305 5 5 4 4
0.8801590933750454 5 5 5 5
-0.00613958872993373 5 5 6 1
0.1574620522598051 5 5 6 2
2.627205256012825e-15 5 5 6 3
-0.1190229456943394 5 5 6 4
0.5885473317517982 5 5 6 6
-1.983887271822602e-15 5 5 7 2
0.1906630638921215 5 5 7 3
1.789325501258022e-15 5 5 7 4
0.6235489186871658 5 5 7 7
-0.2346877760095918 6 1 1 1
0.03533880821525185 6 1 2 1
-0.0008116642009734498 6 1 2 2
0.0002643524882726388 6 1 3 3
0.0003125904042156449 6 1 4 1
-0.02043036203681521 6 1 4 2
-0.0190369413075492 6 1 4 4
-0.00613958872993373 6 1 5 5
0.03090741846190539 6 1 6 1
0.007128108042395144 6 1 6 2
0.0004908078818927407 6 1 6 4
0.008522249681544365 6 1 6 6
-0.006898943250865037 6 1 7 3
-0.004977251286559558 6 1 7 7
0.3054358577503107 6 2 1 1
-0.006584282554693914 6 2 2 1
0.1423338611984037 6 2 2 2
0.07534780032194556 6 2 3 3
-0.0186573230449599 6 2 4 1
-0.02153677097332159 6 2 4 2
0.08601370940944418 6 2 4 4
0.1574620522598051 6 2 5 5
0.007128108042395112 6 2 6 1
0.1014658443224217 6 2 6 2
1.41853370072878e-15 6 2 6 3
-0.06100510303506527 6 2 6 4
0.09685442120599431 6 2 6 6
0.07617601003918836 6 2 7 3
1.20426465298543e-15 6 2 7 4
0.06843537147361974 6 2 7 7
4.910500682604615e-15 6 3 1 1
2.041385392276454e-15 6 3 2 2
0.003128874185460554 6 3 3 1
-0.0396681936102178 6 3 3 2
0.02928096801404864 6 3 4 3
2.348437742795665e-15 6 3 4 4
2.627205256012825e-15 6 3 5 5
1.412749531161131e-15 6 3 6 2
0.07099504532632839 6 3 6 3
-1.499163356139014e-15 6 3 6 4
0.003815194075778979 6 3 7 1
0.03502923953006604 6 3 7 2
1.392823298078542e-15 6 3 7 3
-0.04519055471751641 6 3 7 4
-0.06440089752420797 6 3 7 6
2.794348798498117e-15 6 3 7 7
-0.2236262384530495 6 4 1 1
0.002357929587235054 6 4 2 1
-0.09754893393611007 6 4 2 2
-0.04373992069248152 6 4 3 3
0.002148624895279793 6 4 4 1
-0.03340173017582129 6 4 4 2
-0.1229088961634468 6 4 4 4
-0.1190229456943394 6 4 5 5
0.0004908078818927115 6 4 6 1
-0.06100510303506524 6 4 6 2
-1.508630830229402e-15 6 4 6 3
0.07102576468992326 6 4 6 4
-0.04517978742721659 6 4 6 6
1.06536091831631e-15 6 4 7 2
-0.08045972980088242 6 4 7 3
-0.04222698765049272 6 4 7 7
0.0155292088120708 6 5 5 1
0.05849179842859509 6 5 5 2
0.001182112689947985 6 5 5 4
0.03825303155527222 6 5 6 5
0.8020591161419616 6 6 1 1
-0.007021043708700167 6 6 2 1
0.6130641206798807 6 6 2 2
2.415983313786254e-15 6 6 3 2
0.570101456833913 6 6 3 3
-0.02096235905566969 6 6 4 1
-0.05776037337336459 6 6 4 2
-1.125133884155629e-15 6 6 4 3
0.5491094735745693 6 6 4 4
0.5885473317517982 6 6 5 5
0.008522249681544376 6 6 6 1
0.09685442120599429 6 6 6 2
-0.04517978742721664 6 6 6 4
0.5966610907790958 6 6 6 6
-1.348657282438325e-15 6 6 7 2
0.03842653043551644 6 6 7 3
2.018263506776217e-15 6 6 7 4
2.249666222209053e-15 6 6 7 6
0.5653753395058 6 6 7 7
2.9780948601282e-15 7 1 1 1
0.01522083247995657 7 1 3 1
0.02295772851133174 7 1 3 2
0.004865900400129328 7 1 4 3
0.003815194075778986 7 1 6 3
0.02118054619735233 7 1 7 1
0.01833876108410003 7 1 7 2
0.01306260713334151 7 1 7 4
0.01198082551450466 7 1 7 6
-3.822264831715053e-15 7 2 1 1
-1.724813647862948e-15 7 2 2 2
0.01394178936836742 7 2 3 1
0.04133626522915176 7 2 3 2
-1.044014728873864e-15 7 2 3 3
0.03404255040966143 7 2 4 3
-1.983887271822602e-15 7 2 5 5
0.03502923953006601 7 2 6 3
1.083670823736416e-15 7 2 6 4
-1.306572125065689e-15 7 2 6 6
0.01833876108410003 7 2 7 1
0.06233956496575822 7 2 7 2
-1.447510542615755e-15 7 2 7 3
0.01668871234811914 7 2 7 4
-0.009651918573161179 7 2 7 6
0.3627647940282155 7 3 1 1
-0.007453552241065664 7 3 2 1
0.1398649168466555 7 3 2 2
0.09015588138839581 7 3 3 3
0.000772285626756568 7 3 4 1
0.07678080123189159 7 3 4 2
0.1585407260120993 7 3 4 4
0.1906630638921215 7 3 5 5
-0.006898943250865033 7 3 6 1
0.07617601003918831 7 3 6 2
1.356363021934841e-15 7 3 6 3
-0.08045972980088245 7 3 6 4
0.03842653043551628 7 3 6 6
-1.458652648385282e-15 7 3 7 2
0.1531342769573286 7 3 7 3
1.529327070110598e-15 7 3 7 4
1.153282008411514e-15 7 3 7 6
0.09297442082413787 7 3 7 7
3.364245803068242e-15 7 4 1 1
1.389716618145098e-15 7 4 2 2
0.009556726148861704 7 4 3 1
0.07706053589022074 7 4 3 2
0.001043475871893138 7 4 4 3
1.737940627616615e-15 7 4 4 4
1.789325501258022e-15 7 4 5 5
1.195578722987807e-15 7 4 6 2
-0.0451905547175164 7 4 6 3
2.001519238114518e-15 7 4 6 6
0.01306260713334151 7 4 7 1
0.01668871234811916 7 4 7 2
1.552408457946998e-15 7 4 7 3
0.06931016714204277 7 4 7 4
0.05820341909693214 7 4 7 6
0.02370319498932772 7 5 5 3
0.02438276319881266 7 5 7 5
0.009063549750067235 7 6 3 1
0.09758762344445403 7 6 3 2
1.176568968163808e-15 7 6 4 2
-0.04885190310188139 7 6 4 3
-0.06440089752420797 7 6 6 3
2.174905696035165e-15 7 6 6 6
0.01198082551450466 7 6 7 1
-0.009651918573161167 7 6 7 2
1.214911116732773e-15 7 6 7 3
0.05820341909693213 7 6 7 4
0.114939683966506 7 6 7 6
-2.191026960003653e-15 7 6 7 7
0.8659055774540965 7 7 1 1
-0.009328489006372955 7 7 2 1
0.6228599325576134 7 7 2 2
-2.318866196652988e-15 7 7 3 2
0.6085814834244393 7 7 3 3
-0.004158409575623865 7 7 4 1
0.01412779594662345 7 7 4 2
1.086375233124836e-15 7 7 4 3
0.6058183134590611 7 7 4 4
0.6235489186871658 7 7 5 5
-0.004977251286559527 7 7 6 1
0.06843537147361967 7 7 6 2
2.607079502526012e-15 7 7 6 3
-0.04222698765049276 7 7 6 4
0.5653753395057997 7 7 6 6
0.09297442082413805 7 7 7 3
-2.067324805686628e-15 7 7 7 6
0.6176064918309245 7 7 7 7
-32.6903898001836 1 1 0 0
0.5585649071450988 2 1 0 0
-7.660069487200806 2 2 0 0
-6.336245047052339 3 3 0 0
0.2342354719415093 4 1 0 0
-0.4415980193065576 4 2 0 0
-6.95595396650497 4 4 0 0
2.404327181214646e-15 5 3 0 0
-7.448014560193811 5 5 0 0
0.3003578831714497 6 1 0 0
-1.37009214945238 6 2 0 0
-2.382256809471817e-14 6 3 0 0
1.100023238319837 6 4 0 0
-5.337766699268862 6 6 0 0
-3.757601657495413e-15 7 1 0 0
1.779283892953198e-14 7 2 0 0
-1.712519470075941 7 3 0 0
-1.605794172216009e-14 7 4 0 0
-2.384772055350269e-15 7 6 0 0
-5.595588929631097 7 7 0 0
9.088293769139284 0 0 0 0
Instantiate qc2.algorithms.VQE class
[4]:
# set up activate space
active_space = ActiveSpace(
num_active_electrons=(2, 2), # => (n_alpha, n_beta)
num_active_spatial_orbitals=3 # => active orbitals comprise of only 2px, 2py and 2pz of oxigen
)
# instantiate VQE class
qc2data.algorithm = VQE(
active_space=active_space,
mapper="bk", # => Bravyi-Kitaev mapper
optimizer=SLSQP(), # => from SLSQP optimizer from Qiskit-Algorithms
estimator=Estimator() # => Estimator primitive from Qiskit
)
Check reference state and ansatz
[5]:
print(f'* Reference state:')
display(qc2data.algorithm.reference_state.draw('mpl'))
print(f'* Ansatz:')
# the option `fold=-1` forces the anzats to fit into the page
display(qc2data.algorithm.ansatz.decompose().draw('mpl', fold=-1))
* Reference state:
* Ansatz:
Run VQE
[6]:
results = qc2data.algorithm.run()
iter = 002, energy = -74.964404823994 Ha
iter = 004, energy = -74.964404823994 Ha
iter = 006, energy = -74.964404821877 Ha
iter = 008, energy = -74.964404823994 Ha
iter = 010, energy = -74.953712458779 Ha
iter = 012, energy = -74.969016364134 Ha
iter = 014, energy = -74.969016364134 Ha
iter = 016, energy = -74.969016364311 Ha
iter = 018, energy = -74.969016364250 Ha
iter = 020, energy = -74.969038740061 Ha
iter = 022, energy = -74.969038740061 Ha
iter = 024, energy = -74.969038740061 Ha
iter = 026, energy = -74.969038740061 Ha
iter = 028, energy = -74.969038740220 Ha
iter = 030, energy = -74.969072172816 Ha
iter = 032, energy = -74.969072172816 Ha
iter = 034, energy = -74.969072172813 Ha
iter = 036, energy = -74.969072172797 Ha
iter = 038, energy = -74.969074367841 Ha
iter = 040, energy = -74.969074367841 Ha
iter = 042, energy = -74.969074367841 Ha
iter = 044, energy = -74.969074367841 Ha
iter = 046, energy = -74.969074367844 Ha
=== QISKIT VQE RESULTS ===
* Electronic ground state energy (Hartree): -6.1419125033838
* Inactive core energy (Hartree): -68.82716186445694
>>> Total ground state energy (Hartree): -74.96907436784359
[7]:
# print optimized circuit parameters
print(f'* Optimized circuit parameters:')
print(results.optimal_params, "\n")
print(f'* VQE energy (Hartree):')
print(results.optimal_energy, "\n")
# `intermediate_info` saves all data at each optimization step
print(f'* VQE intermediate info:')
results.optimizer_evals, results.energy, results.parameters, results.metadata
* Optimized circuit parameters:
[-0.005355808793988312, -8.38625771153209e-08, -0.00535580955850707, -3.460468216184343e-07, -0.049389432156110066, -3.4748224844750195e-07, -3.296348580325791e-07, -0.030250429826813585]
* VQE energy (Hartree):
-74.96907436784359
* VQE intermediate info:
[7]:
(46,
[-74.96440482399416,
-74.96440482399412,
-74.96440482399414,
-74.96440482399413,
-74.96440482399416,
-74.96440482187742,
-74.96440482399416,
-74.96440482399416,
-74.96440482285412,
-74.95371245877908,
-74.96901636424987,
-74.96901636413423,
-74.96901636424987,
-74.96901636413422,
-74.96901636424987,
-74.9690163643105,
-74.96901636424985,
-74.96901636424985,
-74.96901636414427,
-74.96903874006085,
-74.96903874010222,
-74.96903874006087,
-74.96903874010223,
-74.96903874006087,
-74.96903873997252,
-74.96903874006087,
-74.96903874006087,
-74.96903874022001,
-74.96907217279715,
-74.96907217281557,
-74.96907217279715,
-74.96907217281557,
-74.96907217279715,
-74.9690721728134,
-74.96907217279715,
-74.96907217279715,
-74.96907217276534,
-74.96907436784073,
-74.96907436783057,
-74.96907436784075,
-74.96907436783057,
-74.96907436784075,
-74.9690743678402,
-74.96907436784075,
-74.96907436784076,
-74.96907436784359],
[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[1.4901161193847656e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 1.4901161193847656e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 1.4901161193847656e-08, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 1.4901161193847656e-08, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 1.4901161193847656e-08, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 1.4901161193847656e-08, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4901161193847656e-08, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4901161193847656e-08],
[-2.205371856689453e-06,
-8.940696716308594e-07,
-1.2516975402832031e-06,
-1.1920928955078125e-07,
-0.14205145835876465,
5.960464477539063e-08,
5.960464477539063e-08,
-0.07650613784790039],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.667340725559426e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.0197798762363485e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.2872964715062786e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-2.734939198181668e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034633577070489,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
3.602643778167982e-08,
2.1125276587832168e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
3.602643778167982e-08,
-0.027115560017077857],
[-7.816352337497903e-07,
-3.168791488174825e-07,
-4.436308083444755e-07,
-4.2250553175664335e-08,
-0.05034635067186608,
2.1125276587832168e-08,
2.1125276587832168e-08,
-0.027115545115916663],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.007750209450875844,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.4966056844836124e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750339941675348,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-2.831008181857701e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.047427499809096565,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.3967396090620496e-07,
-1.5696215734733702e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.4206099615348936e-07,
-0.034808395480874964],
[-0.0077502243520370375,
-2.645617296422089e-07,
-0.007750354842836542,
-4.321124301242467e-08,
-0.04742751471025776,
-4.545751221000526e-07,
-1.5696215734733702e-07,
-0.03480838057971377],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.006922426311957159,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.6408860383306474e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921929183844565,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
7.341438396829022e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001713571808158,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
2.1337242330416864e-08,
-3.9110381748232155e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-2.42092205543845e-08,
-0.029227391840273002],
[-0.0069224412131183525,
1.4918744263921708e-07,
-0.006921944085005759,
5.851322277444256e-08,
-0.05001715061924277,
6.436081136569208e-09,
-3.9110381748232155e-08,
-0.02922737693911181],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355793892827118,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-6.896141592147325e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.005355794657345876,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.311456604245866e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.04938941725494887,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.325810872536543e-07,
-3.296348580325791e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.1473369683873147e-07,
-0.03025044472797478],
[-0.005355808793988312,
-8.38625771153209e-08,
-0.00535580955850707,
-3.460468216184343e-07,
-0.049389432156110066,
-3.4748224844750195e-07,
-3.296348580325791e-07,
-0.030250429826813585]],
[{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}])
Compare VQE result with classical qchem calculations
Now, let’s compare our VQE enery with quantum chemistry calculations performed solely using PySCF. Here is a typical example run:
[8]:
import pyscf
from pyscf import gto, scf, mcscf, fci
# set up molecule
mol_h2o = gto.M(
atom='O 0 0 0.1192622641;\
H 0 0.763237638 -0.4770469398;\
H 0 -0.763237638, -0.4770469398',
basis='sto-3g',
verbose=0
)
# run HF
scf_h2o = scf.HF(mol_h2o)
hf_h2o = mol_h2o.HF().run()
# run CASCI and CASSCF single-point calculations
ncas, nelecas = (3, 4)
energy_casci = mcscf.CASCI(hf_h2o, ncas, nelecas).kernel()
energy_casscf = mcscf.CASSCF(hf_h2o, ncas, nelecas).kernel()
# run FCI single-point calculation
energy_fci = fci.FCI(hf_h2o).kernel()
print('')
print(f'* Final VQE energy (hartree): {results.optimal_energy:.6f}')
print(f'* Final CASCI/sto-3g energy (hartree): {energy_casci[0]:.6f}')
print(f'* Final CASSCF/sto-3g energy (hartree): {energy_casscf[0]:.6f}')
print(f'* Final FCI/sto-3g energy (hartree): {energy_fci[0]:.6f}')
* Final VQE energy (hartree): -74.969074
* Final CASCI/sto-3g energy (hartree): -74.969075
* Final CASSCF/sto-3g energy (hartree): -74.976643
* Final FCI/sto-3g energy (hartree): -75.015429
As expected, our final VQE energy agrees excelently well with the one obtained with PySCF at CASCI level.