def test_sq4_normalize_trotter(self):

        cHam = h2()
        
        mypulse = cvqe.pulse(shape='square', nqubit=2, nwindow=4,
                             duration=10.0)
        mypulse.amp= [[-0.023397814557632512, -0.024404811767025192,
                       0.017514431203435765, -0.007597731625624313],
                      [0.08612679102439388, 0.0903360596717867,
                       -0.04077765915285132, 0.08333376553136651]]
        mypulse.tseq = [[6.51101596013727, 2.231101283609367,
                         1.6067317587499053],
                        [8.984285889444015, 9.365389790987054,
                         4.79755729956294]]
        mypulse.freq= [30.489396709842353, 31.34287045678159]
        
        myham = cvqe.transmon(mham = cHam)

        ctrl = cvqe.control( mypulse, myham, nstep=5000,
                             solver='trotter', iprint=0)

        e1, l1 = ctrl.energy(normalize = True)

        self.assertAlmostEqual(e1, -1.100170840004205, 8)
        self.assertAlmostEqual(l1*100., 0.232940585238139, 8)    
    def test_sq2_normalize_trotter(self):

        cHam = h2()
        
        mypulse = cvqe.pulse(shape='square', nqubit=2, nwindow=2,
                             duration=10.0)
        mypulse.amp=[[-0.05202901, -0.11437925],
                     [-0.00909615 ,   0.02574960]]
        mypulse.tseq = [[1.754454], [6.094212]]
        mypulse.freq=[29.407306, 30.992068]

        myham = cvqe.transmon(mham = cHam)

        ctrl = cvqe.control( mypulse, myham, nstep=5000,
                             solver='trotter', iprint=0)

        e1, l1 = ctrl.energy(normalize = True)

        self.assertAlmostEqual(e1, -1.121832748743835, 8)
        self.assertAlmostEqual(l1*100.,  0.638738650065718, 8)
    def test_sq2_unnormalize_ode(self):

        cHam = h2()

        mypulse = cvqe.pulse(shape='square',
                             nqubit=2,
                             nwindow=2,
                             duration=10.0)
        mypulse.amp = [[-0.05202901, -0.11437925], [-0.00909615, 0.02574960]]
        mypulse.tseq = [[1.754454], [6.094212]]
        mypulse.freq = [29.407306, 30.992068]

        myham = cvqe.transmon(mham=cHam)

        ctrl = cvqe.control(mypulse, myham, nstep=5000, solver='ode')

        e1, l1 = ctrl.energy(normalize=False, iprint=False)

        self.assertAlmostEqual(e1, -1.107555822151730, 8)
        self.assertAlmostEqual(l1 * 100., 0.639279237126511, 8)
    def test_sq3_normalize_trotter(self):

        cHam = h2()
        
        mypulse = cvqe.pulse(shape='square', nqubit=2, nwindow=3,
                             duration=10.0)
        mypulse.amp= [[0.1249952852252908, 0.09417523192820781,
                       -0.00764585921332081],
                      [0.06126291341779569, 0.03336212116885992,
                       0.03697398031839694]]
        mypulse.tseq = [[6.159809773315513, 2.3377316846035265],
                        [9.997895477848182, 9.352478104119168]]
        mypulse.freq=  [30.582426020499156, 30.928482921964044]

        myham = cvqe.transmon(mham = cHam)

        ctrl = cvqe.control( mypulse, myham, nstep=5000,
                             solver='trotter', iprint=0)

        e1, l1 = ctrl.energy(normalize = True)

        self.assertAlmostEqual(e1, -1.041003304941890, 8)
        self.assertAlmostEqual(l1*100., 0.067308598896398, 8)
Esempio n. 5
0
from mole.molecule import lih
from ctrlq import cvqe
import numpy

# Compute the molecular energy of LiH given a pulse shape to drive
# the system.

cHam = lih(dist=1.5)
eval1, evec1 = numpy.linalg.eigh(cHam)

mypulse = cvqe.pulse(nqubit=4, nwindow=4, duration=10.0)

mypulse.amp = [[
    -0.047885212285980194, 0.0816915563933863, 0.04478874748719369,
    0.053024415201600616
],
               [
                   0.04693238199992897, -0.014343617746861409,
                   0.014466456097236458, 0.04588045037289695
               ],
               [
                   0.015378982750353792, 0.029319260450179824,
                   0.05770494310656549, 0.05381656189259357
               ],
               [
                   0.04092776682417609, 0.0035745581432664875,
                   0.020068455303247412, -0.09377694196404446
               ]]

mypulse.freq = [
    30.656116165387573, 29.76584572761093, 30.63380879351657,
Esempio n. 6
0
File: h2.py Progetto: oimeitei/ctrlq
from ctrlq import cvqe
from mole.molecule import h2
import numpy

# Pulse optimization with a given initial pulse shape for H_2 molecule

cHam = h2(dist=0.75)
eval1, evec1 = numpy.linalg.eigh(cHam)

mypulse = cvqe.pulse(duration=10.0)

mypulse.amp = [[-0.05202901, -0.11437925], [-0.00909615, 0.02574960]]

mypulse.tseq = [[1.754454], [6.094212]]

mypulse.freq = [29.407306, 30.992068]

myham = cvqe.transmon(mham=cHam)

ctrl = cvqe.control(mypulse, myham, nstep=500, solver='trotter')
energy, leak = ctrl.optimize(normalize=True)

print('Error in ctrl-VQE energy : {:>.4e}'.format(energy - eval1[0]))
Esempio n. 7
0
from ctrlq import cvqe
from mole.molecule import h2
import numpy

# Adaptive pulse optimization starting from a single pulse for H_2 molecule

cHam = h2(dist=0.75)
eval1, evec1 = numpy.linalg.eigh(cHam)

mypulse = cvqe.pulse(shape='square',
                     duration=10.,
                     nwindow=1,
                     nqubit=2,
                     amp_bound=0.04,
                     freq_bound=1.5)

myham = cvqe.transmon(mham=cHam, nqubit=2)
ctrl = cvqe.control(mypulse, myham, nstep=N, solver='trotter')

ctrl.adapt(exactE=eval1[0])